MAGIC - add rfc8998 test vectors

This commit is contained in:
Emman 2021-04-28 13:28:06 +08:00
parent 05412e2b7e
commit ce18b7d841
2 changed files with 61 additions and 0 deletions

54
sm4_test/ccm_sm4_test.go Normal file
View 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
}
}
}

View File

@ -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) {