This commit is contained in:
parent
2af26fb728
commit
3f9f83dd94
|
|
@ -18,16 +18,31 @@ import (
|
|||
"voucher/internal/biz/vo"
|
||||
"voucher/internal/conf"
|
||||
"voucher/internal/pkg/cmb"
|
||||
"voucher/internal/pkg/cmbv2"
|
||||
"voucher/internal/pkg/helper"
|
||||
"voucher/internal/pkg/request"
|
||||
)
|
||||
|
||||
type CmbMixRepoImpl struct {
|
||||
bc *conf.Bootstrap
|
||||
|
||||
cmb *cmbv2.Cmb
|
||||
voucher *cmbv2.Cmb
|
||||
}
|
||||
|
||||
func NewCmbMixRepoImpl(bc *conf.Bootstrap) mixrepos.CmbMixRepo {
|
||||
return &CmbMixRepoImpl{bc: bc}
|
||||
func NewCmbMixRepoImpl(bc *conf.Bootstrap) (mixrepos.CmbMixRepo, error) {
|
||||
|
||||
newCmb, err := cmbv2.NewCmb(bc.Cmb.CmbSm2Pik, bc.Cmb.CmbSm2Puk)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
voucher, err := cmbv2.NewCmb(bc.Cmb.Sm2Prk, bc.Cmb.Sm2Puk)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &CmbMixRepoImpl{bc: bc, cmb: newCmb, voucher: voucher}, nil
|
||||
}
|
||||
|
||||
func (c *CmbMixRepoImpl) recordBody(ctx context.Context) {
|
||||
|
|
@ -123,6 +138,27 @@ func (s *CmbMixRepoImpl) Verify(_ context.Context, req *v1.CmbRequest) (string,
|
|||
|
||||
str := cmb.SortStructStr(req)
|
||||
|
||||
b, err := s.voucher.Verify(str, req.Sign)
|
||||
if err != nil {
|
||||
return "", err2.ErrorCmbVerifyFail(err.Error())
|
||||
}
|
||||
|
||||
if !b {
|
||||
return "", err2.ErrorCmbVerifyFail("签名验证失败")
|
||||
}
|
||||
|
||||
bizStr, err := s.cmb.Decrypt(req.EncryptBody)
|
||||
if err != nil {
|
||||
return "", err2.ErrorCmbBizContentDecryptFail(err.Error())
|
||||
}
|
||||
|
||||
return bizStr, nil
|
||||
}
|
||||
|
||||
func (s *CmbMixRepoImpl) Verify2(_ context.Context, req *v1.CmbRequest) (string, error) {
|
||||
|
||||
str := cmb.SortStructStr(req)
|
||||
|
||||
b, err := cmb.Verify(s.bc.Cmb.CmbSm2Puk, str, req.Sign)
|
||||
if err != nil {
|
||||
return "", err2.ErrorCmbVerifyFail(err.Error())
|
||||
|
|
@ -142,6 +178,38 @@ func (s *CmbMixRepoImpl) Verify(_ context.Context, req *v1.CmbRequest) (string,
|
|||
|
||||
func (s *CmbMixRepoImpl) GetRequest(_ context.Context, reqBo *bo.CmbRequestBo) (*v1.CmbRequest, error) {
|
||||
|
||||
// 用他们的公钥加密
|
||||
encryptBody, err := s.cmb.Encrypt([]byte(reqBo.BizContent))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
req := &v1.CmbRequest{
|
||||
Mid: s.bc.Cmb.Mid,
|
||||
Aid: s.bc.Cmb.Aid,
|
||||
Date: time.Now().Format("20060102150405"),
|
||||
Random: string(cmb.RandomBytes(16)),
|
||||
KeyAlias: s.bc.Cmb.KeyAlias,
|
||||
CmbKeyAlias: s.bc.Cmb.CmbKeyAlias,
|
||||
EncryptBody: encryptBody,
|
||||
Sign: "",
|
||||
}
|
||||
|
||||
str := fmt.Sprintf("%s?%s", reqBo.FuncName, cmb.SortStructStr(req))
|
||||
|
||||
// 用自己的私钥签名
|
||||
sing, err := s.voucher.Sign([]byte(str))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
req.Sign = sing
|
||||
|
||||
return req, nil
|
||||
}
|
||||
|
||||
func (s *CmbMixRepoImpl) GetRequest2(_ context.Context, reqBo *bo.CmbRequestBo) (*v1.CmbRequest, error) {
|
||||
|
||||
encryptBody, err := cmb.Encrypt(s.bc.Cmb.CmbSm2Puk, reqBo.BizContent)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
@ -180,7 +248,8 @@ func (s *CmbMixRepoImpl) GetMockRequest(_ context.Context, bizContent string) (*
|
|||
return nil, errors.New("mock cmb sm2 pik is empty")
|
||||
}
|
||||
|
||||
encryptBody, err := cmb.Encrypt(s.bc.Cmb.Sm2Puk, bizContent)
|
||||
// 用他们的公钥加密
|
||||
encryptBody, err := s.cmb.Encrypt([]byte(bizContent))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -196,7 +265,8 @@ func (s *CmbMixRepoImpl) GetMockRequest(_ context.Context, bizContent string) (*
|
|||
Sign: "",
|
||||
}
|
||||
|
||||
sign, err := cmb.Sign(s.bc.Cmb.CmbSm2Pik, cmb.SortStructStr(req))
|
||||
// 用我们的私钥签名
|
||||
sign, err := s.voucher.Sign([]byte(cmb.SortStructStr(req)))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -210,6 +280,23 @@ func (s *CmbMixRepoImpl) VerifyResponse(_ context.Context, req *v1.CmbReply) err
|
|||
|
||||
str := cmb.SortStructStr(req)
|
||||
|
||||
// 用他们的公钥验签
|
||||
b, err := s.cmb.Verify(str, req.Sign)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if !b {
|
||||
return errors.New("签名验证失败")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *CmbMixRepoImpl) VerifyResponse2(_ context.Context, req *v1.CmbReply) error {
|
||||
|
||||
str := cmb.SortStructStr(req)
|
||||
|
||||
b, err := cmb.Verify(s.bc.Cmb.CmbSm2Puk, str, req.Sign)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
@ -234,6 +321,36 @@ func (s *CmbMixRepoImpl) GetResponse(_ context.Context, reqBo *bo.CmbResponseBo)
|
|||
Sign: "",
|
||||
}
|
||||
|
||||
if len(reqBo.BizContent) > 0 {
|
||||
encryptBody, err := s.cmb.Encrypt([]byte(reqBo.BizContent))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
reply.EncryptBody = encryptBody
|
||||
}
|
||||
|
||||
sign, err := s.voucher.Sign([]byte(cmb.SortStructStr(reply)))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
reply.Sign = sign
|
||||
|
||||
return reply, nil
|
||||
}
|
||||
|
||||
func (s *CmbMixRepoImpl) GetResponse2(_ context.Context, reqBo *bo.CmbResponseBo) (*v1.CmbReply, error) {
|
||||
|
||||
reply := &v1.CmbReply{
|
||||
RespCode: reqBo.RespCode,
|
||||
RespMsg: reqBo.RespMsg,
|
||||
Date: time.Now().Format("20060102150405"),
|
||||
KeyAlias: s.bc.Cmb.KeyAlias,
|
||||
CmbKeyAlias: s.bc.Cmb.CmbKeyAlias,
|
||||
EncryptBody: "",
|
||||
Sign: "",
|
||||
}
|
||||
|
||||
if len(reqBo.BizContent) > 0 {
|
||||
encryptBody, err := cmb.Encrypt(s.bc.Cmb.CmbSm2Puk, reqBo.BizContent)
|
||||
if err != nil {
|
||||
|
|
@ -296,5 +413,14 @@ func (s *CmbMixRepoImpl) Decrypt(_ context.Context, encryptBody string) (string,
|
|||
return "", errors.New("mock CmbSm2Pik is empty")
|
||||
}
|
||||
|
||||
return s.cmb.Decrypt(encryptBody)
|
||||
}
|
||||
|
||||
func (s *CmbMixRepoImpl) Decrypt2(_ context.Context, encryptBody string) (string, error) {
|
||||
|
||||
if len(s.bc.Cmb.CmbSm2Pik) == 0 {
|
||||
return "", errors.New("mock CmbSm2Pik is empty")
|
||||
}
|
||||
|
||||
return cmb.Decrypt(s.bc.Cmb.CmbSm2Pik, encryptBody)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,7 +63,8 @@ func TestEncryptDecrypt(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestSign(t *testing.T) {
|
||||
priKey := "9450c673cf801164435b9c164ac1404e87997245bc6f323fde22015875a03f6e"
|
||||
//priKey := "9450c673cf801164435b9c164ac1404e87997245bc6f323fde22015875a03f6e"
|
||||
priKey := "8d39ff3d2559258c163f4510f082727f51531e1953ab203d5ab1ea4a6d94fd73"
|
||||
|
||||
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"
|
||||
|
||||
|
|
@ -72,10 +73,12 @@ func TestSign(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestVerify(t *testing.T) {
|
||||
pukKey := "04838f74275e6f4f2373d4e6e974ac790c10ab6f9c17e273cf0c84848c6838979c158315932e36f0b9444442f145e4671b1ee5d43d5d63913a70d4d0d52cc3c0d6"
|
||||
//pukKey := "04838f74275e6f4f2373d4e6e974ac790c10ab6f9c17e273cf0c84848c6838979c158315932e36f0b9444442f145e4671b1ee5d43d5d63913a70d4d0d52cc3c0d6"
|
||||
pukKey := "04d827a7dbaaa358ce45b8c7794a7f54819f5c175005a702370e47f135ef6f5f9732758b1474f218419fe9e87f90c28c3b05f08254c651db27df35fae67b77b2e4"
|
||||
|
||||
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="
|
||||
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"
|
||||
//signDataBase64 := "MEUCIAg1zxnKG+X8t/hlwEoyL/T33iKgle09S6bfb3eZh/FqAiEAxtK5TdGAo+JpK7JmL15tT4nlQyrUzC14flu0Tq+9Svo="
|
||||
signDataBase64 := "MEUCICL72ttxrYiuooO25vLsnp42YMKAoaN2y79/LED+M5WcAiEAgneRDvfZ+LhN3XvgxL3B4L6TYrzBnzeqjIb9B7KPxVc="
|
||||
|
||||
xx, err := Verify(pukKey, content, signDataBase64)
|
||||
t.Log(xx, err)
|
||||
|
|
|
|||
|
|
@ -25,7 +25,8 @@ type Cmb struct {
|
|||
c3Len int
|
||||
uid []byte
|
||||
|
||||
sdk sdk.SDK
|
||||
sdk sdk.SDK
|
||||
cmbLifeSdk sdk.SDK
|
||||
|
||||
sm2P256 *utils.Sm2P256Curve
|
||||
}
|
||||
|
|
@ -36,14 +37,17 @@ func NewCmb(privateKey, sopPublicKey string) (*Cmb, error) {
|
|||
uid: model.DefaultUid,
|
||||
cipherType: model.C1C3C2,
|
||||
|
||||
sdk: sdk.NewBaseSdk(),
|
||||
sdk: sdk.NewBaseSdk(),
|
||||
cmbLifeSdk: sdk.NewCmbLifeSdk(),
|
||||
}
|
||||
|
||||
sm2P256 := utils.NewP256Sm2()
|
||||
cmb.sm2P256 = &sm2P256
|
||||
|
||||
if err := cmb.setHexPrivateKey(privateKey); err != nil {
|
||||
return nil, err
|
||||
if len(privateKey) > 0 {
|
||||
if err := cmb.setHexPrivateKey(privateKey); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
if err := cmb.setHexPublicKey(sopPublicKey); err != nil {
|
||||
|
|
@ -122,7 +126,7 @@ func (s *Cmb) encrypt(data []byte) ([]byte, error) {
|
|||
c1 = elliptic.Marshal(s.publicKey.Curve, c1x, c1y)
|
||||
kx, ky = s.publicKey.Curve.ScalarMult(s.publicKey.X, s.publicKey.Y, k.Bytes())
|
||||
|
||||
err = s.sdk.Kdf(s.publicKey, kx, ky, c2)
|
||||
err = s.cmbLifeSdk.Kdf(s.publicKey, kx, ky, c2)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("kdf error: %v", err)
|
||||
}
|
||||
|
|
@ -131,7 +135,7 @@ func (s *Cmb) encrypt(data []byte) ([]byte, error) {
|
|||
}
|
||||
}
|
||||
|
||||
c3 := s.sdk.CalculateHash(kx, data, ky)
|
||||
c3 := s.cmbLifeSdk.CalculateHash(kx, data, ky)
|
||||
|
||||
c1Len := len(c1)
|
||||
c2Len := len(c2)
|
||||
|
|
@ -221,6 +225,7 @@ func (s *Cmb) decrypt(data []byte) (string, error) {
|
|||
dBC1X, dBC1Y := s.privateKey.Curve.ScalarMult(x, y, s.privateKey.D.Bytes())
|
||||
|
||||
c2Len := len(data) - c1Len - s.c3Len
|
||||
|
||||
c2 := make([]byte, c2Len)
|
||||
c3 := make([]byte, s.c3Len)
|
||||
|
||||
|
|
@ -234,11 +239,11 @@ func (s *Cmb) decrypt(data []byte) (string, error) {
|
|||
return "", fmt.Errorf("cipher type not support")
|
||||
}
|
||||
|
||||
if err := s.sdk.Kdf(s.privateKey.Curve, dBC1X, dBC1Y, c2); err != nil {
|
||||
if err := s.cmbLifeSdk.Kdf(s.privateKey.Curve, dBC1X, dBC1Y, c2); err != nil {
|
||||
return "", fmt.Errorf("kdf error: %v", err)
|
||||
}
|
||||
|
||||
u := s.sdk.CalculateHash(dBC1X, c2, dBC1Y)
|
||||
u := s.cmbLifeSdk.CalculateHash(dBC1X, c2, dBC1Y)
|
||||
if bytes.Compare(u, c3) == 0 {
|
||||
return string(c2), nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,51 @@ import (
|
|||
"testing"
|
||||
)
|
||||
|
||||
func TestCmb_Encrypt(t *testing.T) {
|
||||
priKey := "8d39ff3d2559258c163f4510f082727f51531e1953ab203d5ab1ea4a6d94fd73"
|
||||
pukKey := "04d827a7dbaaa358ce45b8c7794a7f54819f5c175005a702370e47f135ef6f5f9732758b1474f218419fe9e87f90c28c3b05f08254c651db27df35fae67b77b2e4"
|
||||
|
||||
n, err := NewCmb(priKey, pukKey)
|
||||
if err != nil {
|
||||
t.Errorf("NewCmb() error = %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
content := `{"name":"zhangxx","phoneNo":"137xxxxxxxx"}`
|
||||
|
||||
got, err := n.Encrypt([]byte(content))
|
||||
if err != nil {
|
||||
t.Errorf("Encrypt() error = %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
t.Log(got)
|
||||
}
|
||||
|
||||
func TestCmb_Decrypt(t *testing.T) {
|
||||
//priKey := "8d39ff3d2559258c163f4510f082727f51531e1953ab203d5ab1ea4a6d94fd73"
|
||||
priKey := "f6a8d2f412e289686aba6a0f33cad1a64367d0ba012046ee0fbbefd3ffd675bd"
|
||||
//pukKey := "04d827a7dbaaa358ce45b8c7794a7f54819f5c175005a702370e47f135ef6f5f9732758b1474f218419fe9e87f90c28c3b05f08254c651db27df35fae67b77b2e4"
|
||||
pukKey := "043b2fade30067b6bd8e61b42771b1e953116fc5a0f9ed6939fceb9254b8d7d6989902c913642c3c68c42a2b56364512675ea0b517dd4469e73b73c888a2f4e8e3"
|
||||
|
||||
n, err := NewCmb(priKey, pukKey)
|
||||
if err != nil {
|
||||
t.Errorf("NewCmb() error = %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
//input := "BJAwi/eC8AHtVVbbCFN58lQhJOIhO4b8ua6CS6AKGma4dGGVgedIlX4B5QbZOb58mNLTXA6dcUIQwFQxrc8z05Ckf9UZ6LQKgLxMcnbvdqlXQCLYEqjxhomkn543Nexw9MINybonMseYh8oy9eSEu4WgvjjfkNrkAF52njJXMiDgqKjTz+xlkGNrCx/9|TZgKpHqElSZEuP05q0/UdP6Sju9e45nIWReMjSao9yDghYJXMwW73exZ3tKUQeLI"
|
||||
input := "BBwR1zhvi1cp5osiTFuTzE5ei74SYzHA1XLb7TCKh1XAquRbAoGcTYIzMgftTY5Jj6kziilMF5yg3FxxKCn4cnWa5JMYHJ4ifEdpEZP2+W9T773Di0XC8GpZ89k4dzDGlTcYoiIv3ebReyCPve2QF5hx6t2EH1YKbVpoU32MTDzL8Mz6XuhhnwLKLePu|u8s9XJxe8gWCyZlL1mkGdZq428qmEl5qjzzIO4Bn+MjBi+iEeULR4HlyrD9/fPPsdhwjUNdrBgRmDJidc0Eksfo4QCYhaytWrUBvJxAkmPCkGNyiHAFipqfmGM0A0HLoR81zWdEIjChlNYWu4/x3+FFWgMRAvgEk9ggqGWRoqHQTvSXu2FMZGJoTgfUDSAuyuwfpTLKULCFyZmymPubN0Jjg67ZrbGro+/43MnPeZNE1HpAhwGbQaUugJWtk9a/u"
|
||||
|
||||
got2, err := n.Decrypt(input)
|
||||
if err != nil {
|
||||
t.Errorf("%v", err)
|
||||
return
|
||||
}
|
||||
|
||||
t.Log(got2)
|
||||
}
|
||||
|
||||
func TestCmb_EncryptDecrypt(t *testing.T) {
|
||||
priKey := "8d39ff3d2559258c163f4510f082727f51531e1953ab203d5ab1ea4a6d94fd73"
|
||||
pukKey := "04d827a7dbaaa358ce45b8c7794a7f54819f5c175005a702370e47f135ef6f5f9732758b1474f218419fe9e87f90c28c3b05f08254c651db27df35fae67b77b2e4"
|
||||
|
|
@ -33,6 +78,50 @@ func TestCmb_EncryptDecrypt(t *testing.T) {
|
|||
t.Log(got2)
|
||||
}
|
||||
|
||||
func TestCmb_Sign(t *testing.T) {
|
||||
priKey := "8d39ff3d2559258c163f4510f082727f51531e1953ab203d5ab1ea4a6d94fd73"
|
||||
pukKey := "04d827a7dbaaa358ce45b8c7794a7f54819f5c175005a702370e47f135ef6f5f9732758b1474f218419fe9e87f90c28c3b05f08254c651db27df35fae67b77b2e4"
|
||||
|
||||
n, err := NewCmb(priKey, pukKey)
|
||||
if err != nil {
|
||||
t.Errorf("NewCmb() error = %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
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"
|
||||
|
||||
got, err := n.Sign([]byte(content))
|
||||
if err != nil {
|
||||
t.Errorf("Sign() error = %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
t.Log(got)
|
||||
}
|
||||
|
||||
func TestCmb_Verify(t *testing.T) {
|
||||
priKey := "8d39ff3d2559258c163f4510f082727f51531e1953ab203d5ab1ea4a6d94fd73"
|
||||
pukKey := "04d827a7dbaaa358ce45b8c7794a7f54819f5c175005a702370e47f135ef6f5f9732758b1474f218419fe9e87f90c28c3b05f08254c651db27df35fae67b77b2e4"
|
||||
|
||||
n, err := NewCmb(priKey, pukKey)
|
||||
if err != nil {
|
||||
t.Errorf("NewCmb() error = %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
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"
|
||||
|
||||
sign := "MEYCIQDGqIJzzhAvXbOS1mnctYsKmCA6M+Dorm+YeYMUncYu6QIhALjazOfd2Doix00lrU2w95uq8SHbPFwxoXXBs56apKjG"
|
||||
|
||||
got2, err := n.Verify(content, sign)
|
||||
if err != nil {
|
||||
t.Errorf("Verify() error = %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
t.Log(got2)
|
||||
}
|
||||
|
||||
func TestCmb_SignVerify(t *testing.T) {
|
||||
priKey := "8d39ff3d2559258c163f4510f082727f51531e1953ab203d5ab1ea4a6d94fd73"
|
||||
pukKey := "04d827a7dbaaa358ce45b8c7794a7f54819f5c175005a702370e47f135ef6f5f9732758b1474f218419fe9e87f90c28c3b05f08254c651db27df35fae67b77b2e4"
|
||||
|
|
@ -43,7 +132,7 @@ func TestCmb_SignVerify(t *testing.T) {
|
|||
return
|
||||
}
|
||||
|
||||
content := `{"name":"zhangxx","phoneNo":"137xxxxxxxx"}`
|
||||
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"
|
||||
|
||||
got, err := n.Sign([]byte(content))
|
||||
if err != nil {
|
||||
|
|
|
|||
Loading…
Reference in New Issue