diff --git a/src/main/java/com/jmeter/test/Test4Jemter.java b/src/main/java/com/jmeter/test/Test4Jemter.java index 9242c10..0e64ac8 100644 --- a/src/main/java/com/jmeter/test/Test4Jemter.java +++ b/src/main/java/com/jmeter/test/Test4Jemter.java @@ -246,7 +246,6 @@ public class Test4Jemter extends AbstractJavaSamplerClient { public void testAhnx() { - orgData = new byte[1024]; //裸签 byte[] nakedSign = api.get().SYD_NakedSign(orgData,SM2dn); diff --git a/src/main/java/racal/sunyard/main/SydApi4j.java b/src/main/java/racal/sunyard/main/SydApi4j.java index 2237afb..1f1368c 100644 --- a/src/main/java/racal/sunyard/main/SydApi4j.java +++ b/src/main/java/racal/sunyard/main/SydApi4j.java @@ -4178,10 +4178,12 @@ public class SydApi4j implements SydApi { bb.put((byte) 0x31); } - synchronized (this) { - // 响应解析 - bb = syncRead(syncSend(bb)); - } +// synchronized (this) { +// // 响应解析 +// bb = syncRead(syncSend(bb)); +// } + + bb = sendAndGetResponse(bb); byte[] success = new byte[2]; Arrays.fill(success, (byte) 0); diff --git a/src/test/java/sample/Test4NongxinCW.java b/src/test/java/sample/Test4NongxinCW.java index cc1e2e3..92f633e 100644 --- a/src/test/java/sample/Test4NongxinCW.java +++ b/src/test/java/sample/Test4NongxinCW.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.StopWatch; import com.google.gson.Gson; import com.sunyard.SydApiException; import com.sunyard.proto.Util; +import com.sunyard.util.CertUtil; import com.sunyard.util.IpLockUtils; import org.junit.After; import org.junit.Before; @@ -27,7 +28,7 @@ public class Test4NongxinCW { @Before public void before() { //主备调用接口 - SydApi4j.SYD_Set_Parameter_HA("172.1.41.96", "172.1.41.139", 8889, 1000); + SydApi4j.SYD_Set_Parameter_HA("172.1.41.139", "172.1.41.96", 8889, 1000); api = (SydApi4j) new SydApi4j(); // api.startHeartbeat(); @@ -54,8 +55,10 @@ public class Test4NongxinCW { public void testHA() { for (int i = 0; i < 100000; i++) { - byte[] nakedSign = api.SYD_NakedSign(orgData,SM2dn); +// byte[] nakedSign = api.SYD_NakedSign(orgData,SM2dn); // System.out.println("SM2签名:"+ Util.bytes2HexString(nakedSign)); + byte[] nakedSign1 = api.SYD_NakedSignAll(4,orgData, SM2dn); + System.out.println("SM2大数据裸签:"+ Util.bytes2HexString(nakedSign1)); } } @@ -71,7 +74,7 @@ public class Test4NongxinCW { // 模拟主节点故障 CountDownLatch startLatch = new CountDownLatch(1); - for (int i = 0; i < 20; i++) { + for (int i = 0; i < 200; i++) { futures.add(executor.submit(() -> { try { startLatch.await(); // 等待统一开始 @@ -81,8 +84,9 @@ public class Test4NongxinCW { SydApi4j api2 = new SydApi4j(); - for (int j = 0; j < 10000; j++) { + for (int j = 0; j < 1000; j++) { byte[] nakedSign = api2.SYD_NakedSign(orgData,SM2dn); + System.out.println("SM2签名:"+ Util.bytes2HexString(nakedSign)); } })); } @@ -108,7 +112,8 @@ public class Test4NongxinCW { // orgData = Hex.decode("80a370b809e8a46ba51211a35d6f0180fea32b4acc97916bc9c517ea6651134c"); // byte[] nakedSign1 = api.SYD_NakedSign(SM2dn, (byte[])null, orgData); // System.out.println("SM2签名:"+ Util.bytes2HexString(nakedSign1)); - orgData = new byte[4096]; + orgData = new byte[1024]; + //裸签 byte[] nakedSign = api.SYD_NakedSign(orgData,SM2dn); System.out.println("SM2签名:"+ Util.bytes2HexString(nakedSign)); @@ -347,9 +352,25 @@ public class Test4NongxinCW { @Test public void delCert() { - String SM2dn1 = "C=CN,ST=北京,L=北京,O=信雅达,OU=测试部门1,CN=172.1.41.139"; - boolean del = api.deleteCert(SM2dn1); - System.out.println("删除:"+ del); +// String SM2dn1 = "C=CN,ST=北京,L=北京,O=信雅达,OU=测试部门1,CN=172.1.41.139"; +// boolean del = api.deleteCert(SM2dn1); +// System.out.println("删除:"+ del); + SydApi4j api = (SydApi4j) new SydApi4j(); + String sign = "MIID6wYKKoEcz1UGAQQCAqCCA9swggPXAgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoqgRzPVQYBBAIBoIIC2zCCAtcwggJ7oAMCAQICBSBpB5UzMAwGCCqBHM9VAYN1BQAwXTELMAkGA1UEBhMCQ04xMDAuBgNVBAoMJ0NoaW5hIEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEcMBoGA1UEAwwTQ0ZDQSBURVNUIFNNMiBPQ0ExMTAeFw0yNTAzMTcwODQwNTNaFw0yNzEyMTIwODQwNTNaMIGMMQswCQYDVQQGEwJjbjEfMB0GA1UECgwWQ0ZDQSBDUyBURVNUIFNNMiBPQ0ExMTEOMAwGA1UECwwFQ05BUFMxGTAXBgNVBAsMEE9yZ2FuaXphdGlvbmFsLTExMTAvBgNVBAMMKDA1MUA3OTA3NTgxMDAwMDcwQEM5MDc1ODEwMDAwNzBAMDAwMDAwMDEwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAAR4vx8WcwLXu0gUn+ijMeL7Z8lbN+gRoQa4ZvIQ8fXo9Z/LIJWY92FFz7R2l/YZG/gd/olzZvTAmUehpVkksD54o4H1MIHyMB8GA1UdIwQYMBaAFL6mfk09fI+gVebBLwkuLCBDs0J/MEgGA1UdIARBMD8wPQYIYIEchu8qAQIwMTAvBggrBgEFBQcCARYjaHR0cDovL3d3dy5jZmNhLmNvbS5jbi91cy91cy0xNS5odG0wOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovLzIxMC43NC40Mi4zL09DQTExL1NNMi9jcmwyOTMyOS5jcmwwCwYDVR0PBAQDAgPoMB0GA1UdDgQWBBRYhSR9g0x5JcfgN26TZ7hH6DimDDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwDAYIKoEcz1UBg3UFAANIADBFAiEA/ieBxlXaFMFylrmji2p/hqa3bsOu6y94x+a6gSoCxKMCIBwKAC/7+hFHb7Y8woimj1o12A2ROGtnxuz4F4Szu1PLMYHUMIHRAgEBMGYwXTELMAkGA1UEBhMCQ04xMDAuBgNVBAoMJ0NoaW5hIEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEcMBoGA1UEAwwTQ0ZDQSBURVNUIFNNMiBPQ0ExMQIFIGkHlTMwDAYIKoEcz1UBgxEFADANBgkqgRzPVQGCLQEFAARHMEUCIHpjkQo8s0JLhxccdx2LLutiJ331n91IHp392fPP7olFAiEA1SpAv3LW/0awyxmNSdbrF7/29Aw2096Sp92AxmkWPa8="; + String cert = api.getCertBySign(sign); + System.out.println(cert); + X509Certificate certificate = null; + String dn = ""; + String serialNumber = ""; + try { + certificate = CertUtil.convertToX509Cert(cert); + dn = certificate.getSubjectDN().toString(); + serialNumber = certificate.getSerialNumber().toString(); + } catch (Exception e) { +// log.warn("导入证书格式错误!"); + } + System.out.println("DN:" + dn); + System.out.println("SN:" + serialNumber); } @Test @@ -374,6 +395,77 @@ public class Test4NongxinCW { System.out.println(s); } + @Test + public void testAll() { + //国密证书 + String cert = "-----BEGIN CERTIFICATE-----\n" + + "MIICMDCCAdagAwIBAgIJAOWoGwJCnjlLMAoGCCqBHM9VAYN1MGcxCzAJBgNVBAYT\n" + + "AkNOMRAwDgYDVQQIDAdCZWlqaW5nMRAwDgYDVQQHDAdIYWlEaWFuMRMwEQYDVQQK\n" + + "DApHTUNlcnQub3JnMR8wHQYDVQQDDBZHTUNlcnQgR00gUm9vdCBDQSAtIDAxMB4X\n" + + "DTI1MDUxMzAyMzUxM1oXDTI2MDUxMzAyMzUxM1owRTELMAkGA1UEBgwCQ04xCzAJ\n" + + "BgNVBAgMAnp6MQswCQYDVQQHDAJ6ejEMMAoGA1UECgwDenp6MQ4wDAYDVQQDDAV6\n" + + "enp6ejBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABK5fyRSACWPIBBr/3U+qvjvp\n" + + "niropv2PrA3ZLU1bG8vQpwAEMA0kwyqGgXURBPbvWdAhN7s9wfvHbJyMd9CMZGqj\n" + + "gYwwgYkwDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCB4AwLAYJYIZIAYb4QgENBB8W\n" + + "HUdNQ2VydC5vcmcgU2lnbmVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBSQB7UUqEuG\n" + + "kl4mrx3MAhKTptfbYjAfBgNVHSMEGDAWgBR/Wl47AIRZKg+YvqEObzmVQxBNBzAK\n" + + "BggqgRzPVQGDdQNIADBFAiEA4kgTdn/iA/XYfjTEeOcELwBXd0tTFghkpfP8DhBF\n" + + "KFQCIAXZTL6VPtW67tM/DF4ZgFt5S/YIiFombKa2bWOfL81u\n" + + "-----END CERTIFICATE-----"; + List masterNodes = new ArrayList<>(); + masterNodes.add("172.1.1.1:8889"); + int timeout = 100; + Map map = new HashMap<>(); + map.put("snmp.target.ip", "172.1.1.191"); + map.put("snmp.target.port", "162"); + map.put("enterprise.oid", "1.3.6.1.4.1.9999"); + map.put("snmp.community", "public"); + map.put("snmp.version", "1"); + String snmpConfig = new Gson().toJson(map); + + + //导入证书并获取DN + SydApi4j sydApi4j = new SydApi4j(); + String SM2dn = sydApi4j.importCertToServers(masterNodes, timeout, cert, "12345678", snmpConfig); + System.out.println("------------------------------------------------------------------------------------"); + System.out.println("导入证书主题为:"+ SM2dn); + + //主备模式设置 + SydApi4j.SYD_Set_Parameter_HA("172.1.41.96", "172.1.1.2", 8889, 1000); + SydApi4j api = (SydApi4j) new SydApi4j(); + + //签名原始数据 + byte[] orgData = new byte[1024]; + //p1裸签名(国密证书) + byte[] nakedSign = api.SYD_NakedSign(orgData, SM2dn); + System.out.println("------------------------------------------------------------------------------------"); + System.out.println("p1签名:"+ Util.bytes2HexString(nakedSign)); + //p1裸签验签(国密证书) + boolean ver = api.SYD_NakedVerify(orgData, nakedSign, SM2dn); + System.out.println("------------------------------------------------------------------------------------"); + System.out.println("p1验签:"+ ver); + + //p7 detach签名(带公钥证书) + String detachedSign = api.detachedSign(orgData, SM2dn); + System.out.println("------------------------------------------------------------------------------------"); + System.out.println("p7 detach签名:"+ detachedSign); + + //p7 detach验签(带公钥证书) + boolean ver1 = api.detachedVerify(orgData, detachedSign); + System.out.println("------------------------------------------------------------------------------------"); + System.out.println("p7 detach验签:"+ ver1); + + //从p7签名数据中获取证书,签名数据为base64编码格式 + String cert1 = api.getCertBySign(detachedSign); + System.out.println("------------------------------------------------------------------------------------"); + System.out.println("根据p7签名值获取的证书为:" + cert1); + + //根据证书DN从加密码机删除证书 +// boolean delFlag = api.deleteCert(SM2dn); +// System.out.println("------------------------------------------------------------------------------------"); +// System.out.println("删除证书成功:"+ delFlag); + } +