init: v1.0.0
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
package sm2m
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"xdx.jelly/xgcl/grand"
|
||||
"xdx.jelly/xgcl/sm/sm2"
|
||||
)
|
||||
|
||||
func TestAuthKey(t *testing.T) {
|
||||
// Generate key
|
||||
clientKey, clientTempKey, err := ClientGenSignKey_one(grand.GetRandom(sm2.ByteSize()))
|
||||
if err != nil {
|
||||
t.Log()
|
||||
t.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
serverKey, serverTempKey, publicKey, _ := ServerGenSignKey(clientTempKey, grand.GetRandom(sm2.ByteSize()))
|
||||
if err != nil {
|
||||
t.Log()
|
||||
t.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
if err := ClientGenSignKey_two(clientKey, serverTempKey, publicKey); err != nil {
|
||||
t.Log()
|
||||
t.Fail()
|
||||
return
|
||||
}
|
||||
t.Log("======= 协同密钥 =========")
|
||||
t.Logf("ClientKey=%v\nServerKey=%v\nPublicKey=%v", clientKey, serverKey, publicKey)
|
||||
|
||||
d := realPrivateKey(clientKey, serverKey)
|
||||
t.Logf("Real private key: %v", d)
|
||||
t.Logf("Real public key: %v", sm2.GenPublicKey(d))
|
||||
|
||||
t.Log("================ Signature Test==============")
|
||||
c := NewClientSignContext(publicKey, grand.Reader)
|
||||
e := grand.GetRandom(sm2.ByteSize())
|
||||
out, _ := c.Initial(e)
|
||||
out, _ = ServerSign(serverKey, out, grand.Reader)
|
||||
sig, _ := c.Final(clientKey, out)
|
||||
t.Logf("Signature: %v", sig)
|
||||
isValid := sm2.Verify(e, publicKey, sig)
|
||||
if !isValid {
|
||||
t.Log("verify success")
|
||||
t.Fail()
|
||||
return
|
||||
}
|
||||
t.Logf("verify = %v", isValid)
|
||||
|
||||
t.Log("========== auth key ===========")
|
||||
clientAuthKey, randomFactor, err := ClientGenAuthKey(clientKey, grand.Reader)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
serverAuthKey, err := ServerGenAuthKey(serverKey, randomFactor)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
ad := realPrivateKey(clientAuthKey, serverAuthKey)
|
||||
if ad.D.Cmp(d.D) != 0 {
|
||||
t.Log("auth key generate failed")
|
||||
t.Fail()
|
||||
return
|
||||
}
|
||||
t.Logf("Real auth private key: %v", ad)
|
||||
t.Logf("Real auth public key: %v", sm2.GenPublicKey(ad))
|
||||
t.Log("================ Signature Test (auth key)==============")
|
||||
c = NewClientSignContext(publicKey, grand.Reader)
|
||||
e = grand.GetRandom(sm2.ByteSize())
|
||||
out, _ = c.Initial(e)
|
||||
out, _ = ServerSign(serverAuthKey, out, grand.Reader)
|
||||
sig, _ = c.Final(clientAuthKey, out)
|
||||
t.Logf("Signature: %v", sig)
|
||||
isValid = sm2.Verify(e, publicKey, sig)
|
||||
if !isValid {
|
||||
t.Log("verify success")
|
||||
t.Fail()
|
||||
return
|
||||
}
|
||||
t.Logf("verify = %v", isValid)
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user