diff --git a/pom.xml b/pom.xml
index 2f61431..5dcf8f7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,8 +14,8 @@
3.4.2
UTF-8
UTF-8
- 1.8
- 1.8
+ 1.6
+ 1.6
@@ -78,7 +78,7 @@
com.sunyard
proto
- 1.0.20221215
+ 1.1.20221215
@@ -149,8 +149,8 @@
- 7
- 7
+ 6
+ 6
groovy-eclipse-compiler
true
true
diff --git a/src/main/java/com/jmeter/test/Test4ZS.java b/src/main/java/com/jmeter/test/Test4ZS.java
index 9d98959..b07b6e5 100644
--- a/src/main/java/com/jmeter/test/Test4ZS.java
+++ b/src/main/java/com/jmeter/test/Test4ZS.java
@@ -1,210 +1,210 @@
-package com.jmeter.test;
-
-import com.sunyard.RetWrap;
-import com.sunyard.SydApi;
-import com.sunyard.SydApiException;
-import com.sunyard.proto.Util;
-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 racal.sunyard.main.SydApiBuilder;
-
-import java.nio.charset.StandardCharsets;
-
-public class Test4ZS extends AbstractJavaSamplerClient {
-
- private String SM2dn ;
- private String RSAdn ;
- private String ip ;
- private String ip2 ;
- private String oData;
- private String sign;
- private byte[] orgData;
-
- private int type;
-
-
- /**
- * 定义默认的参数,在jmeter中会自动显示在这里定义的默认参数
- * @return Arguments对象
- */
- @Override
- public Arguments getDefaultParameters() {
- Arguments arguments = new Arguments();
- arguments.addArgument("SM2dn", "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1");
- arguments.addArgument("RSAdn", "C=cn,O=CFCA TEST CA,OU=NCS2,OU=Enterprises,CN=041@Z402451000010@ShanDong@00000001");
- arguments.addArgument("orgData", "12345678");
- arguments.addArgument("ip", "172.16.17.161");
- arguments.addArgument("ip2", "172.16.17.161");
- arguments.addArgument("type", "1");
- arguments.addArgument("sign", "12345678");
- 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");
- type = context.getIntParameter("type");
- sign = context.getParameter("sign");
- System.setProperty("com.sunyard.dnsort", "false");
-
- }
-
- /**
- * 真正的测试代码块,jmeter按照配置的逻辑执行该方法
- * @param javaSamplerContext 上下文对象,可以获取jmeter传递的参数
- * @return SampleResult对象用于封装结果
- */
- @Override
- public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
- SampleResult sr = new SampleResult();
- //设置标签
- sr.setSampleLabel("testDemo");
- //设置开始标志,否则无法统计tps等
- sr.sampleStart();
- try {
- SydApi4j.SYD_Set_Parameter_HA(ip, ip2, 8889, 1000);
- SydApi4j api = (SydApi4j) new SydApi4j();
- orgData = oData.getBytes(); //SM2裸签
- //执行业务逻辑
- switch(type){
- case 1:
- api.SYD_NakedSign(SM2dn, orgData, (byte[])null);
- sr.setResponseCodeOK();
- //sr.setResponseData(Util.encodeBase64(nakedSign1), StandardCharsets.UTF_8.displayName());
- break;
-
-
- case 2:
- api.SYD_NakedVerify(SM2dn, Util.decodeBase64(sign), orgData, (byte[])null) ;
- sr.setResponseCodeOK();
- //sr.setResponseData(String.valueOf(nakedVerify1), StandardCharsets.UTF_8.displayName());
- break;
-
- case 3:
- //RSA裸签
- api.SYD_NakedSign(1, RSAdn,orgData,(byte[])null);
- sr.setResponseCodeOK();
- //sr.setResponseData(Util.encodeBase64(nakedSign2), StandardCharsets.UTF_8.displayName());
- break;
-
- case 4:
- api.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.detachedSign(1, orgData, SM2dn);
- sr.setResponseCodeOK();
- //sr.setResponseData(detSign1, StandardCharsets.UTF_8.displayName());
- break;
-
- case 6:
- api.detachedVerify(1, orgData, sign);
- sr.setResponseCodeOK();
- //sr.setResponseData(String.valueOf(detV1), StandardCharsets.UTF_8.displayName());
- break;
-
- case 7:
- api.detachedSign(2,1, orgData, RSAdn);
- sr.setResponseCodeOK();
- //sr.setResponseData(detSign2, StandardCharsets.UTF_8.displayName());
- break;
-
- case 8:
- api.detachedVerify(2,2, orgData, sign);
- sr.setResponseCodeOK();
- //sr.setResponseData(String.valueOf(detV2), StandardCharsets.UTF_8.displayName());
- break;
-
- case 9:
- api.attachedSignHsm(orgData, SM2dn);
- sr.setResponseCodeOK();
- //sr.setResponseData(attSign1, StandardCharsets.UTF_8.displayName());
- break;
-
- case 10:
- api.attachedVerify( sign.getBytes());
- sr.setResponseCodeOK();
- // sr.setResponseData(String.valueOf(attV1), StandardCharsets.UTF_8.displayName());
- break;
-
- case 11:
- api.attachedSignRSAHsm(2, orgData, RSAdn);
- sr.setResponseCodeOK();
- // sr.setResponseData(attSign2, StandardCharsets.UTF_8.displayName());
- break;
-
- case 12:
- api.attachedVerifyRSA(2, sign);
- sr.setResponseCodeOK();
- // sr.setResponseData(String.valueOf(attV2), StandardCharsets.UTF_8.displayName());
- break;
-
- case 13:
- api.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.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. 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.decryptDERSA(true, 1, RSAdn.getBytes(), sign);
- // byte[] oDataRSA = (byte[]) denRSA.get("oData");
- sr.setResponseCodeOK();
- //sr.setResponseData(new String(oDataRSA), StandardCharsets.UTF_8.displayName());
- 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 {
- sr.sampleEnd();
- }
- return sr;
- }
-
- /**
- * 测试完成后执行,一般用于关闭资源
- * @param context 上下文对象,可用于获取jmeter传递的参数
- */
- @Override
- public void teardownTest(JavaSamplerContext context) {
- System.runFinalization();
- }
-}
\ No newline at end of file
+//package com.jmeter.test;
+//
+//import com.sunyard.RetWrap;
+//import com.sunyard.SydApi;
+//import com.sunyard.SydApiException;
+//import com.sunyard.proto.Util;
+//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 racal.sunyard.main.SydApiBuilder;
+//import sun.nio.cs.StandardCharsets;
+//
+//
+//public class Test4ZS extends AbstractJavaSamplerClient {
+//
+// private String SM2dn ;
+// private String RSAdn ;
+// private String ip ;
+// private String ip2 ;
+// private String oData;
+// private String sign;
+// private byte[] orgData;
+//
+// private int type;
+//
+//
+// /**
+// * 定义默认的参数,在jmeter中会自动显示在这里定义的默认参数
+// * @return Arguments对象
+// */
+// @Override
+// public Arguments getDefaultParameters() {
+// Arguments arguments = new Arguments();
+// arguments.addArgument("SM2dn", "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1");
+// arguments.addArgument("RSAdn", "C=cn,O=CFCA TEST CA,OU=NCS2,OU=Enterprises,CN=041@Z402451000010@ShanDong@00000001");
+// arguments.addArgument("orgData", "12345678");
+// arguments.addArgument("ip", "172.16.17.161");
+// arguments.addArgument("ip2", "172.16.17.161");
+// arguments.addArgument("type", "1");
+// arguments.addArgument("sign", "12345678");
+// 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");
+// type = context.getIntParameter("type");
+// sign = context.getParameter("sign");
+// System.setProperty("com.sunyard.dnsort", "false");
+//
+// }
+//
+// /**
+// * 真正的测试代码块,jmeter按照配置的逻辑执行该方法
+// * @param javaSamplerContext 上下文对象,可以获取jmeter传递的参数
+// * @return SampleResult对象用于封装结果
+// */
+// @Override
+// public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
+// SampleResult sr = new SampleResult();
+// //设置标签
+// sr.setSampleLabel("testDemo");
+// //设置开始标志,否则无法统计tps等
+// sr.sampleStart();
+// try {
+// SydApi4j.SYD_Set_Parameter_HA(ip, ip2, 8889, 1000);
+// SydApi4j api = (SydApi4j) new SydApi4j();
+// orgData = oData.getBytes(); //SM2裸签
+// //执行业务逻辑
+// switch(type){
+// case 1:
+// api.SYD_NakedSign(SM2dn, orgData, (byte[])null);
+// sr.setResponseCodeOK();
+// //sr.setResponseData(Util.encodeBase64(nakedSign1), StandardCharsets.UTF_8.displayName());
+// break;
+//
+//
+// case 2:
+// api.SYD_NakedVerify(SM2dn, Util.decodeBase64(sign), orgData, (byte[])null) ;
+// sr.setResponseCodeOK();
+// //sr.setResponseData(String.valueOf(nakedVerify1), StandardCharsets.UTF_8.displayName());
+// break;
+//
+// case 3:
+// //RSA裸签
+// api.SYD_NakedSign(1, RSAdn,orgData,(byte[])null);
+// sr.setResponseCodeOK();
+// //sr.setResponseData(Util.encodeBase64(nakedSign2), StandardCharsets.UTF_8.displayName());
+// break;
+//
+// case 4:
+// api.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.detachedSign(1, orgData, SM2dn);
+// sr.setResponseCodeOK();
+// //sr.setResponseData(detSign1, StandardCharsets.UTF_8.displayName());
+// break;
+//
+// case 6:
+// api.detachedVerify(1, orgData, sign);
+// sr.setResponseCodeOK();
+// //sr.setResponseData(String.valueOf(detV1), StandardCharsets.UTF_8.displayName());
+// break;
+//
+// case 7:
+// api.detachedSign(2,1, orgData, RSAdn);
+// sr.setResponseCodeOK();
+// //sr.setResponseData(detSign2, StandardCharsets.UTF_8.displayName());
+// break;
+//
+// case 8:
+// api.detachedVerify(2,2, orgData, sign);
+// sr.setResponseCodeOK();
+// //sr.setResponseData(String.valueOf(detV2), StandardCharsets.UTF_8.displayName());
+// break;
+//
+// case 9:
+// api.attachedSignHsm(orgData, SM2dn);
+// sr.setResponseCodeOK();
+// //sr.setResponseData(attSign1, StandardCharsets.UTF_8.displayName());
+// break;
+//
+// case 10:
+// api.attachedVerify( sign.getBytes());
+// sr.setResponseCodeOK();
+// // sr.setResponseData(String.valueOf(attV1), StandardCharsets.UTF_8.displayName());
+// break;
+//
+// case 11:
+// api.attachedSignRSAHsm(2, orgData, RSAdn);
+// sr.setResponseCodeOK();
+// // sr.setResponseData(attSign2, StandardCharsets.UTF_8.displayName());
+// break;
+//
+// case 12:
+// api.attachedVerifyRSA(2, sign);
+// sr.setResponseCodeOK();
+// // sr.setResponseData(String.valueOf(attV2), StandardCharsets.UTF_8.displayName());
+// break;
+//
+// case 13:
+// api.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.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. 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.decryptDERSA(true, 1, RSAdn.getBytes(), sign);
+// // byte[] oDataRSA = (byte[]) denRSA.get("oData");
+// sr.setResponseCodeOK();
+// //sr.setResponseData(new String(oDataRSA), StandardCharsets.UTF_8.displayName());
+// 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 {
+// sr.sampleEnd();
+// }
+// return sr;
+// }
+//
+// /**
+// * 测试完成后执行,一般用于关闭资源
+// * @param context 上下文对象,可用于获取jmeter传递的参数
+// */
+// @Override
+// public void teardownTest(JavaSamplerContext context) {
+// System.runFinalization();
+// }
+//}
\ No newline at end of file
diff --git a/src/test/java/com/sunyard/sydapi/test/TestGSYH.java b/src/test/java/com/sunyard/sydapi/test/TestGSYH.java
index 4d6c319..4d6cbe6 100644
--- a/src/test/java/com/sunyard/sydapi/test/TestGSYH.java
+++ b/src/test/java/com/sunyard/sydapi/test/TestGSYH.java
@@ -1,297 +1,297 @@
-package com.sunyard.sydapi.test;
-
-import com.sunyard.RetWrap;
-import com.sunyard.SydApi;
-import com.sunyard.cert.X509;
-import com.sunyard.proto.Util;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import racal.sunyard.main.SydApi4j;
-
-import java.io.IOException;
-import java.util.Base64;
-
-import static com.sunyard.sydapi.util.PrintUtil.printRetWrap;
-
-/**
- * 甘肃银行数字货币
- */
-public class TestGSYH {
-
- SydApi4j api;
- // 对方加密证书sn
- String sn = "1004282452";
- // 自己签名证书sn
- String sn1 = "1004282451";
-
- @Before
- public void before() {
- // 通过设置debug的属性开启debug,如果不设置则默认不打开
- System.setProperty("com.sunyard.sydapi4j.debug", "true");
- api = (SydApi4j) new SydApi4j().connect("61.164.40.82", 8889, null, 1000);
-
- }
-
- @After
- public void after() {
- try {
- this.api.disconnect();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- @Test
- public void test02() {
- Base64.Encoder encoder = Base64.getEncoder();
- Base64.Decoder decoder = Base64.getDecoder();
-
- // 2.
- String data = "1111111111111111";
- // 随机生成对称密钥,由指定的公钥加密生成数字信封
- RetWrap retWrap = api.generateDEbyGS(sn, SydApi.ALG_SM4);
- String sessionKey = (String) retWrap.get(SydApi.RET_SESSION_KEY);
-
- // sm4加密账号等数据
- byte[] dataEnc = api.SYMEncryptData(SydApi.NALG_SM4, sessionKey, data.getBytes());
- // base64转码
- byte[] dataEncBs64 = encoder.encode(dataEnc);
-
- System.out.println("dataEncBs64: " + Util.bytes2HexString(dataEncBs64));
-
- // 将sm2加密后的数据进行base64转码
- String cipherKey = (String) retWrap.get(SydApi.RET_CIPHER_KEY);
- byte[] cipherKeyBs64 = encoder.encode(cipherKey.getBytes());
-
- // 3.
- // 报文正文
- String msg = "12313146464564";
- // 对报文正文签名(内部会计算hash)
- String msgSign = api.netGSSign(sn1, msg.getBytes());
- // base64转码
- byte[] msgSignBs64 = encoder.encode(msgSign.getBytes());
-
-
- // -------------下面为城银清算步骤-----------------
- // 7.
- // base64解码
- byte[] msgSignB = decoder.decode(msgSignBs64);
- // 对报文验签
- boolean b = api.netGSVerify(sn1, msg.getBytes(), new String(msgSignB));
- System.out.println("验签结果: " + b);
-
- // 8.
- byte[] cipherKeyB = decoder.decode(cipherKeyBs64);
- // 解密数字信封获取对称密钥
- RetWrap retWrap1 = api.decryptDE(sn, new String(cipherKeyB));
- sessionKey = (String) retWrap1.get(SydApi.RET_SESSION_KEY);
-
- // 9.
- // 使用对称密钥解密报文
- dataEnc = decoder.decode(dataEncBs64);
- byte[] bytes1 = api.SYMDecryptData(SydApi.NALG_SM4, sessionKey, dataEnc);
- System.out.println("data: " + new String(bytes1));
- }
-
- // 测试通过
- // 8017
- @Test
- public void testGetX509CertFileBySN() {
- String sn2 = "3C93000000000025";
-
- /**
- * 通过证书序号 sn 获取的 X509 证书文件。
- * @param sn sn,证书序号
- * @param nCertType 证书类型,0:签名证书, 1:加密证书
- * @return base64 编码的证书
- */
- String s = api.GetX509CertFileBySN(sn2, SydApi.FOR_SIGN);
- System.out.println(s);
-
- /**
- * 输入 X509 格式的证书,获取证书信息。
- * @param pCert base64 编码的证书
- * @return 证书信息类
- * 证书信息类,包含:颁发者DN、 证书序列号、 证书主题、证书有效期的起始时间、证书有效期的终止时间、DER编码的公钥。
- */
- X509 x509 = api.GetX509CertInfo(s);
- System.out.println("证书主题DN: " + x509.getSubject());
- }
-
-
- @Test
- public void testimportCertAddHT() {
- String cert1 = "MIIB4TCCAYSgAwIBAgIIPJMAAAAAACswDAYIKoEcz1UBg3UFADAmMQswCQYDVQQGEwJDTjEXMBUGA1UEAwwOU3VueWFyZFNNMlJvb3QwHhcNMTcxMTE3MDIzMDUxWhcNMjMwMTI1MDIzMDUxWjBZMQswCQYDVQQGEwJDTjELMAkGA1UECAwCWkoxCzAJBgNVBAcMAkhaMQ4wDAYDVQQKDAVISkpZUzERMA8GA1UECwwIMDAwMDAwMDAxDTALBgNVBAMMBDIyMjIwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAATxqegqlmc/lduzBaKREyeNuPf78RA3wfJuhAv8zymLwQ6doefs1Iul+kMOukhfwY9aEhVdqws34FZMm2vs1+wXo2cwZTAOBgNVHQ8BAf8EBAMCAMAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAU93/arv8hxtk6eq2g+6z+AqVO1cEwHQYDVR0OBBYEFHfjFl72707A6s+YVuGvEuyvFWTMMAwGCCqBHM9VAYN1BQADSQAwRgIhALzg7+QW7RU4phv+4arEv0IOeaA6dtR8VT4Bwin9oHTWAiEA9kLESGiYm8L5Htf7GBXgH+pk7BJ68clml41B/ejZglI=";
-
- String jgh = "00000000";
-
- /**
- * 上传指定证书到加密设备,并在证书前后加上begin和end
- * @param certData 证书的字节数组
- * @param organizationId 机构号的字节数组
- * @return
- */
- RetWrap retWrap = api.importCertAddHT(cert1, jgh.getBytes());
- System.out.println(retWrap);
- }
-
- // 8012
- @Test
- public void testSYD_Get_X509_CertInfo_HA1() {
-
- String orgData = "\n" +
- "\n" +
- " \n" +
- " \n" +
- " 20211230001190300000000032001000\n" +
- " 2021-12-30T09:27:49\n" +
- " \n" +
- " G4000131000016\n" +
- " \n" +
- " \n" +
- " C1175662000017\n" +
- " \n" +
- " \n" +
- " \n" +
- " CC00\n" +
- " CS01\n" +
- " \n" +
- " \n" +
- "";
-
- String sign = "MIID3QYKKoEcz1UGAQQCAqCCA80wggPJAgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoqgRzPVQYBBAIBoIICxDCCAsAwggJjoAMCAQICEBAAAAAAAAAAAAAAEEJYBCMwDAYIKoEcz1UBg3UFADBcMQswCQYDVQQGEwJDTjEwMC4GA1" +
- "UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRswGQYDVQQDDBJDRkNBIFRFU1QgU00yIE9DQTEwHhcNMjEwMTExMDk1MjI1WhcNMjIwMTExMDk1MjI1WjB2MQswCQYDVQQGEwJjbjEVMBMGA1UECgwMQ0ZDQSBURVNUIENBMQ8wDQYDVQQLDAZDQ0ZDQ0IxF" +
- "DASBgNVBAsMC0VudGVycHJpc2VzMSkwJwYDVQQDDCAwNDFAODkwNDI5MDA5OTk5RkRAQ0JDQ0AwMDAwMDAwMTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABExU5zuJ3pVl49mS3rTBwUcPuiI/zDR/w117PkpCgJ7m0kGyyorj1h2bxM62PthpNy99KPnk9gEvS696ZE5s8LGjgeowgecw" +
- "HwYDVR0jBBgwFoAUa/4Y2o9COqa4bbMuiIM6NKLBMOEwSAYDVR0gBEEwPzA9BghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2EuY29tLmNuL3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vdWNybC5jZmNhLmNvbS5jbi9TTTIvY3JsMTY4NzY" +
- "uY3JsMAsGA1UdDwQEAwID6DAdBgNVHQ4EFgQUypxjmN7VBcoruhBRWmmFNv9yG1IwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDAYIKoEcz1UBg3UFAANJADBGAiEA1IQTRQf5aaDJzzVxWLRml1ZSqQd9FPFeKZJnbzGQIQMCIQD/gY5+H1nytcVAx8hGtUPssklmI+9+vTdOF5LaKMR+jzGB3T" +
- "CB2gIBATBwMFwxCzAJBgNVBAYTAkNOMTAwLgYDVQQKDCdDaGluYSBGaW5hbmNpYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGzAZBgNVBAMMEkNGQ0EgVEVTVCBTTTIgT0NBMQIQEAAAAAAAAAAAAAAQQlgEIzAMBggqgRzPVQGDEQUAMA0GCSqBHM9VAYItAQUABEYwRAIgXmjY/FIR8" +
- "qudmZGsIQUivZDt3/73dGojVjj5L76OcJICIAHu0G242uYPY2B8zMkGw7kQ1C1xgRipEmlC1GWwMCz0";
-
- /**
- * 验签并从签名中获取证书并上载到加密机
- * @param orgData 待签名的原始数据
- * @param sign 签名数据
- * @return 证书信息(包含公钥字段)
- */
- X509 x509 = api.SYD_Get_X509_CertInfo_HA(orgData.getBytes(), sign);
- System.out.println("证书公钥: " + Util.bytes2HexString(x509.getPubKey()));
- }
-
-
- // 测试通过
- // 78
- @Test
- public void testSM2DecryptC() {
- String certId = "1111111111111151";
- String publicKey = "034200048043AF118B45629857DB693105849B2617FED249D59DFD29BE9A891ADEE7441A2D8C62020953DAEF038184E0244310CF2123C507F26F5380FFECC8D53E79B24E";
-
- String orgData = "FFFFFFFFFFFFFFFF";
- String s = api.SM2Encrypt(Util.hexString2Bytes(publicKey), orgData.getBytes());
-
- System.out.println("加密后的数据: " + s);
- System.out.println("加密后的数据解base64: " + Util.bytes2HexString(Base64.getDecoder().decode(s)));
-
- byte[] bytes = api.SM2DecryptC(certId, s);
-
- System.out.println("decData:" + new String(bytes));
- }
-
- // 测试通过
- // 78
- @Test
- public void testSM2DecryptOrder2() {
- String userId = "8015";
- String orgData = "FfffffffffffffFfffffffffffffffff";
-
- // 通过用户id获取公钥
- String publicKey = api.SM2GetPublicKeyC(userId, SydApi.FOR_SIGN);
-
- /**
- * 用指定的 SM2 公钥对指定的密文数据进行加密。
- * 输出的sm2密文结构为C1C2C3格式
- * @param publicKey 公钥钥串,DER 编码,HEX 格式。
- * @param pOrgData 加密的数据。
- * @return 加密的数据 base64 编码。
- */
- String s = api.SM2EncryptOrder(Util.hexString2Bytes(publicKey), orgData.getBytes());
-
- System.out.println("加密后的数据: " + s);
-
- /**
- * 通过使用者 ID 所对应的私钥对指定的密文数据进行解密。
- * 输入的sm2密文结构为C1C2C3格式
- * @param userId 使用者的 ID,最大长度为 16 位数字,右对齐。
- * @param enData 加密的数据,base64 编码。
- * @param keyType 密钥类型,0:签名证书, 1:加密证书。
- * @return 明文数据。
- */
- byte[] bytes = api.SM2DecryptOrder(userId, s, SydApi.FOR_SIGN);
-
- System.out.println("decData:" + new String(bytes));
- }
-
- @Test
- public void testDecryptDE4() {
- String sn = "1004282452";
- String orgCode = "00001111222233";
-
- /**
- * 产生对称密钥,通过公钥加密生成网联格式的数字信封。
- *
- * @param certSerial 对*方 X509 证书的序列号。
- * @param orgCode 机构码
- * @return RetWrap 包含 CipherKey, SessionKey, KCV
- * CipherKey 公钥加密的会话密钥 ,BASE64 编码
- * SessionKey 本地LMK 加密的会话密钥,HEX 格式, 本地 LMK 加密的会话密钥长度,HEX 格式(不包括第 1 个字符),一般为 33 个 Bytes。默认输入值为缓冲区的大小。
- * KCV 会话密钥的检验值,HEX 格式,长度为 32H。
- */
- RetWrap retWrap = api.generateDEbyGS(sn, orgCode);
- String CipherKey = (String) retWrap.get(SydApi.RET_CIPHER_KEY);
- String sessionKey = (String) retWrap.get(SydApi.RET_SESSION_KEY);
- String kcv = (String) retWrap.get(SydApi.RET_KCV);
- printRetWrap(retWrap);
-
- /**
- * 接收用私钥解密数字信封,还原对称密钥。
- *
- * @param pCertSerial 输入。 对方 X509 证书的序列号。
- * @param pCipherKey 输入。 公钥加密的会话密钥,BASE64 编码
- * @return RetWrap 包含 SessionKey KCV
- * SessionKey 输出。 本地LMK 加密的会话密钥,格式为:密钥类型|密钥密文,比如:02|密钥密文
- * KCV 会话密钥的检验值,HEX 格式,长度为 36H。
- * orgCode 如果有机构码的话会返回机构码
- */
- RetWrap retWrap1 = api.decryptDE(sn, CipherKey);
- printRetWrap(retWrap1);
- }
-
-
- // =========================工具方法=====================
-
- public static void printRetWrap(RetWrap rw) {
- printRetWrap(rw, false);
- }
-
- /**
- * 输出
- * @param rw
- */
- public static void printRetWrap(RetWrap rw, boolean flag) {
- for (String s : rw.keySet()) {
-
- Object o = rw.get(s);
- if (o instanceof String) {
- System.out.println(s + ":" + o);
- } else if (o instanceof byte[]) {
- if (flag) {
- System.out.println(s + ": " + Util.bytes2HexString((byte[]) o));
- } else {
- System.out.println(s + ": " + new String((byte[]) o));
- }
- } else {
- System.out.println(s + ":" + o);
- }
- }
- }
-}
+//package com.sunyard.sydapi.test;
+//
+//import com.sunyard.RetWrap;
+//import com.sunyard.SydApi;
+//import com.sunyard.cert.X509;
+//import com.sunyard.proto.Util;
+//import org.junit.After;
+//import org.junit.Before;
+//import org.junit.Test;
+//import racal.sunyard.main.SydApi4j;
+//
+//import java.io.IOException;
+//import java.util.Base64;
+//
+//import static com.sunyard.sydapi.util.PrintUtil.printRetWrap;
+//
+///**
+// * 甘肃银行数字货币
+// */
+//public class TestGSYH {
+//
+// SydApi4j api;
+// // 对方加密证书sn
+// String sn = "1004282452";
+// // 自己签名证书sn
+// String sn1 = "1004282451";
+//
+// @Before
+// public void before() {
+// // 通过设置debug的属性开启debug,如果不设置则默认不打开
+// System.setProperty("com.sunyard.sydapi4j.debug", "true");
+// api = (SydApi4j) new SydApi4j().connect("61.164.40.82", 8889, null, 1000);
+//
+// }
+//
+// @After
+// public void after() {
+// try {
+// this.api.disconnect();
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// }
+//
+// @Test
+// public void test02() {
+// Base64.Encoder encoder = Base64.getEncoder();
+// Base64.Decoder decoder = Base64.getDecoder();
+//
+// // 2.
+// String data = "1111111111111111";
+// // 随机生成对称密钥,由指定的公钥加密生成数字信封
+// RetWrap retWrap = api.generateDEbyGS(sn, SydApi.ALG_SM4);
+// String sessionKey = (String) retWrap.get(SydApi.RET_SESSION_KEY);
+//
+// // sm4加密账号等数据
+// byte[] dataEnc = api.SYMEncryptData(SydApi.NALG_SM4, sessionKey, data.getBytes());
+// // base64转码
+// byte[] dataEncBs64 = encoder.encode(dataEnc);
+//
+// System.out.println("dataEncBs64: " + Util.bytes2HexString(dataEncBs64));
+//
+// // 将sm2加密后的数据进行base64转码
+// String cipherKey = (String) retWrap.get(SydApi.RET_CIPHER_KEY);
+// byte[] cipherKeyBs64 = encoder.encode(cipherKey.getBytes());
+//
+// // 3.
+// // 报文正文
+// String msg = "12313146464564";
+// // 对报文正文签名(内部会计算hash)
+// String msgSign = api.netGSSign(sn1, msg.getBytes());
+// // base64转码
+// byte[] msgSignBs64 = encoder.encode(msgSign.getBytes());
+//
+//
+// // -------------下面为城银清算步骤-----------------
+// // 7.
+// // base64解码
+// byte[] msgSignB = decoder.decode(msgSignBs64);
+// // 对报文验签
+// boolean b = api.netGSVerify(sn1, msg.getBytes(), new String(msgSignB));
+// System.out.println("验签结果: " + b);
+//
+// // 8.
+// byte[] cipherKeyB = decoder.decode(cipherKeyBs64);
+// // 解密数字信封获取对称密钥
+// RetWrap retWrap1 = api.decryptDE(sn, new String(cipherKeyB));
+// sessionKey = (String) retWrap1.get(SydApi.RET_SESSION_KEY);
+//
+// // 9.
+// // 使用对称密钥解密报文
+// dataEnc = decoder.decode(dataEncBs64);
+// byte[] bytes1 = api.SYMDecryptData(SydApi.NALG_SM4, sessionKey, dataEnc);
+// System.out.println("data: " + new String(bytes1));
+// }
+//
+// // 测试通过
+// // 8017
+// @Test
+// public void testGetX509CertFileBySN() {
+// String sn2 = "3C93000000000025";
+//
+// /**
+// * 通过证书序号 sn 获取的 X509 证书文件。
+// * @param sn sn,证书序号
+// * @param nCertType 证书类型,0:签名证书, 1:加密证书
+// * @return base64 编码的证书
+// */
+// String s = api.GetX509CertFileBySN(sn2, SydApi.FOR_SIGN);
+// System.out.println(s);
+//
+// /**
+// * 输入 X509 格式的证书,获取证书信息。
+// * @param pCert base64 编码的证书
+// * @return 证书信息类
+// * 证书信息类,包含:颁发者DN、 证书序列号、 证书主题、证书有效期的起始时间、证书有效期的终止时间、DER编码的公钥。
+// */
+// X509 x509 = api.GetX509CertInfo(s);
+// System.out.println("证书主题DN: " + x509.getSubject());
+// }
+//
+//
+// @Test
+// public void testimportCertAddHT() {
+// String cert1 = "MIIB4TCCAYSgAwIBAgIIPJMAAAAAACswDAYIKoEcz1UBg3UFADAmMQswCQYDVQQGEwJDTjEXMBUGA1UEAwwOU3VueWFyZFNNMlJvb3QwHhcNMTcxMTE3MDIzMDUxWhcNMjMwMTI1MDIzMDUxWjBZMQswCQYDVQQGEwJDTjELMAkGA1UECAwCWkoxCzAJBgNVBAcMAkhaMQ4wDAYDVQQKDAVISkpZUzERMA8GA1UECwwIMDAwMDAwMDAxDTALBgNVBAMMBDIyMjIwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAATxqegqlmc/lduzBaKREyeNuPf78RA3wfJuhAv8zymLwQ6doefs1Iul+kMOukhfwY9aEhVdqws34FZMm2vs1+wXo2cwZTAOBgNVHQ8BAf8EBAMCAMAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAU93/arv8hxtk6eq2g+6z+AqVO1cEwHQYDVR0OBBYEFHfjFl72707A6s+YVuGvEuyvFWTMMAwGCCqBHM9VAYN1BQADSQAwRgIhALzg7+QW7RU4phv+4arEv0IOeaA6dtR8VT4Bwin9oHTWAiEA9kLESGiYm8L5Htf7GBXgH+pk7BJ68clml41B/ejZglI=";
+//
+// String jgh = "00000000";
+//
+// /**
+// * 上传指定证书到加密设备,并在证书前后加上begin和end
+// * @param certData 证书的字节数组
+// * @param organizationId 机构号的字节数组
+// * @return
+// */
+// RetWrap retWrap = api.importCertAddHT(cert1, jgh.getBytes());
+// System.out.println(retWrap);
+// }
+//
+// // 8012
+// @Test
+// public void testSYD_Get_X509_CertInfo_HA1() {
+//
+// String orgData = "\n" +
+// "\n" +
+// " \n" +
+// " \n" +
+// " 20211230001190300000000032001000\n" +
+// " 2021-12-30T09:27:49\n" +
+// " \n" +
+// " G4000131000016\n" +
+// " \n" +
+// " \n" +
+// " C1175662000017\n" +
+// " \n" +
+// " \n" +
+// " \n" +
+// " CC00\n" +
+// " CS01\n" +
+// " \n" +
+// " \n" +
+// "";
+//
+// String sign = "MIID3QYKKoEcz1UGAQQCAqCCA80wggPJAgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoqgRzPVQYBBAIBoIICxDCCAsAwggJjoAMCAQICEBAAAAAAAAAAAAAAEEJYBCMwDAYIKoEcz1UBg3UFADBcMQswCQYDVQQGEwJDTjEwMC4GA1" +
+// "UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRswGQYDVQQDDBJDRkNBIFRFU1QgU00yIE9DQTEwHhcNMjEwMTExMDk1MjI1WhcNMjIwMTExMDk1MjI1WjB2MQswCQYDVQQGEwJjbjEVMBMGA1UECgwMQ0ZDQSBURVNUIENBMQ8wDQYDVQQLDAZDQ0ZDQ0IxF" +
+// "DASBgNVBAsMC0VudGVycHJpc2VzMSkwJwYDVQQDDCAwNDFAODkwNDI5MDA5OTk5RkRAQ0JDQ0AwMDAwMDAwMTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABExU5zuJ3pVl49mS3rTBwUcPuiI/zDR/w117PkpCgJ7m0kGyyorj1h2bxM62PthpNy99KPnk9gEvS696ZE5s8LGjgeowgecw" +
+// "HwYDVR0jBBgwFoAUa/4Y2o9COqa4bbMuiIM6NKLBMOEwSAYDVR0gBEEwPzA9BghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2EuY29tLmNuL3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vdWNybC5jZmNhLmNvbS5jbi9TTTIvY3JsMTY4NzY" +
+// "uY3JsMAsGA1UdDwQEAwID6DAdBgNVHQ4EFgQUypxjmN7VBcoruhBRWmmFNv9yG1IwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDAYIKoEcz1UBg3UFAANJADBGAiEA1IQTRQf5aaDJzzVxWLRml1ZSqQd9FPFeKZJnbzGQIQMCIQD/gY5+H1nytcVAx8hGtUPssklmI+9+vTdOF5LaKMR+jzGB3T" +
+// "CB2gIBATBwMFwxCzAJBgNVBAYTAkNOMTAwLgYDVQQKDCdDaGluYSBGaW5hbmNpYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGzAZBgNVBAMMEkNGQ0EgVEVTVCBTTTIgT0NBMQIQEAAAAAAAAAAAAAAQQlgEIzAMBggqgRzPVQGDEQUAMA0GCSqBHM9VAYItAQUABEYwRAIgXmjY/FIR8" +
+// "qudmZGsIQUivZDt3/73dGojVjj5L76OcJICIAHu0G242uYPY2B8zMkGw7kQ1C1xgRipEmlC1GWwMCz0";
+//
+// /**
+// * 验签并从签名中获取证书并上载到加密机
+// * @param orgData 待签名的原始数据
+// * @param sign 签名数据
+// * @return 证书信息(包含公钥字段)
+// */
+// X509 x509 = api.SYD_Get_X509_CertInfo_HA(orgData.getBytes(), sign);
+// System.out.println("证书公钥: " + Util.bytes2HexString(x509.getPubKey()));
+// }
+//
+//
+// // 测试通过
+// // 78
+// @Test
+// public void testSM2DecryptC() {
+// String certId = "1111111111111151";
+// String publicKey = "034200048043AF118B45629857DB693105849B2617FED249D59DFD29BE9A891ADEE7441A2D8C62020953DAEF038184E0244310CF2123C507F26F5380FFECC8D53E79B24E";
+//
+// String orgData = "FFFFFFFFFFFFFFFF";
+// String s = api.SM2Encrypt(Util.hexString2Bytes(publicKey), orgData.getBytes());
+//
+// System.out.println("加密后的数据: " + s);
+// System.out.println("加密后的数据解base64: " + Util.bytes2HexString(Base64.getDecoder().decode(s)));
+//
+// byte[] bytes = api.SM2DecryptC(certId, s);
+//
+// System.out.println("decData:" + new String(bytes));
+// }
+//
+// // 测试通过
+// // 78
+// @Test
+// public void testSM2DecryptOrder2() {
+// String userId = "8015";
+// String orgData = "FfffffffffffffFfffffffffffffffff";
+//
+// // 通过用户id获取公钥
+// String publicKey = api.SM2GetPublicKeyC(userId, SydApi.FOR_SIGN);
+//
+// /**
+// * 用指定的 SM2 公钥对指定的密文数据进行加密。
+// * 输出的sm2密文结构为C1C2C3格式
+// * @param publicKey 公钥钥串,DER 编码,HEX 格式。
+// * @param pOrgData 加密的数据。
+// * @return 加密的数据 base64 编码。
+// */
+// String s = api.SM2EncryptOrder(Util.hexString2Bytes(publicKey), orgData.getBytes());
+//
+// System.out.println("加密后的数据: " + s);
+//
+// /**
+// * 通过使用者 ID 所对应的私钥对指定的密文数据进行解密。
+// * 输入的sm2密文结构为C1C2C3格式
+// * @param userId 使用者的 ID,最大长度为 16 位数字,右对齐。
+// * @param enData 加密的数据,base64 编码。
+// * @param keyType 密钥类型,0:签名证书, 1:加密证书。
+// * @return 明文数据。
+// */
+// byte[] bytes = api.SM2DecryptOrder(userId, s, SydApi.FOR_SIGN);
+//
+// System.out.println("decData:" + new String(bytes));
+// }
+//
+// @Test
+// public void testDecryptDE4() {
+// String sn = "1004282452";
+// String orgCode = "00001111222233";
+//
+// /**
+// * 产生对称密钥,通过公钥加密生成网联格式的数字信封。
+// *
+// * @param certSerial 对*方 X509 证书的序列号。
+// * @param orgCode 机构码
+// * @return RetWrap 包含 CipherKey, SessionKey, KCV
+// * CipherKey 公钥加密的会话密钥 ,BASE64 编码
+// * SessionKey 本地LMK 加密的会话密钥,HEX 格式, 本地 LMK 加密的会话密钥长度,HEX 格式(不包括第 1 个字符),一般为 33 个 Bytes。默认输入值为缓冲区的大小。
+// * KCV 会话密钥的检验值,HEX 格式,长度为 32H。
+// */
+// RetWrap retWrap = api.generateDEbyGS(sn, orgCode);
+// String CipherKey = (String) retWrap.get(SydApi.RET_CIPHER_KEY);
+// String sessionKey = (String) retWrap.get(SydApi.RET_SESSION_KEY);
+// String kcv = (String) retWrap.get(SydApi.RET_KCV);
+// printRetWrap(retWrap);
+//
+// /**
+// * 接收用私钥解密数字信封,还原对称密钥。
+// *
+// * @param pCertSerial 输入。 对方 X509 证书的序列号。
+// * @param pCipherKey 输入。 公钥加密的会话密钥,BASE64 编码
+// * @return RetWrap 包含 SessionKey KCV
+// * SessionKey 输出。 本地LMK 加密的会话密钥,格式为:密钥类型|密钥密文,比如:02|密钥密文
+// * KCV 会话密钥的检验值,HEX 格式,长度为 36H。
+// * orgCode 如果有机构码的话会返回机构码
+// */
+// RetWrap retWrap1 = api.decryptDE(sn, CipherKey);
+// printRetWrap(retWrap1);
+// }
+//
+//
+// // =========================工具方法=====================
+//
+// public static void printRetWrap(RetWrap rw) {
+// printRetWrap(rw, false);
+// }
+//
+// /**
+// * 输出
+// * @param rw
+// */
+// public static void printRetWrap(RetWrap rw, boolean flag) {
+// for (String s : rw.keySet()) {
+//
+// Object o = rw.get(s);
+// if (o instanceof String) {
+// System.out.println(s + ":" + o);
+// } else if (o instanceof byte[]) {
+// if (flag) {
+// System.out.println(s + ": " + Util.bytes2HexString((byte[]) o));
+// } else {
+// System.out.println(s + ": " + new String((byte[]) o));
+// }
+// } else {
+// System.out.println(s + ":" + o);
+// }
+// }
+// }
+//}
diff --git a/src/test/java/com/sunyard/sydapi/test/TestUtil.java b/src/test/java/com/sunyard/sydapi/test/TestUtil.java
index 5a311bd..fad7df9 100644
--- a/src/test/java/com/sunyard/sydapi/test/TestUtil.java
+++ b/src/test/java/com/sunyard/sydapi/test/TestUtil.java
@@ -1,113 +1,113 @@
-package com.sunyard.sydapi.test;
-
-import com.sunyard.trans.PacketSN;
-import org.junit.Test;
-import racal.sunyard.main.SydApi4j;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.text.SimpleDateFormat;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-
-public class TestUtil {
- public static void main(String[] args) throws Exception {
- /* PacketSN sn = PacketSN.gen();
- HashMap packet = new HashMap();
- packet.put("header", sn.getSn().array());
- HashMap data = new HashMap();
- data.put("alg$option", 0);
- data.put("certificateModel$option", 0);
- data.put("certificateSn", "113123");
- data.put("keyType", "X");
- packet.put("data", data);
- SectionWrap s=new SectionWrap();
- HashMap sc = new HashMap();
- SectionValue s2=new SectionValue();
- s2.setValue("L".getBytes());
- sc.put("data",s2);
- s.setSections(sc);*/
-// HashMap packet = new HashMap();
-// HashMap data = new HashMap();
-// packet.put("data", data);
-// PacketSN sn = PacketSN.gen();
-// packet.put("header", sn.getSn().array());
-// data.put("algorithmId$option", 0x1);
-// data.put("keyLength", 256);
+//package com.sunyard.sydapi.test;
//
-// try {
-// byte[] a=(byte[]) Util.eval("ResE2","getKeyLen",packet,null,null);
-// System.out.println(a[0]);
-// } catch (Exception e) {
-// e.printStackTrace();
+//import com.sunyard.trans.PacketSN;
+//import org.junit.Test;
+//import racal.sunyard.main.SydApi4j;
+//
+//import java.lang.reflect.Method;
+//import java.lang.reflect.ParameterizedType;
+//import java.lang.reflect.Type;
+//import java.text.SimpleDateFormat;
+//import java.util.Arrays;
+//import java.util.Calendar;
+//import java.util.Date;
+//import java.util.HashMap;
+//
+//public class TestUtil {
+// public static void main(String[] args) throws Exception {
+// /* PacketSN sn = PacketSN.gen();
+// HashMap packet = new HashMap();
+// packet.put("header", sn.getSn().array());
+// HashMap data = new HashMap();
+// data.put("alg$option", 0);
+// data.put("certificateModel$option", 0);
+// data.put("certificateSn", "113123");
+// data.put("keyType", "X");
+// packet.put("data", data);
+// SectionWrap s=new SectionWrap();
+// HashMap sc = new HashMap();
+// SectionValue s2=new SectionValue();
+// s2.setValue("L".getBytes());
+// sc.put("data",s2);
+// s.setSections(sc);*/
+//// HashMap packet = new HashMap();
+//// HashMap data = new HashMap();
+//// packet.put("data", data);
+//// PacketSN sn = PacketSN.gen();
+//// packet.put("header", sn.getSn().array());
+//// data.put("algorithmId$option", 0x1);
+//// data.put("keyLength", 256);
+////
+//// try {
+//// byte[] a=(byte[]) Util.eval("ResE2","getKeyLen",packet,null,null);
+//// System.out.println(a[0]);
+//// } catch (Exception e) {
+//// e.printStackTrace();
+//// }
+//
+//
+//
+// }
+//
+// /**
+// * 获取所有方法
+// */
+// @Test
+// public void getMethod() {
+// Class jClass = SydApi4j.class;
+//
+// Method[] dm = jClass.getDeclaredMethods();
+//
+// System.out.println(dm.length);
+//
+// for (int i = 0; i < dm.length; i++) {
+// Type[] types = dm[i].getGenericParameterTypes();
+// System.out.print(dm[i].getName() + "(");
+// for (int j = 0; j < types.length; j++) {
+// Type type = types[j];
+//
+// System.out.print(getRealTypeName(type));
+// if (j != types.length - 1) {
+// System.out.print(", ");
+// }
+// }
+// System.out.println(")");
// }
-
-
-
- }
-
- /**
- * 获取所有方法
- */
- @Test
- public void getMethod() {
- Class jClass = SydApi4j.class;
-
- Method[] dm = jClass.getDeclaredMethods();
-
- System.out.println(dm.length);
-
- for (int i = 0; i < dm.length; i++) {
- Type[] types = dm[i].getGenericParameterTypes();
- System.out.print(dm[i].getName() + "(");
- for (int j = 0; j < types.length; j++) {
- Type type = types[j];
-
- System.out.print(getRealTypeName(type));
- if (j != types.length - 1) {
- System.out.print(", ");
- }
- }
- System.out.println(")");
- }
- }
-
- public String getRealTypeName(Type type) {
-
- String resultName = "";
- if (type instanceof ParameterizedType) {
-
- resultName = getRealName(type.getTypeName()) + "<";
-
- Type[] actualTypes = ((ParameterizedType) type).getActualTypeArguments();
-
- for (int z = 0; z < actualTypes.length; z++) {
- resultName += getRealName(actualTypes[z].getTypeName());
- if (z != actualTypes.length - 1) {
- resultName += ", ";
- }
- }
- resultName += ">";
- } else {
- resultName = getRealName(type.getTypeName());
- }
-
- return resultName.replace("$", ".");
- }
-
- public String getRealName(String typeName) {
- if (typeName.contains(".") && typeName.contains("<")) {
- typeName = typeName.substring(0, typeName.indexOf("<"));
- return typeName.substring(typeName.lastIndexOf(".") + 1);
- }
-
- if (typeName.contains(".")) {
- return typeName.substring(typeName.lastIndexOf(".") + 1);
- }
-
- return typeName;
- }
-}
+// }
+//
+// public String getRealTypeName(Type type) {
+//
+// String resultName = "";
+// if (type instanceof ParameterizedType) {
+//
+// resultName = getRealName(type.getTypeName()) + "<";
+//
+// Type[] actualTypes = ((ParameterizedType) type).getActualTypeArguments();
+//
+// for (int z = 0; z < actualTypes.length; z++) {
+// resultName += getRealName(actualTypes[z].getTypeName());
+// if (z != actualTypes.length - 1) {
+// resultName += ", ";
+// }
+// }
+// resultName += ">";
+// } else {
+// resultName = getRealName(type.getTypeName());
+// }
+//
+// return resultName.replace("$", ".");
+// }
+//
+// public String getRealName(String typeName) {
+// if (typeName.contains(".") && typeName.contains("<")) {
+// typeName = typeName.substring(0, typeName.indexOf("<"));
+// return typeName.substring(typeName.lastIndexOf(".") + 1);
+// }
+//
+// if (typeName.contains(".")) {
+// return typeName.substring(typeName.lastIndexOf(".") + 1);
+// }
+//
+// return typeName;
+// }
+//}
diff --git a/src/test/java/sample/Sample4HY.java b/src/test/java/sample/Sample4HY.java
index 1d19e7b..0947e9e 100644
--- a/src/test/java/sample/Sample4HY.java
+++ b/src/test/java/sample/Sample4HY.java
@@ -13,18 +13,18 @@ import java.util.regex.Pattern;
public class Sample4HY {
private static final String SM2dn = "C=cn,O=CFCA TEST OCA1,OU=Local RA,OU=Organizational-1,CN=041@Z8000000001938231GX0@8000000001938231GX0@00000001";
- private static final String SM2dn2 = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1" ;
+ private static final String SM2dn2 = "C=CN,O=Sunyard,OU=8001,CN=8001" ;
- private static final byte[] orgData = new byte[ 1*1024];
+ private static final byte[] orgData = new byte[ 10*1024];
public static void main(String[] args) {
//调试模式(控制台会打印发送报文)
- System.setProperty("com.sunyard.sydapi4j.debug", "true");
+ //System.setProperty("com.sunyard.sydapi4j.debug", "true");
//证书是否反序校验
//System.setProperty("com.sunyard.dnsort", "false");
//主备模式连接
- SydApi4j.SYD_Set_Parameter_HA("172.16.17.1", "172.16.17.16", 8889, 1000);
+ SydApi4j.SYD_Set_Parameter_HA("172.16.17.47", "172.16.17.16", 8889, 1000);
SydApi4j api = (SydApi4j) new SydApi4j();
//设置连接
// SydApiBuilder builder = new SydApiBuilder().setIp("192.168.0.100");
@@ -33,11 +33,25 @@ public class Sample4HY {
// SM2裸签
byte[] nakedSign1 = api.SYD_NakedSign(orgData, SM2dn2);
- System.out.println("SM2数据裸签:"+ Util.encodeBase64(nakedSign1));
+ System.out.println("SM2数据裸签:"+ Util.bytes2HexString(nakedSign1));
- boolean nakedVerify1 = api.SYD_NakedVerify(orgData, nakedSign1, SM2dn2);
+ String sign= "30450221008E2342E7C1CECACC46BF7CB6777382FE6A1B19D89DF80428B87630EEC8D4D4CD02200CF82B240708765432ED74495DD73A0BF1E6DCDE6AE56C6CB4BEFA1A875E777E";
+
+ boolean nakedVerify1 = api.SYD_NakedVerify(orgData, Util.hexString2Bytes(sign), SM2dn2);
System.out.println("SM2数据验签:"+nakedVerify1 );
+ String s = api.detachedSign(1, orgData, SM2dn2);
+ System.out.println("原始数据小于4k签名:"+s);
+
+ //原始数据大于4k
+ byte[] hash = api.SM3Hash(orgData);//计算hash
+ String s2 = api.detachedSign(0, hash, SM2dn2);
+ System.out.println("原始数据大于4k签名:"+s2);
+
+ String aa = "MIIDLwYKKoEcz1UGAQQCAqCCAx8wggMbAgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoqgRzPVQYBBAIBoIICMTCCAi0wggHSoAMCAQICBgGKaA2T3TAMBggqgRzPVQGDdQUAMEsxCzAJBgNVBAYTAkNOMQ4wDAYDVQQKEwVHTVNTTDEQMA4GA1UECxMHUEtJL1NNMjEaMBgGA1UEAxMRTWlkZGxlQ0EgZm9yIFRlc3QwIhgPMjAyMzA5MDUxNjAwMDBaGA8yMDI0MDkwNTE2MDAwMFowXTELMAkGA1UEBgwCQ04xCzAJBgNVBAgMAnpqMQswCQYDVQQHDAJoejEQMA4GA1UECgwHc3VueWFyZDEQMA4GA1UECwwHU00yVGVzdDEQMA4GA1UEAwwHU00yVGVzdDBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABJLNr8XSXI2UFvhoW5vBZMJUAyjzBaPR+0klKxVxwwKodFdH3iNrRjNf7Zj6ye8rP8TqKzHu9+zc1Wm3/DBPeiGjgYkwgYYwGwYDVR0jBBQwEoAQ+X9VtCeUM2KmVspvzF0a/zAZBgNVHQ4EEgQQK7bhyJnGBrfCV6cWZnJQJDAxBggrBgEFBQcBAQQlMCMwIQYIKwYBBQUHMAGGFWh0dHBzOi8vb2NzcC5nbXNzbC5jbjAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIAwDAMBggqgRzPVQGDdQUAA0cAMEQCIAHfg+kXDY0hwKtcFh4QBrI+C+96RPc5HuT8ls9Ribd2AiB4jFCV7CSa3aBscynS5LHEM1UNX9BxwMs9gtHUkDjLlDGBwjCBvwIBATBVMEsxCzAJBgNVBAYTAkNOMQ4wDAYDVQQKEwVHTVNTTDEQMA4GA1UECxMHUEtJL1NNMjEaMBgGA1UEAxMRTWlkZGxlQ0EgZm9yIFRlc3QCBgGKaA2T3TAMBggqgRzPVQGDEQUAMA0GCSqBHM9VAYItAQUABEYwRAIgEeWxsmL+TZFsDJkNAtOt572P+V53WZoPN9ppDcleOSECIHSuoF0zEUV8EPHS3omE9mvUuVMoO4E6vIWuwGTGurN4";
+
+ System.out.println(Util.bytes2HexString(Util.decodeBase64(aa)));
+
// //数字信封
// RetWrap genSM2 = api.generateDEByDn( SM2dn2, orgData);
diff --git a/src/test/java/sample/Shangqing.java b/src/test/java/sample/Shangqing.java
index ac6a37d..15a93d6 100644
--- a/src/test/java/sample/Shangqing.java
+++ b/src/test/java/sample/Shangqing.java
@@ -16,17 +16,17 @@ public class Shangqing {
// 测试数据
private String uid = "8012";
private String dn = "C=CN,ST=ZJ,L=HZ,O=sunyard,OU=test1,CN=test1";
- private String SM2dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
+ private String SM2dn = "C=CN,ST=zj,L=hz,O=sunyard,OU=sm2Test,CN=sm2Test";
private String RSA ="C=cn,O=CFCA TEST CA,OU=NCS2,OU=Enterprises,CN=041@Z402451000010@ShanDong@00000001";
- private byte[] orgData = new byte[10*1024];
+ private byte[] orgData = new byte[8];
@Before
public void before() {
// 通过设置debug的属性开启debug,如果不设置则默认不打开
System.setProperty("com.sunyard.sydapi4j.debug", "true");
- api = (SydApi4j) new SydApi4j().connect("172.16.17.161", 8889, null, 1000);
+ api = (SydApi4j) new SydApi4j().connect("172.16.17.196", 8889, null, 1000);
}
@After
@@ -77,19 +77,19 @@ public class Shangqing {
@Test
public void dm(){
// // 生成数字信封
-// RetWrap retWrap = api.generateDEByDn(SM2dn, orgData );
-// byte[] cipherKey = (byte[]) retWrap.get(SydApi.RET_CIPHER_KEY);
-// System.out.println("数字信封: " + new String(cipherKey));
-//
-// // 解密数字信封
-// RetWrap retWrap1 = api.decryptDEByDN(SM2dn, cipherKey);
-// byte[] oData = (byte[]) retWrap1.get("oData");
+ RetWrap retWrap = api.generateDEByDn(SM2dn, orgData );
+ byte[] cipherKey = (byte[]) retWrap.get(SydApi.RET_CIPHER_KEY);
+ System.out.println("数字信封: " + new String(cipherKey));
+
+ // 解密数字信封
+ RetWrap retWrap1 = api.decryptDEByDN(SM2dn, cipherKey);
+ byte[] oData = (byte[]) retWrap1.get("oData");
//
//
// Assert.assertArrayEquals( oData, orgData );
- String s = api.GenRandom(8);
- System.out.println(s);
+// String s = api.GenRandom(8);
+// System.out.println(s);
}