Changeset View
Changeset View
Standalone View
Standalone View
test/functional/test_framework/siphash.py
Show All 29 Lines | def siphash_round(v0, v1, v2, v3): | ||||
return (v0, v1, v2, v3) | return (v0, v1, v2, v3) | ||||
def siphash256(k0, k1, h): | def siphash256(k0, k1, h): | ||||
n0 = h & ((1 << 64) - 1) | n0 = h & ((1 << 64) - 1) | ||||
n1 = (h >> 64) & ((1 << 64) - 1) | n1 = (h >> 64) & ((1 << 64) - 1) | ||||
n2 = (h >> 128) & ((1 << 64) - 1) | n2 = (h >> 128) & ((1 << 64) - 1) | ||||
n3 = (h >> 192) & ((1 << 64) - 1) | n3 = (h >> 192) & ((1 << 64) - 1) | ||||
v0 = 0x736f6d6570736575 ^ k0 | v0 = 0x736F6D6570736575 ^ k0 | ||||
v1 = 0x646f72616e646f6d ^ k1 | v1 = 0x646F72616E646F6D ^ k1 | ||||
v2 = 0x6c7967656e657261 ^ k0 | v2 = 0x6C7967656E657261 ^ k0 | ||||
v3 = 0x7465646279746573 ^ k1 ^ n0 | v3 = 0x7465646279746573 ^ k1 ^ n0 | ||||
v0, v1, v2, v3 = siphash_round(v0, v1, v2, v3) | v0, v1, v2, v3 = siphash_round(v0, v1, v2, v3) | ||||
v0, v1, v2, v3 = siphash_round(v0, v1, v2, v3) | v0, v1, v2, v3 = siphash_round(v0, v1, v2, v3) | ||||
v0 ^= n0 | v0 ^= n0 | ||||
v3 ^= n1 | v3 ^= n1 | ||||
v0, v1, v2, v3 = siphash_round(v0, v1, v2, v3) | v0, v1, v2, v3 = siphash_round(v0, v1, v2, v3) | ||||
v0, v1, v2, v3 = siphash_round(v0, v1, v2, v3) | v0, v1, v2, v3 = siphash_round(v0, v1, v2, v3) | ||||
v0 ^= n1 | v0 ^= n1 | ||||
Show All 18 Lines |