PaymentCenter/app/third/paymentService/psbc/internal/gmutil/sm2/sm2_test.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))
}