135 lines
4.3 KiB
Go
135 lines
4.3 KiB
Go
package sm2
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"fmt"
|
|
"qteam/app/utils/gmutil/sm2/model"
|
|
"qteam/app/utils/gmutil/sm2/sdk"
|
|
"qteam/app/utils/gmutil/sm2/util"
|
|
"testing"
|
|
)
|
|
|
|
var (
|
|
pubHexKey = "0447fe9ed13aac6200c92b893ad1289a98437c8404e64b1d2f7c755698a8b8e8acb35c1db2bedc5213c930bdfc10efb0e12269cf6a06877679f114fe5ae9dd4469"
|
|
priHexKey = "9450c673cf801164435b9c164ac1404e87997245bc6f323fde22015875a03f6e"
|
|
enStr = "BI2O20YuamIpOpXH/RJDtB9gWIpNZPjFbTpbvX45lG8mcma7Cab1yRpE3rcM33oJ8xJ3mbbIvXf/1N507i97eXYQSbLzOBcl/8PyaB4dQ/Ub7QQncN+Npuif4Qp6s11tobdTVOFlz9S9i0VC"
|
|
)
|
|
|
|
func TestSm2_Encrypt(t *testing.T) {
|
|
var bytes = []byte{94, 256 - 26, 34, 256 - 44, 256 - 90, 256 - 13, 35, 58, 119, 87, 76, 256 - 67, 43, 256 - 39, 122, 101}
|
|
encrypt, err := NewSm2().
|
|
SetHexPublicKey(pubHexKey).
|
|
SetData(bytes).
|
|
SetSdk(sdk.NewCmbLifeSdk()).
|
|
SetCipherType(model.C1C3C2).
|
|
Encrypt().
|
|
ToHexString()
|
|
if err != nil {
|
|
t.Error("sm2 encrypt error:", err)
|
|
return
|
|
}
|
|
t.Log("sm2 encrypt result:", encrypt)
|
|
}
|
|
|
|
func TestSm2_Decrypt(t *testing.T) {
|
|
//var data = []byte{12, 75, 256 - 22, 115, 121, 256 - 89, 256 - 43, 13, 108, 36, 256 - 35, 256 - 45, 256 - 47, 3, 256 - 74, 126}
|
|
decrypt, err := NewSm2().
|
|
SetHexPrivateKey("140c5c68da1829b79d8e4629a8b9548bd694ccc7061fbacb1079aed0e5ac33fa").
|
|
SetHexData("04504fa0c628cfee8c4ca69fa10df0b8f75fe546a50738befc5e8e638f508fe29a88953b82e16b781e447939b69e9ea6f73b57d8555e7e22b45a424e4d2df553a776940870bd16ae807ac66685df8fe20ff2f701220dccc9ece41d8d8d0476b719c2dddf12ec").
|
|
SetSdk(sdk.NewCmbLifeSdk()).
|
|
SetCipherType(model.C1C3C2).
|
|
Decrypt().
|
|
ToBytes()
|
|
if err != nil {
|
|
t.Error("sm2 decrypt error:", err)
|
|
return
|
|
}
|
|
t.Log("sm2 decrypt result:", decrypt)
|
|
}
|
|
|
|
func TestSm2_Sign(t *testing.T) {
|
|
sign, err := NewSm2().
|
|
SetUid([]byte("")).
|
|
SetHexPrivateKey("140c5c68da1829b79d8e4629a8b9548bd694ccc7061fbacb1079aed0e5ac33fa").
|
|
SetStringData("hello").
|
|
Sign().
|
|
ToBytes()
|
|
fmt.Println(base64.StdEncoding.EncodeToString(sign))
|
|
if err != nil {
|
|
t.Error("sm2 sign error:", err)
|
|
return
|
|
}
|
|
t.Log("sm2 sign result:", sign)
|
|
}
|
|
|
|
func TestSm2_Verify(t *testing.T) {
|
|
verify, err := NewSm2().
|
|
SetUid([]byte("")).
|
|
SetBase64StringData("MEQCIEx1cXGEs35tBAGtVONn/8K9ZKp7CTVl8fIMYk8N08/iAiA9NuJv2CvAfy768A+i3ira8tDa46VaZX7h7NhmJbKs8Q==").
|
|
//SetSdk(sdk.NewZbSdk()).
|
|
SetHexPublicKey("0447fe9ed13aac6200c92b893ad1289a98437c8404e64b1d2f7c755698a8b8e8acb35c1db2bedc5213c930bdfc10efb0e12269cf6a06877679f114fe5ae9dd4469").
|
|
SetStringData("hello").
|
|
Verify().
|
|
ToBool()
|
|
if err != nil {
|
|
t.Error("sm2 verify error:", err)
|
|
return
|
|
}
|
|
t.Log("sm2 verify result:", verify)
|
|
}
|
|
|
|
func TestSm2_SetPemPrivateKey(t *testing.T) {
|
|
priPem := `-----BEGIN PRIVATE KEY-----
|
|
MIGHAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBG0wawIBAQQgilIj1dWX+977jcQO
|
|
oHDQq6XtbWaazcZdJiHjXpAhKD6hRANCAASbGZLLgc4PZ3axqRolPDRAWFEZmzbm
|
|
6ZwrOaDXYUCxg2NVGa0vFxvJ3NMwQsYqkceV7/8hnQSrHs/XkgqLKgr+
|
|
-----END PRIVATE KEY-----`
|
|
enStr = "BNCI99FErQ6n1w5UujcpFgPk2DNBVsM3M3SYpj1yhybC4kw6+jurrQ3OWCeFK/7Tuaicku6wb2ZCpMiQmUpstgZSHOCZjik+x3DesUeJ4CnX9o826PQuEz2xXoiP/8+n5sSwbY7zh7sdMrSD"
|
|
encrypt, err := NewSm2().
|
|
SetPemPrivateKey([]byte(priPem), nil).
|
|
SetBase64StringData(enStr).
|
|
SetSdk(sdk.NewCmbLifeSdk()).
|
|
SetCipherType(model.C1C3C2).
|
|
Decrypt().
|
|
ToString()
|
|
if err != nil {
|
|
t.Fatalf("sm2 decrypt error: %+v", err)
|
|
}
|
|
t.Log("sm2 decrypt result:", encrypt)
|
|
}
|
|
|
|
func TestSm2_SetPemPublicKey(t *testing.T) {
|
|
pemPubKey := `-----BEGIN PUBLIC KEY-----
|
|
MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEmxmSy4HOD2d2sakaJTw0QFhRGZs2
|
|
5umcKzmg12FAsYNjVRmtLxcbydzTMELGKpHHle//IZ0Eqx7P15IKiyoK/g==
|
|
-----END PUBLIC KEY-----`
|
|
encrypt, err := NewSm2().
|
|
SetPemPublicKey([]byte(pemPubKey)).
|
|
SetStringData("hello world").
|
|
SetSdk(sdk.NewCmbLifeSdk()).
|
|
SetCipherType(model.C1C3C2).
|
|
Encrypt().
|
|
ToBase64String()
|
|
if err != nil {
|
|
t.Fatalf("sm2 encrypt error: %+v", err)
|
|
}
|
|
t.Log("sm2 encrypt result:", encrypt)
|
|
}
|
|
|
|
func Test_Util(t *testing.T) {
|
|
// todo 有点问题
|
|
encrypt := NewSm2().SetHexPublicKey(pubHexKey).SetHexPrivateKey(priHexKey)
|
|
pem, err := util.PublicKeyToPem(encrypt.publicKey)
|
|
if err != nil {
|
|
t.Fatalf("sm2 encrypt error: %+v", err)
|
|
}
|
|
s, err := encrypt.SetPemPublicKey(pem).SetStringData("hello world").Encrypt().ToBase64String()
|
|
t.Log(s, err)
|
|
t.Log(string(pem))
|
|
privateKeyToPem, err := util.PrivateKeyToPem(encrypt.privateKey, nil)
|
|
if err != nil {
|
|
t.Fatalf("sm2 encrypt error: %+v", err)
|
|
}
|
|
t.Log(string(privateKeyToPem))
|
|
}
|