init: v1.0.0

This commit is contained in:
yaole
2026-05-27 23:03:00 +08:00
commit 8d97f750eb
466 changed files with 80067 additions and 0 deletions
+88
View File
@@ -0,0 +1,88 @@
//go:build ignore
// +build ignore
package sm3
// block 未优化的参考实现
// t[i] = Tj << (j mod 32)
var t = [64]uint32{
0x79cc4519, 0xf3988a32, 0xe7311465, 0xce6228cb, 0x9cc45197, 0x3988a32f, 0x7311465e, 0xe6228cbc,
0xcc451979, 0x988a32f3, 0x311465e7, 0x6228cbce, 0xc451979c, 0x88a32f39, 0x11465e73, 0x228cbce6,
0x9d8a7a87, 0x3b14f50f, 0x7629ea1e, 0xec53d43c, 0xd8a7a879, 0xb14f50f3, 0x629ea1e7, 0xc53d43ce,
0x8a7a879d, 0x14f50f3b, 0x29ea1e76, 0x53d43cec, 0xa7a879d8, 0x4f50f3b1, 0x9ea1e762, 0x3d43cec5,
0x7a879d8a, 0xf50f3b14, 0xea1e7629, 0xd43cec53, 0xa879d8a7, 0x50f3b14f, 0xa1e7629e, 0x43cec53d,
0x879d8a7a, 0x0f3b14f5, 0x1e7629ea, 0x3cec53d4, 0x79d8a7a8, 0xf3b14f50, 0xe7629ea1, 0xcec53d43,
0x9d8a7a87, 0x3b14f50f, 0x7629ea1e, 0xec53d43c, 0xd8a7a879, 0xb14f50f3, 0x629ea1e7, 0xc53d43ce,
0x8a7a879d, 0x14f50f3b, 0x29ea1e76, 0x53d43cec, 0xa7a879d8, 0x4f50f3b1, 0x9ea1e762, 0x3d43cec5,
}
// Block functions the standerd algo, for compare test
func blockRef(dig *digest, p []byte) {
var a, b, c, d, e, f, g, h uint32
var w [16]uint32
for len(p) >= chunk {
a = dig.h[0]
b = dig.h[1]
c = dig.h[2]
d = dig.h[3]
e = dig.h[4]
f = dig.h[5]
g = dig.h[6]
h = dig.h[7]
for i := 0; i < 16; i++ {
j := i * 4
w[i] = uint32(p[j+3]) | uint32(p[j+2])<<8 | uint32(p[j+1])<<16 | uint32(p[j])<<24
}
for i := 0; i < 16; i++ {
x := (a<<12 | a>>20)
ss1 := x + e + t[i]
ss1 = ss1<<7 | ss1>>25
ss2 := ss1 ^ x
tt1 := (a ^ b ^ c) + d + ss2 + (w[i] ^ w[(i+4)&15])
tt2 := (e ^ f ^ g) + h + ss1 + w[i]
d = c
c = b<<9 | b>>23
b = a
a = tt1
h = g
g = f<<19 | f>>13
f = e
e = tt2 ^ (tt2<<9 | tt2>>23) ^ (tt2<<17 | tt2>>15)
tw := w[i] ^ w[(i+7)&15] ^ (w[(i+13)&15]<<15 | w[(i+13)&15]>>17)
w[i] = tw ^ (tw<<15 | tw>>17) ^ (tw<<23 | tw>>9) ^ (w[(i+3)&15]<<7 | w[(i+3)&15]>>25) ^ w[(i+10)&15]
}
for i := 16; i < 64; i++ {
x := (a<<12 | a>>20)
ss1 := x + e + t[i]
ss1 = ss1<<7 | ss1>>25
ss2 := ss1 ^ x
tt1 := ((a & b) | (b & c) | (a & c)) + d + ss2 + (w[i&15] ^ w[(i+4)&15])
tt2 := ((e & f) | (^e & g)) + h + ss1 + w[i&15]
d = c
c = b<<9 | b>>23
b = a
a = tt1
h = g
g = f<<19 | f>>13
f = e
e = tt2 ^ (tt2<<9 | tt2>>23) ^ (tt2<<17 | tt2>>15)
tw := w[i&15] ^ w[(i+7)&15] ^ (w[(i+13)&15]<<15 | w[(i+13)&15]>>17)
w[i&15] = tw ^ (tw<<15 | tw>>17) ^ (tw<<23 | tw>>9) ^ (w[(i+3)&15]<<7 | w[(i+3)&15]>>25) ^ w[(i+10)&15]
}
p = p[chunk:]
dig.h[0] ^= a
dig.h[1] ^= b
dig.h[2] ^= c
dig.h[3] ^= d
dig.h[4] ^= e
dig.h[5] ^= f
dig.h[6] ^= g
dig.h[7] ^= h
}
}