|
4 | 4 |
|
5 | 5 | package blake2s
|
6 | 6 |
|
| 7 | +import ( |
| 8 | + "math/bits" |
| 9 | +) |
| 10 | + |
7 | 11 | // the precomputed values for BLAKE2s
|
8 | 12 | // there are 10 16-byte arrays - one for each round
|
9 | 13 | // the entries are calculated from the sigma constants.
|
@@ -47,118 +51,118 @@ func hashBlocksGeneric(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte) {
|
47 | 51 | v0 += m[s[0]]
|
48 | 52 | v0 += v4
|
49 | 53 | v12 ^= v0
|
50 |
| - v12 = v12<<(32-16) | v12>>16 |
| 54 | + v12 = bits.RotateLeft32(v12, -16) |
51 | 55 | v8 += v12
|
52 | 56 | v4 ^= v8
|
53 |
| - v4 = v4<<(32-12) | v4>>12 |
| 57 | + v4 = bits.RotateLeft32(v4, -12) |
54 | 58 | v1 += m[s[1]]
|
55 | 59 | v1 += v5
|
56 | 60 | v13 ^= v1
|
57 |
| - v13 = v13<<(32-16) | v13>>16 |
| 61 | + v13 = bits.RotateLeft32(v13, -16) |
58 | 62 | v9 += v13
|
59 | 63 | v5 ^= v9
|
60 |
| - v5 = v5<<(32-12) | v5>>12 |
| 64 | + v5 = bits.RotateLeft32(v5, -12) |
61 | 65 | v2 += m[s[2]]
|
62 | 66 | v2 += v6
|
63 | 67 | v14 ^= v2
|
64 |
| - v14 = v14<<(32-16) | v14>>16 |
| 68 | + v14 = bits.RotateLeft32(v14, -16) |
65 | 69 | v10 += v14
|
66 | 70 | v6 ^= v10
|
67 |
| - v6 = v6<<(32-12) | v6>>12 |
| 71 | + v6 = bits.RotateLeft32(v6, -12) |
68 | 72 | v3 += m[s[3]]
|
69 | 73 | v3 += v7
|
70 | 74 | v15 ^= v3
|
71 |
| - v15 = v15<<(32-16) | v15>>16 |
| 75 | + v15 = bits.RotateLeft32(v15, -16) |
72 | 76 | v11 += v15
|
73 | 77 | v7 ^= v11
|
74 |
| - v7 = v7<<(32-12) | v7>>12 |
| 78 | + v7 = bits.RotateLeft32(v7, -12) |
75 | 79 |
|
76 | 80 | v0 += m[s[4]]
|
77 | 81 | v0 += v4
|
78 | 82 | v12 ^= v0
|
79 |
| - v12 = v12<<(32-8) | v12>>8 |
| 83 | + v12 = bits.RotateLeft32(v12, -8) |
80 | 84 | v8 += v12
|
81 | 85 | v4 ^= v8
|
82 |
| - v4 = v4<<(32-7) | v4>>7 |
| 86 | + v4 = bits.RotateLeft32(v4, -7) |
83 | 87 | v1 += m[s[5]]
|
84 | 88 | v1 += v5
|
85 | 89 | v13 ^= v1
|
86 |
| - v13 = v13<<(32-8) | v13>>8 |
| 90 | + v13 = bits.RotateLeft32(v13, -8) |
87 | 91 | v9 += v13
|
88 | 92 | v5 ^= v9
|
89 |
| - v5 = v5<<(32-7) | v5>>7 |
| 93 | + v5 = bits.RotateLeft32(v5, -7) |
90 | 94 | v2 += m[s[6]]
|
91 | 95 | v2 += v6
|
92 | 96 | v14 ^= v2
|
93 |
| - v14 = v14<<(32-8) | v14>>8 |
| 97 | + v14 = bits.RotateLeft32(v14, -8) |
94 | 98 | v10 += v14
|
95 | 99 | v6 ^= v10
|
96 |
| - v6 = v6<<(32-7) | v6>>7 |
| 100 | + v6 = bits.RotateLeft32(v6, -7) |
97 | 101 | v3 += m[s[7]]
|
98 | 102 | v3 += v7
|
99 | 103 | v15 ^= v3
|
100 |
| - v15 = v15<<(32-8) | v15>>8 |
| 104 | + v15 = bits.RotateLeft32(v15, -8) |
101 | 105 | v11 += v15
|
102 | 106 | v7 ^= v11
|
103 |
| - v7 = v7<<(32-7) | v7>>7 |
| 107 | + v7 = bits.RotateLeft32(v7, -7) |
104 | 108 |
|
105 | 109 | v0 += m[s[8]]
|
106 | 110 | v0 += v5
|
107 | 111 | v15 ^= v0
|
108 |
| - v15 = v15<<(32-16) | v15>>16 |
| 112 | + v15 = bits.RotateLeft32(v15, -16) |
109 | 113 | v10 += v15
|
110 | 114 | v5 ^= v10
|
111 |
| - v5 = v5<<(32-12) | v5>>12 |
| 115 | + v5 = bits.RotateLeft32(v5, -12) |
112 | 116 | v1 += m[s[9]]
|
113 | 117 | v1 += v6
|
114 | 118 | v12 ^= v1
|
115 |
| - v12 = v12<<(32-16) | v12>>16 |
| 119 | + v12 = bits.RotateLeft32(v12, -16) |
116 | 120 | v11 += v12
|
117 | 121 | v6 ^= v11
|
118 |
| - v6 = v6<<(32-12) | v6>>12 |
| 122 | + v6 = bits.RotateLeft32(v6, -12) |
119 | 123 | v2 += m[s[10]]
|
120 | 124 | v2 += v7
|
121 | 125 | v13 ^= v2
|
122 |
| - v13 = v13<<(32-16) | v13>>16 |
| 126 | + v13 = bits.RotateLeft32(v13, -16) |
123 | 127 | v8 += v13
|
124 | 128 | v7 ^= v8
|
125 |
| - v7 = v7<<(32-12) | v7>>12 |
| 129 | + v7 = bits.RotateLeft32(v7, -12) |
126 | 130 | v3 += m[s[11]]
|
127 | 131 | v3 += v4
|
128 | 132 | v14 ^= v3
|
129 |
| - v14 = v14<<(32-16) | v14>>16 |
| 133 | + v14 = bits.RotateLeft32(v14, -16) |
130 | 134 | v9 += v14
|
131 | 135 | v4 ^= v9
|
132 |
| - v4 = v4<<(32-12) | v4>>12 |
| 136 | + v4 = bits.RotateLeft32(v4, -12) |
133 | 137 |
|
134 | 138 | v0 += m[s[12]]
|
135 | 139 | v0 += v5
|
136 | 140 | v15 ^= v0
|
137 |
| - v15 = v15<<(32-8) | v15>>8 |
| 141 | + v15 = bits.RotateLeft32(v15, -8) |
138 | 142 | v10 += v15
|
139 | 143 | v5 ^= v10
|
140 |
| - v5 = v5<<(32-7) | v5>>7 |
| 144 | + v5 = bits.RotateLeft32(v5, -7) |
141 | 145 | v1 += m[s[13]]
|
142 | 146 | v1 += v6
|
143 | 147 | v12 ^= v1
|
144 |
| - v12 = v12<<(32-8) | v12>>8 |
| 148 | + v12 = bits.RotateLeft32(v12, -8) |
145 | 149 | v11 += v12
|
146 | 150 | v6 ^= v11
|
147 |
| - v6 = v6<<(32-7) | v6>>7 |
| 151 | + v6 = bits.RotateLeft32(v6, -7) |
148 | 152 | v2 += m[s[14]]
|
149 | 153 | v2 += v7
|
150 | 154 | v13 ^= v2
|
151 |
| - v13 = v13<<(32-8) | v13>>8 |
| 155 | + v13 = bits.RotateLeft32(v13, -8) |
152 | 156 | v8 += v13
|
153 | 157 | v7 ^= v8
|
154 |
| - v7 = v7<<(32-7) | v7>>7 |
| 158 | + v7 = bits.RotateLeft32(v7, -7) |
155 | 159 | v3 += m[s[15]]
|
156 | 160 | v3 += v4
|
157 | 161 | v14 ^= v3
|
158 |
| - v14 = v14<<(32-8) | v14>>8 |
| 162 | + v14 = bits.RotateLeft32(v14, -8) |
159 | 163 | v9 += v14
|
160 | 164 | v4 ^= v9
|
161 |
| - v4 = v4<<(32-7) | v4>>7 |
| 165 | + v4 = bits.RotateLeft32(v4, -7) |
162 | 166 | }
|
163 | 167 |
|
164 | 168 | h[0] ^= v0 ^ v8
|
|
0 commit comments