From f437855de0566cd90dae1c8e549e4909e13ac5ca Mon Sep 17 00:00:00 2001 From: Sun Yimin Date: Wed, 3 Aug 2022 16:31:02 +0800 Subject: [PATCH] add unit test case and fix typo --- sm2/sm2_keyexchange_test.go | 8 +++--- sm9/sm9_test.go | 50 +++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 4 deletions(-) diff --git a/sm2/sm2_keyexchange_test.go b/sm2/sm2_keyexchange_test.go index 9d6a490..bf14989 100644 --- a/sm2/sm2_keyexchange_test.go +++ b/sm2/sm2_keyexchange_test.go @@ -13,7 +13,7 @@ func TestKeyExchangeSample(t *testing.T) { if err != nil { t.Fatal(err) } - responsder, err := NewKeyExchange(priv2, &priv1.PublicKey, []byte("Bob"), []byte("Alice"), 32, true) + responder, err := NewKeyExchange(priv2, &priv1.PublicKey, []byte("Bob"), []byte("Alice"), 32, true) if err != nil { t.Fatal(err) } @@ -22,7 +22,7 @@ func TestKeyExchangeSample(t *testing.T) { t.Fatal(err) } - rB, s2, err := responsder.RepondKeyExchange(rand.Reader, rA) + rB, s2, err := responder.RepondKeyExchange(rand.Reader, rA) if err != nil { t.Fatal(err) } @@ -32,12 +32,12 @@ func TestKeyExchangeSample(t *testing.T) { t.Fatal(err) } - err = responsder.ConfirmInitiator(s1) + err = responder.ConfirmInitiator(s1) if err != nil { t.Fatal(err) } - if hex.EncodeToString(initiator.key) != hex.EncodeToString(responsder.key) { + if hex.EncodeToString(initiator.key) != hex.EncodeToString(responder.key) { t.Errorf("got different key") } } diff --git a/sm9/sm9_test.go b/sm9/sm9_test.go index 817e581..32826b7 100644 --- a/sm9/sm9_test.go +++ b/sm9/sm9_test.go @@ -194,6 +194,56 @@ func TestKeyExchangeSample(t *testing.T) { } } +func TestKeyExchange(t *testing.T) { + hid := byte(0x02) + userA := []byte("Alice") + userB := []byte("Bob") + masterKey, err := GenerateEncryptMasterKey(rand.Reader) + if err != nil { + t.Fatal(err) + } + + userKey, err := masterKey.GenerateUserKey(userA, hid) + if err != nil { + t.Fatal(err) + } + initiator := NewKeyExchange(userKey, userA, userB, 16, true) + + userKey, err = masterKey.GenerateUserKey(userB, hid) + if err != nil { + t.Fatal(err) + } + responder := NewKeyExchange(userKey, userB, userA, 16, true) + + // A1-A4 + rA, err := initiator.InitKeyExchange(rand.Reader, hid) + if err != nil { + t.Fatal(err) + } + + // B1 - B7 + rB, sigB, err := responder.RepondKeyExchange(rand.Reader, hid, rA) + if err != nil { + t.Fatal(err) + } + + // A5 -A8 + sigA, err := initiator.ConfirmResponder(rB, sigB) + if err != nil { + t.Fatal(err) + } + + // B8 + err = responder.ConfirmInitiator(sigA) + if err != nil { + t.Fatal(err) + } + + if hex.EncodeToString(initiator.GetSharedKey()) != hex.EncodeToString(responder.GetSharedKey()) { + t.Errorf("got different key") + } +} + func TestWrapKey(t *testing.T) { masterKey, err := GenerateEncryptMasterKey(rand.Reader) hid := byte(0x01)