package sha1
+import (
+ "math/bits"
+)
+
const (
_K0 = 0x5A827999
_K1 = 0x6ED9EBA1
i := 0
for ; i < 16; i++ {
f := b&c | (^b)&d
- a5 := a<<5 | a>>(32-5)
- b30 := b<<30 | b>>(32-30)
- t := a5 + f + e + w[i&0xf] + _K0
- a, b, c, d, e = t, a, b30, c, d
+ t := bits.RotateLeft32(a, 5) + f + e + w[i&0xf] + _K0
+ a, b, c, d, e = t, a, bits.RotateLeft32(b, 30), c, d
}
for ; i < 20; i++ {
tmp := w[(i-3)&0xf] ^ w[(i-8)&0xf] ^ w[(i-14)&0xf] ^ w[(i)&0xf]
w[i&0xf] = tmp<<1 | tmp>>(32-1)
f := b&c | (^b)&d
- a5 := a<<5 | a>>(32-5)
- b30 := b<<30 | b>>(32-30)
- t := a5 + f + e + w[i&0xf] + _K0
- a, b, c, d, e = t, a, b30, c, d
+ t := bits.RotateLeft32(a, 5) + f + e + w[i&0xf] + _K0
+ a, b, c, d, e = t, a, bits.RotateLeft32(b, 30), c, d
}
for ; i < 40; i++ {
tmp := w[(i-3)&0xf] ^ w[(i-8)&0xf] ^ w[(i-14)&0xf] ^ w[(i)&0xf]
w[i&0xf] = tmp<<1 | tmp>>(32-1)
f := b ^ c ^ d
- a5 := a<<5 | a>>(32-5)
- b30 := b<<30 | b>>(32-30)
- t := a5 + f + e + w[i&0xf] + _K1
- a, b, c, d, e = t, a, b30, c, d
+ t := bits.RotateLeft32(a, 5) + f + e + w[i&0xf] + _K1
+ a, b, c, d, e = t, a, bits.RotateLeft32(b, 30), c, d
}
for ; i < 60; i++ {
tmp := w[(i-3)&0xf] ^ w[(i-8)&0xf] ^ w[(i-14)&0xf] ^ w[(i)&0xf]
w[i&0xf] = tmp<<1 | tmp>>(32-1)
f := ((b | c) & d) | (b & c)
-
- a5 := a<<5 | a>>(32-5)
- b30 := b<<30 | b>>(32-30)
- t := a5 + f + e + w[i&0xf] + _K2
- a, b, c, d, e = t, a, b30, c, d
+ t := bits.RotateLeft32(a, 5) + f + e + w[i&0xf] + _K2
+ a, b, c, d, e = t, a, bits.RotateLeft32(b, 30), c, d
}
for ; i < 80; i++ {
tmp := w[(i-3)&0xf] ^ w[(i-8)&0xf] ^ w[(i-14)&0xf] ^ w[(i)&0xf]
w[i&0xf] = tmp<<1 | tmp>>(32-1)
f := b ^ c ^ d
- a5 := a<<5 | a>>(32-5)
- b30 := b<<30 | b>>(32-30)
- t := a5 + f + e + w[i&0xf] + _K3
- a, b, c, d, e = t, a, b30, c, d
+ t := bits.RotateLeft32(a, 5) + f + e + w[i&0xf] + _K3
+ a, b, c, d, e = t, a, bits.RotateLeft32(b, 30), c, d
}
h0 += a