From 437236208696598fc2b481a471eb096a4944ecb4 Mon Sep 17 00:00:00 2001 From: waner Date: Thu, 19 Jun 2025 11:05:12 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=81=E4=B9=A6=E5=AF=BC=E5=85=A5=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jmeter/test/Test4Jemter.java | 92 ++++++++------- .../java/com/sunyard/entity/ImportResult.java | 55 +++++++++ .../java/racal/sunyard/main/SydApi4j.java | 66 ++++++----- src/test/java/sample/Test4NongxinCW.java | 111 +++++++++++------- 4 files changed, 208 insertions(+), 116 deletions(-) create mode 100644 src/main/java/com/sunyard/entity/ImportResult.java diff --git a/src/main/java/com/jmeter/test/Test4Jemter.java b/src/main/java/com/jmeter/test/Test4Jemter.java index 0e64ac8..805450a 100644 --- a/src/main/java/com/jmeter/test/Test4Jemter.java +++ b/src/main/java/com/jmeter/test/Test4Jemter.java @@ -50,8 +50,8 @@ public class Test4Jemter extends AbstractJavaSamplerClient { arguments.addArgument("orgData", "12345678"); arguments.addArgument("ip", "172.1.41.139"); arguments.addArgument("ip2", "172.1.41.96"); -// arguments.addArgument("port", "8891"); - // arguments.addArgument("ip2", "172.16.17.161"); + arguments.addArgument("port", "8891"); + // arguments.addArgument("ip2", "172.16.17.161"); arguments.addArgument("dataLength", "1024"); arguments.addArgument("type", "1"); arguments.addArgument("sign", "12345678"); @@ -71,8 +71,8 @@ public class Test4Jemter extends AbstractJavaSamplerClient { oData = context.getParameter("orgData"); ip = context.getParameter("ip"); ip2 = context.getParameter("ip2"); -// port = Integer.parseInt(context.getParameter("8891")); - // ip2 = context.getParameter("ip2"); + port = context.getIntParameter("8891"); + // ip2 = context.getParameter("ip2"); dataLength = context.getIntParameter("dataLength"); type = context.getIntParameter("type"); sign = context.getParameter("sign"); @@ -84,7 +84,7 @@ public class Test4Jemter extends AbstractJavaSamplerClient { // // SydApiBuilder builder = new SydApiBuilder().setIp(ip); // final SydApi4j api = (SydApi4j) builder.build(); - SydApi4j.SYD_Set_Parameter_HA(ip, ip2, 8889, 1000); + SydApi4j.SYD_Set_Parameter_HA(ip, ip2, port, 2000); final SydApi4j api1 = (SydApi4j) new SydApi4j(); return api1; } @@ -113,8 +113,8 @@ public class Test4Jemter extends AbstractJavaSamplerClient { // api.get().SYD_NakedSign(SM2dn, orgData, (byte[]) null); api.get().SYD_NakedSign(orgData,SM2dn); sr.setResponseCodeOK(); - //sr.setResponseData(Util.encodeBase64(nakedSign1), StandardCharsets.UTF_8.displayName()); - break; + //sr.setResponseData(Util.encodeBase64(nakedSign1), StandardCharsets.UTF_8.displayName()); + break; case 2: @@ -122,103 +122,105 @@ public class Test4Jemter extends AbstractJavaSamplerClient { api.get().SYD_NakedVerify(orgData,Util.hexString2Bytes(sign), SM2dn); sr.setResponseCodeOK(); //sr.setResponseData(String.valueOf(nakedVerify1), StandardCharsets.UTF_8.displayName()); - break; + break; case 3: //RSA裸签 - api.get().SYD_NakedSign(1, RSAdn,orgData,(byte[])null); + api.get().SYD_NakedSign(1, RSAdn,orgData,(byte[])null); sr.setResponseCodeOK(); //sr.setResponseData(Util.encodeBase64(nakedSign2), StandardCharsets.UTF_8.displayName()); - break; + break; case 4: - api.get().SYD_NakedVerify(1, RSAdn,Util.decodeBase64(sign),orgData ,(byte[])null); + api.get().SYD_NakedVerify(1, RSAdn,Util.decodeBase64(sign),orgData ,(byte[])null); sr.setResponseCodeOK(); //sr.setResponseData(String.valueOf(nakedVerify2), StandardCharsets.UTF_8.displayName()); - break; + break; case 5: // api.get().detachedSign(1, orgData, SM2dn); + //p7 detached签名 api.get().detachedSign(orgData, SM2dn); sr.setResponseCodeOK(); //sr.setResponseData(detSign1, StandardCharsets.UTF_8.displayName()); - break; + break; case 6: // api.get().detachedVerify(1, orgData, sign); + //p7 detached验签 api.get().detachedVerify(orgData, detachedSign); sr.setResponseCodeOK(); //sr.setResponseData(String.valueOf(detV1), StandardCharsets.UTF_8.displayName()); - break; + break; case 7: - api.get().detachedSign(2,1, orgData, RSAdn); + api.get().detachedSign(2,1, orgData, RSAdn); sr.setResponseCodeOK(); //sr.setResponseData(detSign2, StandardCharsets.UTF_8.displayName()); - break; + break; case 8: - api.get().detachedVerify(2,2, orgData, sign); + api.get().detachedVerify(2,2, orgData, sign); sr.setResponseCodeOK(); //sr.setResponseData(String.valueOf(detV2), StandardCharsets.UTF_8.displayName()); - break; + break; case 9: - api.get().attachedSignHsm(orgData, SM2dn); + api.get().attachedSignHsm(orgData, SM2dn); sr.setResponseCodeOK(); //sr.setResponseData(attSign1, StandardCharsets.UTF_8.displayName()); - break; + break; case 10: - api.get().attachedVerify( sign.getBytes()); + api.get().attachedVerify( sign.getBytes()); sr.setResponseCodeOK(); - // sr.setResponseData(String.valueOf(attV1), StandardCharsets.UTF_8.displayName()); - break; + // sr.setResponseData(String.valueOf(attV1), StandardCharsets.UTF_8.displayName()); + break; case 11: - api.get().attachedSignRSAHsm(2, orgData, RSAdn); + api.get().attachedSignRSAHsm(2, orgData, RSAdn); sr.setResponseCodeOK(); - // sr.setResponseData(attSign2, StandardCharsets.UTF_8.displayName()); - break; + // sr.setResponseData(attSign2, StandardCharsets.UTF_8.displayName()); + break; case 12: - api.get().attachedVerifyRSA(2, sign); + api.get().attachedVerifyRSA(2, sign); sr.setResponseCodeOK(); - // sr.setResponseData(String.valueOf(attV2), StandardCharsets.UTF_8.displayName()); - break; + // sr.setResponseData(String.valueOf(attV2), StandardCharsets.UTF_8.displayName()); + break; case 13: - api.get().generateDE(SM2dn.getBytes(), 3, 1, orgData); - // byte[] cipherKey = (byte[]) genSM2.get(SydApi.RET_CIPHER_KEY); + api.get().generateDE(SM2dn.getBytes(), 3, 1, orgData); + // byte[] cipherKey = (byte[]) genSM2.get(SydApi.RET_CIPHER_KEY); sr.setResponseCodeOK(); - // sr.setResponseData(new String(cipherKey), StandardCharsets.UTF_8.displayName()); - break; + // sr.setResponseData(new String(cipherKey), StandardCharsets.UTF_8.displayName()); + break; case 14: - api.get().decryptDE(true, 1, SM2dn.getBytes(), sign);; - // byte[] oData = (byte[]) denSM2.get("oData"); + api.get().decryptDE(true, 1, SM2dn.getBytes(), sign);; + // byte[] oData = (byte[]) denSM2.get("oData"); sr.setResponseCodeOK(); - // sr.setResponseData(new String(oData), StandardCharsets.UTF_8.displayName()); - break; + // sr.setResponseData(new String(oData), StandardCharsets.UTF_8.displayName()); + break; case 15: - api.get(). generateDE(RSAdn.getBytes(), 4, 1, orgData); - // byte[] cipherKeyRSA = (byte[]) genRSA.get(SydApi.RET_CIPHER_KEY); + api.get(). generateDE(RSAdn.getBytes(), 4, 1, orgData); + // byte[] cipherKeyRSA = (byte[]) genRSA.get(SydApi.RET_CIPHER_KEY); sr.setResponseCodeOK(); //sr.setResponseData(new String(cipherKeyRSA), StandardCharsets.UTF_8.displayName()); - break; + break; case 16: - api.get().decryptDERSA(true, 1, RSAdn.getBytes(), sign); - // byte[] oDataRSA = (byte[]) denRSA.get("oData"); + api.get().decryptDERSA(true, 1, RSAdn.getBytes(), sign); + // byte[] oDataRSA = (byte[]) denRSA.get("oData"); sr.setResponseCodeOK(); //sr.setResponseData(new String(oDataRSA), StandardCharsets.UTF_8.displayName()); - break; + break; case 17: sr.setResponseCodeOK(); - break; + break; case 18: testAhnx(); sr.setResponseCodeOK(); @@ -230,7 +232,7 @@ public class Test4Jemter extends AbstractJavaSamplerClient { default: sr.setResponseCodeOK(); sr.setResponseData("请选择测试组", StandardCharsets.UTF_8.displayName()); - break; + break; } sr.setSuccessful(true); }catch (SydApiException e){ diff --git a/src/main/java/com/sunyard/entity/ImportResult.java b/src/main/java/com/sunyard/entity/ImportResult.java new file mode 100644 index 0000000..ca2e45e --- /dev/null +++ b/src/main/java/com/sunyard/entity/ImportResult.java @@ -0,0 +1,55 @@ +package com.sunyard.entity; + +import java.util.List; + +/** + * 证书导入结果封装类 + */ +public class ImportResult { + /** 成功状态码 */ + public static final int CODE_SUCCESS = 2000; + /** 部分成功状态码 */ + public static final int CODE_PARTIAL_SUCCESS = 2001; + /** 完全失败状态码 */ + public static final int CODE_COMPLETE_FAILURE = 2002; + /** 参数错误状态码 */ + public static final int CODE_INVALID_PARAM = 4001; + + private int code; //返回码 + private String certDn; // 证书主题(DN) + private List errCnt; // 详细错误列表(每个失败的服务器) + + // 构造方法 + public ImportResult() { + } + + public ImportResult(int code, String certDn) { + this.code = code; + this.certDn = certDn; + } + + // Getters and Setters + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + public String getCertDn() { + return certDn; + } + + public void setCertDn(String certDn) { + this.certDn = certDn; + } + + public List getErrCnt() { + return errCnt; + } + + public void setErrCnt(List errCnt) { + this.errCnt = errCnt; + } + +} diff --git a/src/main/java/racal/sunyard/main/SydApi4j.java b/src/main/java/racal/sunyard/main/SydApi4j.java index 1f1368c..07d2994 100644 --- a/src/main/java/racal/sunyard/main/SydApi4j.java +++ b/src/main/java/racal/sunyard/main/SydApi4j.java @@ -1,6 +1,7 @@ package racal.sunyard.main; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.StopWatch; import cn.hutool.core.lang.Assert; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; @@ -10,6 +11,7 @@ import com.sunyard.SydApi; import com.sunyard.SydApiException; import com.sunyard.cert.X509; import com.sunyard.constant.CertUsage; +import com.sunyard.entity.ImportResult; import com.sunyard.entity.Struct; import com.sunyard.log.ILogFactory; import com.sunyard.log.ILogger; @@ -55,6 +57,7 @@ import java.security.cert.X509Certificate; import java.text.SimpleDateFormat; import java.time.Duration; import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; @@ -718,14 +721,14 @@ public class SydApi4j implements SydApi { synchronized(reqLock) { byte[] sentData = this.syncSend(data); readData = this.syncRead(sentData); - break; + return readData; } } catch (SydApiException e) { handleNetworkFailure(e, retryCount, maxRetries); // 统一处理网络故障 retryCount ++; } } - return readData; + throw new SydApiException("加密机连接失败,主备节点均不可用", -1); } public byte[] SYD_NakedSign_OuterHash(byte[] orgData, String sCertDN) { @@ -1346,7 +1349,7 @@ public class SydApi4j implements SydApi { } - public String importCertToServers(List addressList, int timeout, String cert, String bkCode, String snmpConfig) { + public ImportResult importCertToServers(List addressList, int timeout, String cert, String bkCode, String snmpConfig) { if (null == addressList || addressList.isEmpty()) { throw new IllegalArgumentException("签名服务器地址不能为空"); } @@ -1380,6 +1383,9 @@ public class SydApi4j implements SydApi { } catch (Exception e) { log.warn("导入证书格式错误!"); } + ImportResult importResult = new ImportResult(); + importResult.setCertDn(dn); + Gson gson = new Gson(); if (!failures.isEmpty()) { //记录失败日志 stringBuilder.append("行号:").append(bkCode).append("\n").append("DN:").append(dn) @@ -1390,7 +1396,6 @@ public class SydApi4j implements SydApi { .map(Object::toString) .collect(Collectors.joining(",")) + "]"; String message = "支付签名证书导入失败!签名服务器地址:" + result + "| 证书对应行号:[" + bkCode + "]"; - Gson gson = new Gson(); Map map = gson.fromJson(snmpConfig, new TypeToken>() {}.getType()); try (SnmpTrapSender sender = new SnmpTrapSender(map)) { sender.sendTrap(message, 2); @@ -1398,12 +1403,16 @@ public class SydApi4j implements SydApi { } catch (Exception e) { log.warn("snmp告警消息发送失败:{}", e.getMessage()); } -// Map msgMap = new HashMap<>(); -// msgMap.put("alarmMsg", message); -// msgMap.put("certDn", dn); -// throw new SydApiException(gson.toJson(msgMap) ,56300, true); + importResult.setErrCnt(failures); + if (failures.size() == addressList.size()) { + importResult.setCode(ImportResult.CODE_COMPLETE_FAILURE); + } else { + importResult.setCode(ImportResult.CODE_PARTIAL_SUCCESS); + } + } else { + importResult.setCode(ImportResult.CODE_SUCCESS); } - return dn; + return importResult; } private TaskContext createTaskContext(String address, int timeout, String cert) { @@ -2359,22 +2368,22 @@ public class SydApi4j implements SydApi { * 连接或重连到有效节点 */ public synchronized void connectHa() { - // 优先尝试主节点 - if (!usingBackup.get()) { - if (tryConnect(ha_ip1)) { -// System.out.println("连接到主节点: " + ha_ip1); - return; - } - } - - // 连接到备节点 - if (tryConnect(ha_ip2)) { -// System.out.println("连接到备节点: " + ha_ip2); - usingBackup.set(true); + // 优先尝试主节点 + if (!usingBackup.get()) { + if (tryConnect(ha_ip1)) { + log.info("连接到主节点,ip:{}", ha_ip1); return; } + } - throw new SydApiException("所有节点均不可用", -100); + // 连接到备节点 + if (tryConnect(ha_ip2)) { + log.info("连接到备节点,ip:{}", ha_ip2); + usingBackup.set(true); + return; + } + + throw new SydApiException("节点连接异常", -100); } /** @@ -2396,7 +2405,7 @@ public class SydApi4j implements SydApi { this.socket = newSocket; return true; } catch (IOException e) { - System.out.println("节点连接失败: " + ip + " - " + e.getMessage()); + log.info("节点连接失败,ip:{}/exception:{}", ip, e.getMessage()); return false; } } @@ -2405,6 +2414,9 @@ public class SydApi4j implements SydApi { if (retryCount > maxRetries) { return; } + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + log.info("socket收发信息异常,准备重试:{}/当前重试:{}次", e.getMessage(),retryCount + 1); // System.out.printf("线程[%s]网络故障,尝试切换节点 (重试: %d/%d)%n", // Thread.currentThread().getName(), retryCount + 1, maxRetries); @@ -2413,20 +2425,20 @@ public class SydApi4j implements SydApi { if (usingBackup.compareAndSet(currentState, newState)) { String targetIp = newState ? ha_ip2 : ha_ip1; -// System.out.println("全局节点切换: " + (currentState ? "备机" : "主机") + "→" + -// (newState ? "备机" : "主机")); try { safeClose(); connect(targetIp, ha_port, ha_timeout); -// System.out.println("线程[" + Thread.currentThread().getName() + "]连接重建成功"); +// System.out.println("故障节点切换成功,当前使用:" + targetIp); + log.info("故障节点切换成功,当前使用ip:{}", targetIp); } catch (Exception ex) { -// System.out.println("线程[" + Thread.currentThread().getName() + "]节点切换失败: " + ex.getMessage()); usingBackup.compareAndSet(newState, currentState); } } else { System.err.println("线程[" + Thread.currentThread().getName() + "]节点已被其他线程切换,使用新节点"); } + stopWatch.stop(); + log.info("节点切换时间:{}", stopWatch.getTotalTimeMillis()); } private void safeClose() { diff --git a/src/test/java/sample/Test4NongxinCW.java b/src/test/java/sample/Test4NongxinCW.java index 92f633e..6b9ee66 100644 --- a/src/test/java/sample/Test4NongxinCW.java +++ b/src/test/java/sample/Test4NongxinCW.java @@ -2,7 +2,9 @@ package sample; import cn.hutool.core.date.StopWatch; import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.sunyard.SydApiException; +import com.sunyard.entity.ImportResult; import com.sunyard.proto.Util; import com.sunyard.util.CertUtil; import com.sunyard.util.IpLockUtils; @@ -11,6 +13,7 @@ import org.junit.Before; import org.junit.Test; import racal.sunyard.main.SydApi4j; +import java.io.UnsupportedEncodingException; import java.security.cert.X509Certificate; import java.util.*; import java.util.concurrent.*; @@ -23,12 +26,12 @@ public class Test4NongxinCW { final String SM2dn = "C=CN,ST=zz,L=zz,O=zzz,CN=zzzzz"; - byte[] orgData = new byte[100]; + byte[] orgData = new byte[1024]; @Before public void before() { //主备调用接口 - SydApi4j.SYD_Set_Parameter_HA("172.1.41.139", "172.1.41.96", 8889, 1000); + SydApi4j.SYD_Set_Parameter_HA("172.1.41.139", "172.1.41.96", 8889, 3000); api = (SydApi4j) new SydApi4j(); // api.startHeartbeat(); @@ -53,12 +56,17 @@ public class Test4NongxinCW { @Test public void testHA() { - - for (int i = 0; i < 100000; i++) { -// byte[] nakedSign = api.SYD_NakedSign(orgData,SM2dn); +// byte[] nakedSign1 = api.SYD_NakedSignAll(4,orgData, SM2dn); +// System.out.println("SM2大数据裸签:"+ Util.bytes2HexString(nakedSign1)); +// boolean nakedVerify1 = api.SYD_NakedVerifyAll(4,orgData, nakedSign1, SM2dn); +// System.out.println("SM2数据验签:"+nakedVerify1 ); + for (int i = 0; i < 10000; i++) { + 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)); +// System.out.println("SM2大数据裸签:"+ Util.bytes2HexString(nakedSign1)); + boolean nakedVerify1 = api.SYD_NakedVerifyAll(4,orgData, nakedSign1, SM2dn); +// System.out.println("SM2数据验签:"+nakedVerify1 ); } } @@ -67,26 +75,33 @@ public class Test4NongxinCW { // 配置HA参数 // SydApi4j.SYD_Set_Parameter_HA("172.1.41.139", "172.1.41.96", 8889, 1000); - // 创建20个线程并发操作API - ExecutorService executor = Executors.newFixedThreadPool(20); +// 创建200个线程并发操作API + ExecutorService executor = Executors.newFixedThreadPool(100); List> futures = new ArrayList<>(); - // 模拟主节点故障 CountDownLatch startLatch = new CountDownLatch(1); - for (int i = 0; i < 200; i++) { + for (int i = 0; i < 100; i++) { futures.add(executor.submit(() -> { - try { - startLatch.await(); // 等待统一开始 - } catch (InterruptedException e) { - throw new RuntimeException(e); - } +// try { +// startLatch.await(); // 等待统一开始 +// } catch (InterruptedException e) { +// throw new RuntimeException(e); +// } SydApi4j api2 = new SydApi4j(); for (int j = 0; j < 1000; j++) { + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); byte[] nakedSign = api2.SYD_NakedSign(orgData,SM2dn); - System.out.println("SM2签名:"+ Util.bytes2HexString(nakedSign)); + stopWatch.stop(); + System.out.println("p1签名耗时---:" + stopWatch.getLastTaskTimeMillis() + "ms"); + stopWatch.start(); + String sign = "304502204ACEE7FA06644B6EAE62E5FBF824B6ED8D4432D5CE52580381ECF3570DE032F4022100F30DF2B902A3C34E183498C14565D03C9F28FD1BCCDFB557B52996539BCCF58F"; + boolean ver = api2.SYD_NakedVerify(orgData,nakedSign, SM2dn); + stopWatch.stop(); + System.out.println("p1验签耗时:" + stopWatch.getLastTaskTimeMillis() + "ms"); } })); } @@ -113,13 +128,13 @@ public class Test4NongxinCW { // byte[] nakedSign1 = api.SYD_NakedSign(SM2dn, (byte[])null, orgData); // System.out.println("SM2签名:"+ Util.bytes2HexString(nakedSign1)); orgData = new byte[1024]; - + String ss = ""; //裸签 - byte[] nakedSign = api.SYD_NakedSign(orgData,SM2dn); + byte[] nakedSign = api.SYD_NakedSign(orgData,ss); System.out.println("SM2签名:"+ Util.bytes2HexString(nakedSign)); //裸签验签 - boolean ver = api.SYD_NakedVerify(orgData,nakedSign, SM2dn); - System.out.println("SM2验签:"+ ver); +// boolean ver = api.SYD_NakedVerify(orgData,nakedSign, SM2dn); +// System.out.println("SM2验签:"+ ver); } @Test @@ -136,14 +151,18 @@ public class Test4NongxinCW { @Test public void detSign(){ - orgData = new byte[4096]; - //detach签名 - String detachedSign = api.detachedSign(orgData, SM2dn); - System.out.println("detach签名:"+ detachedSign); + orgData = new byte[1024]; + + for (int i = 0; i < 10000; i++) { + //detach签名 + String detachedSign = api.detachedSign(orgData, SM2dn); + System.out.println("detach签名:"+ detachedSign); + + //detach验签 + boolean ver = api.detachedVerify(orgData, detachedSign); +// System.out.println("detach验签:"+ ver); + } - //detach验签 - boolean ver = api.detachedVerify(orgData, detachedSign); - System.out.println("detach验签:"+ ver); } @@ -327,7 +346,7 @@ public class Test4NongxinCW { // masterNodes.add("172.16.18.99:8889"); // masterNodes.add("172.16.18.5:8889"); masterNodes.add("172.1.41.139:8889"); -// masterNodes.add("172.1.41.96:8889"); + masterNodes.add("172.1.41.196:8889"); // masterNodes.add("172.16.18.8:8889"); int timeout = 1000; Map map = new HashMap<>(); @@ -336,16 +355,14 @@ public class Test4NongxinCW { 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); + Gson gson = new Gson(); + String snmpConfig = gson.toJson(map); SydApi4j sydApi4j = new SydApi4j(); - sydApi4j.importCertToServers(masterNodes, timeout, cert, "12345678", snmpConfig); -// try { -// sydApi4j.importCertToServers(masterNodes, timeout, cert1, "12345678", snmpConfig); -// } catch (SydApiException e) { -//// if (e.getRetCode() == 56300) { -//// System.out.println(e.getMessage()); -//// } -// } + ImportResult result = sydApi4j.importCertToServers(masterNodes, timeout, cert, "12345678", snmpConfig); + System.out.println(gson.toJson(result)); + System.out.println(result.getCode()); + System.out.println(gson.toJson(result.getErrCnt())); + System.out.println(result.getCertDn()); stopWatch.stop(); System.out.println(stopWatch.getTotalTimeSeconds()); } @@ -389,10 +406,15 @@ public class Test4NongxinCW { } @Test - public void selCert() { - String data = "MIIDyQYKKoEcz1UGAQQCAqCCA7kwggO1AgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoqgRzPVQYBBAIBoIICujCCArYwggJboAMCAQICBSBhWZmSMAwGCCqBHM9VAYN1BQAwXTELMAkGA1UEBhMCQ04xMDAuBgNVBAoMJ0NoaW5hIEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEcMBoGA1UEAwwTQ0ZDQSBURVNUIFNNMiBPQ0ExMTAeFw0yMjEwMjQwMTM4NDdaFw0yNTEwMjQxNTU5NTlaMG0xCzAJBgNVBAYTAmNuMRUwEwYDVQQKDAxDRkNBIFRFU1QgQ0ExDjAMBgNVBAsMBUNOQVBTMRQwEgYDVQQLDAtFbnRlcnByaXNlczEhMB8GA1UEAwwYMDQxQFowMDAwQG5wYzAyQDAwMDAwMDU3MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEogTVy1LIqW7BXiOoNkMZ3h3IsWFXQ7MUOvGuXzsneZTLKxAEUsyzQg+Q1lOwGhU8GzcWs4TFWe0o4xGJZch0zqOB9TCB8jAfBgNVHSMEGDAWgBS+pn5NPXyPoFXmwS8JLiwgQ7NCfzBIBgNVHSAEQTA/MD0GCGCBHIbvKgECMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2ZjYS5jb20uY24vdXMvdXMtMTUuaHRtMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly8yMTAuNzQuNDIuMy9PQ0ExMS9TTTIvY3JsMjI5OTAuY3JsMAsGA1UdDwQEAwID6DAdBgNVHQ4EFgQUoOXRJpClT9Q3Gnq/VZhoryt8VNEwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMAwGCCqBHM9VAYN1BQADRwAwRAIgThN7q4hMTNFDM3LcI4BuLpqLjNQA2psZLHBW9/18I74CIHCa1Sfy3DX/IZr0JbDH1EhzArj4ZWtblKC0M/8C38yYMYHTMIHQAgEBMGYwXTELMAkGA1UEBhMCQ04xMDAuBgNVBAoMJ0NoaW5hIEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEcMBoGA1UEAwwTQ0ZDQSBURVNUIFNNMiBPQ0ExMQIFIGFZmZIwDAYIKoEcz1UBgxEFADANBgkqgRzPVQGCLQEFAARGMEQCIAdiCAIN/KNfW1SlsBfs1FCkDTBCG6Xbt42JvXxLLEO/AiBaAN1AT7JLWxHLz0YcmbB9wkkUy4kZOFXxaVU+qbleHQ=="; - String s = api.getCertBySign(data); - System.out.println(s); + public void selCert() throws UnsupportedEncodingException { +// String data = "MIIDyQYKKoEcz1UGAQQCAqCCA7kwggO1AgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoqgRzPVQYBBAIBoIICujCCArYwggJboAMCAQICBSBhWZmSMAwGCCqBHM9VAYN1BQAwXTELMAkGA1UEBhMCQ04xMDAuBgNVBAoMJ0NoaW5hIEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEcMBoGA1UEAwwTQ0ZDQSBURVNUIFNNMiBPQ0ExMTAeFw0yMjEwMjQwMTM4NDdaFw0yNTEwMjQxNTU5NTlaMG0xCzAJBgNVBAYTAmNuMRUwEwYDVQQKDAxDRkNBIFRFU1QgQ0ExDjAMBgNVBAsMBUNOQVBTMRQwEgYDVQQLDAtFbnRlcnByaXNlczEhMB8GA1UEAwwYMDQxQFowMDAwQG5wYzAyQDAwMDAwMDU3MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEogTVy1LIqW7BXiOoNkMZ3h3IsWFXQ7MUOvGuXzsneZTLKxAEUsyzQg+Q1lOwGhU8GzcWs4TFWe0o4xGJZch0zqOB9TCB8jAfBgNVHSMEGDAWgBS+pn5NPXyPoFXmwS8JLiwgQ7NCfzBIBgNVHSAEQTA/MD0GCGCBHIbvKgECMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2ZjYS5jb20uY24vdXMvdXMtMTUuaHRtMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly8yMTAuNzQuNDIuMy9PQ0ExMS9TTTIvY3JsMjI5OTAuY3JsMAsGA1UdDwQEAwID6DAdBgNVHQ4EFgQUoOXRJpClT9Q3Gnq/VZhoryt8VNEwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMAwGCCqBHM9VAYN1BQADRwAwRAIgThN7q4hMTNFDM3LcI4BuLpqLjNQA2psZLHBW9/18I74CIHCa1Sfy3DX/IZr0JbDH1EhzArj4ZWtblKC0M/8C38yYMYHTMIHQAgEBMGYwXTELMAkGA1UEBhMCQ04xMDAuBgNVBAoMJ0NoaW5hIEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEcMBoGA1UEAwwTQ0ZDQSBURVNUIFNNMiBPQ0ExMQIFIGFZmZIwDAYIKoEcz1UBgxEFADANBgkqgRzPVQGCLQEFAARGMEQCIAdiCAIN/KNfW1SlsBfs1FCkDTBCG6Xbt42JvXxLLEO/AiBaAN1AT7JLWxHLz0YcmbB9wkkUy4kZOFXxaVU+qbleHQ=="; +// String s = api.getCertBySign(data); +// System.out.println(s); + +// String cert = api.getCertByDn(SM2dn,0); +// System.out.println(cert); + + System.out.println(Util.bytes2HexString(orgData)); } @Test @@ -426,20 +448,21 @@ public class Test4NongxinCW { //导入证书并获取DN SydApi4j sydApi4j = new SydApi4j(); - String SM2dn = sydApi4j.importCertToServers(masterNodes, timeout, cert, "12345678", snmpConfig); + String SM2dn = sydApi4j.importCertToServers(masterNodes, timeout, cert, "12345678", snmpConfig).getCertDn(); System.out.println("------------------------------------------------------------------------------------"); System.out.println("导入证书主题为:"+ SM2dn); //主备模式设置 - SydApi4j.SYD_Set_Parameter_HA("172.1.41.96", "172.1.1.2", 8889, 1000); + SydApi4j.SYD_Set_Parameter_HA("192.168.0.8", "172.1.1.2", 8889, 1000); SydApi4j api = (SydApi4j) new SydApi4j(); //签名原始数据 - byte[] orgData = new byte[1024]; + byte[] orgData = "12345678".getBytes(); //p1裸签名(国密证书) byte[] nakedSign = api.SYD_NakedSign(orgData, SM2dn); System.out.println("------------------------------------------------------------------------------------"); System.out.println("p1签名:"+ Util.bytes2HexString(nakedSign)); + System.out.println("p1签名2:"+ Base64.getEncoder().encodeToString(nakedSign)); //p1裸签验签(国密证书) boolean ver = api.SYD_NakedVerify(orgData, nakedSign, SM2dn); System.out.println("------------------------------------------------------------------------------------");