diff --git a/internal/data/mixrepoimpl/cmb.go b/internal/data/mixrepoimpl/cmb.go index 831039f..d93e0a2 100644 --- a/internal/data/mixrepoimpl/cmb.go +++ b/internal/data/mixrepoimpl/cmb.go @@ -51,6 +51,10 @@ func (s *CmbMixRepoImpl) QueryVerify(ctx context.Context, req *v1.CmbRequest) (* return nil, err } + if len(bizStr) == 0 { + return nil, errors.New("业务参数获取异常,请检查参数是否正确传递") + } + var resp *v1.CmbQueryRequest if err = json.Unmarshal([]byte(bizStr), &resp); err != nil { return nil, err @@ -85,10 +89,6 @@ func (s *CmbMixRepoImpl) Verify(_ context.Context, req *v1.CmbRequest) (string, return "", errors.New("签名验证失败") } - if len(req.EncryptBody) == 0 { - return "", errors.New("encryptBody is empty") - } - bizStr, err := cmb.Decrypt(s.bc.Cmb.Sm2Prk, req.EncryptBody) if err != nil { return "", err diff --git a/internal/pkg/cmb/sm2_test.go b/internal/pkg/cmb/sm2_test.go index 7748b73..86372e3 100644 --- a/internal/pkg/cmb/sm2_test.go +++ b/internal/pkg/cmb/sm2_test.go @@ -1,6 +1,7 @@ package cmb import ( + "encoding/json" "testing" v1 "voucher/api/v1" ) @@ -17,7 +18,7 @@ func TestGenerateSm2Key(t *testing.T) { } func TestEncrypt(t *testing.T) { - pukKey := "04a702106cf530dc981e44cd515b394747cfd6bb059247696b188b25281ea4278fe7c6e34a83680110eec71becd31f5db14abc671e5d8e67ce7ca3c6b3adc86674" + pukKey := "0416445bc16cbf42e47002ad9fe7c7af67d902b48be1eb69b98f6a006b0918630e1127f5f2fff83b2ecb30fc7fd72c34c33f37c7c355dffde3589f66800f0036ca" content := `{"name":"zhangxx","phoneNo":"137xxxxxxxx"}` xx, err := Encrypt(pukKey, content) t.Log(xx, err) @@ -25,7 +26,11 @@ func TestEncrypt(t *testing.T) { func TestDecrypt(t *testing.T) { priKey := "8d39ff3d2559258c163f4510f082727f51531e1953ab203d5ab1ea4a6d94fd73" + // 04d827a7dbaaa358ce45b8c7794a7f54819f5c175005a702370e47f135ef6f5f9732758b1474f218419fe9e87f90c28c3b05f08254c651db27df35fae67b77b2e4 + // 04D827A7DBAAA358CE45B8C7794A7F54819F5C175005A702370E47F135EF6F5F9732758B1474F218419FE9E87F90C28C3B05F08254C651DB27DF35FAE67B77B2E4 + //priKey := "a9106d11232db8ea5071c47c5f73c88668225438e61c1f81804016db75fac223" content := "BHhdJbBP8hybQ57niOICuPiaNTGYKgLF3Ntf1ShdpHDjS6s3UJOCpSxEj0nWCVGlJMcTBJIBZ0pvPD4/oWKxgmp69MhpR3VWJeDcHhJHALdvzl2CR2GTXB7lgy1eUEBH/HlYxCK2P3kcV2ENKkazQRpT2Gk5WJ0rCV8iSaEqovmjRsTV3V4eLLrcuzK+|NZQ2Ae4McLlpSjBhYWQFmc9g0h/DQHcykGwIproe0AA0HayMun04aalcZmzh4Qp5p1SBZNBfwqtETyEjHYlWTj7/ht+kWsWRkuVx1uipZVIYPkOw5thsjoCdK+q1S76EssDCXOTVf/XAoSgqV+6/a1dGwkQgzXVGkGdAUoOdN0Rry8g8JnTBQZyiQY/fjDTiieJiS9MUmm6JiE/wZGG+LliUKHVsF8ZdrIEyrkSgAWw=" + //content := "BPGf+1joX5wdo47DfCA1HN9QK7qC6YvUoPTAyW6g5fJXr+xRtAsyGDNwV5gGab11Cescueh/pyz/Qr/t2ejx33E+A1AkEeRoqUSFurvtMp6h8xhJ5afagNGLZUt1Yus6tlE4dtaOfv+bB9PXjYWpQUJjBXgaVBWa0VFyg7ysudoIjKDP3ljIxY2sFhnE|kYYOo7VmcS1AvBbAR1oHOdC2SzuQka1097yzVE6KP3yKRrbjd05BrcFETsU65sww" xx, err := Decrypt(priKey, content) if err != nil { t.Log(err) @@ -35,8 +40,10 @@ func TestDecrypt(t *testing.T) { } func TestEncryptDecrypt(t *testing.T) { - priKey := "44c33b565308062183ec53e7e9171eeab1a3f5df1f116bceb420f039eab469d4" - pukKey := "0479c4d66ffc74d5e0ff667d53da72f63f2c091cf4ee5fc3cc53142bc104dd68ffe332cf1151ce07e0cc62d64c9c7c3b5c94b161668d281691cab2424013eadfb2" + //priKey := "44c33b565308062183ec53e7e9171eeab1a3f5df1f116bceb420f039eab469d4" + priKey := "8d39ff3d2559258c163f4510f082727f51531e1953ab203d5ab1ea4a6d94fd73" + //pukKey := "0479c4d66ffc74d5e0ff667d53da72f63f2c091cf4ee5fc3cc53142bc104dd68ffe332cf1151ce07e0cc62d64c9c7c3b5c94b161668d281691cab2424013eadfb2" + pukKey := "04D827A7DBAAA358CE45B8C7794A7F54819F5C175005A702370E47F135EF6F5F9732758B1474F218419FE9E87F90C28C3B05F08254C651DB27DF35FAE67B77B2E4" content := `{"name":"zhangxx","phoneNo":"137xxxxxxxx"}` @@ -100,3 +107,39 @@ func TestVerifyCmbReply(t *testing.T) { } 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) +}