添加测试方法,修改打印方法,修改指令为73的方法。

This commit is contained in:
zhoubin 2021-11-29 17:33:23 +08:00
parent db746655f4
commit c181ffd067
3 changed files with 142 additions and 31 deletions

View File

@ -7,6 +7,9 @@
</command> </command>
<data extend="data"> <data extend="data">
<privateKeyLength len="4" :value="privateKeyLen()" cn="私钥长度">
当私钥标记为全 9 时使用该区域的值
</privateKeyLength>
<privateKeyTag len="27" cn="指示私钥位置的标记" :if="useLocalKey()" > <privateKeyTag len="27" cn="指示私钥位置的标记" :if="useLocalKey()" >
数字为存储私钥的索引,除了 数字为存储私钥的索引,除了
@ -15,10 +18,6 @@
索引号。 索引号。
</privateKeyTag> </privateKeyTag>
<privateKeyLength len="4" :value="privateKeyLen()" cn="私钥长度">
当私钥标记为全 9 时使用该区域的值
</privateKeyLength>
<privateKey cn="私钥" > <privateKey cn="私钥" >
当私钥标记为全 9 时使用该区域的值 当私钥标记为全 9 时使用该区域的值
</privateKey> </privateKey>

View File

@ -867,6 +867,15 @@ public class TestAllMethods {
System.out.println(s); 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 // 80
@Test @Test
@ -900,7 +909,7 @@ public class TestAllMethods {
// E2 // E2
@Test @Test
public void testSM2OrRSAGenKeyPair() { public void testSM2OrRSAGenKeyPair() {
String index = "1111111111111122"; String index = "1111111111111123";
// SM2 // SM2
RetWrap retWrap = api.SM2OrRSAGenKeyPair(1, index, 0); RetWrap retWrap = api.SM2OrRSAGenKeyPair(1, index, 0);
@ -928,12 +937,22 @@ public class TestAllMethods {
printRetWrap(retWrap); printRetWrap(retWrap);
} }
// 测试通过
// 73 // 73
@Test @Test
public void testSM2ConfirmSessionKeyC() { public void testSM2ConfirmSessionKeyC() {
// RetWrap retWrap = api.SM2ConfirmSessionKeyC(); String userId = "1111111111111123";
// printRetWrap(retWrap);
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 @Test
public void testSM2ConfirmSessionKey() { 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 pk="03420004AAFCB1EACA86272281A20FE1957EEB543AB97571048D5B6350C4227980D0F109A7D5797EC97D6D874D003C4AE7C5FBFFD755413264D85DA5B0AC61B6C661CA32";
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 "; String sk="00010000A910C2C44646A5A43338F0F505A06AA91442BFD245082C7774F6C75247F2196F0000000000000000000000000000000000000000000000000000000000000000";
RetWrap retWrap = api.SM2ConfirmSessionKey(changeStr(sk), changeStr(cipherKey)); RetWrap retWrap = api.SM2GenSessionKey(pk);
printRetWrap(retWrap); printRetWrap(retWrap);
String cipherKey = (String) retWrap.get("CipherKey");
RetWrap retWrap1 = api.SM2ConfirmSessionKey(sk, cipherKey);
printRetWrap(retWrap1);
} }
// 74 // 74
@ -972,6 +996,29 @@ public class TestAllMethods {
printRetWrap(retWrap, true); 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 // 71
@Test @Test
@ -1112,6 +1159,16 @@ public class TestAllMethods {
System.out.println(Util.bytes2HexString(bytes)); System.out.println(Util.bytes2HexString(bytes));
} }
// 测试通过
// 6A
@Test
public void testGenerateDE() {
String dn = "1004282452";
RetWrap retWrap = api.generateDE(dn, (byte) 0x30);
printRetWrap(retWrap);
}
// 001B3030303030303030 // 001B3030303030303030
// 3641 // 3641
// 30 // 30
@ -1160,6 +1217,20 @@ public class TestAllMethods {
printRetWrap(retWrap1); 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 // 6C
@Test @Test
@ -1403,17 +1474,25 @@ public class TestAllMethods {
System.out.println(b); System.out.println(b);
} }
// 测试通过
// 77 // 77
@Test @Test
public void testSM2Encrypt() { public void testSM2Encrypt() {
api.SM2Encrypt(Util.hexString2Bytes(publicKey), orgData.getBytes()); api.SM2Encrypt(Util.hexString2Bytes(publicKey), orgData.getBytes());
} }
// 测试通过
// 78 // 78
@Test @Test
public void testSM2DecryptC() { public void testSM2DecryptC() {
String enData = "307802206F1A39E3FE630E5F34C38A8B1AA1896D49DF9852A8D36F8A895900204D0BED6802200C7FF860A3FA429928C0320E05CC32602D7003477D66BCF58D54DAB202C8966104205E91FAA2671172D919346A154A9DBAE8048F2F0C20CA56C0A7ADA16A3076D2F904102A176D2250E36B7209BA78746A484622"; String certId = "1111111111111122";
api.SM2DecryptC(certId, enData); 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 // QQ
@ -1422,7 +1501,7 @@ public class TestAllMethods {
String s = api.SM2GetPublicKeyC("0000000011111111", 0); String s = api.SM2GetPublicKeyC("0000000011111111", 0);
} }
// 测试通过
// E0 // E0
@Test @Test
public void testSYMEncryptData() { public void testSYMEncryptData() {
@ -1443,25 +1522,17 @@ public class TestAllMethods {
System.out.println(Util.bytes2HexString(bytes)); System.out.println(Util.bytes2HexString(bytes));
} }
// 015C0000000000000001 // 测试通过
// 8004
// 31
// 433D434E2C4F3D53756E796172642C4F553D383030312C434E3D3830303100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
// 0004
// 32323232
// 0047
// 30450220686C96208702D3DB5D71FEFFDFA211DBF19F3576196D78E97E238A2D4AA1ECDF022100D19DE3120085A6EB524F4BBB69BD3C21CC5BE3008968446CBEA7EFDD3E0A147A
// 0000
// 8004 // 8004
@Test @Test
public void testSYD_NakedVerify() { public void testSYD_NakedVerify() {
String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; 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); String sign = Util.bytes2HexString(bytes);
System.out.println(sign); 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); System.out.println(b);
} }
@ -1480,9 +1551,13 @@ public class TestAllMethods {
// 8006 // 8006
@Test @Test
public void testSYD_DetachedVerify() { public void testSYD_DetachedVerify() {
String orgData = "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"; String orgData = "3214312341243214";
String sign = "MIICnwYKKoEcz1UGAQQCAqCCAo8wggKLAgEBMQwwCgYIKoEcz1UBgxEwDAYKKoEcz1UGAQQCAaCCAckwggHFMIIBaKADAgECAgg8kwAAAAAAJTAMBggqgRzPVQGDdQUAMCYxCzAJBgNVBAYTAkNOMRcwFQYDVQQDDA5TdW55YXJkU00yUm9vdDAeFw0xNzA1MTcwMjUyNDRaFw0yMjA3MjUwMjUyNDRaMD0xCzAJBgNVBAYTAkNOMRAwDgYDVQQKDAdTdW55YXJkMQ0wCwYDVQQLDAQ4MDAxMQ0wCwYDVQQDDAQ4MDAxMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEPto6EHt8w1zABcf78LtOa0OgfuFONgYD0i7KKmALLQ+gMFXUANEkAwD1Rki4SdE/ULMw/xQ1G1ZFsTaGggplu6NnMGUwDgYDVR0PAQH/BAQDAgDAMBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFPd/2q7/IcbZOnqtoPus/gKlTtXBMB0GA1UdDgQWBBQDFmWmNgMGkEzYhS6bGtHcgswWejAMBggqgRzPVQGDdQUAA0kAMEYCIQCJdmRxn5Z+YXnXKLrAEc2dsnlI1G8UhTJoTJq+bekOpwIhAL6mF/yqSHL5z8gf2IopfqKugxXVTOj97w8QYVP/LWlxMYGcMIGZAgEBMDIwJjELMAkGA1UEBhMCQ04xFzAVBgNVBAMMDlN1bnlhcmRTTTJSb290Agg8kwAAAAAAJTAKBggqgRzPVQGDETALBgkqgRzPVQGCLQEERzBFAiAb/hUmQ7yvOtGqL1mkE1zU3H0LblyTHunPicdwK8DGKgIhANU6nux7gkB/pOBtLscJFruQ8JgPQamL6Qi1NhlvGxlz"; String DN = "C=CN,O=Sunyard,OU=8001,CN=8001";
api.SYD_DetachedVerify(Util.hexString2Bytes(orgData), sign); 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 // 8012
@ -1521,10 +1596,46 @@ public class TestAllMethods {
System.out.println(s); System.out.println(s);
} }
// 8024 // 测试通过
// 8005
@Test @Test
public void testDetachedSign() { 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 // 8026
@ -1813,3 +1924,4 @@ public class TestAllMethods {
} }
} }
} }

View File

@ -23,7 +23,7 @@ public class PrintUtil {
if (flag) { if (flag) {
System.out.println(s + ": " + Util.bytes2HexString((byte[]) o)); System.out.println(s + ": " + Util.bytes2HexString((byte[]) o));
} else { } else {
System.out.println(s + ": " + new String(Util.hexString2Bytes(Util.bytes2HexString((byte[]) o)))); System.out.println(s + ": " + new String((byte[]) o));
} }
} else { } else {
System.out.println(s + ":" + o); System.out.println(s + ":" + o);