mirror of
https://github.com/emmansun/gmsm.git
synced 2025-04-26 12:16:20 +08:00
MAGIC - add rfc8998 test vectors
This commit is contained in:
parent
05412e2b7e
commit
ce18b7d841
54
sm4_test/ccm_sm4_test.go
Normal file
54
sm4_test/ccm_sm4_test.go
Normal file
@ -0,0 +1,54 @@
|
||||
package sm4_test
|
||||
|
||||
import (
|
||||
"encoding/hex"
|
||||
"testing"
|
||||
|
||||
smcipher "github.com/emmansun/gmsm/cipher"
|
||||
"github.com/emmansun/gmsm/sm4"
|
||||
)
|
||||
|
||||
var sm4CCMTests = []struct {
|
||||
key, nonce, plaintext, ad, result string
|
||||
}{
|
||||
{ // https://tools.ietf.org/html/rfc8998 A.2. SM4-CCM Test Vectors
|
||||
"0123456789abcdeffedcba9876543210",
|
||||
"00001234567800000000abcd",
|
||||
"aaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbccccccccccccccccddddddddddddddddeeeeeeeeeeeeeeeeffffffffffffffffeeeeeeeeeeeeeeeeaaaaaaaaaaaaaaaa",
|
||||
"feedfacedeadbeeffeedfacedeadbeefabaddad2",
|
||||
"48af93501fa62adbcd414cce6034d895dda1bf8f132f042098661572e7483094fd12e518ce062c98acee28d95df4416bed31a2f04476c18bb40c84a74b97dc5b16842d4fa186f56ab33256971fa110f4",
|
||||
},
|
||||
}
|
||||
|
||||
func TestCCM(t *testing.T) {
|
||||
for i, tt := range sm4CCMTests {
|
||||
nonce, _ := hex.DecodeString(tt.nonce)
|
||||
plaintext, _ := hex.DecodeString(tt.plaintext)
|
||||
ad, _ := hex.DecodeString(tt.ad)
|
||||
key, _ := hex.DecodeString(tt.key)
|
||||
tagSize := (len(tt.result) - len(tt.plaintext)) / 2
|
||||
c, err := sm4.NewCipher(key)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
sm4ccm, err := smcipher.NewCCMWithNonceAndTagSize(c, len(nonce), tagSize)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
ct := sm4ccm.Seal(nil, nonce, plaintext, ad)
|
||||
if ctHex := hex.EncodeToString(ct); ctHex != tt.result {
|
||||
t.Errorf("#%d: got %s, want %s", i, ctHex, tt.result)
|
||||
continue
|
||||
}
|
||||
|
||||
//func (c *ccm) Open(dst, nonce, ciphertext, data []byte) ([]byte, error)
|
||||
pt, err := sm4ccm.Open(nil, nonce, ct, ad)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if ptHex := hex.EncodeToString(pt); ptHex != tt.plaintext {
|
||||
t.Errorf("#%d: got %s, want %s", i, ptHex, tt.plaintext)
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
@ -203,6 +203,13 @@ var sm4GCMTests = []struct {
|
||||
"",
|
||||
"250327c674aaf477aef2675748cf6971",
|
||||
},
|
||||
{ // https://tools.ietf.org/html/rfc8998 A.1. SM4-GCM Test Vectors
|
||||
"0123456789abcdeffedcba9876543210",
|
||||
"00001234567800000000abcd",
|
||||
"aaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbccccccccccccccccddddddddddddddddeeeeeeeeeeeeeeeeffffffffffffffffeeeeeeeeeeeeeeeeaaaaaaaaaaaaaaaa",
|
||||
"feedfacedeadbeeffeedfacedeadbeefabaddad2",
|
||||
"17f399f08c67d5ee19d0dc9969c4bb7d5fd46fd3756489069157b282bb200735d82710ca5c22f0ccfa7cbf93d496ac15a56834cbcf98c397b4024a2691233b8d83de3541e4c2b58177e065a9bf7b62ec",
|
||||
},
|
||||
}
|
||||
|
||||
func TestSM4GCM(t *testing.T) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user