33
33
34
34
# pylint: disable=C0103, W0108, R0915, C0116, C0115
35
35
36
+
36
37
def __translate (key , translation ):
37
38
return bytes (translation [x ] for x in key )
38
39
40
+
39
41
TRANS_5C = bytes ((x ^ 0x5C ) for x in range (256 ))
40
42
TRANS_36 = bytes ((x ^ 0x36 ) for x in range (256 ))
41
43
42
44
SHA_BLOCKSIZE = 64
43
45
SHA_DIGESTSIZE = 32
44
46
47
+
45
48
def new_shaobject ():
46
49
"""Struct. for storing SHA information."""
47
50
return {
@@ -53,6 +56,7 @@ def new_shaobject():
53
56
"digestsize" : 0 ,
54
57
}
55
58
59
+
56
60
def sha_init ():
57
61
"""Initialize the SHA digest."""
58
62
sha_info = new_shaobject ()
@@ -72,9 +76,8 @@ def sha_init():
72
76
sha_info ["digestsize" ] = 32
73
77
return sha_info
74
78
75
- ROR = (
76
- lambda x , y : (((x & 0xFFFFFFFF ) >> (y & 31 )) | (x << (32 - (y & 31 )))) & 0xFFFFFFFF
77
- )
79
+
80
+ ROR = lambda x , y : (((x & 0xFFFFFFFF ) >> (y & 31 )) | (x << (32 - (y & 31 )))) & 0xFFFFFFFF
78
81
Ch = lambda x , y , z : (z ^ (x & (y ^ z )))
79
82
Maj = lambda x , y , z : (((x | y ) & z ) | (x & y ))
80
83
S = lambda x , n : ROR (x , n )
@@ -84,19 +87,16 @@ def sha_init():
84
87
Gamma0 = lambda x : (S (x , 7 ) ^ S (x , 18 ) ^ R (x , 3 ))
85
88
Gamma1 = lambda x : (S (x , 17 ) ^ S (x , 19 ) ^ R (x , 10 ))
86
89
90
+
87
91
def sha_transform (sha_info ):
88
92
W = []
89
93
90
94
d = sha_info ["data" ]
91
95
for i in range (0 , 16 ):
92
- W .append (
93
- (d [4 * i ] << 24 ) + (d [4 * i + 1 ] << 16 ) + (d [4 * i + 2 ] << 8 ) + d [4 * i + 3 ]
94
- )
96
+ W .append ((d [4 * i ] << 24 ) + (d [4 * i + 1 ] << 16 ) + (d [4 * i + 2 ] << 8 ) + d [4 * i + 3 ])
95
97
96
98
for i in range (16 , 64 ):
97
- W .append (
98
- (Gamma1 (W [i - 2 ]) + W [i - 7 ] + Gamma0 (W [i - 15 ]) + W [i - 16 ]) & 0xFFFFFFFF
99
- )
99
+ W .append ((Gamma1 (W [i - 2 ]) + W [i - 7 ] + Gamma0 (W [i - 15 ]) + W [i - 16 ]) & 0xFFFFFFFF )
100
100
101
101
ss = sha_info ["digest" ][:]
102
102
@@ -109,205 +109,78 @@ def RND(a, b, c, d, e, f, g, h, i, ki):
109
109
h = t0 + t1
110
110
return d & 0xFFFFFFFF , h & 0xFFFFFFFF
111
111
112
- ss [3 ], ss [7 ] = RND (
113
- ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], 0 , 0x428A2F98
114
- )
115
- ss [2 ], ss [6 ] = RND (
116
- ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], 1 , 0x71374491
117
- )
118
- ss [1 ], ss [5 ] = RND (
119
- ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], 2 , 0xB5C0FBCF
120
- )
121
- ss [0 ], ss [4 ] = RND (
122
- ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], 3 , 0xE9B5DBA5
123
- )
124
- ss [7 ], ss [3 ] = RND (
125
- ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], 4 , 0x3956C25B
126
- )
127
- ss [6 ], ss [2 ] = RND (
128
- ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], 5 , 0x59F111F1
129
- )
130
- ss [5 ], ss [1 ] = RND (
131
- ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], 6 , 0x923F82A4
132
- )
133
- ss [4 ], ss [0 ] = RND (
134
- ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], 7 , 0xAB1C5ED5
135
- )
136
- ss [3 ], ss [7 ] = RND (
137
- ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], 8 , 0xD807AA98
138
- )
139
- ss [2 ], ss [6 ] = RND (
140
- ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], 9 , 0x12835B01
141
- )
142
- ss [1 ], ss [5 ] = RND (
143
- ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], 10 , 0x243185BE
144
- )
145
- ss [0 ], ss [4 ] = RND (
146
- ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], 11 , 0x550C7DC3
147
- )
148
- ss [7 ], ss [3 ] = RND (
149
- ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], 12 , 0x72BE5D74
150
- )
151
- ss [6 ], ss [2 ] = RND (
152
- ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], 13 , 0x80DEB1FE
153
- )
154
- ss [5 ], ss [1 ] = RND (
155
- ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], 14 , 0x9BDC06A7
156
- )
157
- ss [4 ], ss [0 ] = RND (
158
- ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], 15 , 0xC19BF174
159
- )
160
- ss [3 ], ss [7 ] = RND (
161
- ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], 16 , 0xE49B69C1
162
- )
163
- ss [2 ], ss [6 ] = RND (
164
- ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], 17 , 0xEFBE4786
165
- )
166
- ss [1 ], ss [5 ] = RND (
167
- ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], 18 , 0x0FC19DC6
168
- )
169
- ss [0 ], ss [4 ] = RND (
170
- ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], 19 , 0x240CA1CC
171
- )
172
- ss [7 ], ss [3 ] = RND (
173
- ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], 20 , 0x2DE92C6F
174
- )
175
- ss [6 ], ss [2 ] = RND (
176
- ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], 21 , 0x4A7484AA
177
- )
178
- ss [5 ], ss [1 ] = RND (
179
- ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], 22 , 0x5CB0A9DC
180
- )
181
- ss [4 ], ss [0 ] = RND (
182
- ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], 23 , 0x76F988DA
183
- )
184
- ss [3 ], ss [7 ] = RND (
185
- ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], 24 , 0x983E5152
186
- )
187
- ss [2 ], ss [6 ] = RND (
188
- ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], 25 , 0xA831C66D
189
- )
190
- ss [1 ], ss [5 ] = RND (
191
- ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], 26 , 0xB00327C8
192
- )
193
- ss [0 ], ss [4 ] = RND (
194
- ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], 27 , 0xBF597FC7
195
- )
196
- ss [7 ], ss [3 ] = RND (
197
- ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], 28 , 0xC6E00BF3
198
- )
199
- ss [6 ], ss [2 ] = RND (
200
- ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], 29 , 0xD5A79147
201
- )
202
- ss [5 ], ss [1 ] = RND (
203
- ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], 30 , 0x06CA6351
204
- )
205
- ss [4 ], ss [0 ] = RND (
206
- ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], 31 , 0x14292967
207
- )
208
- ss [3 ], ss [7 ] = RND (
209
- ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], 32 , 0x27B70A85
210
- )
211
- ss [2 ], ss [6 ] = RND (
212
- ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], 33 , 0x2E1B2138
213
- )
214
- ss [1 ], ss [5 ] = RND (
215
- ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], 34 , 0x4D2C6DFC
216
- )
217
- ss [0 ], ss [4 ] = RND (
218
- ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], 35 , 0x53380D13
219
- )
220
- ss [7 ], ss [3 ] = RND (
221
- ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], 36 , 0x650A7354
222
- )
223
- ss [6 ], ss [2 ] = RND (
224
- ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], 37 , 0x766A0ABB
225
- )
226
- ss [5 ], ss [1 ] = RND (
227
- ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], 38 , 0x81C2C92E
228
- )
229
- ss [4 ], ss [0 ] = RND (
230
- ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], 39 , 0x92722C85
231
- )
232
- ss [3 ], ss [7 ] = RND (
233
- ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], 40 , 0xA2BFE8A1
234
- )
235
- ss [2 ], ss [6 ] = RND (
236
- ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], 41 , 0xA81A664B
237
- )
238
- ss [1 ], ss [5 ] = RND (
239
- ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], 42 , 0xC24B8B70
240
- )
241
- ss [0 ], ss [4 ] = RND (
242
- ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], 43 , 0xC76C51A3
243
- )
244
- ss [7 ], ss [3 ] = RND (
245
- ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], 44 , 0xD192E819
246
- )
247
- ss [6 ], ss [2 ] = RND (
248
- ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], 45 , 0xD6990624
249
- )
250
- ss [5 ], ss [1 ] = RND (
251
- ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], 46 , 0xF40E3585
252
- )
253
- ss [4 ], ss [0 ] = RND (
254
- ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], 47 , 0x106AA070
255
- )
256
- ss [3 ], ss [7 ] = RND (
257
- ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], 48 , 0x19A4C116
258
- )
259
- ss [2 ], ss [6 ] = RND (
260
- ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], 49 , 0x1E376C08
261
- )
262
- ss [1 ], ss [5 ] = RND (
263
- ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], 50 , 0x2748774C
264
- )
265
- ss [0 ], ss [4 ] = RND (
266
- ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], 51 , 0x34B0BCB5
267
- )
268
- ss [7 ], ss [3 ] = RND (
269
- ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], 52 , 0x391C0CB3
270
- )
271
- ss [6 ], ss [2 ] = RND (
272
- ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], 53 , 0x4ED8AA4A
273
- )
274
- ss [5 ], ss [1 ] = RND (
275
- ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], 54 , 0x5B9CCA4F
276
- )
277
- ss [4 ], ss [0 ] = RND (
278
- ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], 55 , 0x682E6FF3
279
- )
280
- ss [3 ], ss [7 ] = RND (
281
- ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], 56 , 0x748F82EE
282
- )
283
- ss [2 ], ss [6 ] = RND (
284
- ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], 57 , 0x78A5636F
285
- )
286
- ss [1 ], ss [5 ] = RND (
287
- ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], 58 , 0x84C87814
288
- )
289
- ss [0 ], ss [4 ] = RND (
290
- ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], 59 , 0x8CC70208
291
- )
292
- ss [7 ], ss [3 ] = RND (
293
- ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], 60 , 0x90BEFFFA
294
- )
295
- ss [6 ], ss [2 ] = RND (
296
- ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], 61 , 0xA4506CEB
297
- )
298
- ss [5 ], ss [1 ] = RND (
299
- ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], 62 , 0xBEF9A3F7
300
- )
301
- ss [4 ], ss [0 ] = RND (
302
- ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], 63 , 0xC67178F2
303
- )
112
+ ss [3 ], ss [7 ] = RND (ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], 0 , 0x428A2F98 )
113
+ ss [2 ], ss [6 ] = RND (ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], 1 , 0x71374491 )
114
+ ss [1 ], ss [5 ] = RND (ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], 2 , 0xB5C0FBCF )
115
+ ss [0 ], ss [4 ] = RND (ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], 3 , 0xE9B5DBA5 )
116
+ ss [7 ], ss [3 ] = RND (ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], 4 , 0x3956C25B )
117
+ ss [6 ], ss [2 ] = RND (ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], 5 , 0x59F111F1 )
118
+ ss [5 ], ss [1 ] = RND (ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], 6 , 0x923F82A4 )
119
+ ss [4 ], ss [0 ] = RND (ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], 7 , 0xAB1C5ED5 )
120
+ ss [3 ], ss [7 ] = RND (ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], 8 , 0xD807AA98 )
121
+ ss [2 ], ss [6 ] = RND (ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], 9 , 0x12835B01 )
122
+ ss [1 ], ss [5 ] = RND (ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], 10 , 0x243185BE )
123
+ ss [0 ], ss [4 ] = RND (ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], 11 , 0x550C7DC3 )
124
+ ss [7 ], ss [3 ] = RND (ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], 12 , 0x72BE5D74 )
125
+ ss [6 ], ss [2 ] = RND (ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], 13 , 0x80DEB1FE )
126
+ ss [5 ], ss [1 ] = RND (ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], 14 , 0x9BDC06A7 )
127
+ ss [4 ], ss [0 ] = RND (ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], 15 , 0xC19BF174 )
128
+ ss [3 ], ss [7 ] = RND (ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], 16 , 0xE49B69C1 )
129
+ ss [2 ], ss [6 ] = RND (ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], 17 , 0xEFBE4786 )
130
+ ss [1 ], ss [5 ] = RND (ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], 18 , 0x0FC19DC6 )
131
+ ss [0 ], ss [4 ] = RND (ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], 19 , 0x240CA1CC )
132
+ ss [7 ], ss [3 ] = RND (ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], 20 , 0x2DE92C6F )
133
+ ss [6 ], ss [2 ] = RND (ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], 21 , 0x4A7484AA )
134
+ ss [5 ], ss [1 ] = RND (ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], 22 , 0x5CB0A9DC )
135
+ ss [4 ], ss [0 ] = RND (ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], 23 , 0x76F988DA )
136
+ ss [3 ], ss [7 ] = RND (ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], 24 , 0x983E5152 )
137
+ ss [2 ], ss [6 ] = RND (ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], 25 , 0xA831C66D )
138
+ ss [1 ], ss [5 ] = RND (ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], 26 , 0xB00327C8 )
139
+ ss [0 ], ss [4 ] = RND (ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], 27 , 0xBF597FC7 )
140
+ ss [7 ], ss [3 ] = RND (ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], 28 , 0xC6E00BF3 )
141
+ ss [6 ], ss [2 ] = RND (ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], 29 , 0xD5A79147 )
142
+ ss [5 ], ss [1 ] = RND (ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], 30 , 0x06CA6351 )
143
+ ss [4 ], ss [0 ] = RND (ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], 31 , 0x14292967 )
144
+ ss [3 ], ss [7 ] = RND (ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], 32 , 0x27B70A85 )
145
+ ss [2 ], ss [6 ] = RND (ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], 33 , 0x2E1B2138 )
146
+ ss [1 ], ss [5 ] = RND (ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], 34 , 0x4D2C6DFC )
147
+ ss [0 ], ss [4 ] = RND (ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], 35 , 0x53380D13 )
148
+ ss [7 ], ss [3 ] = RND (ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], 36 , 0x650A7354 )
149
+ ss [6 ], ss [2 ] = RND (ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], 37 , 0x766A0ABB )
150
+ ss [5 ], ss [1 ] = RND (ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], 38 , 0x81C2C92E )
151
+ ss [4 ], ss [0 ] = RND (ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], 39 , 0x92722C85 )
152
+ ss [3 ], ss [7 ] = RND (ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], 40 , 0xA2BFE8A1 )
153
+ ss [2 ], ss [6 ] = RND (ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], 41 , 0xA81A664B )
154
+ ss [1 ], ss [5 ] = RND (ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], 42 , 0xC24B8B70 )
155
+ ss [0 ], ss [4 ] = RND (ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], 43 , 0xC76C51A3 )
156
+ ss [7 ], ss [3 ] = RND (ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], 44 , 0xD192E819 )
157
+ ss [6 ], ss [2 ] = RND (ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], 45 , 0xD6990624 )
158
+ ss [5 ], ss [1 ] = RND (ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], 46 , 0xF40E3585 )
159
+ ss [4 ], ss [0 ] = RND (ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], 47 , 0x106AA070 )
160
+ ss [3 ], ss [7 ] = RND (ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], 48 , 0x19A4C116 )
161
+ ss [2 ], ss [6 ] = RND (ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], 49 , 0x1E376C08 )
162
+ ss [1 ], ss [5 ] = RND (ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], 50 , 0x2748774C )
163
+ ss [0 ], ss [4 ] = RND (ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], 51 , 0x34B0BCB5 )
164
+ ss [7 ], ss [3 ] = RND (ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], 52 , 0x391C0CB3 )
165
+ ss [6 ], ss [2 ] = RND (ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], 53 , 0x4ED8AA4A )
166
+ ss [5 ], ss [1 ] = RND (ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], 54 , 0x5B9CCA4F )
167
+ ss [4 ], ss [0 ] = RND (ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], 55 , 0x682E6FF3 )
168
+ ss [3 ], ss [7 ] = RND (ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], 56 , 0x748F82EE )
169
+ ss [2 ], ss [6 ] = RND (ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], 57 , 0x78A5636F )
170
+ ss [1 ], ss [5 ] = RND (ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], 58 , 0x84C87814 )
171
+ ss [0 ], ss [4 ] = RND (ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], ss [4 ], 59 , 0x8CC70208 )
172
+ ss [7 ], ss [3 ] = RND (ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], ss [3 ], 60 , 0x90BEFFFA )
173
+ ss [6 ], ss [2 ] = RND (ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], ss [2 ], 61 , 0xA4506CEB )
174
+ ss [5 ], ss [1 ] = RND (ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], ss [1 ], 62 , 0xBEF9A3F7 )
175
+ ss [4 ], ss [0 ] = RND (ss [1 ], ss [2 ], ss [3 ], ss [4 ], ss [5 ], ss [6 ], ss [7 ], ss [0 ], 63 , 0xC67178F2 )
304
176
305
177
# Feedback
306
178
dig = []
307
179
for i , x in enumerate (sha_info ["digest" ]):
308
180
dig .append ((x + ss [i ]) & 0xFFFFFFFF )
309
181
sha_info ["digest" ] = dig
310
182
183
+
311
184
def sha_update (sha_info , buffer ):
312
185
"""Update the SHA digest.
313
186
:param dict sha_info: SHA Digest.
@@ -355,11 +228,13 @@ def sha_update(sha_info, buffer):
355
228
sha_info ["data" ][pos : pos + count ] = list (buffer [buffer_idx : buffer_idx + count ])
356
229
sha_info ["local" ] = count
357
230
231
+
358
232
def getbuf (s ):
359
233
if isinstance (s , str ):
360
234
return s .encode ("ascii" )
361
235
return bytes (s )
362
236
237
+
363
238
def sha_final (sha_info ):
364
239
"""Finish computing the SHA Digest."""
365
240
lo_bit_count = sha_info ["count_lo" ]
@@ -389,11 +264,10 @@ def sha_final(sha_info):
389
264
390
265
dig = []
391
266
for i in sha_info ["digest" ]:
392
- dig .extend (
393
- [((i >> 24 ) & 0xFF ), ((i >> 16 ) & 0xFF ), ((i >> 8 ) & 0xFF ), (i & 0xFF )]
394
- )
267
+ dig .extend ([((i >> 24 ) & 0xFF ), ((i >> 16 ) & 0xFF ), ((i >> 8 ) & 0xFF ), (i & 0xFF )])
395
268
return bytes (dig )
396
269
270
+
397
271
# pylint: disable=protected-access
398
272
class sha256 :
399
273
digest_size = digestsize = SHA_DIGESTSIZE
@@ -429,6 +303,7 @@ def copy(self):
429
303
new ._sha = self ._sha .copy ()
430
304
return new
431
305
306
+
432
307
class HMAC :
433
308
"""RFC 2104 HMAC class. Also complies with RFC 4231.
434
309
@@ -453,9 +328,7 @@ def __init__(self, key, msg=None):
453
328
"""
454
329
455
330
if not isinstance (key , (bytes , bytearray )):
456
- raise TypeError (
457
- "key: expected bytes or bytearray, but got %r" % type (key ).__name__
458
- )
331
+ raise TypeError ("key: expected bytes or bytearray, but got %r" % type (key ).__name__ )
459
332
460
333
digestmod = sha256
461
334
@@ -534,6 +407,7 @@ def hexdigest(self):
534
407
hmac = self ._current ()
535
408
return hmac .hexdigest ()
536
409
410
+
537
411
def new_hmac (key , msg = None ):
538
412
"""Create a new hashing object and return it.
539
413
0 commit comments