保存周一豪电脑
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user