init: v1.0.0
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
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)
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user