init: v1.0.0
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
package sm2m
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"xdx.jelly/xgcl/grand"
|
||||
"xdx.jelly/xgcl/sm/sm2"
|
||||
)
|
||||
|
||||
func TestSign(t *testing.T) {
|
||||
|
||||
rnd := make([]byte, 32)
|
||||
clientKey, clientTempKey, _ := ClientGenSignKey_one(nil)
|
||||
_, _ = grand.GenerateRandom(rnd)
|
||||
serverKey, serverTempKey, publicKey, _ := ServerGenSignKey(clientTempKey, rnd)
|
||||
err := ClientGenSignKey_two(clientKey, serverTempKey, publicKey)
|
||||
if err != nil {
|
||||
t.Fatal("client's public key and server's public key are not equal.")
|
||||
}
|
||||
|
||||
d := realPrivateKey(serverKey, clientKey)
|
||||
if !publicKey.Equals(&d.PublicKey) {
|
||||
t.Fatal("client's public key and server's public key are not equal.")
|
||||
}
|
||||
|
||||
fmt.Println("clientKey:", clientKey)
|
||||
fmt.Println("serverKey:", serverKey)
|
||||
|
||||
// c := NewClientSignContext(pk, grand.Reader)
|
||||
c := new(ClientSignContext)
|
||||
e := make([]byte, 32)
|
||||
out, err := c.Initial(e)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
fmt.Printf("clientData: %x\n", out)
|
||||
out, err = ServerSign(serverKey, out, grand.Reader)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
fmt.Printf("serverData: %x\n", out)
|
||||
sig, err := c.Final(clientKey, out)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
fmt.Println(sig)
|
||||
|
||||
if !sm2.Verify(e, publicKey, sig) {
|
||||
t.Fatal("verify failed")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSignFuzz(t *testing.T) {
|
||||
|
||||
rnd := make([]byte, 32)
|
||||
_, _ = grand.GenerateRandom(rnd)
|
||||
|
||||
clientKey, clientTempKey, _ := ClientGenSignKey_one(rnd)
|
||||
_, _ = grand.GenerateRandom(rnd)
|
||||
serverKey, serverTempKey, publicKey, _ := ServerGenSignKey(clientTempKey, rnd)
|
||||
err := ClientGenSignKey_two(clientKey, serverTempKey, publicKey)
|
||||
if err != nil {
|
||||
t.Fatal("client's public key and server's public key are not equal.")
|
||||
}
|
||||
fmt.Println("clientKey:", clientKey)
|
||||
fmt.Println("serverKey:", serverKey)
|
||||
|
||||
for i := 0; i < 10000000; i++ {
|
||||
// c := NewClientSignContext(pk, grand.Reader)
|
||||
c := new(ClientSignContext)
|
||||
e := make([]byte, 32)
|
||||
_, _ = grand.GenerateRandom(e)
|
||||
|
||||
out, err := c.Initial(e)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
out, err = ServerSign(serverKey, out, grand.Reader)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
sig, err := c.Final(clientKey, out)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if !sm2.Verify(e, publicKey, sig) {
|
||||
fmt.Printf("e=%x\n", e)
|
||||
t.Fatal("verify failed")
|
||||
}
|
||||
if i > 0 && i%1000 == 0 {
|
||||
fmt.Println(i, " pass")
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user