diff --git a/blake2s/blake2s_generic.go b/blake2s/blake2s_generic.go index f7e065378a..24a1ff22ad 100644 --- a/blake2s/blake2s_generic.go +++ b/blake2s/blake2s_generic.go @@ -4,6 +4,10 @@ package blake2s +import ( + "math/bits" +) + // the precomputed values for BLAKE2s // there are 10 16-byte arrays - one for each round // the entries are calculated from the sigma constants. @@ -47,118 +51,118 @@ func hashBlocksGeneric(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte) { v0 += m[s[0]] v0 += v4 v12 ^= v0 - v12 = v12<<(32-16) | v12>>16 + v12 = bits.RotateLeft32(v12, -16) v8 += v12 v4 ^= v8 - v4 = v4<<(32-12) | v4>>12 + v4 = bits.RotateLeft32(v4, -12) v1 += m[s[1]] v1 += v5 v13 ^= v1 - v13 = v13<<(32-16) | v13>>16 + v13 = bits.RotateLeft32(v13, -16) v9 += v13 v5 ^= v9 - v5 = v5<<(32-12) | v5>>12 + v5 = bits.RotateLeft32(v5, -12) v2 += m[s[2]] v2 += v6 v14 ^= v2 - v14 = v14<<(32-16) | v14>>16 + v14 = bits.RotateLeft32(v14, -16) v10 += v14 v6 ^= v10 - v6 = v6<<(32-12) | v6>>12 + v6 = bits.RotateLeft32(v6, -12) v3 += m[s[3]] v3 += v7 v15 ^= v3 - v15 = v15<<(32-16) | v15>>16 + v15 = bits.RotateLeft32(v15, -16) v11 += v15 v7 ^= v11 - v7 = v7<<(32-12) | v7>>12 + v7 = bits.RotateLeft32(v7, -12) v0 += m[s[4]] v0 += v4 v12 ^= v0 - v12 = v12<<(32-8) | v12>>8 + v12 = bits.RotateLeft32(v12, -8) v8 += v12 v4 ^= v8 - v4 = v4<<(32-7) | v4>>7 + v4 = bits.RotateLeft32(v4, -7) v1 += m[s[5]] v1 += v5 v13 ^= v1 - v13 = v13<<(32-8) | v13>>8 + v13 = bits.RotateLeft32(v13, -8) v9 += v13 v5 ^= v9 - v5 = v5<<(32-7) | v5>>7 + v5 = bits.RotateLeft32(v5, -7) v2 += m[s[6]] v2 += v6 v14 ^= v2 - v14 = v14<<(32-8) | v14>>8 + v14 = bits.RotateLeft32(v14, -8) v10 += v14 v6 ^= v10 - v6 = v6<<(32-7) | v6>>7 + v6 = bits.RotateLeft32(v6, -7) v3 += m[s[7]] v3 += v7 v15 ^= v3 - v15 = v15<<(32-8) | v15>>8 + v15 = bits.RotateLeft32(v15, -8) v11 += v15 v7 ^= v11 - v7 = v7<<(32-7) | v7>>7 + v7 = bits.RotateLeft32(v7, -7) v0 += m[s[8]] v0 += v5 v15 ^= v0 - v15 = v15<<(32-16) | v15>>16 + v15 = bits.RotateLeft32(v15, -16) v10 += v15 v5 ^= v10 - v5 = v5<<(32-12) | v5>>12 + v5 = bits.RotateLeft32(v5, -12) v1 += m[s[9]] v1 += v6 v12 ^= v1 - v12 = v12<<(32-16) | v12>>16 + v12 = bits.RotateLeft32(v12, -16) v11 += v12 v6 ^= v11 - v6 = v6<<(32-12) | v6>>12 + v6 = bits.RotateLeft32(v6, -12) v2 += m[s[10]] v2 += v7 v13 ^= v2 - v13 = v13<<(32-16) | v13>>16 + v13 = bits.RotateLeft32(v13, -16) v8 += v13 v7 ^= v8 - v7 = v7<<(32-12) | v7>>12 + v7 = bits.RotateLeft32(v7, -12) v3 += m[s[11]] v3 += v4 v14 ^= v3 - v14 = v14<<(32-16) | v14>>16 + v14 = bits.RotateLeft32(v14, -16) v9 += v14 v4 ^= v9 - v4 = v4<<(32-12) | v4>>12 + v4 = bits.RotateLeft32(v4, -12) v0 += m[s[12]] v0 += v5 v15 ^= v0 - v15 = v15<<(32-8) | v15>>8 + v15 = bits.RotateLeft32(v15, -8) v10 += v15 v5 ^= v10 - v5 = v5<<(32-7) | v5>>7 + v5 = bits.RotateLeft32(v5, -7) v1 += m[s[13]] v1 += v6 v12 ^= v1 - v12 = v12<<(32-8) | v12>>8 + v12 = bits.RotateLeft32(v12, -8) v11 += v12 v6 ^= v11 - v6 = v6<<(32-7) | v6>>7 + v6 = bits.RotateLeft32(v6, -7) v2 += m[s[14]] v2 += v7 v13 ^= v2 - v13 = v13<<(32-8) | v13>>8 + v13 = bits.RotateLeft32(v13, -8) v8 += v13 v7 ^= v8 - v7 = v7<<(32-7) | v7>>7 + v7 = bits.RotateLeft32(v7, -7) v3 += m[s[15]] v3 += v4 v14 ^= v3 - v14 = v14<<(32-8) | v14>>8 + v14 = bits.RotateLeft32(v14, -8) v9 += v14 v4 ^= v9 - v4 = v4<<(32-7) | v4>>7 + v4 = bits.RotateLeft32(v4, -7) } h[0] ^= v0 ^ v8