sm3: add copyResultsBy4 test case

This commit is contained in:
Sun Yimin 2024-09-06 14:19:40 +08:00 committed by GitHub
parent 664f5dcae3
commit 7a84c6fd29
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -7,6 +7,7 @@
package sm3 package sm3
import ( import (
"encoding/binary"
"fmt" "fmt"
"testing" "testing"
) )
@ -57,7 +58,7 @@ func TestBlockMultBy4(t *testing.T) {
buffer := make([]byte, preallocSizeBy4) buffer := make([]byte, preallocSizeBy4)
blockMultBy4(&digs[0], &p[0], &buffer[0], 1) blockMultBy4(&digs[0], &p[0], &buffer[0], 1)
expected := "[66c7f0f4 62eeedd9 d1f2d46b dc10e4e2 4167c487 5cf2f7a2 297da02b 8f4ba8e0]" expected := "[66c7f0f4 62eeedd9 d1f2d46b dc10e4e2 4167c487 5cf2f7a2 297da02b 8f4ba8e0]"
for i:=0; i<4; i++ { for i := 0; i < 4; i++ {
s := fmt.Sprintf("%x", digs[i][:]) s := fmt.Sprintf("%x", digs[i][:])
if s != expected { if s != expected {
t.Errorf("digs[%d] got %s", i, s) t.Errorf("digs[%d] got %s", i, s)
@ -68,7 +69,7 @@ func TestBlockMultBy4(t *testing.T) {
p = createTwoBlocksBy4() p = createTwoBlocksBy4()
blockMultBy4(&digs[0], &p[0], &buffer[0], 2) blockMultBy4(&digs[0], &p[0], &buffer[0], 2)
expected = "[debe9ff9 2275b8a1 38604889 c18e5a4d 6fdb70e5 387e5765 293dcba3 9c0c5732]" expected = "[debe9ff9 2275b8a1 38604889 c18e5a4d 6fdb70e5 387e5765 293dcba3 9c0c5732]"
for i:=0; i<4; i++ { for i := 0; i < 4; i++ {
s := fmt.Sprintf("%x", digs[i][:]) s := fmt.Sprintf("%x", digs[i][:])
if s != expected { if s != expected {
t.Errorf("digs[%d] got %s", i, s) t.Errorf("digs[%d] got %s", i, s)
@ -76,6 +77,28 @@ func TestBlockMultBy4(t *testing.T) {
} }
} }
func TestCopyResultsBy4(t *testing.T) {
var m [4][8]uint32
var ret, expected [128]byte
var k uint32 = 0
for i := 0; i < 4; i++ {
for j := 0; j < 8; j++ {
m[i][j] = k
k++
fmt.Printf("%08x ", m[i][j])
}
fmt.Println()
}
copyResultsBy4(&m[0][0], &ret[0])
for i := 0; i < 4; i++ {
for j := 0; j < 8; j++ {
binary.BigEndian.PutUint32(expected[i*32+j*4:], m[i][j])
}
}
t.Errorf("got %x, expected %x\n", ret[:], expected[:])
}
func BenchmarkOneBlockBy4(b *testing.B) { func BenchmarkOneBlockBy4(b *testing.B) {
digs := initState4() digs := initState4()
p := createOneBlockBy4() p := createOneBlockBy4()