保存周一豪电脑

This commit is contained in:
yihzhou
2023-08-02 14:00:36 +08:00
parent ad443356b3
commit 7a4f9892f5
13 changed files with 1453 additions and 388 deletions
+210
View File
@@ -0,0 +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();
}
}
@@ -172,5 +172,7 @@ public interface SydCertApi {
String getCertByDn(String dn) throws UnsupportedEncodingException;
String getCertByDn(String dn,int type) throws UnsupportedEncodingException;
public String getCertByDn(byte[] dnBytes);
}
+2 -2
View File
@@ -240,7 +240,7 @@ public interface SydGenApi {
*/
RetWrap generateDEByDn(String certSerial, byte[] oData);
RetWrap generateDEByDn(int alg,String certSerial, byte[] oData);
RetWrap generateDEByDnRSA(int alg,String certSerial, byte[] oData);
/**
* 产生对称密钥,通过公钥加密生成网联格式的数字信封。
@@ -323,7 +323,7 @@ public interface SydGenApi {
* orgCode 如果有机构码的话会返回机构码
*/
RetWrap decryptDEByDN(String certSerial, byte[] pCipherKey);
RetWrap decryptDEByDN(int alg,String certSerial, byte[] pCipherKey);
RetWrap decryptDEByDNRSA(int alg,String certSerial, byte[] pCipherKey);
/**
* 接收用私钥解密数字信封,还原对称密钥。
*
@@ -154,7 +154,7 @@ public interface SydAttachedSVApi {
* @return
* 符合PKCS7标准的签名结果
*/
String attachedSign(int rFlag,byte[] orgData, String sCertDN) throws UnsupportedEncodingException;
String attachedSignRSA(int rFlag,byte[] orgData, String sCertDN) throws UnsupportedEncodingException;
/**
* 带公钥证书与原始数据的数字签名验签(遵循 PKCS#7)
@@ -172,7 +172,7 @@ public interface SydAttachedSVApi {
* @param sign 已签名数据
* @return true 验签通过 false 验签失败
*/
boolean attachedVerify(int rFlag,String sign);
boolean attachedVerifyRSA(int rFlag,String sign);
boolean attachedVerify(byte[] sign);
@@ -0,0 +1,183 @@
package com.sunyard.util;
import java.nio.ByteBuffer;
/**
* @Author:Cheney
* @Date:2023/7/27 11:16
*/
public class FrameCache {
private static ByteBuffer sm2p1;
private static ByteBuffer sm2p1v;
private static ByteBuffer rsap1;
private static ByteBuffer rsap1v;
private static ByteBuffer sm2det;
private static ByteBuffer sm2detv;
private static ByteBuffer rsadet;
private static ByteBuffer rsadetv;
private static ByteBuffer sm2detres;
public static ByteBuffer getSm2detres() {
return sm2detres;
}
public static void setSm2detres(ByteBuffer sm2detres) {
FrameCache.sm2detres = sm2detres;
}
private static String P7sign;
public static String getP7sign() {
return P7sign;
}
public static void setP7sign(String p7sign) {
P7sign = p7sign;
}
public static ByteBuffer getSm2p1() {
return sm2p1;
}
public static void setSm2p1(ByteBuffer sm2p1) {
FrameCache.sm2p1 = sm2p1;
}
public static ByteBuffer getSm2p1v() {
return sm2p1v;
}
public static void setSm2p1v(ByteBuffer sm2p1v) {
FrameCache.sm2p1v = sm2p1v;
}
public static ByteBuffer getRsap1() {
return rsap1;
}
public static void setRsap1(ByteBuffer rsap1) {
FrameCache.rsap1 = rsap1;
}
public static ByteBuffer getRsap1v() {
return rsap1v;
}
public static void setRsap1v(ByteBuffer rsap1v) {
FrameCache.rsap1v = rsap1v;
}
public static ByteBuffer getSm2det() {
return sm2det;
}
public static void setSm2det(ByteBuffer sm2det) {
FrameCache.sm2det = sm2det;
}
public static ByteBuffer getSm2detv() {
return sm2detv;
}
public static void setSm2detv(ByteBuffer sm2detv) {
FrameCache.sm2detv = sm2detv;
}
public static ByteBuffer getRsadet() {
return rsadet;
}
public static void setRsadet(ByteBuffer rsadet) {
FrameCache.rsadet = rsadet;
}
public static ByteBuffer getRsadetv() {
return rsadetv;
}
public static void setRsadetv(ByteBuffer rsadetv) {
FrameCache.rsadetv = rsadetv;
}
public static ByteBuffer getSm2att() {
return sm2att;
}
public static void setSm2att(ByteBuffer sm2att) {
FrameCache.sm2att = sm2att;
}
public static ByteBuffer getSm2attv() {
return sm2attv;
}
public static void setSm2attv(ByteBuffer sm2attv) {
FrameCache.sm2attv = sm2attv;
}
public static ByteBuffer getRsaatt() {
return rsaatt;
}
public static void setRsaatt(ByteBuffer rsaatt) {
FrameCache.rsaatt = rsaatt;
}
public static ByteBuffer getRsaattv() {
return rsaattv;
}
public static void setRsaattv(ByteBuffer rsaattv) {
FrameCache.rsaattv = rsaattv;
}
public static ByteBuffer getSm2gen() {
return sm2gen;
}
public static void setSm2gen(ByteBuffer sm2gen) {
FrameCache.sm2gen = sm2gen;
}
public static ByteBuffer getSm2den() {
return sm2den;
}
public static void setSm2den(ByteBuffer sm2den) {
FrameCache.sm2den = sm2den;
}
public static ByteBuffer getRsagen() {
return rsagen;
}
public static void setRsagen(ByteBuffer rsagen) {
FrameCache.rsagen = rsagen;
}
public static ByteBuffer getRsaden() {
return rsaden;
}
public static void setRsaden(ByteBuffer rsaden) {
FrameCache.rsaden = rsaden;
}
private static ByteBuffer sm2att;
private static ByteBuffer sm2attv;
private static ByteBuffer rsaatt;
private static ByteBuffer rsaattv;
private static ByteBuffer sm2gen;
private static ByteBuffer sm2den;
private static ByteBuffer rsagen;
private static ByteBuffer rsaden;
// private static ByteBuffer res;
}