打包签名验签

This commit is contained in:
cheney
2022-06-24 11:52:03 +08:00
parent 0c13d0c38a
commit 6cb3072453
6 changed files with 271 additions and 33 deletions
@@ -12,7 +12,7 @@ import java.util.Arrays;
public class TestE0 {
private SydApi4j api;
private byte[] data = new byte[ 4 * 1024 -1 ];
private byte[] data = new byte[ 0x501 ];
private byte[] iv = new byte[ 32 ];
@Before
@@ -11,7 +11,6 @@ import org.junit.Test;
import racal.sunyard.main.SydApi4j;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
/**
@@ -24,7 +23,7 @@ public class TestHT {
@Before
public void before() {
// 通过设置debug的属性开启debug,如果不设置则默认不打开
System.setProperty("com.sunyard.sydapi4j.debug", "true");
// System.setProperty("com.sunyard.sydapi4j.debug", "true");
api = (SydApi4j) new SydApi4j().connect("172.16.18.59", 8889, null, 1000);
// api = (SydApi4j) new SydApi4j().connect("192.168.0.66", 8889, null, 1000);
}
@@ -42,16 +41,16 @@ public class TestHT {
* 流程演示
*/
@Test
public void testProcess() throws UnsupportedEncodingException {
public void testProcess() {
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
byte[] orgData = "111111213323143243243".getBytes("UTF-8");
byte[] orgData = new byte[2 * 1024 * 1024];
// 签名
String sign = api.attachedSign(orgData, dn);
System.out.println("签名结果: " + sign );
System.out.println("签名结果: " + sign);
// 生成数字信封
RetWrap retWrap = api.generateDEByDn(dn, sign.getBytes() );
RetWrap retWrap = api.generateDEByDn(dn, sign.getBytes());
byte[] cipherKey = (byte[]) retWrap.get(SydApi.RET_CIPHER_KEY);
System.out.println("数字信封: " + new String(cipherKey));
@@ -63,8 +62,8 @@ public class TestHT {
// 验签
RetWrap verify = api.attachedVerifyAndGetAll(oData);
if (verify != null) {
System.out.println("x509公钥: " + Util.bytes2HexString(((X509)verify.get("x509")).getPubKey()));
System.out.println("签名原数据: " + Util.bytes2HexString((byte[])(verify.get("oData"))));
System.out.println("x509公钥: " + Util.bytes2HexString(((X509) verify.get("x509")).getPubKey()));
System.out.println("签名原数据: " + Util.bytes2HexString((byte[]) (verify.get("oData"))));
}
}
@@ -102,6 +101,67 @@ public class TestHT {
System.out.println("解密后的数据:" + new String(bytes1));
}
@Test
public void testDetachedSignAndVerify1() throws UnsupportedEncodingException {
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
String orgData = "111111213323143243243";
String sign = api.attachedSign(orgData.getBytes(), dn);
System.out.println("签名结果: " + sign);
System.out.println("签名结果 hex : " + Util.bytes2HexString(Util.decodeBase64(sign)));
boolean verify = api.attachedVerify(sign);
System.out.println("验签结果: " + verify);
Assert.assertTrue(verify);
}
@Test
public void testDetachedSignAndVerify2() throws UnsupportedEncodingException {
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
String orgData = "111111213323143243243";
String sign = api.attachedSignSoft(orgData.getBytes(), dn);
System.out.println("签名结果: " + sign);
System.out.println("签名结果 hex: " + Util.bytes2HexString(Util.decodeBase64(sign)));
boolean verify = api.attachedVerify(sign);
System.out.println("验签结果: " + verify);
Assert.assertTrue(verify);
}
@Test
public void testDetachedSignAndVerify3() throws UnsupportedEncodingException {
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
byte[] orgData = new byte[3 * 1024];
String sign = api.attachedSign(orgData, dn);
System.out.println("签名结果: " + sign);
System.out.println("签名结果 hex: " + Util.bytes2HexString(Util.decodeBase64(sign)));
boolean verify = api.attachedVerify(sign);
System.out.println("验签结果: " + verify);
Assert.assertTrue(verify);
}
@Test
public void testDetachedSignAndVerify8() throws UnsupportedEncodingException {
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
byte[] orgData = new byte[8 * 1024];
String sign = api.attachedSign(orgData, dn);
System.out.println("签名结果: " + sign);
System.out.println("签名结果 hex: " + Util.bytes2HexString(Util.decodeBase64(sign)));
boolean verify = api.attachedVerify(sign);
System.out.println("验签结果: " + verify);
Assert.assertTrue(verify);
}
// 测试通过
// 8018
@Test
@@ -110,6 +170,7 @@ public class TestHT {
String orgData = "111111213323143243243";
String sign = api.attachedSign(orgData.getBytes(), dn);
System.out.println("签名结果: " + sign);
System.out.println("签名结果 hex : " + Util.bytes2HexString(Util.decodeBase64(sign)));
boolean verify = api.attachedVerify(sign);
System.out.println("验签结果: " + verify);
@@ -120,7 +181,8 @@ public class TestHT {
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
byte[] orgData = "111111213323143243243".getBytes();
String sign = api.attachedSign(orgData, dn);
System.out.println("签名结果: " + sign );
System.out.println("签名结果: " + sign);
X509 verify = api.attachedVerifyAndGetX509(sign);
System.out.println("验签结果: " + Util.bytes2HexString(verify.getPubKey()));
@@ -146,7 +208,21 @@ public class TestHT {
RetWrap verify = api.attachedVerifyAndGetAll(sign);
if (verify != null) {
System.out.println("x509公钥: " + Util.bytes2HexString(((X509)verify.get("x509")).getPubKey()));
System.out.println("x509公钥: " + Util.bytes2HexString(((X509) verify.get("x509")).getPubKey()));
System.out.println("签名原数据: " + verify.get("oData"));
}
}
@Test
public void testAttachedSignAndVerifyGetAll8k() {
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
byte[] orgData = new byte[ 8 * 1024 ];
String sign = api.attachedSign(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"));
}
}
@@ -157,7 +233,7 @@ public class TestHT {
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 );
System.out.println("签名结果: " + sign);
X509 verify = api.attachedVerifyAndGetX509(sign);
System.out.println("验签结果: " + Util.bytes2HexString(verify.getPubKey()));
@@ -184,7 +260,7 @@ public class TestHT {
RetWrap verify = api.attachedVerifyAndGetAll(sign);
if (verify != null) {
System.out.println("x509公钥: " + Util.bytes2HexString(((X509)verify.get("x509")).getPubKey()));
System.out.println("x509公钥: " + Util.bytes2HexString(((X509) verify.get("x509")).getPubKey()));
System.out.println("签名原数据: " + verify.get("oData"));
}
}
@@ -192,7 +268,7 @@ public class TestHT {
@Test
public void testDecryptDE54k12() throws UnsupportedEncodingException {
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
byte[] oData = new byte[ 4 * 1024 ];
byte[] oData = new byte[4 * 1024];
RetWrap retWrap = api.generateDEByDnHsm(dn, oData);
byte[] CipherKey = (byte[]) retWrap.get(SydApi.RET_CIPHER_KEY);
@@ -202,13 +278,13 @@ public class TestHT {
RetWrap retWrap1 = api.decryptDEByDNSoft(dn, new String(CipherKey));
printRetWrap(retWrap1);
byte[] deData = (byte[]) retWrap1.get("oData");
Assert.assertArrayEquals( deData, oData );
Assert.assertArrayEquals(deData, oData);
}
@Test
public void testDecryptDE54k21() throws UnsupportedEncodingException {
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
byte[] oData = new byte[ 4 * 1024 ];
byte[] oData = new byte[4 * 1024];
RetWrap retWrap = api.generateDEByDnSoft(dn, oData);
byte[] CipherKey = (byte[]) retWrap.get(SydApi.RET_CIPHER_KEY);
@@ -218,14 +294,14 @@ public class TestHT {
RetWrap retWrap1 = api.decryptDEByDNHsm(dn, new String(CipherKey));
printRetWrap(retWrap1);
byte[] deData = (byte[]) retWrap1.get("oData");
Assert.assertArrayEquals( deData, oData );
Assert.assertArrayEquals(deData, oData);
}
@Test
public void testDecryptDE54k() throws UnsupportedEncodingException {
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
byte[] oData = new byte[ 4 * 1024 ];
byte[] oData = new byte[4 * 1024];
RetWrap retWrap = api.generateDEByDn(dn, oData);
byte[] CipherKey = (byte[]) retWrap.get(SydApi.RET_CIPHER_KEY);
@@ -240,7 +316,7 @@ public class TestHT {
@Test
public void testDecryptDE54kr() throws UnsupportedEncodingException {
String dn = "CN=YCCA@黄金交易所@Zhuangj@1,OU=Individual-2,OU=YCCA,O=CFCA OCA1,C=CN";
byte[] oData = new byte[ 4 * 1024 ];
byte[] oData = new byte[4 * 1024];
RetWrap retWrap = api.generateDEByDn(dn, oData);
byte[] CipherKey = (byte[]) retWrap.get(SydApi.RET_CIPHER_KEY);
@@ -255,7 +331,7 @@ public class TestHT {
@Test
public void testDecryptDE520M() throws UnsupportedEncodingException {
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
byte[] oData = new byte[ 20 * 1024 * 1024 ];
byte[] oData = new byte[20 * 1024 * 1024];
RetWrap retWrap = api.generateDEByDn(dn, oData);
byte[] CipherKey = (byte[]) retWrap.get(SydApi.RET_CIPHER_KEY);
@@ -269,7 +345,7 @@ public class TestHT {
@Test
public void testDecryptDE58k() throws UnsupportedEncodingException {
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
byte[] oData = new byte[ 8 * 1024 ];
byte[] oData = new byte[8 * 1024];
RetWrap retWrap = api.generateDEByDn(dn, oData);
byte[] CipherKey = (byte[]) retWrap.get(SydApi.RET_CIPHER_KEY);
@@ -295,10 +371,6 @@ public class TestHT {
}
// 测试通过
// 76
@Test
@@ -311,7 +383,6 @@ public class TestHT {
}
// =============================工具方法==============================================
public static void printRetWrap(RetWrap rw) {
@@ -320,6 +391,7 @@ public class TestHT {
/**
* 输出
*
* @param rw
*/
public static void printRetWrap(RetWrap rw, boolean flag) {
@@ -339,7 +411,4 @@ public class TestHT {
}
}
}
}