add unit test case and fix typo

This commit is contained in:
Sun Yimin 2022-08-03 16:31:02 +08:00 committed by GitHub
parent 2071214f1f
commit f437855de0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 54 additions and 4 deletions

View File

@ -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")
}
}

View File

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