mirror of
https://github.com/emmansun/gmsm.git
synced 2025-04-27 04:36:19 +08:00
sm4: fix test case issue
This commit is contained in:
parent
daa6853722
commit
87f6f6a736
50
sm4/cipher_asm_test.go
Normal file
50
sm4/cipher_asm_test.go
Normal file
@ -0,0 +1,50 @@
|
||||
//go:build (amd64 && !generic) || (arm64 && !generic)
|
||||
// +build amd64,!generic arm64,!generic
|
||||
|
||||
package sm4
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"crypto/cipher"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestWithoutGFMUL(t *testing.T) {
|
||||
key := make([]byte, 16)
|
||||
src := make([]byte, 16)
|
||||
var dst []byte
|
||||
var nonce [12]byte
|
||||
var c cipher.Block
|
||||
var err error
|
||||
|
||||
if supportSM4 {
|
||||
c, err = newCipherNI(key)
|
||||
} else if !supportsAES {
|
||||
c, err = newCipherGeneric(key)
|
||||
} else {
|
||||
blocks := 4
|
||||
if useAVX2 {
|
||||
blocks = 8
|
||||
}
|
||||
c1 := &sm4CipherAsm{sm4Cipher{make([]uint32, rounds), make([]uint32, rounds)}, blocks, blocks * BlockSize}
|
||||
expandKeyAsm(&key[0], &ck[0], &c1.enc[0], &c1.dec[0], INST_AES)
|
||||
c = c1
|
||||
}
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
var sm4gcm cipher.AEAD
|
||||
sm4gcm, err = cipher.NewGCM(c)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
dst = sm4gcm.Seal(nil, nonce[:], src, nil)
|
||||
src, err = sm4gcm.Open(nil, nonce[:], dst, nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !bytes.Equal(key, src) {
|
||||
t.Errorf("bad encryption")
|
||||
}
|
||||
}
|
@ -1,8 +1,6 @@
|
||||
package sm4
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"crypto/cipher"
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
@ -82,46 +80,6 @@ func TestEncryptDecryptPanic(t *testing.T) {
|
||||
shouldPanic(t, func() { c.Decrypt(src[1:], src) })
|
||||
}
|
||||
|
||||
func TestWithoutGFMUL(t *testing.T) {
|
||||
key := make([]byte, 16)
|
||||
src := make([]byte, 16)
|
||||
var dst []byte
|
||||
var nonce [12]byte
|
||||
var c cipher.Block
|
||||
var err error
|
||||
|
||||
if supportSM4 {
|
||||
c, err = newCipherNI(key)
|
||||
} else if !supportsAES {
|
||||
c, err = newCipherGeneric(key)
|
||||
} else {
|
||||
blocks := 4
|
||||
if useAVX2 {
|
||||
blocks = 8
|
||||
}
|
||||
c1 := &sm4CipherAsm{sm4Cipher{make([]uint32, rounds), make([]uint32, rounds)}, blocks, blocks * BlockSize}
|
||||
expandKeyAsm(&key[0], &ck[0], &c1.enc[0], &c1.dec[0], INST_AES)
|
||||
c = c1
|
||||
}
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
var sm4gcm cipher.AEAD
|
||||
sm4gcm, err = cipher.NewGCM(c)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
dst = sm4gcm.Seal(nil, nonce[:], src, nil)
|
||||
src, err = sm4gcm.Open(nil, nonce[:], dst, nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !bytes.Equal(key, src) {
|
||||
t.Errorf("bad encryption")
|
||||
}
|
||||
}
|
||||
|
||||
func shouldPanic(t *testing.T, f func()) {
|
||||
t.Helper()
|
||||
defer func() { _ = recover() }()
|
||||
|
Loading…
x
Reference in New Issue
Block a user