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