From f90276218cf9272bdb99342286a897637f0e27f4 Mon Sep 17 00:00:00 2001 From: cheney Date: Thu, 26 May 2022 17:13:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/sunyard/sydapi/test/TestHAApi.java | 2 +- .../java/com/sunyard/sydapi/test/TestMAC.java | 71 ++++++++++++ .../com/sunyard/sydapi/test/TestPKCS1.java | 11 +- .../com/sunyard/sydapi/test/TestPKCS7.java | 2 +- .../java/com/sunyard/sydapi/test/TestSV.java | 104 ++++++++++++++++++ 5 files changed, 187 insertions(+), 3 deletions(-) create mode 100644 src/test/java/com/sunyard/sydapi/test/TestMAC.java create mode 100644 src/test/java/com/sunyard/sydapi/test/TestSV.java diff --git a/src/test/java/com/sunyard/sydapi/test/TestHAApi.java b/src/test/java/com/sunyard/sydapi/test/TestHAApi.java index 8376a96..768b119 100644 --- a/src/test/java/com/sunyard/sydapi/test/TestHAApi.java +++ b/src/test/java/com/sunyard/sydapi/test/TestHAApi.java @@ -1,4 +1,4 @@ -package com.sunyard.sydapi.test; +package com.sunyard.sydapi.sample; import com.sunyard.cert.X509; diff --git a/src/test/java/com/sunyard/sydapi/test/TestMAC.java b/src/test/java/com/sunyard/sydapi/test/TestMAC.java new file mode 100644 index 0000000..ab083d6 --- /dev/null +++ b/src/test/java/com/sunyard/sydapi/test/TestMAC.java @@ -0,0 +1,71 @@ +package com.sunyard.sydapi.test; + +import com.sunyard.RetWrap; +import com.sunyard.proto.Util; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import racal.sunyard.main.SydApi4j; + +public class TestMAC { + private SydApi4j api; + + private final int KeyType = 1; + + private String key = "SK000000000000000000800000000"; + private String msg = "AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB"; + + @Before + public void before() { + // 通过设置debug的属性开启debug,如果不设置则默认不打开 + System.setProperty("com.sunyard.sydapi4j.debug", "true"); + api = (SydApi4j) new SydApi4j().connect("192.168.0.200", 8889, null, 1000); + } + + @After + public void after() { + try { + this.api.disconnect(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + @Test + public void testMAC() { + // 分块进行计算 + final int blockSize = 1024; + + String mac = api.MACCalc(2, KeyType, key, 0, msg.getBytes(), 3); + System.out.println( mac ); + + } + + @Test + public void testSM4MAC() { + // 分块进行计算 + final int blockSize = 1024; + + String data = Util.bytes2HexString( msg.getBytes() ); + System.out.println( data ); + + RetWrap retWrap = api.genMAB(0, KeyType, 2, key, null, data.getBytes() ); + System.out.println( new String( (byte[]) retWrap.get("MAB") )); + + } + + + // 分块进行计算 + @Test + public void testSM4MAC2() { + + String data = Util.bytes2HexString( msg.getBytes() ); + System.out.println( data ); + + String hash = api.genMAB(2, KeyType, key, data.getBytes() ); + System.out.println( hash ); + + } + +} diff --git a/src/test/java/com/sunyard/sydapi/test/TestPKCS1.java b/src/test/java/com/sunyard/sydapi/test/TestPKCS1.java index 59edd3d..e580cc7 100644 --- a/src/test/java/com/sunyard/sydapi/test/TestPKCS1.java +++ b/src/test/java/com/sunyard/sydapi/test/TestPKCS1.java @@ -1,4 +1,4 @@ -package com.sunyard.sydapi.test; +package com.sunyard.sydapi.sample; import com.sunyard.SydApi; @@ -38,6 +38,15 @@ public class TestPKCS1 { System.out.println("签名结果 " + Util.bytes2HexString(sign) ); + boolean pass = api.SYD_NakedVerify(testData.getBytes(), sign, testCertNo); + System.out.println("验签结果 " + pass); + } + + public static void case2(SydApi api) { + byte[] sign = api.SYD_NakedSign(testData.getBytes(), testCertNo); + System.out.println("签名结果 " + Util.bytes2HexString(sign) ); + + boolean pass = api.SYD_NakedVerify(testData.getBytes(), sign, testCertNo); System.out.println("验签结果 " + pass); } diff --git a/src/test/java/com/sunyard/sydapi/test/TestPKCS7.java b/src/test/java/com/sunyard/sydapi/test/TestPKCS7.java index a7b0560..5b507b4 100644 --- a/src/test/java/com/sunyard/sydapi/test/TestPKCS7.java +++ b/src/test/java/com/sunyard/sydapi/test/TestPKCS7.java @@ -1,4 +1,4 @@ -package com.sunyard.sydapi.test; +package com.sunyard.sydapi.sample; import com.sunyard.SydApi; diff --git a/src/test/java/com/sunyard/sydapi/test/TestSV.java b/src/test/java/com/sunyard/sydapi/test/TestSV.java new file mode 100644 index 0000000..e312a01 --- /dev/null +++ b/src/test/java/com/sunyard/sydapi/test/TestSV.java @@ -0,0 +1,104 @@ +package com.sunyard.sydapi.test; + + +import com.sunyard.SydApi; +import com.sunyard.proto.Util; +import racal.sunyard.main.SydApi4j; +import racal.sunyard.main.SydApiBuilder; + +import static com.sunyard.SydApi.*; + + +public class TestSV { + + private static final String inHexData = "67c6697351ff4aec29cdbaabf2fbe346"; + private static final String dn = "C=CN,ST=浙江,L=杭州,O=信雅达测试123,OU=安全应用1,OU=安全应用2,CN=@信雅达安全测试"; + + + public static void main(String[] args) { + System.setProperty("com.sunyard.sydapi4j.debug", "true"); + // 连接加密机 + SydApi4j api = (SydApi4j) new SydApi4j().connect("172.16.18.59", 8889, null, 1000); + + SydApiBuilder builder = new SydApiBuilder().setIp("192.168.5.88"); + builder.build(); + + try { + + // case1(api); + case4(api); + case5(api); + + } catch (Exception e) { + e.printStackTrace(); + } finally { + api.disconnect(); + } + } + + public static void case1(SydApi api) { + String sign = api.attachedSign( Util.hexString2Bytes( inHexData ), dn ); + System.out.println("签名结果 " + sign ); + + + boolean pass = api.attachedVerify(sign); + System.out.println("验签结果 " + pass); + } + + + public static void case2(SydApi api) { + System.out.println("begin SYD_Sign_Detach"); + String sign = api.detachedSign( DATA_ORIGIN, Util.hexString2Bytes( inHexData ), dn ); + System.out.println("签名结果 " + sign ); + System.out.println("begin SYD_Sign_Detach"); + + System.out.println("begin SYD_Verify_Detach"); + boolean pass = api.detachedVerify(DATA_ORIGIN, Util.hexString2Bytes( inHexData ), sign); + System.out.println("验签结果 " + pass); + System.out.println("end SYD_Verify_Detach"); + } + + + public static void case3(SydApi api) { + System.out.println("begin SYD_NakedSign"); + byte[] sign = api.SYD_NakedSign( Util.hexString2Bytes(inHexData) , dn); + System.out.println("签名结果 " + Util.bytes2HexString(sign) ); + System.out.println("end SYD_NakedSign"); + + System.out.println("begin SYD_NakedVerify"); + boolean pass = api.SYD_NakedVerify( Util.hexString2Bytes(inHexData), sign, dn); + System.out.println("验签结果 " + pass); + System.out.println("end SYD_NakedVerify"); + } + + + public static void case4(SydApi api) { + // 不传 ID + String pk = api.SM2GetPublicKeyC("65667", 0 ); + String sk = api.SM2GetPrivateKeyC("000000000006566700000000001"); + + String sign = api.SM2SignC( 0, sk, Util.hexString2Bytes(pk), Util.hexString2Bytes(inHexData) ); + System.out.println("签名结果 " + sign ); + + boolean pass = api.SM2Verify(Util.hexString2Bytes(pk), Util.hexString2Bytes(inHexData), sign ); + System.out.println("验签结果 " + pass); + } + + + public static void case5(SydApi api) { + // 传 ID + String uid = "8765432187654321"; + String pk = api.SM2GetPublicKeyC("65667", 0 ); + String sk = api.SM2GetPrivateKeyC("000000000006566700000000001"); + + System.out.println("begin SYD_Sign_P1"); + String sign = api.SM2SignC( 0, uid, sk, Util.hexString2Bytes(pk), Util.hexString2Bytes(inHexData) ); + System.out.println("签名结果 " + Util.bytes2HexString( Util.decodeBase64( sign ) ) ); + System.out.println("end SYD_Verify_P1"); + + System.out.println("begin SYD_Sign_P1"); + boolean pass = api.SM2Verify(uid, 1, Util.hexString2Bytes(pk), Util.hexString2Bytes(inHexData), sign ); + System.out.println("验签结果 " + pass); + System.out.println("end SYD_Verify_P1"); + } +}