@@ -10,6 +10,7 @@ package scrypt // import "golang.org/x/crypto/scrypt"
1010import (
1111 "crypto/sha256"
1212 "errors"
13+ "math/bits"
1314
1415 "golang.org/x/crypto/pbkdf2"
1516)
@@ -52,77 +53,45 @@ func salsaXOR(tmp *[16]uint32, in, out []uint32) {
5253 x9 , x10 , x11 , x12 , x13 , x14 , x15 := w9 , w10 , w11 , w12 , w13 , w14 , w15
5354
5455 for i := 0 ; i < 8 ; i += 2 {
55- u := x0 + x12
56- x4 ^= u << 7 | u >> (32 - 7 )
57- u = x4 + x0
58- x8 ^= u << 9 | u >> (32 - 9 )
59- u = x8 + x4
60- x12 ^= u << 13 | u >> (32 - 13 )
61- u = x12 + x8
62- x0 ^= u << 18 | u >> (32 - 18 )
63-
64- u = x5 + x1
65- x9 ^= u << 7 | u >> (32 - 7 )
66- u = x9 + x5
67- x13 ^= u << 9 | u >> (32 - 9 )
68- u = x13 + x9
69- x1 ^= u << 13 | u >> (32 - 13 )
70- u = x1 + x13
71- x5 ^= u << 18 | u >> (32 - 18 )
72-
73- u = x10 + x6
74- x14 ^= u << 7 | u >> (32 - 7 )
75- u = x14 + x10
76- x2 ^= u << 9 | u >> (32 - 9 )
77- u = x2 + x14
78- x6 ^= u << 13 | u >> (32 - 13 )
79- u = x6 + x2
80- x10 ^= u << 18 | u >> (32 - 18 )
81-
82- u = x15 + x11
83- x3 ^= u << 7 | u >> (32 - 7 )
84- u = x3 + x15
85- x7 ^= u << 9 | u >> (32 - 9 )
86- u = x7 + x3
87- x11 ^= u << 13 | u >> (32 - 13 )
88- u = x11 + x7
89- x15 ^= u << 18 | u >> (32 - 18 )
90-
91- u = x0 + x3
92- x1 ^= u << 7 | u >> (32 - 7 )
93- u = x1 + x0
94- x2 ^= u << 9 | u >> (32 - 9 )
95- u = x2 + x1
96- x3 ^= u << 13 | u >> (32 - 13 )
97- u = x3 + x2
98- x0 ^= u << 18 | u >> (32 - 18 )
99-
100- u = x5 + x4
101- x6 ^= u << 7 | u >> (32 - 7 )
102- u = x6 + x5
103- x7 ^= u << 9 | u >> (32 - 9 )
104- u = x7 + x6
105- x4 ^= u << 13 | u >> (32 - 13 )
106- u = x4 + x7
107- x5 ^= u << 18 | u >> (32 - 18 )
108-
109- u = x10 + x9
110- x11 ^= u << 7 | u >> (32 - 7 )
111- u = x11 + x10
112- x8 ^= u << 9 | u >> (32 - 9 )
113- u = x8 + x11
114- x9 ^= u << 13 | u >> (32 - 13 )
115- u = x9 + x8
116- x10 ^= u << 18 | u >> (32 - 18 )
117-
118- u = x15 + x14
119- x12 ^= u << 7 | u >> (32 - 7 )
120- u = x12 + x15
121- x13 ^= u << 9 | u >> (32 - 9 )
122- u = x13 + x12
123- x14 ^= u << 13 | u >> (32 - 13 )
124- u = x14 + x13
125- x15 ^= u << 18 | u >> (32 - 18 )
56+ x4 ^= bits .RotateLeft32 (x0 + x12 , 7 )
57+ x8 ^= bits .RotateLeft32 (x4 + x0 , 9 )
58+ x12 ^= bits .RotateLeft32 (x8 + x4 , 13 )
59+ x0 ^= bits .RotateLeft32 (x12 + x8 , 18 )
60+
61+ x9 ^= bits .RotateLeft32 (x5 + x1 , 7 )
62+ x13 ^= bits .RotateLeft32 (x9 + x5 , 9 )
63+ x1 ^= bits .RotateLeft32 (x13 + x9 , 13 )
64+ x5 ^= bits .RotateLeft32 (x1 + x13 , 18 )
65+
66+ x14 ^= bits .RotateLeft32 (x10 + x6 , 7 )
67+ x2 ^= bits .RotateLeft32 (x14 + x10 , 9 )
68+ x6 ^= bits .RotateLeft32 (x2 + x14 , 13 )
69+ x10 ^= bits .RotateLeft32 (x6 + x2 , 18 )
70+
71+ x3 ^= bits .RotateLeft32 (x15 + x11 , 7 )
72+ x7 ^= bits .RotateLeft32 (x3 + x15 , 9 )
73+ x11 ^= bits .RotateLeft32 (x7 + x3 , 13 )
74+ x15 ^= bits .RotateLeft32 (x11 + x7 , 18 )
75+
76+ x1 ^= bits .RotateLeft32 (x0 + x3 , 7 )
77+ x2 ^= bits .RotateLeft32 (x1 + x0 , 9 )
78+ x3 ^= bits .RotateLeft32 (x2 + x1 , 13 )
79+ x0 ^= bits .RotateLeft32 (x3 + x2 , 18 )
80+
81+ x6 ^= bits .RotateLeft32 (x5 + x4 , 7 )
82+ x7 ^= bits .RotateLeft32 (x6 + x5 , 9 )
83+ x4 ^= bits .RotateLeft32 (x7 + x6 , 13 )
84+ x5 ^= bits .RotateLeft32 (x4 + x7 , 18 )
85+
86+ x11 ^= bits .RotateLeft32 (x10 + x9 , 7 )
87+ x8 ^= bits .RotateLeft32 (x11 + x10 , 9 )
88+ x9 ^= bits .RotateLeft32 (x8 + x11 , 13 )
89+ x10 ^= bits .RotateLeft32 (x9 + x8 , 18 )
90+
91+ x12 ^= bits .RotateLeft32 (x15 + x14 , 7 )
92+ x13 ^= bits .RotateLeft32 (x12 + x15 , 9 )
93+ x14 ^= bits .RotateLeft32 (x13 + x12 , 13 )
94+ x15 ^= bits .RotateLeft32 (x14 + x13 , 18 )
12695 }
12796 x0 += w0
12897 x1 += w1
0 commit comments