From c181ffd06709d741a298ee300df1fb434a9cba96 Mon Sep 17 00:00:00 2001 From: zhoubin <2023106681@qq.com> Date: Mon, 29 Nov 2021 17:33:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B5=8B=E8=AF=95=E6=96=B9?= =?UTF-8?q?=E6=B3=95=EF=BC=8C=E4=BF=AE=E6=94=B9=E6=89=93=E5=8D=B0=E6=96=B9?= =?UTF-8?q?=E6=B3=95=EF=BC=8C=E4=BF=AE=E6=94=B9=E6=8C=87=E4=BB=A4=E4=B8=BA?= =?UTF-8?q?73=E7=9A=84=E6=96=B9=E6=B3=95=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DProto/73.xml | 7 +- .../sunyard/sydapi/test/TestAllMethods.java | 164 +++++++++++++++--- .../com/sunyard/sydapi/util/PrintUtil.java | 2 +- 3 files changed, 142 insertions(+), 31 deletions(-) diff --git a/DProto/73.xml b/DProto/73.xml index c5ce149..7f31903 100644 --- a/DProto/73.xml +++ b/DProto/73.xml @@ -7,6 +7,9 @@ + + 当私钥标记为全 9 时使用该区域的值 + 数字为存储私钥的索引,除了 @@ -15,10 +18,6 @@ 索引号。 - - 当私钥标记为全 9 时使用该区域的值 - - 当私钥标记为全 9 时使用该区域的值 diff --git a/src/test/java/com/sunyard/sydapi/test/TestAllMethods.java b/src/test/java/com/sunyard/sydapi/test/TestAllMethods.java index 6d57081..a3e28f6 100644 --- a/src/test/java/com/sunyard/sydapi/test/TestAllMethods.java +++ b/src/test/java/com/sunyard/sydapi/test/TestAllMethods.java @@ -867,6 +867,15 @@ public class TestAllMethods { System.out.println(s); } + // 测试通过 + // 7E + @Test + public void testSYD_SM2_Get_Dn_PublicKey_HA() { + String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; + String s = api.SYD_SM2_Get_Dn_PublicKey_HA(dn.getBytes(), 0); + System.out.println(s); + } + // 测试通过 // 80 @Test @@ -900,7 +909,7 @@ public class TestAllMethods { // E2 @Test public void testSM2OrRSAGenKeyPair() { - String index = "1111111111111122"; + String index = "1111111111111123"; // SM2 RetWrap retWrap = api.SM2OrRSAGenKeyPair(1, index, 0); @@ -928,12 +937,22 @@ public class TestAllMethods { printRetWrap(retWrap); } + // 测试通过 // 73 @Test public void testSM2ConfirmSessionKeyC() { -// RetWrap retWrap = api.SM2ConfirmSessionKeyC(); -// printRetWrap(retWrap); + String userId = "1111111111111123"; + + String pk="03420004AAFCB1EACA86272281A20FE1957EEB543AB97571048D5B6350C4227980D0F109A7D5797EC97D6D874D003C4AE7C5FBFFD755413264D85DA5B0AC61B6C661CA32"; + + RetWrap retWrap = api.SM2GenSessionKey(pk); + printRetWrap(retWrap); + + String cipherKey = (String) retWrap.get("CipherKey"); + + RetWrap retWrap1 = api.SM2ConfirmSessionKeyC(userId, cipherKey); + printRetWrap(retWrap1); } // 测试通过 @@ -941,10 +960,15 @@ public class TestAllMethods { @Test public void testSM2ConfirmSessionKey() { - String sk = "00 01 00 00 6F D3 0C 96 79 22 C2 53 9B 47 3B 51 65 D7 9C 49 71 7A 5A 54 AA 24 9A 4F 8B AC DF 30 0B 31 59 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "; - String cipherKey = "30 78 02 20 61 2F 7E C1 4F 59 DB 2A C2 A9 FB 2E 13 61 69 3C 88 B3 6D 14 99 5B E8 B8 B7 53 5F 03 90 BB D2 DC 02 20 34 69 BA 09 93 08 0F 13 1F A1 EB 2C 2A 20 C5 48 18 32 A6 7E B6 07 E5 39 84 6B 9D 70 E9 1B 5D 5D 04 20 C5 EE D4 44 10 60 62 ED 77 74 C2 4D C1 71 12 2A 64 FF CA 48 CC 6E 44 EC BC 75 D2 31 DE 7E D0 D7 04 10 41 48 E5 D7 54 65 AE 2E 35 F5 07 84 06 4B 70 D6 "; - RetWrap retWrap = api.SM2ConfirmSessionKey(changeStr(sk), changeStr(cipherKey)); + String pk="03420004AAFCB1EACA86272281A20FE1957EEB543AB97571048D5B6350C4227980D0F109A7D5797EC97D6D874D003C4AE7C5FBFFD755413264D85DA5B0AC61B6C661CA32"; + String sk="00010000A910C2C44646A5A43338F0F505A06AA91442BFD245082C7774F6C75247F2196F0000000000000000000000000000000000000000000000000000000000000000"; + RetWrap retWrap = api.SM2GenSessionKey(pk); printRetWrap(retWrap); + + String cipherKey = (String) retWrap.get("CipherKey"); + + RetWrap retWrap1 = api.SM2ConfirmSessionKey(sk, cipherKey); + printRetWrap(retWrap1); } // 74 @@ -972,6 +996,29 @@ public class TestAllMethods { printRetWrap(retWrap, true); } + // 测试通过 + // 76 + @Test + public void testSM3Hash2() { + String publicKey = "0342000469DE3847DD6A66DA96DB8F2DCFA32E10E680FF2EF4A592079E7C3A44320BB15084E7CA9782A39B6E28F07C04FE00D68958A2605921E71712D56C1E4435A39FA5"; + String orgData = "FFFFFFFFFFFFFFFF"; + + byte[] hash = api.SM3Hash(publicKey, orgData.getBytes()); + + System.out.println("hash:" + Util.bytes2HexString(hash)); + } + + // 测试通过 + // 76 + @Test + public void testSM3Hash3() { + String orgData = "FFFFFFFFFFFFFFFF"; + + byte[] hash = api.SM3Hash(orgData.getBytes()); + + System.out.println("hash:" + Util.bytes2HexString(hash)); + } + // 测试通过 // 71 @Test @@ -1112,6 +1159,16 @@ public class TestAllMethods { System.out.println(Util.bytes2HexString(bytes)); } + // 测试通过 + // 6A + @Test + public void testGenerateDE() { + String dn = "1004282452"; + + RetWrap retWrap = api.generateDE(dn, (byte) 0x30); + printRetWrap(retWrap); + } + // 001B3030303030303030 // 3641 // 30 @@ -1160,6 +1217,20 @@ public class TestAllMethods { printRetWrap(retWrap1); } + // 测试通过 + // 6B + @Test + public void testDecryptDE2() { + String sn = "1004282452"; + RetWrap retWrap = api.generateDE(sn, (byte) 0x30); + String sessionKey = (String) retWrap.get("SessionKey"); + String CipherKey = (String) retWrap.get("CipherKey"); + String KCV = (String) retWrap.get("KCV"); + + RetWrap retWrap1 = api.decryptDE(sn, CipherKey); + printRetWrap(retWrap1); + } + // 测试通过 // 6C @Test @@ -1403,17 +1474,25 @@ public class TestAllMethods { System.out.println(b); } + // 测试通过 // 77 @Test public void testSM2Encrypt() { api.SM2Encrypt(Util.hexString2Bytes(publicKey), orgData.getBytes()); } + // 测试通过 // 78 @Test public void testSM2DecryptC() { - String enData = "307802206F1A39E3FE630E5F34C38A8B1AA1896D49DF9852A8D36F8A895900204D0BED6802200C7FF860A3FA429928C0320E05CC32602D7003477D66BCF58D54DAB202C8966104205E91FAA2671172D919346A154A9DBAE8048F2F0C20CA56C0A7ADA16A3076D2F904102A176D2250E36B7209BA78746A484622"; - api.SM2DecryptC(certId, enData); + String certId = "1111111111111122"; + String publicKey = "0342000469DE3847DD6A66DA96DB8F2DCFA32E10E680FF2EF4A592079E7C3A44320BB15084E7CA9782A39B6E28F07C04FE00D68958A2605921E71712D56C1E4435A39FA5"; + String orgData = "FFFFFFFFFFFFFFFF"; + String s = api.SM2Encrypt(Util.hexString2Bytes(publicKey), orgData.getBytes()); + + byte[] bytes = api.SM2DecryptC(certId, s); + + System.out.println("decData:" + new String(bytes)); } // QQ @@ -1422,7 +1501,7 @@ public class TestAllMethods { String s = api.SM2GetPublicKeyC("0000000011111111", 0); } - + // 测试通过 // E0 @Test public void testSYMEncryptData() { @@ -1443,25 +1522,17 @@ public class TestAllMethods { System.out.println(Util.bytes2HexString(bytes)); } - // 015C0000000000000001 - // 8004 - // 31 - // 433D434E2C4F3D53756E796172642C4F553D383030312C434E3D3830303100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - // 0004 - // 32323232 - // 0047 - // 30450220686C96208702D3DB5D71FEFFDFA211DBF19F3576196D78E97E238A2D4AA1ECDF022100D19DE3120085A6EB524F4BBB69BD3C21CC5BE3008968446CBEA7EFDD3E0A147A - // 0000 - + // 测试通过 // 8004 @Test public void testSYD_NakedVerify() { String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; - byte[] bytes = api.SYD_NakedSign("111".getBytes(), dn); + String orgData = "111"; + byte[] bytes = api.SYD_NakedSign(orgData.getBytes(), dn); String sign = Util.bytes2HexString(bytes); System.out.println(sign); - boolean b = api.SYD_NakedVerify("2222".getBytes(), bytes, dn); + boolean b = api.SYD_NakedVerify(orgData.getBytes(), bytes, dn); System.out.println(b); } @@ -1480,9 +1551,13 @@ public class TestAllMethods { // 8006 @Test public void testSYD_DetachedVerify() { - String orgData = "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"; - String sign = "MIICnwYKKoEcz1UGAQQCAqCCAo8wggKLAgEBMQwwCgYIKoEcz1UBgxEwDAYKKoEcz1UGAQQCAaCCAckwggHFMIIBaKADAgECAgg8kwAAAAAAJTAMBggqgRzPVQGDdQUAMCYxCzAJBgNVBAYTAkNOMRcwFQYDVQQDDA5TdW55YXJkU00yUm9vdDAeFw0xNzA1MTcwMjUyNDRaFw0yMjA3MjUwMjUyNDRaMD0xCzAJBgNVBAYTAkNOMRAwDgYDVQQKDAdTdW55YXJkMQ0wCwYDVQQLDAQ4MDAxMQ0wCwYDVQQDDAQ4MDAxMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEPto6EHt8w1zABcf78LtOa0OgfuFONgYD0i7KKmALLQ+gMFXUANEkAwD1Rki4SdE/ULMw/xQ1G1ZFsTaGggplu6NnMGUwDgYDVR0PAQH/BAQDAgDAMBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFPd/2q7/IcbZOnqtoPus/gKlTtXBMB0GA1UdDgQWBBQDFmWmNgMGkEzYhS6bGtHcgswWejAMBggqgRzPVQGDdQUAA0kAMEYCIQCJdmRxn5Z+YXnXKLrAEc2dsnlI1G8UhTJoTJq+bekOpwIhAL6mF/yqSHL5z8gf2IopfqKugxXVTOj97w8QYVP/LWlxMYGcMIGZAgEBMDIwJjELMAkGA1UEBhMCQ04xFzAVBgNVBAMMDlN1bnlhcmRTTTJSb290Agg8kwAAAAAAJTAKBggqgRzPVQGDETALBgkqgRzPVQGCLQEERzBFAiAb/hUmQ7yvOtGqL1mkE1zU3H0LblyTHunPicdwK8DGKgIhANU6nux7gkB/pOBtLscJFruQ8JgPQamL6Qi1NhlvGxlz"; - api.SYD_DetachedVerify(Util.hexString2Bytes(orgData), sign); + String orgData = "3214312341243214"; + String DN = "C=CN,O=Sunyard,OU=8001,CN=8001"; + String sign = api.SYD_DetachedSign(orgData.getBytes(), DN); + System.out.println("签名结果" + sign); + + boolean b = api.SYD_DetachedVerify(orgData.getBytes(), sign); + System.out.println("验签结果:" + b); } // 8012 @@ -1521,10 +1596,46 @@ public class TestAllMethods { System.out.println(s); } - // 8024 + // 测试通过 + // 8005 @Test public void testDetachedSign() { - api.detachedSign(1, "111".getBytes(), 3); + String publicKey = "0342000469DE3847DD6A66DA96DB8F2DCFA32E10E680FF2EF4A592079E7C3A44320BB15084E7CA9782A39B6E28F07C04FE00D68958A2605921E71712D56C1E4435A39FA5"; + String orgData = "FFFFFFFFFFFFFFFF"; + String testCertNo = "C=CN,O=Sunyard,OU=8001,CN=8001"; + + byte[] hash = api.SM3Hash(publicKey, orgData.getBytes()); + + String sign = api.detachedSign( + SydApi.DATA_HASH, + hash, + testCertNo + ); + + System.out.println("\t签名结果: " + sign); + + boolean verify = api.detachedVerify( + SydApi.DATA_HASH, + hash, + sign + ); + + System.out.println("\t验签结果: " + verify); + } + + // 测试通过 + // 8005 + @Test + public void testSm3AndDetachedSign() { + String publicKey = "0342000469DE3847DD6A66DA96DB8F2DCFA32E10E680FF2EF4A592079E7C3A44320BB15084E7CA9782A39B6E28F07C04FE00D68958A2605921E71712D56C1E4435A39FA5"; + String orgData = "FFFFFFFFFFFFFFFF"; + String testCertNo = "C=CN,O=Sunyard,OU=8001,CN=8001"; + + String sign = api.sm3AndDetachedSign(orgData.getBytes(), publicKey, testCertNo); + System.out.println("签名结果: " + sign); + + boolean b = api.sm3AndDetachedVerify(orgData.getBytes(), publicKey, sign); + System.out.println("验签结果:" + b); } // 8026 @@ -1813,3 +1924,4 @@ public class TestAllMethods { } } } + diff --git a/src/test/java/com/sunyard/sydapi/util/PrintUtil.java b/src/test/java/com/sunyard/sydapi/util/PrintUtil.java index ab47fc8..0686452 100644 --- a/src/test/java/com/sunyard/sydapi/util/PrintUtil.java +++ b/src/test/java/com/sunyard/sydapi/util/PrintUtil.java @@ -23,7 +23,7 @@ public class PrintUtil { if (flag) { System.out.println(s + ": " + Util.bytes2HexString((byte[]) o)); } else { - System.out.println(s + ": " + new String(Util.hexString2Bytes(Util.bytes2HexString((byte[]) o)))); + System.out.println(s + ": " + new String((byte[]) o)); } } else { System.out.println(s + ":" + o);