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