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)) }