@@ -77,16 +77,36 @@ Sha512.prototype.init = function () {
77
77
return this
78
78
}
79
79
80
- function S ( X , Xl , n ) {
81
- return ( X >>> n ) | ( Xl << ( 32 - n ) )
82
- }
83
-
84
80
function Ch ( x , y , z ) {
85
- return ( ( x & y ) ^ ( ( ~ x ) & z ) )
81
+ return z ^ ( x & ( y ^ z ) )
86
82
}
87
83
88
84
function Maj ( x , y , z ) {
89
- return ( ( x & y ) ^ ( x & z ) ^ ( y & z ) )
85
+ return ( x & y ) | ( z & ( x | y ) )
86
+ }
87
+
88
+ function Sigma0 ( x , xl ) {
89
+ return ( x >>> 28 | xl << 4 ) ^ ( xl >>> 2 | x << 30 ) ^ ( xl >>> 7 | x << 25 )
90
+ }
91
+
92
+ function Sigma1 ( x , xl ) {
93
+ return ( x >>> 14 | xl << 18 ) ^ ( x >>> 18 | xl << 14 ) ^ ( xl >>> 9 | x << 23 )
94
+ }
95
+
96
+ function Gamma0 ( x , xl ) {
97
+ return ( x >>> 1 | xl << 31 ) ^ ( x >>> 8 | xl << 24 ) ^ ( x >>> 7 )
98
+ }
99
+
100
+ function Gamma0l ( x , xl ) {
101
+ return ( x >>> 1 | xl << 31 ) ^ ( x >>> 8 | xl << 24 ) ^ ( x >>> 7 | xl << 25 )
102
+ }
103
+
104
+ function Gamma1 ( x , xl ) {
105
+ return ( x >>> 19 | xl << 13 ) ^ ( xl >>> 29 | x << 3 ) ^ ( x >>> 6 )
106
+ }
107
+
108
+ function Gamma1l ( x , xl ) {
109
+ return ( x >>> 19 | xl << 13 ) ^ ( xl >>> 29 | x << 3 ) ^ ( x >>> 6 | xl << 26 )
90
110
}
91
111
92
112
Sha512 . prototype . _update = function ( M ) {
@@ -116,13 +136,13 @@ Sha512.prototype._update = function (M) {
116
136
function calcW ( ) {
117
137
var x = W [ j - 15 * 2 ]
118
138
var xl = W [ j - 15 * 2 + 1 ]
119
- var gamma0 = S ( x , xl , 1 ) ^ S ( x , xl , 8 ) ^ ( x >>> 7 )
120
- var gamma0l = S ( xl , x , 1 ) ^ S ( xl , x , 8 ) ^ S ( xl , x , 7 )
139
+ var gamma0 = Gamma0 ( x , xl )
140
+ var gamma0l = Gamma0l ( xl , x )
121
141
122
142
x = W [ j - 2 * 2 ]
123
143
xl = W [ j - 2 * 2 + 1 ]
124
- var gamma1 = S ( x , xl , 19 ) ^ S ( xl , x , 29 ) ^ ( x >>> 6 )
125
- var gamma1l = S ( xl , x , 19 ) ^ S ( x , xl , 29 ) ^ S ( xl , x , 6 )
144
+ var gamma1 = Gamma1 ( x , xl )
145
+ var gamma1l = Gamma1l ( xl , x )
126
146
127
147
// W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
128
148
var Wi7 = W [ j - 7 * 2 ]
@@ -146,10 +166,10 @@ Sha512.prototype._update = function (M) {
146
166
var maj = Maj ( a , b , c )
147
167
var majl = Maj ( al , bl , cl )
148
168
149
- var sigma0h = S ( a , al , 28 ) ^ S ( al , a , 2 ) ^ S ( al , a , 7 )
150
- var sigma0l = S ( al , a , 28 ) ^ S ( a , al , 2 ) ^ S ( a , al , 7 )
151
- var sigma1h = S ( e , el , 14 ) ^ S ( e , el , 18 ) ^ S ( el , e , 9 )
152
- var sigma1l = S ( el , e , 14 ) ^ S ( el , e , 18 ) ^ S ( e , el , 9 )
169
+ var sigma0h = Sigma0 ( a , al )
170
+ var sigma0l = Sigma0 ( al , a )
171
+ var sigma1h = Sigma1 ( e , el )
172
+ var sigma1l = Sigma1 ( el , e )
153
173
154
174
// t1 = h + sigma1 + ch + K[i] + W[i]
155
175
var Ki = K [ j ]
0 commit comments