mirror of
https://github.com/emmansun/gmsm.git
synced 2025-04-26 04:06:18 +08:00
39 lines
876 B
Go
39 lines
876 B
Go
package sm2
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"encoding/hex"
|
|
"testing"
|
|
)
|
|
|
|
func TestKeyExchangeSample(t *testing.T) {
|
|
priv1, _ := GenerateKey(rand.Reader)
|
|
priv2, _ := GenerateKey(rand.Reader)
|
|
initiator := NewKeyExchange(priv1, &priv2.PublicKey, []byte("Alice"), []byte("Bob"), 32, true)
|
|
responsder := NewKeyExchange(priv2, &priv1.PublicKey, []byte("Bob"), []byte("Alice"), 32, true)
|
|
|
|
rA, err := initiator.InitKeyExchange(rand.Reader)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
rB, s2, err := responsder.RepondKeyExchange(rand.Reader, rA)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
s1, err := initiator.ConfirmResponder(rB, s2)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = responsder.ConfirmInitiator(s1)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if hex.EncodeToString(initiator.key) != hex.EncodeToString(responsder.key) {
|
|
t.Errorf("got different key")
|
|
}
|
|
}
|