89 lines
2.4 KiB
Go
89 lines
2.4 KiB
Go
package sm2m
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"xdx.jelly/xgcl/grand"
|
|
"xdx.jelly/xgcl/sm/sm2"
|
|
)
|
|
|
|
func TestAuditSign(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.Printf("客户端密钥分量: %x\n", clientKey.Bytes())
|
|
fmt.Printf("服务端密钥分量: %x\n", serverKey.Bytes())
|
|
fmt.Printf("公钥: %x\n", publicKey.Bytes())
|
|
|
|
c := new(ClientSignContext)
|
|
e := make([]byte, 32)
|
|
grand.GenerateRandom(e)
|
|
fmt.Printf("签名数据e: %x\n", 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)
|
|
}
|
|
fmt.Printf("签名结果: %x\n", sig.Bytes())
|
|
|
|
if !sm2.Verify(e, publicKey, sig) {
|
|
t.Fatal("verify failed")
|
|
}
|
|
}
|
|
|
|
func TestAuditDec(t *testing.T) {
|
|
|
|
rnd := make([]byte, 32)
|
|
grand.ReaderOne.Read(rnd)
|
|
clientKey, clientTempKey, _ := ClientGenSignKey_one(rnd)
|
|
// _, _ = grand.GenerateRandom(rnd)
|
|
grand.ReaderTwo.Read(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.Printf("客户端密钥分量: %x\n", clientKey.Bytes())
|
|
fmt.Printf("服务端密钥分量: %x\n", serverKey.Bytes())
|
|
fmt.Printf("公钥: %x\n", publicKey.Bytes())
|
|
|
|
msg := []byte("1234567890123456")
|
|
fmt.Printf("明文数据: %x\n", msg)
|
|
|
|
grand.ReaderOne.Read(rnd)
|
|
c, _ := sm2.Encrypt(publicKey, msg, rnd)
|
|
fmt.Printf("密文数据: %x\n", c.Bytes())
|
|
|
|
clientCTX := NewClientDecContext()
|
|
out, _ := clientCTX.Initial(c)
|
|
out, _ = ServerImportKey(serverKey, out)
|
|
plain, _ := clientCTX.Final(clientKey, out)
|
|
fmt.Printf("解密数据: %x\n", plain)
|
|
|
|
}
|