fix bugs
This commit is contained in:
parent
77dd48f8a0
commit
055942f35f
@ -77,14 +77,14 @@
|
|||||||
签名数字信封标识符,存在则为P
|
签名数字信封标识符,存在则为P
|
||||||
</pSignFlag>
|
</pSignFlag>
|
||||||
|
|
||||||
<signCertificateLen len="4" :value="signCertificateLen()" cn="签名证书DN长度">
|
<signCertificateLen len="4" :value="signCertificateLen()" :if="hasOrgCN()" cn="签名证书DN长度">
|
||||||
可选项,只针对"可选字段"为P时存在。
|
可选项,只针对"可选字段"为P时存在。
|
||||||
</signCertificateLen>
|
</signCertificateLen>
|
||||||
|
|
||||||
<signCertificateDn :len="strlen()" :if="hasOrgCN()" cn="签名证书DN">
|
<signCertificateDn :len="strlen()" :if="hasOrgCN()" cn="签名证书DN">
|
||||||
可选项,只针对“证书模式”为1时有,只针对"可选字段"为P时存在。
|
可选项,只针对“证书模式”为1时有,只针对"可选字段"为P时存在。
|
||||||
</signCertificateDn>
|
</signCertificateDn>
|
||||||
<signCertificateModel len="1" cn="是否附带公钥信息">
|
<signCertificateModel len="1" :if="hasOrgCN()" cn="是否附带公钥信息">
|
||||||
<options>
|
<options>
|
||||||
<option cn="无需附带">
|
<option cn="无需附带">
|
||||||
<hex>0</hex>
|
<hex>0</hex>
|
||||||
|
|||||||
@ -80,15 +80,15 @@ public class SydApiException extends RuntimeException{
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 40000:
|
case 40000:
|
||||||
this.msg = "输入的大数据处理异常";
|
msg = "输入的大数据处理异常";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 56300:
|
case 56300:
|
||||||
this.msg = "证书导入错误";
|
msg = "证书导入错误";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 56307:
|
case 56307:
|
||||||
this.msg = "证书删除错误";
|
msg = "证书删除错误";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|||||||
@ -1,24 +1,68 @@
|
|||||||
package com.sunyard.sydapi.test;
|
package com.sunyard.sydapi.test;
|
||||||
|
|
||||||
|
import com.sunyard.RetWrap;
|
||||||
import com.sunyard.proto.Util;
|
import com.sunyard.proto.Util;
|
||||||
import racal.sunyard.main.SydApi4j;
|
import racal.sunyard.main.SydApi4j;
|
||||||
import racal.sunyard.main.SydApiBuilder;
|
import racal.sunyard.main.SydApiBuilder;
|
||||||
|
|
||||||
public class TestShangqingXingye {
|
public class TestShangqingXingye {
|
||||||
private static final String orgData = "12345678";
|
private static final String orgData = "12345678";
|
||||||
private static final String publicKey = "034200043EDA3A107B7CC35CC005C7FBF0BB4E6B43A07EE14E360603D22ECA2A600B2D0FA03055D400D1240300F54648B849D13F50B330FF14351B5645B13686820A65BB";
|
|
||||||
private static final String pcDnEN = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
private static final String pcDnEN = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
System.setProperty("com.sunyard.sydapi4j.debug", "true");
|
//System.setProperty("com.sunyard.sydapi4j.debug", "true");
|
||||||
long startTime = System.currentTimeMillis(); //获取开始时间
|
long startTime = System.currentTimeMillis(); //获取开始时间
|
||||||
SydApiBuilder builder = new SydApiBuilder().setIp("192.168.0.100");
|
SydApiBuilder builder = new SydApiBuilder().setIp("192.168.0.100");
|
||||||
SydApi4j api = (SydApi4j) builder.build();
|
SydApi4j api = (SydApi4j) builder.build();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 产生对称密钥,通过公钥加密生成数字信封,。
|
||||||
|
* @param pcDnEN: 清算所的公钥证书
|
||||||
|
* @param pcData: 明文数据。
|
||||||
|
* @return RetWrap: 数字信封
|
||||||
|
*/
|
||||||
|
RetWrap signData = api.generateDEByDn(pcDnEN, orgData.getBytes("GBK"));
|
||||||
|
// String cpkey = (String)signData.get("CipherKey");
|
||||||
|
byte[] cpkey2 = (byte[]) signData.get("CipherKey");
|
||||||
|
// System.out.println("加密信封:" + cpkey);
|
||||||
|
System.out.println("加密信封:" + Util.encodeBase64(cpkey2));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 接收用私钥解密数字信封,还原原文。。
|
||||||
|
* @param pcDnEN: 清算所的公钥证书
|
||||||
|
* @param cpkey: 数字信封。
|
||||||
|
* @return preData: 原数据
|
||||||
|
*/
|
||||||
|
//RetWrap oDataWrap = api.decryptDEByDN (pcDnEN,cpkey.getBytes());
|
||||||
|
RetWrap oDataWrap = api.decryptDEByDN(pcDnEN, cpkey2);
|
||||||
|
byte[] preData = (byte[]) oDataWrap.get("oData");
|
||||||
|
System.out.println("解密信封:" + Util.bytes2HexString(preData));
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过指定的私钥对指定的原始数据编制带公钥证书的数字签名(遵循PKCS#7),
|
||||||
|
* @param orgData: 待签名的原始数据
|
||||||
|
* @param pcDnEN: 签名者证书 DN
|
||||||
|
* @return signsData: 签名数据
|
||||||
|
*/
|
||||||
|
String signsData = api.SYD_SM2_DetachedSign_HA(orgData.getBytes("GBK"), pcDnEN);
|
||||||
|
System.out.println("签名数据:" + signsData);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 利用清算所的公钥证书对签名数据进行验签。
|
||||||
|
* @param dataType: 数据模式, 0:输入的数据为 HASH 后的数据, 1:输入的数据为原始数据库(本次传入1)
|
||||||
|
* @param orgData: 待签名的原始数据
|
||||||
|
* @param sign: 签名数据。
|
||||||
|
*/
|
||||||
|
boolean result = api.detachedVerify(1, orgData.getBytes("GBK"), signsData);
|
||||||
|
System.out.println("验签结果:" + result);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 产生对称密钥,通过清算所公钥证书加密生成数字信封。
|
* 产生对称密钥,通过清算所公钥证书加密生成数字信封。
|
||||||
|
* 利用会员的私钥证书对数据进行签名
|
||||||
* 上清所 SYD_SignDzigitalEnvelope (String pcDnEN, String pcDnSign, byte[] pcData);
|
* 上清所 SYD_SignDzigitalEnvelope (String pcDnEN, String pcDnSign, byte[] pcData);
|
||||||
* @param pcDnEN: 清算所的公钥证书
|
* @param pcDnEN: 清算所的公钥证书
|
||||||
* @param pcDnSign:会员的私钥证书
|
* @param pcDnSign:会员的私钥证书
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user