From 6bd2cf119749b51b8fc3f01274f5b3a7f40eb006 Mon Sep 17 00:00:00 2001 From: cheney Date: Wed, 22 Jun 2022 10:07:50 +0800 Subject: [PATCH] Add function "attachedSignC" for customized --- src/main/java/com/sunyard/inf/SydSVApi.java | 1 + .../java/racal/sunyard/main/SydApi4j.java | 4 ++ .../java/com/sunyard/sydapi/test/TestHT.java | 37 +++++++++++++++++++ 3 files changed, 42 insertions(+) diff --git a/src/main/java/com/sunyard/inf/SydSVApi.java b/src/main/java/com/sunyard/inf/SydSVApi.java index 2ae49de..8e4ed0e 100644 --- a/src/main/java/com/sunyard/inf/SydSVApi.java +++ b/src/main/java/com/sunyard/inf/SydSVApi.java @@ -178,6 +178,7 @@ interface SydAttachedSVApi { * 符合PKCS7标准的签名结果 */ String attachedSign(byte[] orgData, String sCertDN); + byte[] attachedSignC(byte[] orgData, String sCertDN); /** * 带公钥证书与原始数据的数字签名验签(遵循 PKCS#7) diff --git a/src/main/java/racal/sunyard/main/SydApi4j.java b/src/main/java/racal/sunyard/main/SydApi4j.java index bbfadba..748edc7 100644 --- a/src/main/java/racal/sunyard/main/SydApi4j.java +++ b/src/main/java/racal/sunyard/main/SydApi4j.java @@ -10405,6 +10405,10 @@ public class SydApi4j implements SydApi { // retWrap.put( "authenCode", authenCode.getBytes() ); //认证码 } + public byte[] attachedSignC(byte[] orgData, String sCertDN){ + String sign = attachedSign(orgData, sCertDN); + return sign.getBytes(); + } /** * 带公钥证书与原始数据的数字签名(遵循 PKCS#7) diff --git a/src/test/java/com/sunyard/sydapi/test/TestHT.java b/src/test/java/com/sunyard/sydapi/test/TestHT.java index 1726019..321274e 100644 --- a/src/test/java/com/sunyard/sydapi/test/TestHT.java +++ b/src/test/java/com/sunyard/sydapi/test/TestHT.java @@ -149,6 +149,43 @@ public class TestHT { } } + + @Test + public void testAttachedSignAndVerifyGetX509C() { + String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1"; + byte[] orgData = "111111213323143243243".getBytes(); + byte[] sign = api.attachedSignC(orgData, dn); + System.out.println("签名结果: " + sign ); + + X509 verify = api.attachedVerifyAndGetX509(sign); + System.out.println("验签结果: " + Util.bytes2HexString(verify.getPubKey())); + } + + @Test + public void testAttachedSignAndVerifyRDC() { + String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1"; + String orgData = "111111213323143243243"; + byte[] sign = api.attachedSignC(orgData.getBytes(), dn); + System.out.println("签名结果: " + sign); + + byte[] verify = api.attachedVerifyRD(sign); + System.out.println("验签结果: " + Util.bytes2HexString(verify)); + } + + @Test + public void testAttachedSignAndVerifyGetAllC() { + String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1"; + byte[] orgData = "111111213323143243243".getBytes(); + byte[] sign = api.attachedSignC(orgData, dn); + System.out.println("签名结果: " + sign); + + RetWrap verify = api.attachedVerifyAndGetAll(sign); + if (verify != null) { + System.out.println("x509公钥: " + Util.bytes2HexString(((X509)verify.get("x509")).getPubKey())); + System.out.println("签名原数据: " + verify.get("oData")); + } + } + @Test public void testDecryptDE54k() throws UnsupportedEncodingException { String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";