Lines 369-375
Link Here
|
369 |
uint64_t k0 = _le64toh(_Py_HashSecret.siphash.k0); |
369 |
uint64_t k0 = _le64toh(_Py_HashSecret.siphash.k0); |
370 |
uint64_t k1 = _le64toh(_Py_HashSecret.siphash.k1); |
370 |
uint64_t k1 = _le64toh(_Py_HashSecret.siphash.k1); |
371 |
uint64_t b = (uint64_t)src_sz << 56; |
371 |
uint64_t b = (uint64_t)src_sz << 56; |
372 |
const uint64_t *in = (uint64_t*)src; |
372 |
const uint8_t *in = (uint8_t*)src; |
373 |
|
373 |
|
374 |
uint64_t v0 = k0 ^ 0x736f6d6570736575ULL; |
374 |
uint64_t v0 = k0 ^ 0x736f6d6570736575ULL; |
375 |
uint64_t v1 = k1 ^ 0x646f72616e646f6dULL; |
375 |
uint64_t v1 = k1 ^ 0x646f72616e646f6dULL; |
Lines 378-388
Link Here
|
378 |
|
378 |
|
379 |
uint64_t t; |
379 |
uint64_t t; |
380 |
uint8_t *pt; |
380 |
uint8_t *pt; |
381 |
uint8_t *m; |
381 |
const uint8_t *m; |
382 |
|
382 |
|
383 |
while (src_sz >= 8) { |
383 |
while (src_sz >= 8) { |
384 |
uint64_t mi = _le64toh(*in); |
384 |
uint64_t mi; |
385 |
in += 1; |
385 |
memcpy(&mi, in, sizeof(mi)); |
386 |
src_sz -= 8; |
386 |
mi = _le64toh(mi); |
|
|
387 |
in += sizeof(mi); |
388 |
src_sz -= sizeof(mi); |
387 |
v3 ^= mi; |
389 |
v3 ^= mi; |
388 |
DOUBLE_ROUND(v0,v1,v2,v3); |
390 |
DOUBLE_ROUND(v0,v1,v2,v3); |
Lines 391-397
Link Here
|
391 |
|
393 |
|
392 |
t = 0; |
394 |
t = 0; |
393 |
pt = (uint8_t *)&t; |
395 |
pt = (uint8_t *)&t; |
394 |
m = (uint8_t *)in; |
396 |
m = in; |
395 |
switch (src_sz) { |
397 |
switch (src_sz) { |
396 |
case 7: pt[6] = m[6]; /* fall through */ |
398 |
case 7: pt[6] = m[6]; /* fall through */ |
397 |
case 6: pt[5] = m[5]; /* fall through */ |
399 |
case 6: pt[5] = m[5]; /* fall through */ |