测试代码整理
This commit is contained in:
@@ -1,38 +0,0 @@
|
||||
package com.Sample;
|
||||
|
||||
import racal.sunyard.main.SydApi4j;
|
||||
|
||||
public class SydUtils {
|
||||
|
||||
private final SydApi4j sydApi4j;
|
||||
|
||||
static {
|
||||
System.setProperty("com.sunyard.dnsort", "true");
|
||||
}
|
||||
|
||||
public SydUtils(String ip1, String ip2, int port, int timeout) {
|
||||
SydApi4j.SYD_Set_Parameter_HA(ip1, ip2, port, timeout);
|
||||
sydApi4j = (SydApi4j) new SydApi4j();
|
||||
|
||||
}
|
||||
|
||||
public void disconnect() {
|
||||
sydApi4j.disconnect();
|
||||
}
|
||||
|
||||
public byte[] SYD_NakedSign(byte[] orgData, String SM2dn) {
|
||||
return sydApi4j.SYD_NakedSign(orgData,SM2dn);
|
||||
}
|
||||
|
||||
public boolean SYD_NakedVerify(byte[] orgData, byte[] nakedSign, String SM2dn){
|
||||
return sydApi4j.SYD_NakedVerify(orgData, nakedSign, SM2dn);
|
||||
}
|
||||
|
||||
public boolean detachedVerify(byte[] orgData, String sign) {
|
||||
return sydApi4j.detachedVerify(orgData, sign);
|
||||
}
|
||||
|
||||
public String detachedSign(byte[] orgData, String sCertDN) {
|
||||
return sydApi4j.detachedSign(orgData, sCertDN);
|
||||
}
|
||||
}
|
||||
@@ -1,141 +0,0 @@
|
||||
package com.Sample;
|
||||
|
||||
import com.sunyard.RetWrap;
|
||||
import com.sunyard.proto.Util;
|
||||
import com.sunyard.util.Configure;
|
||||
import java.io.IOException;
|
||||
import racal.sunyard.main.SydApi4j;
|
||||
import racal.sunyard.main.SydApiBuilder;
|
||||
|
||||
public class TestDemo {
|
||||
public static String sign(SydApi4j api, String certDn, String orgData) {
|
||||
byte[] nakedSign = api.SYD_NakedSignAll(2, orgData.getBytes(), certDn);
|
||||
System.out.println("签名数据:"+ Util.bytes2HexString(nakedSign));
|
||||
return Util.bytes2HexString(nakedSign);
|
||||
}
|
||||
|
||||
public static Boolean signVer(SydApi4j api, String certDn, String orgData, String sign) {
|
||||
boolean nakedVerify = api.SYD_NakedVerifyAll(2, orgData.getBytes(), Util.hexString2Bytes(sign), certDn);
|
||||
System.out.println("验签结果:"+ nakedVerify);
|
||||
return nakedVerify;
|
||||
}
|
||||
|
||||
public static String enData(SydApi4j api, String certDn, String orgData) {
|
||||
RetWrap genSM2 = api.generateDEByDnAll(3, certDn, orgData.getBytes());
|
||||
byte[] cipherKey = (byte[])genSM2.get("CipherKey");
|
||||
System.out.println("加密结果:"+ new String(cipherKey));
|
||||
return new String(cipherKey);
|
||||
}
|
||||
|
||||
public static String deData(SydApi4j api, String certDn, String sign) {
|
||||
RetWrap denSM2 = api.decryptDEByDNAll(3, certDn, sign.getBytes());
|
||||
byte[] oData = (byte[])denSM2.get("oData");
|
||||
System.out.println("解密数据:"+ new String(oData));
|
||||
return new String(oData);
|
||||
}
|
||||
|
||||
public static String detachSign(SydApi4j api, String certDn, String orgData) {
|
||||
String sign = api.detachedSignAll(2, orgData.getBytes(), certDn);
|
||||
System.out.println("detach签名结果:"+ sign);
|
||||
return sign;
|
||||
}
|
||||
|
||||
public static Boolean detachSignVer(SydApi4j api, String orgData, String sign) {
|
||||
boolean signVerify = api.detachedVerifyAll(2, orgData.getBytes(), sign);
|
||||
System.out.println("detach验签:"+ signVerify);
|
||||
return signVerify;
|
||||
}
|
||||
|
||||
public static String snSign(SydApi4j api, String sn, String orgData) {
|
||||
String sign = api.SM2SignCustomized(sn,orgData.getBytes());
|
||||
System.out.println("sn签名结果:"+ sign);
|
||||
return sign;
|
||||
}
|
||||
|
||||
public static Boolean snSignVer(SydApi4j api, String sn,String orgData, String sign) {
|
||||
boolean signVerify = api.SM2VerifyCustomized(sn, orgData.getBytes(), sign);
|
||||
System.out.println("sn验签:"+ signVerify);
|
||||
return signVerify;
|
||||
}
|
||||
|
||||
public static String sm3hash(SydApi4j api,String pk,String orgData) {
|
||||
byte[] hash = api.SM3Hash(pk, orgData.getBytes());
|
||||
System.out.println("hash计算:"+ Util.bytes2HexString(hash));
|
||||
return Util.bytes2HexString(hash);
|
||||
}
|
||||
|
||||
|
||||
public static void testAll(SydApi4j api, String certDn, String orgData) {
|
||||
byte[] nakedSign = api.SYD_NakedSignAll(2, orgData.getBytes(), certDn);
|
||||
System.out.println("签名数据:"+ Util.bytes2HexString(nakedSign));
|
||||
boolean nakedVerify = api.SYD_NakedVerifyAll(2, orgData.getBytes(), nakedSign, certDn);
|
||||
System.out.println("验签结果:"+ nakedVerify);
|
||||
RetWrap genSM2 = api.generateDEByDnAll(3, certDn, orgData.getBytes());
|
||||
byte[] cipherKey = (byte[])genSM2.get("CipherKey");
|
||||
System.out.println("加密结果:"+ new String(cipherKey));
|
||||
RetWrap denSM2 = api.decryptDEByDNAll(3, certDn, cipherKey);
|
||||
byte[] oData = (byte[])denSM2.get("oData");
|
||||
System.out.println("解密数据:"+ new String(oData));
|
||||
String sign = api.detachedSignAll(2, orgData.getBytes(), certDn);
|
||||
System.out.println("detach签名结果:"+ sign);
|
||||
boolean signVerify = api.detachedVerifyAll(2, orgData.getBytes(), sign);
|
||||
System.out.println("detach验签:"+ signVerify);
|
||||
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws InterruptedException {
|
||||
try {
|
||||
String ip = Configure.getKey("ip");
|
||||
System.out.println("ip:"+ ip);
|
||||
int port = Integer.parseInt(Configure.getKey("port"));
|
||||
System.out.println("port:"+ port);
|
||||
int timeout = Integer.parseInt(Configure.getKey("timeout"));
|
||||
System.out.println(""+ timeout);
|
||||
String certDn = Configure.getKey("certDn");
|
||||
System.out.println("certDn:"+ certDn);
|
||||
String signorenData = Configure.getKey("signorenData");
|
||||
System.out.println("signorenData:"+ signorenData);
|
||||
String orgData = Configure.getKey("orgData");
|
||||
System.out.println("orgData:"+ orgData);
|
||||
int type = Integer.parseInt(Configure.getKey("type"));
|
||||
System.out.println("type:"+ type);
|
||||
SydApiBuilder builder = (new SydApiBuilder()).setIp(ip).setPort(port).setTimeout(timeout);
|
||||
SydApi4j api = (SydApi4j)builder.build();
|
||||
switch (type) {
|
||||
case 1:
|
||||
sign(api, certDn, orgData);
|
||||
break;
|
||||
case 2:
|
||||
signVer(api, certDn, orgData, signorenData);
|
||||
break;
|
||||
case 3:
|
||||
enData(api, certDn, orgData);
|
||||
break;
|
||||
case 4:
|
||||
deData(api, certDn, signorenData);
|
||||
break;
|
||||
case 5:
|
||||
detachSign(api, certDn, orgData);
|
||||
break;
|
||||
case 6:
|
||||
detachSignVer(api, orgData, signorenData);
|
||||
break;
|
||||
case 7:
|
||||
snSign(api, certDn, orgData);
|
||||
break;
|
||||
case 8:
|
||||
snSignVer(api, certDn,orgData, signorenData);
|
||||
break;
|
||||
|
||||
case 9:
|
||||
sm3hash(api, certDn,orgData);
|
||||
break;
|
||||
case 0:
|
||||
testAll(api, certDn, orgData);
|
||||
break;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,378 +0,0 @@
|
||||
package com.jmeter.test;
|
||||
|
||||
import com.Sample.SydUtils;
|
||||
import com.google.gson.Gson;
|
||||
import com.sunyard.SydApiException;
|
||||
import com.sunyard.entity.ImportResult;
|
||||
import com.sunyard.proto.Util;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.jmeter.config.Arguments;
|
||||
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
|
||||
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
|
||||
import org.apache.jmeter.samplers.SampleResult;
|
||||
import racal.sunyard.main.SydApi4j;
|
||||
|
||||
import java.io.StringWriter;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.*;
|
||||
|
||||
|
||||
public class Test4Jemter extends AbstractJavaSamplerClient {
|
||||
|
||||
private String SM2dn ;
|
||||
private String RSAdn ;
|
||||
private String ip ;
|
||||
|
||||
private int port;
|
||||
private String ip2 ;
|
||||
private String oData;
|
||||
private String sign;
|
||||
|
||||
private String detachedSign;
|
||||
private byte[] orgData;
|
||||
|
||||
private int type;
|
||||
|
||||
private static ThreadLocal<SydApi4j> api;
|
||||
|
||||
private int dataLength;
|
||||
|
||||
private String cert;
|
||||
private String nodes;
|
||||
private String snmpIP;
|
||||
private String snmpPort;
|
||||
private String snmpOID;
|
||||
private String snmpCommunity;
|
||||
|
||||
private int timeout;
|
||||
|
||||
private int logSwitch;
|
||||
|
||||
|
||||
/**
|
||||
* 定义默认的参数,在jmeter中会自动显示在这里定义的默认参数
|
||||
* @return Arguments对象
|
||||
*/
|
||||
@Override
|
||||
public Arguments getDefaultParameters() {
|
||||
Arguments arguments = new Arguments();
|
||||
arguments.addArgument("SM2dn", "C=CN,ST=zz,L=zz,O=zzz,CN=zzzzz");
|
||||
arguments.addArgument("RSAdn", "C=cn,O=CFCA TEST CA,OU=NCS2,OU=Enterprises,CN=041@Z402451000010@ShanDong@00000001");
|
||||
arguments.addArgument("orgData", "null");
|
||||
arguments.addArgument("ip", "172.1.41.139");
|
||||
arguments.addArgument("ip2", "172.1.41.96");
|
||||
arguments.addArgument("port", "8889");
|
||||
arguments.addArgument("timeout", "3000");
|
||||
arguments.addArgument("logSwitch", "1");
|
||||
// arguments.addArgument("ip2", "172.16.17.161");
|
||||
arguments.addArgument("dataLength", "1024");
|
||||
arguments.addArgument("type", "1");
|
||||
arguments.addArgument("sign", "12345678");
|
||||
arguments.addArgument("detachedSign", "12345678");
|
||||
arguments.addArgument("cert", "");
|
||||
arguments.addArgument("nodes", "172.1.41.139:8889;172.1.41.96:8889");
|
||||
arguments.addArgument("snmpIP", "172.1.41.139");
|
||||
arguments.addArgument("snmpPort", "162");
|
||||
arguments.addArgument("snmpOID", "1.3.6.1.4.1.9999");
|
||||
arguments.addArgument("snmpCommunity", "public");
|
||||
|
||||
return arguments;
|
||||
}
|
||||
|
||||
/**
|
||||
* 在执行测试之前执行,只执行一次,可以获取传递过来的参数,一般用来做初始化操作
|
||||
* @param context 可以获取jmeter传递过来的参数
|
||||
*/
|
||||
@Override
|
||||
public void setupTest(JavaSamplerContext context) {
|
||||
//对成员变量初始化
|
||||
SM2dn = context.getParameter("SM2dn");
|
||||
RSAdn = context.getParameter("RSAdn");
|
||||
oData = context.getParameter("orgData");
|
||||
ip = context.getParameter("ip");
|
||||
ip2 = context.getParameter("ip2");
|
||||
port = context.getIntParameter("port");
|
||||
timeout = context.getIntParameter("timeout");
|
||||
logSwitch = context.getIntParameter("logSwitch");
|
||||
// ip2 = context.getParameter("ip2");
|
||||
dataLength = context.getIntParameter("dataLength");
|
||||
type = context.getIntParameter("type");
|
||||
sign = context.getParameter("sign");
|
||||
detachedSign = context.getParameter("detachedSign");
|
||||
cert = context.getParameter("cert");
|
||||
nodes = context.getParameter("nodes");
|
||||
snmpIP = context.getParameter("snmpIP");
|
||||
snmpPort = context.getParameter("snmpPort");
|
||||
snmpOID = context.getParameter("snmpOID");
|
||||
snmpCommunity = context.getParameter("snmpCommunity");
|
||||
System.getProperty("com.sunyard.sydapi4j.debug", "false");
|
||||
System.setProperty("com.sunyard.dnsort", "false");
|
||||
api = new ThreadLocal<SydApi4j>() {
|
||||
@Override
|
||||
public SydApi4j initialValue() {
|
||||
//
|
||||
// SydApiBuilder builder = new SydApiBuilder().setIp(ip);
|
||||
// final SydApi4j api = (SydApi4j) builder.build();
|
||||
SydApi4j.SYD_Set_Parameter_HA(ip, ip2, port, timeout);
|
||||
final SydApi4j api1 = (SydApi4j) new SydApi4j();
|
||||
return api1;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 真正的测试代码块,jmeter按照配置的逻辑执行该方法
|
||||
* @param javaSamplerContext 上下文对象,可以获取jmeter传递的参数
|
||||
* @return SampleResult对象用于封装结果
|
||||
*/
|
||||
@Override
|
||||
public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
|
||||
SampleResult sr = new SampleResult();
|
||||
//设置标签
|
||||
sr.setSampleLabel("testDemo");
|
||||
//设置开始标志,否则无法统计tps等
|
||||
sr.sampleStart();
|
||||
SydUtils sydUtils = null;
|
||||
try {
|
||||
if ("null".equals(oData)) {
|
||||
orgData = null;
|
||||
} else {
|
||||
orgData = oData.getBytes(); //SM2裸签
|
||||
}
|
||||
sydUtils = new SydUtils(ip, ip2, port, timeout);
|
||||
// orgData = new byte[dataLength];
|
||||
//执行业务逻辑
|
||||
switch(type){
|
||||
case 1:
|
||||
// api.get().SYD_NakedSign(SM2dn, orgData, (byte[]) null);
|
||||
// byte[] nakedSign = api.get().SYD_NakedSign(orgData,SM2dn);
|
||||
byte[] nakedSign = sydUtils.SYD_NakedSign(orgData,SM2dn);
|
||||
if (logSwitch == 1) {
|
||||
System.out.println("p1签名(hex):"+ Util.bytes2HexString(nakedSign));
|
||||
}
|
||||
|
||||
sr.setResponseCodeOK();
|
||||
//sr.setResponseData(Util.encodeBase64(nakedSign1), StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
|
||||
case 2:
|
||||
// api.get().SYD_NakedVerify(SM2dn, Util.decodeBase64(sign), orgData, (byte[])null) ;
|
||||
// boolean flag = api.get().SYD_NakedVerify(orgData,Util.hexString2Bytes(sign), SM2dn);
|
||||
boolean flag = sydUtils.SYD_NakedVerify(orgData,Util.hexString2Bytes(sign), SM2dn);
|
||||
if (logSwitch == 1) {
|
||||
System.out.println("p1验签:"+ flag);
|
||||
}
|
||||
sr.setResponseCodeOK();
|
||||
//sr.setResponseData(String.valueOf(nakedVerify1), StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 3:
|
||||
//RSA裸签
|
||||
api.get().SYD_NakedSign(1, RSAdn,orgData,(byte[])null);
|
||||
sr.setResponseCodeOK();
|
||||
//sr.setResponseData(Util.encodeBase64(nakedSign2), StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 4:
|
||||
api.get().SYD_NakedVerify(1, RSAdn,Util.decodeBase64(sign),orgData ,(byte[])null);
|
||||
sr.setResponseCodeOK();
|
||||
//sr.setResponseData(String.valueOf(nakedVerify2), StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 5:
|
||||
// api.get().detachedSign(1, orgData, SM2dn);
|
||||
//p7 detached签名
|
||||
String detachedSign1 = sydUtils.detachedSign(orgData, SM2dn);
|
||||
if (logSwitch == 1) {
|
||||
System.out.println("p7 detach签名:"+ detachedSign1);
|
||||
}
|
||||
sr.setResponseCodeOK();
|
||||
//sr.setResponseData(detSign1, StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 6:
|
||||
// api.get().detachedVerify(1, orgData, sign);
|
||||
//p7 detached验签
|
||||
// boolean ver = api.get().detachedVerify(orgData, detachedSign);
|
||||
boolean ver = sydUtils.detachedVerify(orgData, detachedSign);
|
||||
if (logSwitch == 1) {
|
||||
System.out.println("p7 detach验签:"+ ver);
|
||||
}
|
||||
sr.setResponseCodeOK();
|
||||
//sr.setResponseData(String.valueOf(detV1), StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 7:
|
||||
api.get().detachedSign(2,1, orgData, RSAdn);
|
||||
sr.setResponseCodeOK();
|
||||
//sr.setResponseData(detSign2, StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 8:
|
||||
api.get().detachedVerify(2,2, orgData, sign);
|
||||
sr.setResponseCodeOK();
|
||||
//sr.setResponseData(String.valueOf(detV2), StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 9:
|
||||
api.get().attachedSignHsm(orgData, SM2dn);
|
||||
sr.setResponseCodeOK();
|
||||
//sr.setResponseData(attSign1, StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 10:
|
||||
api.get().attachedVerify( sign.getBytes());
|
||||
sr.setResponseCodeOK();
|
||||
// sr.setResponseData(String.valueOf(attV1), StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 11:
|
||||
api.get().attachedSignRSAHsm(2, orgData, RSAdn);
|
||||
sr.setResponseCodeOK();
|
||||
// sr.setResponseData(attSign2, StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 12:
|
||||
api.get().attachedVerifyRSA(2, sign);
|
||||
sr.setResponseCodeOK();
|
||||
// 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);
|
||||
sr.setResponseCodeOK();
|
||||
// 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");
|
||||
sr.setResponseCodeOK();
|
||||
// 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);
|
||||
sr.setResponseCodeOK();
|
||||
//sr.setResponseData(new String(cipherKeyRSA), StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 16:
|
||||
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;
|
||||
|
||||
case 17:
|
||||
String cert1 = api.get().getCertBySign(detachedSign);
|
||||
System.out.println("根据p7签名值获取的证书为:" + cert1);
|
||||
sr.setResponseCodeOK();
|
||||
break;
|
||||
case 18:
|
||||
testAhnx(sydUtils);
|
||||
sr.setResponseCodeOK();
|
||||
break;
|
||||
case 19:
|
||||
testImportCert();
|
||||
sr.setResponseCodeOK();
|
||||
break;
|
||||
case 20:
|
||||
boolean delFlag = api.get().deleteCert(SM2dn);
|
||||
System.out.println("删除证书成功:"+ delFlag);
|
||||
break;
|
||||
case 21:
|
||||
SydApi4j.SYD_Set_Parameter_HA(ip, ip2, port, timeout);
|
||||
break;
|
||||
case 22:
|
||||
api.get().connect(ip, port, "", timeout);
|
||||
break;
|
||||
case 23:
|
||||
api.get().disconnect();
|
||||
break;
|
||||
default:
|
||||
sr.setResponseCodeOK();
|
||||
sr.setResponseData("请选择测试组", StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
}
|
||||
sr.setSuccessful(true);
|
||||
}catch (SydApiException e){
|
||||
e.printStackTrace();
|
||||
sr.setResponseCode(String.valueOf(e.getRetCode()));
|
||||
sr.setResponseData(e.getMessage(), StandardCharsets.UTF_8.displayName());
|
||||
sr.setSuccessful(false);
|
||||
}finally {
|
||||
if (sydUtils != null) {
|
||||
sydUtils.disconnect();
|
||||
}
|
||||
sr.sampleEnd();
|
||||
}
|
||||
return sr;
|
||||
}
|
||||
|
||||
public void testAhnx(SydUtils sydUtils) {
|
||||
|
||||
//裸签
|
||||
byte[] nakedSign = sydUtils.SYD_NakedSign(orgData,SM2dn);
|
||||
|
||||
//裸签验签
|
||||
boolean ver = sydUtils.SYD_NakedVerify(orgData,nakedSign, SM2dn);
|
||||
|
||||
//detach签名
|
||||
String detachedSign = sydUtils.detachedSign(orgData, SM2dn);
|
||||
|
||||
//detach验签
|
||||
boolean ver1 = sydUtils.detachedVerify(orgData, detachedSign);
|
||||
|
||||
// testImportCert();
|
||||
}
|
||||
|
||||
private void testImportCert(){
|
||||
List<String> masterNodes = Arrays.asList(StringUtils.split(nodes, ";"));
|
||||
Map<String, String> map = new HashMap<>();
|
||||
map.put("snmp.target.ip", snmpIP);
|
||||
map.put("snmp.target.port", snmpPort);
|
||||
map.put("enterprise.oid", snmpOID);
|
||||
map.put("snmp.community", snmpCommunity);
|
||||
map.put("snmp.version", "1");
|
||||
Gson gson = new Gson();
|
||||
String snmpConfig = gson.toJson(map);
|
||||
SydApi4j sydApi4j = new SydApi4j();
|
||||
String cert21 = convertToPem(Base64.getDecoder().decode(cert));
|
||||
ImportResult importResult = sydApi4j.importCertToServers(masterNodes, timeout, cert21, "12345678", snmpConfig);
|
||||
System.out.println("证书导入结果:" + gson.toJson(importResult));
|
||||
}
|
||||
|
||||
private String convertToPem(byte[] derCert){
|
||||
// 使用Base64编码器(兼容RFC 4648,每行64字符)
|
||||
StringWriter writer = new StringWriter();
|
||||
writer.write("-----BEGIN CERTIFICATE-----\n");
|
||||
// 将DER转换为Base64并分割为每行64字符
|
||||
String base64Cert = Base64.getMimeEncoder(64, "\n".getBytes()).encodeToString(derCert);
|
||||
writer.write(base64Cert);
|
||||
// 如果Base64编码的字符串没有以换行结束,则添加换行
|
||||
if (!base64Cert.endsWith("\n")) {
|
||||
writer.write("\n");
|
||||
}
|
||||
writer.write("-----END CERTIFICATE-----\n");
|
||||
return writer.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试完成后执行,一般用于关闭资源
|
||||
* @param context 上下文对象,可用于获取jmeter传递的参数
|
||||
*/
|
||||
@Override
|
||||
public void teardownTest(JavaSamplerContext context) {
|
||||
System.runFinalization();
|
||||
if (api != null) {
|
||||
api.get().disconnect();
|
||||
api.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,125 +0,0 @@
|
||||
package com.sample;
|
||||
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.sunyard.SydApiException;
|
||||
import racal.sunyard.main.SydApi4j;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
|
||||
public class Test {
|
||||
|
||||
private static final String odata = "<?xml version=\"1.0\" encoding=\"utf-8\"?><SignData><TradeType name=\"银行账号转账\" authLevel=\"0\">BankAcctTransfer</TradeType><Timestamp>1710469760912</Timestamp><Fields><AcctType>INNERDEBIT</AcctType><PayerSubAcSeq></PayerSubAcSeq><PayerBankAcType>96</PayerBankAcType><PayerAcNo>6229539600100010640</PayerAcNo><PayerAcName>王二类</PayerAcName><PayerCurrency>156</PayerCurrency><PayeeAcNo name=\"收款人账号:\">6217788308301020599</PayeeAcNo><PayeeAcName name=\"收款人名称:\">王二类</PayeeAcName><Amount name=\"转账金额:\">1</Amount><PayeeBankCode>402/402361018886</PayeeBankCode><PayeeBankName>安徽农金</PayeeBankName><ProvinceCode></ProvinceCode><ProvinceName></ProvinceName><CityCode></CityCode><CityName></CityName><UnionDeptId></UnionDeptId><UnionDeptName></UnionDeptName><TransType>0</TransType><Remark></Remark><Fee>0.00</Fee><CRFlag>1</CRFlag><TransTypeFlag>0</TransTypeFlag><TrsRouteType>0</TrsRouteType><AddPayeeBookFlag>1</AddPayeeBookFlag></Fields></SignData>";
|
||||
|
||||
private static String ip1 = null;
|
||||
private static String ip2 = null;
|
||||
private static int port = 0;
|
||||
private static String dn = null;
|
||||
|
||||
|
||||
private static int success = 0;
|
||||
private static int error = 0;
|
||||
|
||||
private static void printInfo(){
|
||||
System.out.println(String.format("调用总数=%d\t成功总数=%d\t失败总数=%d", success+error, success, error));
|
||||
}
|
||||
|
||||
private static void checkOK(){
|
||||
success += 1;
|
||||
printInfo();
|
||||
}
|
||||
|
||||
private static void checkError(){
|
||||
error += 1;
|
||||
printInfo();
|
||||
}
|
||||
|
||||
|
||||
public static void case1(){
|
||||
SydApi4j.SYD_Set_Parameter_HA(ip1, ip2, port, 3000);
|
||||
SydApi4j api = (SydApi4j) new SydApi4j();
|
||||
try {
|
||||
// 获取签名证书
|
||||
String cert1 = api.getCertByDn(dn,0);
|
||||
// 获取加密证书
|
||||
String cert2 = api.getCertByDn(dn,0);
|
||||
String odata = "<?xml version=\"1.0\" encoding=\"utf-8\"?><SignData><TradeType name=\"银行账号转账\" authLevel=\"0\">BankAcctTransfer</TradeType><Timestamp>1710469760912</Timestamp><Fields><AcctType>INNERDEBIT</AcctType><PayerSubAcSeq></PayerSubAcSeq><PayerBankAcType>96</PayerBankAcType><PayerAcNo>6229539600100010640</PayerAcNo><PayerAcName>王二类</PayerAcName><PayerCurrency>156</PayerCurrency><PayeeAcNo name=\"收款人账号:\">6217788308301020599</PayeeAcNo><PayeeAcName name=\"收款人名称:\">王二类</PayeeAcName><Amount name=\"转账金额:\">1</Amount><PayeeBankCode>402/402361018886</PayeeBankCode><PayeeBankName>安徽农金</PayeeBankName><ProvinceCode></ProvinceCode><ProvinceName></ProvinceName><CityCode></CityCode><CityName></CityName><UnionDeptId></UnionDeptId><UnionDeptName></UnionDeptName><TransType>0</TransType><Remark></Remark><Fee>0.00</Fee><CRFlag>1</CRFlag><TransTypeFlag>0</TransTypeFlag><TrsRouteType>0</TrsRouteType><AddPayeeBookFlag>1</AddPayeeBookFlag></Fields></SignData>";
|
||||
|
||||
byte[] nakedSign = api.SYD_NakedSign(dn, odata.getBytes(), null);
|
||||
boolean nakedVerify2 = api.SYD_NakedVerifyAll4NX(cert1,4, odata.getBytes(), nakedSign, dn);
|
||||
|
||||
api.importCert(cert1.getBytes(), null);
|
||||
api.importCert(cert2.getBytes(), null);
|
||||
System.out.println("验签结果:" + nakedVerify2 );
|
||||
} catch (SydApiException e) {
|
||||
throw e;
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw new RuntimeException(e);
|
||||
} finally {
|
||||
api.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
public static void case2(){
|
||||
SydApi4j.SYD_Set_Parameter_HA(ip1, ip2, port, 3000);
|
||||
SydApi4j api = (SydApi4j) new SydApi4j();
|
||||
try {
|
||||
String sde = api.detachedSignAll(4, odata.getBytes(), dn);
|
||||
System.out.println("SM2detach签名:"+sde);
|
||||
boolean bde = api.detachedVerifyAll(4, odata.getBytes(), sde);
|
||||
System.out.println("SM2detach验签:"+bde);
|
||||
} finally {
|
||||
api.disconnect();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println("载入配置文件 ./config.json");
|
||||
String workDir = System.getProperty("user.dir");
|
||||
Path filePath = Paths.get(workDir,"config.json");
|
||||
String configStr = FileUtil.readString(filePath.toFile(), StandardCharsets.UTF_8);
|
||||
JSONObject config = JSONUtil.parseObj(configStr);
|
||||
ip1 = config.getStr("ip1");
|
||||
ip2 = config.getStr("ip2");
|
||||
port = config.getInt("port");
|
||||
dn = config.getStr("dn");
|
||||
System.out.println("ip1=" + ip1);
|
||||
System.out.println("ip2=" + ip2);
|
||||
System.out.println("port=" + port);
|
||||
System.out.println("dn=" + dn);
|
||||
System.out.println("载入配置完成");
|
||||
|
||||
|
||||
|
||||
System.out.println("开始持续交易, HA 模式,短链接模式");
|
||||
while (true) {
|
||||
try {
|
||||
case1();
|
||||
checkOK();
|
||||
Thread.sleep(3000);
|
||||
|
||||
// case2();
|
||||
// checkOK();
|
||||
// Thread.sleep(3000);
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
System.err.println("发生错误");
|
||||
e.printStackTrace();
|
||||
checkError();
|
||||
try {
|
||||
Thread.sleep(3000);
|
||||
} catch (InterruptedException ex) {
|
||||
throw new RuntimeException(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user