@@ -46,25 +46,8 @@ def new_shaobject():
46
46
Gamma0 = lambda x : (S (x , 7 ) ^ S (x , 18 ) ^ R (x , 3 ))
47
47
Gamma1 = lambda x : (S (x , 17 ) ^ S (x , 19 ) ^ R (x , 10 ))
48
48
49
- def sha_transform (sha_info ):
50
- W = []
51
-
52
- d = sha_info ['data' ]
53
- for i in range (0 ,16 ):
54
- W .append ( (d [4 * i ]<< 24 ) + (d [4 * i + 1 ]<< 16 ) + (d [4 * i + 2 ]<< 8 ) + d [4 * i + 3 ])
55
-
56
- for i in range (16 ,64 ):
57
- W .append ( (Gamma1 (W [i - 2 ]) + W [i - 7 ] + Gamma0 (W [i - 15 ]) + W [i - 16 ]) & 0xffffffff )
58
-
59
- ss = sha_info ['digest' ][:]
60
-
61
- def RND (a ,b ,c ,d ,e ,f ,g ,h ,i ,ki ):
62
- t0 = h + Sigma1 (e ) + Ch (e , f , g ) + ki + W [i ];
63
- t1 = Sigma0 (a ) + Maj (a , b , c );
64
- d += t0 ;
65
- h = t0 + t1 ;
66
- return d & 0xffffffff , h & 0xffffffff
67
-
49
+ # TODO: TRUFFLE CHANGE BEGIN
50
+ def do_part1 (ss , RND ):
68
51
ss [3 ], ss [7 ] = RND (ss [0 ],ss [1 ],ss [2 ],ss [3 ],ss [4 ],ss [5 ],ss [6 ],ss [7 ],0 ,0x428a2f98 );
69
52
ss [2 ], ss [6 ] = RND (ss [7 ],ss [0 ],ss [1 ],ss [2 ],ss [3 ],ss [4 ],ss [5 ],ss [6 ],1 ,0x71374491 );
70
53
ss [1 ], ss [5 ] = RND (ss [6 ],ss [7 ],ss [0 ],ss [1 ],ss [2 ],ss [3 ],ss [4 ],ss [5 ],2 ,0xb5c0fbcf );
@@ -95,6 +78,9 @@ def RND(a,b,c,d,e,f,g,h,i,ki):
95
78
ss [0 ], ss [4 ] = RND (ss [5 ],ss [6 ],ss [7 ],ss [0 ],ss [1 ],ss [2 ],ss [3 ],ss [4 ],27 ,0xbf597fc7 );
96
79
ss [7 ], ss [3 ] = RND (ss [4 ],ss [5 ],ss [6 ],ss [7 ],ss [0 ],ss [1 ],ss [2 ],ss [3 ],28 ,0xc6e00bf3 );
97
80
ss [6 ], ss [2 ] = RND (ss [3 ],ss [4 ],ss [5 ],ss [6 ],ss [7 ],ss [0 ],ss [1 ],ss [2 ],29 ,0xd5a79147 );
81
+
82
+
83
+ def do_part2 (ss , RND ):
98
84
ss [5 ], ss [1 ] = RND (ss [2 ],ss [3 ],ss [4 ],ss [5 ],ss [6 ],ss [7 ],ss [0 ],ss [1 ],30 ,0x06ca6351 );
99
85
ss [4 ], ss [0 ] = RND (ss [1 ],ss [2 ],ss [3 ],ss [4 ],ss [5 ],ss [6 ],ss [7 ],ss [0 ],31 ,0x14292967 );
100
86
ss [3 ], ss [7 ] = RND (ss [0 ],ss [1 ],ss [2 ],ss [3 ],ss [4 ],ss [5 ],ss [6 ],ss [7 ],32 ,0x27b70a85 );
@@ -129,12 +115,41 @@ def RND(a,b,c,d,e,f,g,h,i,ki):
129
115
ss [6 ], ss [2 ] = RND (ss [3 ],ss [4 ],ss [5 ],ss [6 ],ss [7 ],ss [0 ],ss [1 ],ss [2 ],61 ,0xa4506ceb );
130
116
ss [5 ], ss [1 ] = RND (ss [2 ],ss [3 ],ss [4 ],ss [5 ],ss [6 ],ss [7 ],ss [0 ],ss [1 ],62 ,0xbef9a3f7 );
131
117
ss [4 ], ss [0 ] = RND (ss [1 ],ss [2 ],ss [3 ],ss [4 ],ss [5 ],ss [6 ],ss [7 ],ss [0 ],63 ,0xc67178f2 );
118
+ # TODO: TRUFFLE CHANGE END
119
+
120
+
121
+ def sha_transform256 (sha_info ):
122
+ W = []
123
+
124
+ d = sha_info ['data' ]
125
+ for i in range (0 ,16 ):
126
+ W .append ( (d [4 * i ]<< 24 ) + (d [4 * i + 1 ]<< 16 ) + (d [4 * i + 2 ]<< 8 ) + d [4 * i + 3 ])
127
+
128
+ for i in range (16 ,64 ):
129
+ W .append ( (Gamma1 (W [i - 2 ]) + W [i - 7 ] + Gamma0 (W [i - 15 ]) + W [i - 16 ]) & 0xffffffff )
130
+
131
+ ss = sha_info ['digest' ][:]
132
+ def RND (a ,b ,c ,d ,e ,f ,g ,h ,i ,ki ):
133
+ t0 = h + Sigma1 (e ) + Ch (e , f , g ) + ki + W [i ];
134
+ t1 = Sigma0 (a ) + Maj (a , b , c );
135
+ d += t0 ;
136
+ h = t0 + t1 ;
137
+ return d & 0xffffffff , h & 0xffffffff
138
+
139
+ # TODO: TRUFFLE CHANGE BEGIN
140
+ do_part1 (ss , RND )
141
+ do_part2 (ss , RND )
142
+ # TODO: TRUFFLE CHANGE END
132
143
133
144
dig = []
134
145
for i , x in enumerate (sha_info ['digest' ]):
135
146
dig .append ( (x + ss [i ]) & 0xffffffff )
136
147
sha_info ['digest' ] = dig
137
148
149
+
150
+ def sha_transform (sha_info ):
151
+ sha_transform256 (sha_info )
152
+
138
153
def sha_init ():
139
154
sha_info = new_shaobject ()
140
155
sha_info ['digest' ] = [0x6A09E667 , 0xBB67AE85 , 0x3C6EF372 , 0xA54FF53A , 0x510E527F , 0x9B05688C , 0x1F83D9AB , 0x5BE0CD19 ]
0 commit comments