166 lines
6.4 KiB
Go
166 lines
6.4 KiB
Go
package cmb
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
v1 "voucher/api/v1"
|
|
)
|
|
|
|
func TestGenerateSm2Key(t *testing.T) {
|
|
got, got1 := GenerateSm2Key()
|
|
t.Log("SM2私钥:", got, len(got))
|
|
t.Log("SM2公钥:", got1, len(got1))
|
|
|
|
smbPrk := "9450c673cf801164435b9c164ac1404e87997245bc6f323fde22015875a03f6e"
|
|
cmbPuk := "04a702106cf530dc981e44cd515b394747cfd6bb059247696b188b25281ea4278fe7c6e34a83680110eec71becd31f5db14abc671e5d8e67ce7ca3c6b3adc86674"
|
|
t.Log("掌上生活SM2私钥:", smbPrk, len(smbPrk))
|
|
t.Log("掌上生活SM2公钥:", cmbPuk, len(cmbPuk))
|
|
}
|
|
|
|
func TestEncrypt(t *testing.T) {
|
|
pukKey := "04a702106cf530dc981e44cd515b394747cfd6bb059247696b188b25281ea4278fe7c6e34a83680110eec71becd31f5db14abc671e5d8e67ce7ca3c6b3adc86674"
|
|
content := `{"name":"zhangxx","phoneNo":"137xxxxxxxx"}`
|
|
xx, err := Encrypt(pukKey, content)
|
|
//BPGf+1joX5wdo47DfCA1HN9QK7qC6YvUoPTAyW6g5fJXr+xRtAsyGDNwV5gGab11Cescueh/pyz/Qr/t2ejx33E+A1AkEeRoqUSFurvtMp6h8xhJ5afagNGLZUt1Yus6tlE4dtaOfv+bB9PXjYWpQUJjBXgaVBWa0VFyg7ysudoIjKDP3ljIxY2sFhnE|kYYOo7VmcS1AvBbAR1oHOdC2SzuQka1097yzVE6KP3yKRrbjd05BrcFETsU65sww
|
|
t.Log(xx, err)
|
|
}
|
|
|
|
func TestDecrypt(t *testing.T) {
|
|
priKey := "9450c673cf801164435b9c164ac1404e87997245bc6f323fde22015875a03f6e"
|
|
|
|
content := "BPGf+1joX5wdo47DfCA1HN9QK7qC6YvUoPTAyW6g5fJXr+xRtAsyGDNwV5gGab11Cescueh/pyz/Qr/t2ejx33E+A1AkEeRoqUSFurvtMp6h8xhJ5afagNGLZUt1Yus6tlE4dtaOfv+bB9PXjYWpQUJjBXgaVBWa0VFyg7ysudoIjKDP3ljIxY2sFhnE|kYYOo7VmcS1AvBbAR1oHOdC2SzuQka1097yzVE6KP3yKRrbjd05BrcFETsU65sww"
|
|
|
|
xx, err := Decrypt(priKey, content)
|
|
if err != nil {
|
|
t.Log(err)
|
|
return
|
|
}
|
|
t.Logf(xx)
|
|
}
|
|
|
|
func TestEncryptDecrypt(t *testing.T) {
|
|
priKey := "8d39ff3d2559258c163f4510f082727f51531e1953ab203d5ab1ea4a6d94fd73"
|
|
pukKey := "04D827A7DBAAA358CE45B8C7794A7F54819F5C175005A702370E47F135EF6F5F9732758B1474F218419FE9E87F90C28C3B05F08254C651DB27DF35FAE67B77B2E4"
|
|
|
|
content := `{"name":"zhangxx","phoneNo":"137xxxxxxxx"}`
|
|
|
|
xx, err := Encrypt(pukKey, content)
|
|
if err != nil {
|
|
t.Log(err)
|
|
return
|
|
}
|
|
t.Log(xx)
|
|
|
|
aa, err := Decrypt(priKey, xx)
|
|
if err != nil {
|
|
t.Log(err)
|
|
return
|
|
}
|
|
t.Log(aa)
|
|
}
|
|
|
|
func TestSign(t *testing.T) {
|
|
priKey := "9450c673cf801164435b9c164ac1404e87997245bc6f323fde22015875a03f6e"
|
|
|
|
content := "accessToken.json?aid=9dad6d3900ec3ffabd80e46522a10ead&cmbKeyAlias=SM2_CMBLIFE&date=20240314091628&encryptBody=BNhquiza494xicGIOvE7G5jLr7nhQI6Tp4V5j3a+3P98oD+uUKVXAPXt+ae3GsDvs+FyOaqoNSzdYsSqNDW3rA1AFUbsljTI9EaWMB+FAHpZ3Wjn6Qyl8EzJpUIbCnqAIOWjr2hDsexJd+NPVxQwNqq9W66lC/PBC4/1/QCz+87Yq8b4hHx7bP2u5h95|YwTJn3uKMQfhDSuJKIx3hyFZcoLm9M2xKnVDmNLPq5PbGedoZY/4g1Z/sKk8cWzH&keyAlias=CO_PUB_KEY_SM2&mid=f806c259d86e3b9aa956c98d475b6af7&random=320bcb8c8cf7419e98d562439bdb3baa"
|
|
|
|
xx, err := Sign(priKey, content)
|
|
t.Log(xx, err)
|
|
}
|
|
|
|
func TestVerify(t *testing.T) {
|
|
pukKey := "04838f74275e6f4f2373d4e6e974ac790c10ab6f9c17e273cf0c84848c6838979c158315932e36f0b9444442f145e4671b1ee5d43d5d63913a70d4d0d52cc3c0d6"
|
|
|
|
content := "accessToken.json?aid=9dad6d3900ec3ffabd80e46522a10ead&cmbKeyAlias=SM2_CMBLIFE&date=20250305115032&encryptBody=BHeko/ZYFzQOJn6Q3y46X1AjNz8Nh5fq1FfMuWebh+TangLnlK5iFqePCst4rjG/FKJInijiKO2Qq18sJULlMEEgri05s+bHHDKM+Y+73crAbCnIhHbZxUjt8A0cq2rKjzkl8bxW33dU18uuiTEAmsAvKvmZgE6zJ1eDyjFWefHEIFJaKCNY2cTQOInt|8UYFZFTkx0DovPhaWCbdBkAqbgGmegT14F5gwXLJ6G1uWdYNvX+i5QWAYUGtd8u9&keyAlias=CO_PUB_KEY_SM2&mid=f806c259d86e3b9aa956c98d475b6af7&random=286d97b1d8ed4bbf822b004470c92ae8"
|
|
signDataBase64 := "MEUCIAg1zxnKG+X8t/hlwEoyL/T33iKgle09S6bfb3eZh/FqAiEAxtK5TdGAo+JpK7JmL15tT4nlQyrUzC14flu0Tq+9Svo="
|
|
|
|
xx, err := Verify(pukKey, content, signDataBase64)
|
|
t.Log(xx, err)
|
|
}
|
|
|
|
func TestVerifyCmbReply(t *testing.T) {
|
|
zsStr := "cmbKeyAlias=SM2_CMBLIFE&date=20250312094153&encryptBody=BPaYG3nLlLJvnu6tHBBNKCwXigqN/n8yhUbVRtaKWCIb06GkYo/ykWSNXFRKEPzaYNEeh49frKlVckqvq0heDIYxSUs9uozl5dDnkcFwBv2UK9jxlTRHLkO7MznBD3p/et/m01FsTlMXQcMjL46HsvRZUsXVwpeb56cS4/kQ+zum5mLhgXVv4Mkpheig|JCmQuJMe/WkF9JjLoPspNRK6QxC+ViGT9TccJKUal1dgcawKGLbcoAIwd0zO/6kkFwzkjp83+iwRu5WOsO0ver27v1671RmRJQAObxtmk0LRf7JeHbq+KTd/cGbGu+ZZZcQzPIgfrUTt3TTx8eT0aQ==&keyAlias=CO_PUB_KEY_SM2&respCode=1000&respMsg=成功"
|
|
prk := "8d39ff3d2559258c163f4510f082727f51531e1953ab203d5ab1ea4a6d94fd73"
|
|
|
|
reply := &v1.CmbReply{
|
|
RespCode: "1000",
|
|
RespMsg: "成功",
|
|
Date: "20250312094153",
|
|
KeyAlias: "CO_PUB_KEY_SM2",
|
|
CmbKeyAlias: "SM2_CMBLIFE",
|
|
EncryptBody: "BPaYG3nLlLJvnu6tHBBNKCwXigqN/n8yhUbVRtaKWCIb06GkYo/ykWSNXFRKEPzaYNEeh49frKlVckqvq0heDIYxSUs9uozl5dDnkcFwBv2UK9jxlTRHLkO7MznBD3p/et/m01FsTlMXQcMjL46HsvRZUsXVwpeb56cS4/kQ+zum5mLhgXVv4Mkpheig|JCmQuJMe/WkF9JjLoPspNRK6QxC+ViGT9TccJKUal1dgcawKGLbcoAIwd0zO/6kkFwzkjp83+iwRu5WOsO0ver27v1671RmRJQAObxtmk0LRf7JeHbq+KTd/cGbGu+ZZZcQzPIgfrUTt3TTx8eT0aQ==",
|
|
Sign: "",
|
|
}
|
|
|
|
str := SortStructStr(reply)
|
|
t.Log(str)
|
|
|
|
t.Log(zsStr == str)
|
|
|
|
xx, err := Sign(prk, str)
|
|
if err != nil {
|
|
t.Log(err)
|
|
return
|
|
}
|
|
t.Log(xx)
|
|
}
|
|
|
|
func TestCmbReply(t *testing.T) {
|
|
|
|
req := []byte(`{"date":"20250313173740","keyAlias":"CO_PUB_KEY_SM2","sign":"MEUCIEMi826+YIMNrCb0iexVGgkbV2nbjcGIWqZcPu+XaPU7AiEA6INeLjYYpgSX2eePSLNAinoQsTKCkjwQwN1vT8yEggY=","encryptBody":"BHhdJbBP8hybQ57niOICuPiaNTGYKgLF3Ntf1ShdpHDjS6s3UJOCpSxEj0nWCVGlJMcTBJIBZ0pvPD4/oWKxgmp69MhpR3VWJeDcHhJHALdvzl2CR2GTXB7lgy1eUEBH/HlYxCK2P3kcV2ENKkazQRpT2Gk5WJ0rCV8iSaEqovmjRsTV3V4eLLrcuzK+|NZQ2Ae4McLlpSjBhYWQFmc9g0h/DQHcykGwIproe0AA0HayMun04aalcZmzh4Qp5p1SBZNBfwqtETyEjHYlWTj7/ht+kWsWRkuVx1uipZVIYPkOw5thsjoCdK+q1S76EssDCXOTVf/XAoSgqV+6/a1dGwkQgzXVGkGdAUoOdN0Rry8g8JnTBQZyiQY/fjDTiieJiS9MUmm6JiE/wZGG+LliUKHVsF8ZdrIEyrkSgAWw=","cmbKeyAlias":"SM2_CMBLIFE"}`)
|
|
|
|
var reply *v1.CmbReply
|
|
|
|
err := json.Unmarshal(req, &reply)
|
|
if err != nil {
|
|
t.Log(err)
|
|
return
|
|
}
|
|
|
|
t.Logf("reply:%+v", reply)
|
|
|
|
prk := "8d39ff3d2559258c163f4510f082727f51531e1953ab203d5ab1ea4a6d94fd73"
|
|
|
|
cmbPuk := "0416445bc16cbf42e47002ad9fe7c7af67d902b48be1eb69b98f6a006b0918630e1127f5f2fff83b2ecb30fc7fd72c34c33f37c7c355dffde3589f66800f0036ca"
|
|
|
|
str := SortStructStr(reply)
|
|
t.Log(str)
|
|
|
|
xx, err := Verify(cmbPuk, str, reply.Sign)
|
|
if err != nil {
|
|
t.Log(err)
|
|
return
|
|
}
|
|
t.Log(xx)
|
|
|
|
aa, err := Decrypt(prk, reply.EncryptBody)
|
|
if err != nil {
|
|
t.Log(err)
|
|
return
|
|
}
|
|
t.Log(aa)
|
|
}
|
|
|
|
func TestGenerateSm2KeyAndEncryptDecrypt(t *testing.T) {
|
|
priKey, pukKey := GenerateSm2Key()
|
|
|
|
t.Log("SM2私钥:", priKey, len(priKey))
|
|
t.Log("SM2公钥:", pukKey, len(pukKey))
|
|
|
|
content := `{"name":"zhangxx","phoneNo":"137xxxxxxxx"}`
|
|
|
|
xx, err := Encrypt(pukKey, content)
|
|
if err != nil {
|
|
t.Log(err)
|
|
return
|
|
}
|
|
t.Log(xx)
|
|
|
|
aa, err := Decrypt(priKey, xx)
|
|
if err != nil {
|
|
t.Log(err)
|
|
return
|
|
}
|
|
t.Log(aa)
|
|
}
|