diff --git a/jmeter/boc 测试.jmx b/jmeter/boc 测试.jmx deleted file mode 100644 index 9235b7f..0000000 --- a/jmeter/boc 测试.jmx +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - false - true - false - - - - D:\sunyard\sydapi-boc\Shujujiaohuan\pack\jar\dependences\bcpkix-jdk15on-1.65.jar,D:\sunyard\sydapi-boc\Shujujiaohuan\pack\jar\dependences\bcprov-jdk15on-1.65.jar,D:\sunyard\sydapi-boc\Shujujiaohuan\pack\jar\dependences\groovy-all-2.4.15.jar,D:\sunyard\sydapi-boc\Shujujiaohuan\pack\jar\dependences\hutool-core-5.8.4.M1.jar,D:\sunyard\sydapi-boc\Shujujiaohuan\pack\jar\dependences\proto-1.0.20220921.jar,D:\sunyard\sydapi-boc\Shujujiaohuan\pack\jar\dependences\sydapi4j-1.13.20221010.jar,D:\sunyard\sydapi-boc\Shujujiaohuan\pack\jar\cfitsignapi-1.0.jar - - - - diff --git a/jmeter/招行测试计划.jmx b/jmeter/招行测试计划.jmx index 2a5b3ff..de0fdc4 100644 --- a/jmeter/招行测试计划.jmx +++ b/jmeter/招行测试计划.jmx @@ -54,6 +54,16 @@ = + + publicKey4Sign + + = + + + privateKey4Sign + + = + ip 192.168.100.145 @@ -286,6 +296,16 @@ = + + publicKey4Sign + + = + + + privateKey4Sign + + = + ip 192.168.100.145 @@ -476,7 +496,7 @@ - + continue false @@ -518,6 +538,16 @@ 00010000963F7C3A98B7810F52D2861A060E18A9D4D59796CF33967DD61EEDA091E1AD9B0000000000000000000000000000000000000000000000000000000000000000 = + + publicKey4Sign + + = + + + privateKey4Sign + + = + ip 192.168.100.145 @@ -745,7 +775,844 @@ - + + continue + + false + 10000 + + 1 + 1 + false + + + true + + + + + + + function + SYD_SM2_Sign + = + + + sleep + 1 + = + + + plainDataLen + 2048 + = + + + publicKey4Ende + 03420004AF3D4E55D26564C6C937E6EA9232691C01AC5E7916AD2136F788CE7C1E4D0AE8C4754DEC2F7F6A78962D51A171A6F5B4F11823390AEC8B5B0246CD2CCF8052B7 + = + + + privateKey4Ende + 00010000963F7C3A98B7810F52D2861A060E18A9D4D59796CF33967DD61EEDA091E1AD9B0000000000000000000000000000000000000000000000000000000000000000 + = + + + publicKey4Sign + 034200046508BC4FE965BEB1D57715C180135FC861FDC6527E82E7FD7A6CA25E7CE9CE75101181D7E2CDD16C1974652B38A045465C7FFBAC700E49F949AE5F4C57AEBEAA + = + + + privateKey4Sign + 00010000CF945DAFF49B9F3AB67A23E1E1BA700FF1F78F5DFFCBB518FD1303A51DABA6FC0000000000000000000000000000000000000000000000000000000000000000 + = + + + ip + 192.168.100.145 + = + + + ip2 + 172.1.41.96 + = + + + port + 8889 + = + + + timeout + 3000 + = + + + + cmbpoc.JmeterTest + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + 500 + false + + + + + false + false + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + 1000 + false + + + + + false + false + + + + + continue + + false + 100 + + 1 + 1 + false + + + true + + + + + + + function + SYD_SM2_Sign + = + + + sleep + 1 + = + + + plainDataLen + 2048000 + = + + + publicKey4Ende + 03420004AF3D4E55D26564C6C937E6EA9232691C01AC5E7916AD2136F788CE7C1E4D0AE8C4754DEC2F7F6A78962D51A171A6F5B4F11823390AEC8B5B0246CD2CCF8052B7 + = + + + privateKey4Ende + 00010000963F7C3A98B7810F52D2861A060E18A9D4D59796CF33967DD61EEDA091E1AD9B0000000000000000000000000000000000000000000000000000000000000000 + = + + + publicKey4Sign + 034200046508BC4FE965BEB1D57715C180135FC861FDC6527E82E7FD7A6CA25E7CE9CE75101181D7E2CDD16C1974652B38A045465C7FFBAC700E49F949AE5F4C57AEBEAA + = + + + privateKey4Sign + 00010000CF945DAFF49B9F3AB67A23E1E1BA700FF1F78F5DFFCBB518FD1303A51DABA6FC0000000000000000000000000000000000000000000000000000000000000000 + = + + + ip + 192.168.100.145 + = + + + ip2 + 172.1.41.96 + = + + + port + 8889 + = + + + timeout + 3000 + = + + + + cmbpoc.JmeterTest + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + 500 + false + + + + + false + false + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + 1000 + false + + + + + false + false + + + + + continue + + false + 100 + + 1 + 1 + false + + + true + + + + + + + function + SYD_SM2_Sign + = + + + sleep + 1 + = + + + plainDataLen + 2097152 + = + + + publicKey4Ende + 03420004AF3D4E55D26564C6C937E6EA9232691C01AC5E7916AD2136F788CE7C1E4D0AE8C4754DEC2F7F6A78962D51A171A6F5B4F11823390AEC8B5B0246CD2CCF8052B7 + = + + + privateKey4Ende + 00010000963F7C3A98B7810F52D2861A060E18A9D4D59796CF33967DD61EEDA091E1AD9B0000000000000000000000000000000000000000000000000000000000000000 + = + + + publicKey4Sign + 034200046508BC4FE965BEB1D57715C180135FC861FDC6527E82E7FD7A6CA25E7CE9CE75101181D7E2CDD16C1974652B38A045465C7FFBAC700E49F949AE5F4C57AEBEAA + = + + + privateKey4Sign + 00010000CF945DAFF49B9F3AB67A23E1E1BA700FF1F78F5DFFCBB518FD1303A51DABA6FC0000000000000000000000000000000000000000000000000000000000000000 + = + + + ip + 192.168.100.145 + = + + + ip2 + 172.1.41.96 + = + + + port + 8889 + = + + + timeout + 3000 + = + + + + cmbpoc.JmeterTest + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + 500 + false + + + + + false + false + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + 1000 + false + + + + + false + false + + + + continue false @@ -787,6 +1654,16 @@ 00010000963F7C3A98B7810F52D2861A060E18A9D4D59796CF33967DD61EEDA091E1AD9B0000000000000000000000000000000000000000000000000000000000000000 = + + publicKey4Sign + + = + + + privateKey4Sign + + = + ip 192.168.100.145 @@ -1056,6 +1933,16 @@ 00010000963F7C3A98B7810F52D2861A060E18A9D4D59796CF33967DD61EEDA091E1AD9B0000000000000000000000000000000000000000000000000000000000000000 = + + publicKey4Sign + + = + + + privateKey4Sign + + = + ip 192.168.100.145 diff --git a/src/main/java/racal/sunyard/main/SydApi4j.java b/src/main/java/racal/sunyard/main/SydApi4j.java index 7cc4334..77a5542 100644 --- a/src/main/java/racal/sunyard/main/SydApi4j.java +++ b/src/main/java/racal/sunyard/main/SydApi4j.java @@ -332,6 +332,10 @@ public class SydApi4j implements SydApi { byte[] publicKey, byte[] orgData) { + if (SydApi.DATA_HASH == nOrgDataType) { + orgData = SM3Hash(Util.bytes2HexString(publicKey), orgData); + } + Proto74 proto = new Proto74(); // 填充数据 @@ -7797,7 +7801,7 @@ public class SydApi4j implements SydApi { } - ByteBuffer bb = ByteBuffer.allocate(4 * 1024 + 128); + ByteBuffer bb = ByteBuffer.allocate(5 * 1024); byte[] ret = new byte[2]; bb.put(ret); diff --git a/src/test/java/cmbpoc/FunctionTest.java b/src/test/java/cmbpoc/FunctionTest.java index e9e85a4..d6b8e4c 100644 --- a/src/test/java/cmbpoc/FunctionTest.java +++ b/src/test/java/cmbpoc/FunctionTest.java @@ -39,7 +39,9 @@ public class FunctionTest { // this.publicKey4Ende = Util.hexString2Bytes( keypair4Ende.get("pk").toString() ); // this.privateKey4Ende = Util.hexString2Bytes( keypair4Ende.get("sk").toString() ); - + // 使用预置密钥对 + this.publicKey4Sign = Util.hexString2Bytes( "034200046508BC4FE965BEB1D57715C180135FC861FDC6527E82E7FD7A6CA25E7CE9CE75101181D7E2CDD16C1974652B38A045465C7FFBAC700E49F949AE5F4C57AEBEAA" ); + this.privateKey4Sign = Util.hexString2Bytes( "00010000CF945DAFF49B9F3AB67A23E1E1BA700FF1F78F5DFFCBB518FD1303A51DABA6FC0000000000000000000000000000000000000000000000000000000000000000" ); this.publicKey4Ende = Util.hexString2Bytes("03420004AF3D4E55D26564C6C937E6EA9232691C01AC5E7916AD2136F788CE7C1E4D0AE8C4754DEC2F7F6A78962D51A171A6F5B4F11823390AEC8B5B0246CD2CCF8052B7"); this.privateKey4Ende = Util.hexString2Bytes("00010000963F7C3A98B7810F52D2861A060E18A9D4D59796CF33967DD61EEDA091E1AD9B0000000000000000000000000000000000000000000000000000000000000000"); } @@ -93,8 +95,15 @@ public class FunctionTest { @Test public void SYD_SM2_Sign(){ - String sign = this.api.SYD_SM2_Sign_HA(1, privateKey4Sign, publicKey4Sign, orgData); - this.api.SYD_SM2_Verify_HA(1, publicKey4Sign, orgData, sign); + String sign = this.api.SYD_SM2_Sign_HA( SydApi.DATA_HASH, privateKey4Sign, publicKey4Sign, orgData); + this.api.SYD_SM2_Verify_HA(SydApi.DATA_HASH, publicKey4Sign, orgData, sign); + } + + + @Test + public void SYD_SM2_Sign_2M(){ + String sign = this.api.SYD_SM2_Sign_HA( SydApi.DATA_HASH, privateKey4Sign, publicKey4Sign, orgData2M); + this.api.SYD_SM2_Verify_HA(SydApi.DATA_HASH, publicKey4Sign, orgData2M, sign); } diff --git a/src/test/java/cmbpoc/JmeterTest.java b/src/test/java/cmbpoc/JmeterTest.java index f610bd0..c0088b2 100644 --- a/src/test/java/cmbpoc/JmeterTest.java +++ b/src/test/java/cmbpoc/JmeterTest.java @@ -1,6 +1,7 @@ package cmbpoc; +import com.sunyard.SydApi; import com.sunyard.proto.Util; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient; @@ -16,8 +17,11 @@ public class JmeterTest extends AbstractJavaSamplerClient { private byte[] publicKey; private byte[] plainData; private byte[] encryptedData; + private String sign; private int sleep = 1; + private byte[] privateKey4Sign; + private byte[] publicKey4Sign; private byte[] privateKey4Ende; private byte[] publicKey4Ende; @@ -36,6 +40,8 @@ public class JmeterTest extends AbstractJavaSamplerClient { params.addArgument("plainDataLen", "1024"); params.addArgument("publicKey4Ende", "", "加密用的公钥"); params.addArgument("privateKey4Ende", "", "解密用的公钥"); + params.addArgument("publicKey4Sign", "", "验签用的公钥"); + params.addArgument("privateKey4Sign", "", "签名用的公钥"); params.addArgument("ip", "192.168.100.145"); params.addArgument("ip2", "172.1.41.96"); params.addArgument("port", "8889"); @@ -45,6 +51,16 @@ public class JmeterTest extends AbstractJavaSamplerClient { @Override public void setupTest(JavaSamplerContext context) { + // 签名密钥对 + String publicKey4Sign = context.getParameter("publicKey4Sign"); + if ( null != publicKey4Sign && !publicKey4Sign.isEmpty()) { + this.publicKey4Sign = Util.hexString2Bytes(publicKey4Sign); + } + String privateKey4Sign = context.getParameter("privateKey4Sign"); + if ( null != privateKey4Sign && !privateKey4Sign.isEmpty()) { + this.privateKey4Sign = Util.hexString2Bytes(privateKey4Sign); + } + // 加密密钥对 String publicKey4Ende = context.getParameter("publicKey4Ende"); if ( null != publicKey4Ende && !publicKey4Ende.isEmpty()) { @@ -82,7 +98,8 @@ public class JmeterTest extends AbstractJavaSamplerClient { case "SYD_SM2_Decrypt": this.encryptedData = this.api.get().SYD_SM2Encrypt(this.publicKey4Ende, this.plainData); break; - case "SYD_SM2_Sign": + case "SYD_SM2_Verify": + this.sign = this.api.get().SYD_SM2_Sign_HA(SydApi.DATA_HASH, this.privateKey4Sign, this.publicKey4Sign, this.plainData); break; default: break; @@ -106,6 +123,10 @@ public class JmeterTest extends AbstractJavaSamplerClient { this.api.get().SYD_SM2Decrypt(privateKey4Ende, this.encryptedData); break; case "SYD_SM2_Sign": + this.api.get().SYD_SM2_Sign_HA(SydApi.DATA_HASH, privateKey4Sign, publicKey4Sign, this.plainData); + break; + case "SYD_SM2_Verify": + this.api.get().SYD_SM2_Verify_HA(SydApi.DATA_HASH, publicKey4Sign, this.plainData, this.sign); break; case "sleep": Thread.sleep( this.sleep );