本地保存

This commit is contained in:
yihzhou 2023-08-25 15:49:31 +08:00
parent b26aab01a4
commit 6f833730c2
4 changed files with 412 additions and 640 deletions

View File

@ -1,183 +0,0 @@
package com.sunyard.util;
import java.nio.ByteBuffer;
/**
* @AuthorCheney
* @Date2023/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;
}

View File

@ -442,29 +442,27 @@ public class SydApi4j implements SydApi {
Proto8003 proto = new Proto8003();
PacketSN sn = PacketSN.gen();
byte[] dn = new byte[256];
byte[] s = null;
try {
sCertDN = DnUtil.verifyDn(sCertDN);
s = sCertDN.getBytes("GBK");
} catch (UnsupportedEncodingException var16) {
var16.printStackTrace();
}
System.arraycopy(s, 0, dn, 0, s.length);
HashMap<String, Object> packet = new HashMap();
HashMap<String, Object> data = new HashMap();
packet.put("data", data);
packet.put("header", sn.getSn().array());
data.put("signatureDataType$option", 1);
data.put("DN", dn);
data.put("signData", orgData);
data.put("rFlag", 'P');
data.put("hash", hash);
ByteBuffer bb = proto.rend(packet);
byte[] dn = new byte[256];
byte[] s = null;
try {
sCertDN = DnUtil.verifyDn(sCertDN);
s = sCertDN.getBytes("GBK");
} catch (UnsupportedEncodingException var16) {
var16.printStackTrace();
}
System.arraycopy(s, 0, dn, 0, s.length);
HashMap<String, Object> packet = new HashMap();
HashMap<String, Object> data = new HashMap();
packet.put("data", data);
packet.put("header", sn.getSn().array());
data.put("signatureDataType$option", 1);
data.put("DN", dn);
data.put("signData", orgData);
data.put("rFlag", 'P');
data.put("hash", hash);
ByteBuffer bb = proto.rend(packet);
synchronized(this) {
bb = this.syncRead(this.syncSend(bb));
@ -523,49 +521,41 @@ public class SydApi4j implements SydApi {
Proto8003 proto = new Proto8003();
PacketSN sn = PacketSN.gen();
HashMap<String, Object> packet = new HashMap<String, Object>();
ByteBuffer bb = null;
if (null ==FrameCache.getRsap1()) {
byte[] dn = new byte[256];
byte[] s = null;
try {
s = sCertDN.getBytes("GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.arraycopy(s, 0, dn, 0, s.length);
// 填充数据
HashMap<String, Object> data = new HashMap<String, Object>();
packet.put("data", data);
packet.put("header", sn.getSn().array());
if (rFlag == 1) {
// MD5
data.put("rFlag", 'M');
}
if (rFlag == 2) {
// SHA-1
data.put("rFlag", 'S');
}
if (rFlag == 3) {
// SHA-256
data.put("rFlag", 'R');
}
data.put("signatureDataType$option", 1);
data.put("DN", dn);
data.put("signData", orgData);
data.put("hash", hash);
// 渲染发送
bb = proto.rend(packet);
FrameCache.setRsap1(bb);
}else{
bb = FrameCache.getRsap1();
byte[] dn = new byte[256];
byte[] s = null;
try {
s = sCertDN.getBytes("GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.arraycopy(s, 0, dn, 0, s.length);
// 填充数据
HashMap<String, Object> data = new HashMap<String, Object>();
packet.put("data", data);
packet.put("header", sn.getSn().array());
if (rFlag == 1) {
// MD5
data.put("rFlag", 'M');
}
if (rFlag == 2) {
// SHA-1
data.put("rFlag", 'S');
}
if (rFlag == 3) {
// SHA-256
data.put("rFlag", 'R');
}
data.put("signatureDataType$option", 1);
data.put("DN", dn);
data.put("signData", orgData);
data.put("hash", hash);
// 渲染发送
ByteBuffer bb = proto.rend(packet);
synchronized (this) {
// 响应解析
bb = syncRead(syncSend(bb));
@ -600,31 +590,30 @@ public class SydApi4j implements SydApi {
PacketSN sn = PacketSN.gen();
HashMap<String, Object> packet = new HashMap();
sign = ASN1Util.alignSignDer(sign);
byte[] dn = new byte[256];
byte[] s = null;
sign = ASN1Util.alignSignDer(sign);
byte[] dn = new byte[256];
byte[] s = null;
try {
sCertDN = DnUtil.verifyDn(sCertDN);
s = sCertDN.getBytes("GBK");
} catch (UnsupportedEncodingException var18) {
var18.printStackTrace();
}
try {
sCertDN = DnUtil.verifyDn(sCertDN);
s = sCertDN.getBytes("GBK");
} catch (UnsupportedEncodingException var18) {
var18.printStackTrace();
}
System.arraycopy(s, 0, dn, 0, s.length);
HashMap<String, Object> data = new HashMap();
packet.put("data", data);
System.arraycopy(s, 0, dn, 0, s.length);
HashMap<String, Object> data = new HashMap();
packet.put("data", data);
packet.put("header", sn.getSn().array());
data.put("signatureDataType$option", 1);
data.put("DN", dn);
data.put("odata", orgData);
data.put("rFlag", 'P');
data.put("hash", hash);
data.put("signature", sign);
data.put("returnSign$option", 0);
ByteBuffer bb = proto.rend(packet);
packet.put("header", sn.getSn().array());
data.put("signatureDataType$option", 1);
data.put("DN", dn);
data.put("odata", orgData);
data.put("rFlag", 'P');
data.put("hash", hash);
data.put("signature", sign);
data.put("returnSign$option", 0);
ByteBuffer bb = proto.rend(packet);
synchronized(this) {
byte[] b = this.syncSend(bb);
@ -680,48 +669,41 @@ public class SydApi4j implements SydApi {
Proto8004 proto = new Proto8004();
HashMap<String, Object> packet = new HashMap<String, Object>();
PacketSN sn = PacketSN.gen();
ByteBuffer bb =null;
if (null == FrameCache.getRsap1v()) {
byte[] dn = new byte[256];
byte[] s = null;
byte[] dn = new byte[256];
byte[] s = null;
try {
s = sCertDN.getBytes("GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.arraycopy(s, 0, dn, 0, s.length);
// 填充数据
HashMap<String, Object> data = new HashMap<String, Object>();
packet.put("data", data);
packet.put("header", sn.getSn().array());
if (rFlag == 1) {
data.put("rFlag", 'M');
}
if (rFlag == 2) {
data.put("rFlag", 'S');
}
if (rFlag == 3) {
data.put("rFlag", 'R');
}
data.put("signatureDataType$option", 1);
data.put("DN", dn);
data.put("odata", orgData);
data.put("signature", sign);
data.put("hash", hashData);
data.put("returnSign$option", 0);
// 渲染发送
bb = proto.rend(packet);
FrameCache.setRsap1v(bb);
}else{
bb = FrameCache.getRsap1v();
try {
s = sCertDN.getBytes("GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.arraycopy(s, 0, dn, 0, s.length);
// 填充数据
HashMap<String, Object> data = new HashMap<String, Object>();
packet.put("data", data);
packet.put("header", sn.getSn().array());
if (rFlag == 1) {
data.put("rFlag", 'M');
}
if (rFlag == 2) {
data.put("rFlag", 'S');
}
if (rFlag == 3) {
data.put("rFlag", 'R');
}
data.put("signatureDataType$option", 1);
data.put("DN", dn);
data.put("odata", orgData);
data.put("signature", sign);
data.put("hash", hashData);
data.put("returnSign$option", 0);
// 渲染发送
ByteBuffer bb = proto.rend(packet);
synchronized (this) {
byte[] b = syncSend(bb);
@ -896,71 +878,58 @@ public class SydApi4j implements SydApi {
Proto8005 proto = new Proto8005();
HashMap<String, Object> packet = new HashMap<String, Object>();
PacketSN sn = PacketSN.gen();
ByteBuffer bb = null;
if (null == FrameCache.getSm2det()) {
byte[] dn = new byte[256];
byte[] s = null;
try {
sCertDN = verifyDn(sCertDN);
s = sCertDN.getBytes("GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.arraycopy(s, 0, dn, 0, s.length);
// 填充数据
HashMap<String, Object> data = new HashMap<String, Object>();
packet.put("data", data);
packet.put("header", sn.getSn().array());
data.put("DN", dn);
if (dataType == DATA_HASH) {
data.put("hashFlag", 'P');
data.put("hash", orgData);
} else {
data.put("infoData", orgData);
}
// 渲染发送
bb = proto.rend(packet);
FrameCache.setSm2det(bb);
}else{
bb = FrameCache.getSm2det();
byte[] dn = new byte[256];
byte[] s = null;
try {
sCertDN = verifyDn(sCertDN);
s = sCertDN.getBytes("GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.arraycopy(s, 0, dn, 0, s.length);
// 填充数据
HashMap<String, Object> data = new HashMap<String, Object>();
packet.put("data", data);
packet.put("header", sn.getSn().array());
data.put("DN", dn);
if (dataType == DATA_HASH) {
data.put("hashFlag", 'P');
data.put("hash", orgData);
} else {
data.put("infoData", orgData);
}
// 渲染发送
ByteBuffer bb = proto.rend(packet);
synchronized (this) {
// 响应解析
bb = syncRead(syncSend(bb));
}
//
if (null == FrameCache.getP7sign()) {
Packet p = proto.parse(bb);
Map<String, Object> ret = p.toMap();
if (
!Arrays.equals(sn.getSn().array(), ((PacketSection) ret.get("header")).getBytes())
) {
throw new SydApiException("包序号不匹配", -4);
}
ret = (Map<String, Object>) ret.get("data");
PacketSection error = (PacketSection) ret.get("error");
byte[] be = error.getBytes();
if (
(0 != (be[0] ^ be[1]))) {
throw new SydApiException(error.getInfo(), error.autoInt());
}
String signature = ((PacketSection) ret.get("signature")).getString();
FrameCache.setP7sign(signature);
return signature;
}else{
return FrameCache.getP7sign();
Packet p = proto.parse(bb);
Map<String, Object> ret = p.toMap();
if (
!Arrays.equals(sn.getSn().array(), ((PacketSection) ret.get("header")).getBytes())
) {
throw new SydApiException("包序号不匹配", -4);
}
ret = (Map<String, Object>) ret.get("data");
PacketSection error = (PacketSection) ret.get("error");
byte[] be = error.getBytes();
if (
(0 != (be[0] ^ be[1]))) {
throw new SydApiException(error.getInfo(), error.autoInt());
}
String signature = ((PacketSection) ret.get("signature")).getString();
return signature;
}
@ -972,30 +941,24 @@ public class SydApi4j implements SydApi {
HashMap<String, Object> packet = new HashMap<String, Object>();
PacketSN sn = PacketSN.gen();
ByteBuffer bb =null;
if (null == FrameCache.getSm2detv()) {
HashMap<String, Object> data = new HashMap<String, Object>();
packet.put("data", data);
HashMap<String, Object> data = new HashMap<String, Object>();
packet.put("data", data);
packet.put("header", sn.getSn().array());
packet.put("header", sn.getSn().array());
if (dataType == DATA_HASH) {
data.put("hashFlag", 'P');
data.put("hash", orgData);
} else {
data.put("originData", orgData);
}
data.put("signData", sign.getBytes());
data.put("flag$option", 0);
// 渲染发送
bb = proto.rend(packet);
FrameCache.setSm2detv(bb);
}else{
bb = FrameCache.getSm2detv();
if (dataType == DATA_HASH) {
data.put("hashFlag", 'P');
data.put("hash", orgData);
} else {
data.put("originData", orgData);
}
data.put("signData", sign.getBytes());
data.put("flag$option", 0);
// 渲染发送
ByteBuffer bb = proto.rend(packet);
synchronized (this) {
// 响应解析
bb = syncRead(syncSend(bb));
@ -1100,46 +1063,39 @@ public class SydApi4j implements SydApi {
// 填充数据
HashMap<String, Object> packet = new HashMap<String, Object>();
PacketSN sn = PacketSN.gen();
HashMap<String, Object> data = new HashMap<String, Object>();
packet.put("data", data);
ByteBuffer bb= null;
if(null == FrameCache.getRsadetv()) {
HashMap<String, Object> data = new HashMap<String, Object>();
packet.put("data", data);
if (rFlag == 1) {//RSA证书
data.put("rFlag", 'D');
}
if (rFlag == 2) {
data.put("rFlag", 'O');
}
if (rFlag == 3) {
data.put("rFlag", 'U');
}
packet.put("header", sn.getSn().array());
if (dataType == DATA_HASH) {
if (rFlag == 1) {//RSA证书
data.put("rFlag", 'D');
data.put("hashFlag", 'M');
}
if (rFlag == 2) {
data.put("rFlag", 'O');
data.put("hashFlag", 'S');
}
if (rFlag == 3) {
data.put("rFlag", 'U');
data.put("hashFlag", 'R');
}
packet.put("header", sn.getSn().array());
if (dataType == DATA_HASH) {
if (rFlag == 1) {//RSA证书
data.put("hashFlag", 'M');
}
if (rFlag == 2) {
data.put("hashFlag", 'S');
}
if (rFlag == 3) {
data.put("hashFlag", 'R');
}
data.put("hash", orgData);
} else {
data.put("originData", orgData);
}
data.put("signData", sign.getBytes());
data.put("flag$option", 0);
// 渲染发送
bb = proto.rend(packet);
FrameCache.setRsadetv(bb);
}else{
bb = FrameCache.getRsadet();
data.put("hash", orgData);
} else {
data.put("originData", orgData);
}
data.put("signData", sign.getBytes());
data.put("flag$option", 0);
// 渲染发送
ByteBuffer bb = proto.rend(packet);
synchronized (this) {
// 响应解析
@ -1353,58 +1309,52 @@ public class SydApi4j implements SydApi {
Proto8005 proto = new Proto8005();
HashMap<String, Object> packet = new HashMap<String, Object>();
PacketSN sn = PacketSN.gen();
ByteBuffer bb = null;
if ( null == FrameCache.getRsadet()) {
byte[] dn = new byte[256];
byte[] s = null;
try {
sCertDN = verifyDn(sCertDN);
s = sCertDN.getBytes("GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
byte[] dn = new byte[256];
byte[] s = null;
try {
sCertDN = verifyDn(sCertDN);
s = sCertDN.getBytes("GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.arraycopy(s, 0, dn, 0, s.length);
System.arraycopy(s, 0, dn, 0, s.length);
// 填充数据
// 填充数据
HashMap<String, Object> data = new HashMap<String, Object>();
packet.put("data", data);
HashMap<String, Object> data = new HashMap<String, Object>();
packet.put("data", data);
packet.put("header", sn.getSn().array());
if (rFlag == 1) {//RSA证书加签方法
data.put("rFlag", 'M');
packet.put("header", sn.getSn().array());
if (rFlag == 1) {//RSA证书加签方法
data.put("rFlag", 'M');
}
if (rFlag == 2) {
data.put("rFlag", 'S');
}
if (rFlag == 3) {
data.put("rFlag", 'R');
}
data.put("DN", dn);
if (dataType == DATA_HASH) {
if (rFlag == 1) {
data.put("hashFlag", 'M');
}
if (rFlag == 2) {
data.put("rFlag", 'S');
data.put("hashFlag", 'S');
}
if (rFlag == 3) {
data.put("rFlag", 'R');
data.put("hashFlag", 'R');
}
data.put("DN", dn);
if (dataType == DATA_HASH) {
if (rFlag == 1) {
data.put("hashFlag", 'M');
}
if (rFlag == 2) {
data.put("hashFlag", 'S');
}
if (rFlag == 3) {
data.put("hashFlag", 'R');
}
data.put("hash", orgData);
} else {
data.put("infoData", orgData);
}
// 渲染发送
bb = proto.rend(packet);
FrameCache.setRsadet(bb);
}else{
bb = FrameCache.getRsadet();
data.put("hash", orgData);
} else {
data.put("infoData", orgData);
}
// 渲染发送
ByteBuffer bb = proto.rend(packet);
synchronized (this) {
// 响应解析
bb = syncRead(syncSend(bb));
@ -3184,36 +3134,32 @@ public class SydApi4j implements SydApi {
// 填充数据
PacketSN sn = PacketSN.gen();
HashMap<String, Object> packet = new HashMap<String, Object>();
ByteBuffer bb =null;
if (null == FrameCache.getRsagen()) {
packet.put("header", sn.getSn().array());
HashMap<String, Object> data = new HashMap<String, Object>();
data.put("alg$option", alg);
data.put("certificateModel$option", model);
if (model == 0) {
data.put("certificateSn", certSerial);
} else {
data.put("certificateDn", certSerial);
}
packet.put("header", sn.getSn().array());
HashMap<String, Object> data = new HashMap<String, Object>();
data.put("alg$option", alg);
data.put("certificateModel$option", model);
if (alg == 3 || alg == 4) {
data.put("orgData", oData);
}
data.put("keyType", "X");
if (alg == 4) {
data.put("keyType", "L");
}
packet.put("data", data);
// 渲染发送 耗时长
bb = proto.rend(packet);
FrameCache.setRsagen(bb);
}else{
bb = FrameCache.getRsagen();
if (model == 0) {
data.put("certificateSn", certSerial);
} else {
data.put("certificateDn", certSerial);
}
if (alg == 3 || alg == 4) {
data.put("orgData", oData);
}
data.put("keyType", "X");
if (alg == 4) {
data.put("keyType", "L");
}
packet.put("data", data);
// 渲染发送 耗时长
ByteBuffer bb = proto.rend(packet);
synchronized (this) {
// 响应解析
bb = syncRead(syncSend(bb));
@ -3843,31 +3789,25 @@ public class SydApi4j implements SydApi {
PacketSN sn = PacketSN.gen();
HashMap<String, Object> packet = new HashMap<String, Object>();
ByteBuffer bb =null ;
if(null == FrameCache.getSm2den()) {
packet.put("header", sn.getSn().array());
HashMap<String, Object> data = new HashMap<String, Object>();
if (pFlag) {
data.put("pFlag", "P");
}
data.put("certificateModel$option", model);
if (model == 0) {
data.put("certificateSn", certSerial);
} else {
data.put("certificateDn", certSerial);
}
data.put("key", pCipherKey);
data.put("keyType", "X");
packet.put("data", data);
// 渲染发送
bb = proto.rend(packet);
FrameCache.setSm2den(bb);
packet.put("header", sn.getSn().array());
HashMap<String, Object> data = new HashMap<String, Object>();
if (pFlag) {
data.put("pFlag", "P");
}
else{
bb = FrameCache.getSm2den();
data.put("certificateModel$option", model);
if (model == 0) {
data.put("certificateSn", certSerial);
} else {
data.put("certificateDn", certSerial);
}
data.put("key", pCipherKey);
data.put("keyType", "X");
packet.put("data", data);
// 渲染发送
ByteBuffer bb = proto.rend(packet);
synchronized (this) {
// 响应解析
bb = syncRead(syncSend(bb));
@ -3918,31 +3858,26 @@ public class SydApi4j implements SydApi {
PacketSN sn = PacketSN.gen();
HashMap<String, Object> packet = new HashMap<String, Object>();
ByteBuffer bb =null;
if (null == FrameCache.getRsaden()) {
packet.put("header", sn.getSn().array());
HashMap<String, Object> data = new HashMap<String, Object>();
data.put("pFlag", "R");
if (!pFlag) {
data.put("pFlag", "Q");
}
data.put("certificateModel$option", model);
if (model == 0) {
data.put("certificateSn", certSerial);
} else {
data.put("certificateDn", certSerial);
}
data.put("key", pCipherKey);
data.put("keyType", "L");
packet.put("data", data);
// 渲染发送
bb = proto.rend(packet);
FrameCache.setRsaden(bb);
}else{
bb = FrameCache.getRsaden();
packet.put("header", sn.getSn().array());
HashMap<String, Object> data = new HashMap<String, Object>();
data.put("pFlag", "R");
if (!pFlag) {
data.put("pFlag", "Q");
}
data.put("certificateModel$option", model);
if (model == 0) {
data.put("certificateSn", certSerial);
} else {
data.put("certificateDn", certSerial);
}
data.put("key", pCipherKey);
data.put("keyType", "L");
packet.put("data", data);
// 渲染发送
ByteBuffer bb = proto.rend(packet);
synchronized (this) {
// 响应解析
bb = syncRead(syncSend(bb));
@ -12104,45 +12039,38 @@ public class SydApi4j implements SydApi {
Proto8018 proto = new Proto8018();
HashMap<String, Object> packet = new HashMap<String, Object>();
PacketSN sn = PacketSN.gen();
ByteBuffer bb =null;
if(null == FrameCache.getRsaatt()) {
byte[] dn = new byte[256];
byte[] s = null;
try {
s = sCertDN.getBytes("GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.arraycopy(s, 0, dn, 0, s.length);
// 填充数据
HashMap<String, Object> data = new HashMap<String, Object>();
packet.put("data", data);
packet.put("header", sn.getSn().array());
if (rFlag == 1) {
data.put("rFlag", 'M');
}
if (rFlag == 2) {
data.put("rFlag", 'S');
}
if (rFlag == 3) {
data.put("rFlag", 'R');
}
data.put("DN", dn);
data.put("infoData", orgData);
// 渲染发送
bb = proto.rend(packet);
FrameCache.setRsaatt(bb);
}else{
bb = FrameCache.getRsaatt();
byte[] dn = new byte[256];
byte[] s = null;
try {
s = sCertDN.getBytes("GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.arraycopy(s, 0, dn, 0, s.length);
// 填充数据
HashMap<String, Object> data = new HashMap<String, Object>();
packet.put("data", data);
packet.put("header", sn.getSn().array());
if (rFlag == 1) {
data.put("rFlag", 'M');
}
if (rFlag == 2) {
data.put("rFlag", 'S');
}
if (rFlag == 3) {
data.put("rFlag", 'R');
}
data.put("DN", dn);
data.put("infoData", orgData);
// 渲染发送
ByteBuffer bb = proto.rend(packet);
synchronized (this) {
// 响应解析
bb = syncRead(syncSend(bb));
@ -12176,35 +12104,28 @@ public class SydApi4j implements SydApi {
Proto8018 proto = new Proto8018();
HashMap<String, Object> packet = new HashMap<String, Object>();
PacketSN sn = PacketSN.gen();
ByteBuffer bb =null;
if (null == FrameCache.getSm2att()) {
byte[] dn = new byte[256];
byte[] s = null;
try {
s = sCertDN.getBytes("GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.arraycopy(s, 0, dn, 0, s.length);
// 填充数据
HashMap<String, Object> data = new HashMap<String, Object>();
packet.put("data", data);
packet.put("header", sn.getSn().array());
data.put("DN", dn);
data.put("infoData", orgData);
// 渲染发送
bb = proto.rend(packet);
FrameCache.setSm2att(bb);
}else{
bb = FrameCache.getSm2att();
byte[] dn = new byte[256];
byte[] s = null;
try {
s = sCertDN.getBytes("GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.arraycopy(s, 0, dn, 0, s.length);
// 填充数据
HashMap<String, Object> data = new HashMap<String, Object>();
packet.put("data", data);
packet.put("header", sn.getSn().array());
data.put("DN", dn);
data.put("infoData", orgData);
// 渲染发送
ByteBuffer bb = proto.rend(packet);
synchronized (this) {
// 响应解析
bb = syncRead(syncSend(bb));
@ -12250,21 +12171,16 @@ public class SydApi4j implements SydApi {
HashMap<String, Object> packet = new HashMap<String, Object>();
HashMap<String, Object> data = new HashMap<String, Object>();
PacketSN sn = PacketSN.gen();
ByteBuffer bb = null;
if(null == FrameCache.getSm2attv()) {
packet.put("data", data);
packet.put("header", sn.getSn().array());
packet.put("data", data);
data.put("signData", sign);
data.put("flag$option", 0);
packet.put("header", sn.getSn().array());
// 渲染发送
bb = proto.rend(packet);
FrameCache.setSm2attv(bb);
}else{
bb = FrameCache.getSm2attv();
}
data.put("signData", sign);
data.put("flag$option", 0);
// 渲染发送
ByteBuffer bb = proto.rend(packet);
synchronized (this) {
// 响应解析

View File

@ -0,0 +1,39 @@
package sample;
import com.sunyard.proto.Util;
import racal.sunyard.main.SydApi4j;
import racal.sunyard.main.SydApiBuilder;
public class Sample4GH {
private static final String SM2dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
private static final String SM2dn2 = "C=CN,O=SM2,OU=test,CN=1";
private static final String RSAdn = "C=cn,O=CFCA TEST CA,OU=NCS2,OU=Enterprises,CN=041@Z402451000010@ShanDong@00000001";
private static final byte[] orgData = new byte[ 1024];
public static void main(String[] args) {
//设置连接
SydApiBuilder builder = new SydApiBuilder().setIp("172.16.17.161");
SydApi4j api = (SydApi4j) builder.build();
byte[] nakedSign = api.SYD_NakedSign(SM2dn, orgData, (byte[]) null);
System.out.println("裸签"+nakedSign);
boolean nakedVerify = api.SYD_NakedVerify(SM2dn, nakedSign, orgData, (byte[]) null);
System.out.println("裸签验签"+nakedVerify);
String detachedSign = api.detachedSign(1, orgData, SM2dn);
System.out.println("det签名"+detachedSign);
boolean detachedVerify = api.detachedVerify(1, orgData, detachedSign);
System.out.println("det验签"+detachedVerify);
String attachedSign = api.attachedSignHsm(orgData, SM2dn);
System.out.println("att签名"+attachedSign);
boolean attachedVerify = api.attachedVerify(attachedSign.getBytes());
System.out.println("att验签"+attachedVerify);
}
}

View File

@ -40,52 +40,52 @@ public class Sample4ZS {
System.out.println("SM2数据验签"+nakedVerify1 );
//
//RSA裸签
// byte[] nakedSign2 = api.SYD_NakedSign(1, RSAdn,orgData,(byte[])null);
// boolean nakedVerify2 = api.SYD_NakedVerify(1, RSAdn,nakedSign2,orgData ,(byte[])null);
// System.out.println("RSA数据验签"+nakedVerify2 );
byte[] nakedSign2 = api.SYD_NakedSign(1, RSAdn,orgData,(byte[])null);
boolean nakedVerify2 = api.SYD_NakedVerify(1, RSAdn,nakedSign2,orgData ,(byte[])null);
System.out.println("RSA数据验签"+nakedVerify2 );
// detach签名
// for (int i = 0; i < 10; i++) {
// String detSign1 = api.detachedSignAll(4, orgData, SM2dn);
// System.out.println("SM2detach签名"+detSign1);
// }
//detach签名
// boolean detV1 = api.detachedVerifyAll(4, orgData, detSign1);
// System.out.println("SM2detach验签"+detV1);
//
//
// String detSign2= api.detachedSignAll(2, orgData, RSAdn);
// System.out.println("RSA detach签名"+detSign2);
// boolean detV2 = api.detachedVerifyAll(2, orgData, detSign2);
// System.out.println("RSA detach验签"+detV2);
String detSign1 = api.detachedSignAll(4, orgData, SM2dn);
System.out.println("SM2detach签名"+detSign1);
boolean detV1 = api.detachedVerifyAll(4, orgData, detSign1);
System.out.println("SM2detach验签"+detV1);
String detSign2= api.detachedSignAll(2, orgData, RSAdn);
System.out.println("RSA detach签名"+detSign2);
boolean detV2 = api.detachedVerifyAll(2, orgData, detSign2);
System.out.println("RSA detach验签"+detV2);
//attach签名
// String attSign1 = api.attachedSignAll(4, orgData, SM2dn);
// System.out.println("SM2attach签名"+attSign1);
// boolean attV1 = api.attachedVerifyAll(4, attSign1);
// System.out.println("SM2attach验签"+attV1);
//
//
// String attSign2 = api.attachedSignAll(2, orgData, RSAdn);
// System.out.println("RSA attach签名"+attSign2);
// boolean attV2 = api.attachedVerifyAll(2, attSign2);
// System.out.println("RSA attach验签"+attV1);
//
// //数字信封
// RetWrap genSM2 = api.generateDEByDnAll(3, SM2dn, orgData);
// byte[] cipherKey = (byte[]) genSM2.get(SydApi.RET_CIPHER_KEY);
// System.out.println("SM4加密" + new String(cipherKey));
// RetWrap denSM2 = api.decryptDEByDNAll(3, SM2dn, cipherKey);
// byte[] oData = (byte[]) denSM2.get("oData");
// System.out.println("SM4解密"+Util.bytes2HexString(oData));
String attSign1 = api.attachedSignAll(4, orgData, SM2dn);
System.out.println("SM2attach签名"+attSign1);
boolean attV1 = api.attachedVerifyAll(4, attSign1);
System.out.println("SM2attach验签"+attV1);
//
// RetWrap genRSA = api.generateDEByDnAll(4, RSAdn, orgData);
// byte[] cipherKeyRSA = (byte[]) genRSA.get(SydApi.RET_CIPHER_KEY);
// System.out.println("RSA数字信封: " + new String(cipherKeyRSA));
// RetWrap denRSA = api.decryptDEByDNAll(4, RSAdn, cipherKeyRSA);
// byte[] oDataRSA = (byte[]) denRSA.get("oData");
// System.out.println("RSA信封解密"+Util.bytes2HexString(oDataRSA));
String attSign2 = api.attachedSignAll(2, orgData, RSAdn);
System.out.println("RSA attach签名"+attSign2);
boolean attV2 = api.attachedVerifyAll(2, attSign2);
System.out.println("RSA attach验签"+attV1);
//数字信封
RetWrap genSM2 = api.generateDEByDnAll(3, SM2dn, orgData);
byte[] cipherKey = (byte[]) genSM2.get(SydApi.RET_CIPHER_KEY);
System.out.println("SM4加密" + new String(cipherKey));
RetWrap denSM2 = api.decryptDEByDNAll(3, SM2dn, cipherKey);
byte[] oData = (byte[]) denSM2.get("oData");
System.out.println("SM4解密"+Util.bytes2HexString(oData));
RetWrap genRSA = api.generateDEByDnAll(4, RSAdn, orgData);
byte[] cipherKeyRSA = (byte[]) genRSA.get(SydApi.RET_CIPHER_KEY);
System.out.println("RSA数字信封: " + new String(cipherKeyRSA));
RetWrap denRSA = api.decryptDEByDNAll(4, RSAdn, cipherKeyRSA);
byte[] oDataRSA = (byte[]) denRSA.get("oData");
System.out.println("RSA信封解密"+Util.bytes2HexString(oDataRSA));
}catch (SydApiException e){