diff --git a/src/main/java/com/sunyard/util/FrameCache.java b/src/main/java/com/sunyard/util/FrameCache.java deleted file mode 100644 index fb27830..0000000 --- a/src/main/java/com/sunyard/util/FrameCache.java +++ /dev/null @@ -1,183 +0,0 @@ -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; - - - - -} diff --git a/src/main/java/racal/sunyard/main/SydApi4j.java b/src/main/java/racal/sunyard/main/SydApi4j.java index 838f53b..32f3672 100644 --- a/src/main/java/racal/sunyard/main/SydApi4j.java +++ b/src/main/java/racal/sunyard/main/SydApi4j.java @@ -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 packet = new HashMap(); - HashMap 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 packet = new HashMap(); + HashMap 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 packet = new HashMap(); - 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 data = new HashMap(); - 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 data = new HashMap(); + 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 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 data = new HashMap(); + packet.put("data", data); - System.arraycopy(s, 0, dn, 0, s.length); - HashMap 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 packet = new HashMap(); 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 data = new HashMap(); - 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 data = new HashMap(); + 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 packet = new HashMap(); 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 data = new HashMap(); - 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 data = new HashMap(); + 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 ret = p.toMap(); - - if ( - !Arrays.equals(sn.getSn().array(), ((PacketSection) ret.get("header")).getBytes()) - ) { - throw new SydApiException("包序号不匹配", -4); - } - ret = (Map) 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 ret = p.toMap(); + if ( + !Arrays.equals(sn.getSn().array(), ((PacketSection) ret.get("header")).getBytes()) + ) { + throw new SydApiException("包序号不匹配", -4); } + ret = (Map) 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 packet = new HashMap(); PacketSN sn = PacketSN.gen(); - ByteBuffer bb =null; - if (null == FrameCache.getSm2detv()) { - HashMap data = new HashMap(); - packet.put("data", data); + HashMap data = new HashMap(); + 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 packet = new HashMap(); PacketSN sn = PacketSN.gen(); + HashMap data = new HashMap(); + packet.put("data", data); - ByteBuffer bb= null; - if(null == FrameCache.getRsadetv()) { - HashMap data = new HashMap(); - 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 packet = new HashMap(); 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 data = new HashMap(); - packet.put("data", data); + HashMap data = new HashMap(); + 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 packet = new HashMap(); - ByteBuffer bb =null; - if (null == FrameCache.getRsagen()) { - packet.put("header", sn.getSn().array()); - HashMap data = new HashMap(); - 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 data = new HashMap(); + 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 packet = new HashMap(); - ByteBuffer bb =null ; - if(null == FrameCache.getSm2den()) { - packet.put("header", sn.getSn().array()); - HashMap data = new HashMap(); - 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 data = new HashMap(); + 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 packet = new HashMap(); - ByteBuffer bb =null; - if (null == FrameCache.getRsaden()) { - packet.put("header", sn.getSn().array()); - HashMap data = new HashMap(); - 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 data = new HashMap(); + 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 packet = new HashMap(); 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 data = new HashMap(); - 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 data = new HashMap(); + 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 packet = new HashMap(); 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 data = new HashMap(); - 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 data = new HashMap(); + 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 packet = new HashMap(); HashMap data = new HashMap(); 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) { // 响应解析 diff --git a/src/test/java/sample/Sample4GH.java b/src/test/java/sample/Sample4GH.java new file mode 100644 index 0000000..86a204d --- /dev/null +++ b/src/test/java/sample/Sample4GH.java @@ -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); + + } +} diff --git a/src/test/java/sample/Sample4ZS.java b/src/test/java/sample/Sample4ZS.java index adce287..1d3316a 100644 --- a/src/test/java/sample/Sample4ZS.java +++ b/src/test/java/sample/Sample4ZS.java @@ -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){