测试接口
This commit is contained in:
@@ -1,14 +1,15 @@
|
||||
package com.sunyard.sydapi.test;
|
||||
|
||||
import com.sunyard.RetWrap;
|
||||
import com.sunyard.SydApi;
|
||||
import com.sunyard.cert.X509;
|
||||
import com.sunyard.proto.Util;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import racal.sunyard.main.SydApi4j;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.io.*;
|
||||
|
||||
public class TestAllMethods {
|
||||
|
||||
@@ -20,7 +21,8 @@ public class TestAllMethods {
|
||||
public void before() {
|
||||
System.setProperty("com.sunyard.sydapi4j.debug", "true");
|
||||
// api = (SydApi4j) new SydApi4j().connect("172.16.17.163", 8889, null, 1000);
|
||||
api = (SydApi4j) new SydApi4j().connect("192.168.0.100", 8889, null, 1000);
|
||||
api = (SydApi4j) new SydApi4j().connect("192.168.1.7", 8889, null, 1000);
|
||||
// api = (SydApi4j) new SydApi4j().connect("192.168.0.66", 8889, null, 1000);
|
||||
}
|
||||
|
||||
@After
|
||||
@@ -58,6 +60,37 @@ public class TestAllMethods {
|
||||
}
|
||||
}
|
||||
|
||||
// 获取证书
|
||||
public String getCertStr(String path) {
|
||||
|
||||
BufferedInputStream bis = null;
|
||||
try {
|
||||
bis = new BufferedInputStream(new FileInputStream(path));
|
||||
|
||||
StringBuilder str = new StringBuilder();
|
||||
|
||||
int len = 0;
|
||||
|
||||
while ((len = bis.read()) != -1) {
|
||||
str.append((char) len);
|
||||
}
|
||||
|
||||
return str.toString();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
if (bis != null) {
|
||||
try {
|
||||
bis.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将hex类型的数组转为byte型
|
||||
* {"X0404894E7B8DE129B4FF4EF9889E56A2", "X94D35D86EF1F3213D55C47822F87D385"}
|
||||
@@ -87,8 +120,55 @@ public class TestAllMethods {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 读取文件中的信息,返回byte数组
|
||||
* @param filePath 文件路径
|
||||
* @return
|
||||
*/
|
||||
public byte[] inputStream2ByteArray(String filePath) {
|
||||
|
||||
InputStream in = null;
|
||||
ByteArrayOutputStream out = null;
|
||||
byte[] data = null;
|
||||
try {
|
||||
in = new FileInputStream(filePath);
|
||||
|
||||
out = new ByteArrayOutputStream();
|
||||
byte[] buffer = new byte[1024 * 4];
|
||||
int n = 0;
|
||||
while ((n = in.read(buffer)) != -1) {
|
||||
out.write(buffer, 0, n);
|
||||
}
|
||||
|
||||
data = out.toByteArray();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
|
||||
if (in != null) {
|
||||
try {
|
||||
in.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
if (out != null) {
|
||||
try {
|
||||
out.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
// A0 1.1.1 对称密钥产生,
|
||||
// 测试通过
|
||||
// A0
|
||||
@Test
|
||||
public void testGenSymmetricKey() {
|
||||
RetWrap retWrap = api.genSymmetricKey("000", 'X');
|
||||
@@ -106,6 +186,7 @@ public class TestAllMethods {
|
||||
|
||||
// A0 1.1.2 对称密钥产生, 对比之前添加了可产生ZMK加密下的密钥,
|
||||
// 测试通过
|
||||
// A0
|
||||
@Test
|
||||
public void testGenSymKey() {
|
||||
// 此密钥方案为: 1A+K+27位的索引号
|
||||
@@ -416,6 +497,7 @@ public class TestAllMethods {
|
||||
|
||||
// 006E00000000000000004342303030303030584B303030303030303030303030303030313030303030303030303031584B30303030303030303030303030303032303030303030303030303250313131313239384430324231433742433945303130313135373231323733373831314E
|
||||
|
||||
// 没有该指令
|
||||
// CB
|
||||
@Test
|
||||
public void testTransPinFrOneKeyToAno() {
|
||||
@@ -442,17 +524,65 @@ public class TestAllMethods {
|
||||
System.out.println(new String(bytes));
|
||||
}
|
||||
|
||||
// 00000000
|
||||
// MA
|
||||
// P
|
||||
// 1
|
||||
// 0
|
||||
// 0
|
||||
// 1
|
||||
// XK122222222222222200312222222
|
||||
// 11110000
|
||||
|
||||
// 00300000000000000000
|
||||
// 4D41
|
||||
// 50
|
||||
// 31
|
||||
// 30
|
||||
// 30
|
||||
// 31
|
||||
// 584B313232323232323232323232323232323030333132323232323232
|
||||
// 31313131
|
||||
|
||||
// 测试通过
|
||||
// MA
|
||||
@Test
|
||||
public void testMACCalc() {
|
||||
|
||||
String s = api.MACCalc(1, 0, "XK122222222222222200312222222", 0, "1111".getBytes(), 1);
|
||||
System.out.println(s);
|
||||
}
|
||||
|
||||
// 003C0000000000000000
|
||||
// 4D43
|
||||
// 50
|
||||
// 31
|
||||
// 30
|
||||
// 30
|
||||
// 32
|
||||
// 584B313232323232323232323232323232323030333132323232323232
|
||||
// 3131313131313131
|
||||
// 3131313131313131
|
||||
|
||||
// 00383030303030303030
|
||||
// 4D43
|
||||
// 50
|
||||
// 31
|
||||
// 30
|
||||
// 30
|
||||
// 31
|
||||
// 584B313232323232323232323232323232323030333132323232323232
|
||||
// 31313131
|
||||
// 3131313131313131
|
||||
|
||||
// MC
|
||||
@Test
|
||||
public void testMACCheck() {
|
||||
String AK = "XK122222222222222200312222222";
|
||||
|
||||
String s = api.MACCalc(1, 0, AK, 0, "1111".getBytes(), 1);
|
||||
|
||||
api.MACCheck(1, 0, AK, 0, "1111".getBytes(), s);
|
||||
}
|
||||
|
||||
String key = "X40B6169F6349506040B6169F63495060";
|
||||
@@ -474,25 +604,16 @@ public class TestAllMethods {
|
||||
System.out.println(new String(bytes));
|
||||
}
|
||||
|
||||
// 00643030303030303030
|
||||
// 4530
|
||||
// 31
|
||||
// 30
|
||||
// 32
|
||||
// 30
|
||||
// 583430423631363946363334393530363034304236313639463633343935303630
|
||||
// 31
|
||||
// 31
|
||||
// 30303030303030303030303030303030
|
||||
// 303130
|
||||
// 4141414141414141414141414141414142424242424242424242424242424242
|
||||
|
||||
// 测试通过
|
||||
// E0
|
||||
@Test
|
||||
public void testSYMEnDeData() {
|
||||
String iv = "0000000000000000";
|
||||
RetWrap retWrap = api.SYMEnDeData(true, 0, key, 2, 1, msg.getBytes(), iv.getBytes(), 1);
|
||||
printRetWrap(retWrap);
|
||||
String seesionKey = "XFD92E1D7C45FA56EAD2F4FC1E7898465";
|
||||
String pInData = "1111111111111111";
|
||||
String IV = "1111111111111111";
|
||||
|
||||
RetWrap retWrap = api.SYMEnDeData(true, 0, seesionKey, 2, 0, pInData.getBytes(), IV.getBytes(), 0);
|
||||
printRetWrap(retWrap, true);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
@@ -536,31 +657,76 @@ public class TestAllMethods {
|
||||
System.out.println(aBoolean);
|
||||
}
|
||||
|
||||
// 00A30000000000000000
|
||||
// 3737
|
||||
// 31
|
||||
// 30313238
|
||||
// 5E1A8F50696C737AFCA0D2F7093E90D3913204013C4A85072AA8D3CDBE1782860000000000000000000000000000000000000000000000000000000000000000C729A69AA23CA0736E5C223487DF211D51BAFFDCF06914CE2E855EF6DE0F42AB0000000000000000000000000000000000000000000000000000000000000000
|
||||
// 30303136
|
||||
// 46464646464646464646464646464646
|
||||
|
||||
// 测试通过
|
||||
// 77
|
||||
@Test
|
||||
public void testEncryptByPk() {
|
||||
String pk = "034200041CD47354867E12B9D138F098413C47D42EDEB2AD402EAB431C0C7AC2FE2D6DE9C67273C643C709F2A749188941B7FA7F9FF14F8E7D19316936DB4D4954FF3819";
|
||||
String pk = "034200042E2980FEDC9DAB03EEE490D9382CA04F018D905EF7319152ADF6A47EF2E3675204B015B7D16AB015AC8C2F24D2E63F69B867E16BA47B0138A86D4461DAE568A6";
|
||||
String data = "FFFFFFFFFFFFFFFF";
|
||||
|
||||
byte[] bytes = api.encryptByPk(1, pk, data.getBytes());
|
||||
System.out.println(Util.bytes2HexString(bytes));
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 78
|
||||
@Test
|
||||
public void testDecryptBySkC() {
|
||||
String userId = "0000000000000001";
|
||||
String data = "30 78 02 20 78 E2 C1 C9 72 1F 77 00 55 76 A3 1F 3F 99 18 E0 3D AC A8 7F 5B 48 27 52 51 D8 54 49 BD 70 A6 EC 02 20 46 B4 24 14 27 EB 96 81 D4 93 A1 7E 03 E0 37 24 94 C6 A0 5D 12 F2 06 BA 15 0A FD 67 2C 82 9A 90 04 20 4D 3E 6D 0F 4C 5D CC 2A 18 5F 01 B8 51 F7 F7 A2 EF 13 C7 D8 66 46 C8 34 5D A8 38 F6 04 D1 D3 61 04 10 7E 21 C5 BF 01 91 62 D3 FC 67 8C 85 55 12 3B B5";
|
||||
// userId
|
||||
String userId = "7777777777777779";
|
||||
String pk = "034200042E2980FEDC9DAB03EEE490D9382CA04F018D905EF7319152ADF6A47EF2E3675204B015B7D16AB015AC8C2F24D2E63F69B867E16BA47B0138A86D4461DAE568A6";
|
||||
String data = "FFFFFFFFFFFFFFFF";
|
||||
|
||||
byte[] bytes = api.decryptBySkC(1, userId, Util.hexString2Bytes(changeStr(data)));
|
||||
byte[] bytes = api.encryptByPk(1, pk, data.getBytes());
|
||||
String encryptData = Util.bytes2HexString(bytes);
|
||||
System.out.println("加密后的数据: " + encryptData);
|
||||
|
||||
byte[] originalData = api.decryptBySkC(1, userId, Util.hexString2Bytes(encryptData));
|
||||
System.out.println("解密后的数据: " + Util.bytes2HexString(originalData));
|
||||
}
|
||||
|
||||
// 79
|
||||
@Test
|
||||
public void testEncryptBySk() {
|
||||
String rsaKey = "000400001661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019415964EDC1D617DCEA0E332EC9AF01165091AE6599AD06F6E24CD73CEA2FDA0D6A2CCF6805EBF5C9523D2C2D4670F920B166489B2B752903BA739219FE9FD7A4ABA0AFA3D19C4E0C2957DA3999B1772C562C5CFDDB2DD545A786E3FF7F7376DA978234CA5A51A1C5EE8CFA1B3460356E8F8808799E5DC39646FEEEF2AC2CE38D281661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E0194157BA816DB8823AAF1661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E01941971D31BFA90FCBF88452F15691C90A6EF4BC3B39496C7B1BF6C0BFEFFFCACEE3E8D5E177AB8C77A7BB04430E6540650887251CCC5B5B94D0509161F46A13B8E2D5D3971BBA180007441CB72FCB0F12317ADFD52BE098931AAB5ECA412D7DCFCE707D51A95B6E5F5826A9637D947CB4E9A5544C4622099D427CC2F1C81C9166B61661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019415AFF74E24873502CBBE817497587F920D6DBB6AFAA3617ABC1003EF00C86BF4758C5997FD61408ED619FF7ADAA281D4AAEA98848D074F820CAD0CE68A86597231661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E01941724AD53411CB6FD50BF14981C35E8FFB53EB2D3993060C67D720924F5FA2DAFFE2222D94E8BD98FC5FC0BCD3D7F58E8268C3E1E88C7EFEE66E490C9BC744B3C91661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E01941B33F7E511B17707CC89F17D463C4B24E7344BD742C137E6FFBAC1080C28C6656F07DC88DECDAE7C984587E82E668BC54921BC78264BB06CF54E4D5BE75C019271661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E01941456204A062F7A9B68ECC8ACCB5234FD5DE4BCA71D1531251BAA67B1DAB49A0F7FDD0ED8DB217A3C5A753AD14868D912600C44DDE8879A22D6B7408C9E190169E1661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E0194123DD650FD6D8E766A5CDEE9D67715906A9591ACAA8FEFCA401494F18F79EAA439FB54C628493FEF624D71624C0CB17AA5E92B0EB97B1A26EF34C6809EC58D64A";
|
||||
String sm2Key = "0001000039003BABAA8C984A527E804591119F982BCDAB1F88BBA922D3B158BC23102DF10000000000000000000000000000000000000000000000000000000000000000";
|
||||
String data = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF";
|
||||
|
||||
api.encryptBySk(0, rsaKey, data.getBytes());
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 7B
|
||||
@Test
|
||||
public void testRSASignC() {
|
||||
String userId = "1111111111111114";
|
||||
String data = "11111111";
|
||||
byte[] bytes = api.RSASignC(userId, 0, 1, data.getBytes());
|
||||
System.out.println(Util.bytes2HexString(bytes));
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 7C
|
||||
@Test
|
||||
public void testRSAVerify() {
|
||||
String thisPublicKey = "308189028181009666F70AA6B013099E68A0EF5EE3504A2210287459D8DD5C3851D2E5FAB821DE379C743F9EA2747A5BD441AB6FEB297ABD0DC66AD116FA918493D85E0BB05CCD2C5089BD1D5963F0FBB85EE869D18BE32EEFF5776350127B64A9C58119F6A52A9718CD3E6E6F97454826B7A7707DEBF9B2E5AD8A6FC1965F2747682FF2FA24A10203010001";
|
||||
String data = "11111111";
|
||||
String userId = "1111111111111114";
|
||||
|
||||
byte[] bytes = api.RSASignC(userId, 0, 1, data.getBytes());
|
||||
String sign = Util.bytes2HexString(bytes);
|
||||
System.out.println(sign);
|
||||
|
||||
boolean b = api.RSAVerify(0, 1, Util.hexString2Bytes(thisPublicKey), data.getBytes(), Util.hexString2Bytes(sign));
|
||||
System.out.println(b);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
@@ -576,6 +742,23 @@ public class TestAllMethods {
|
||||
System.out.println("hash:" + Util.bytes2HexString((byte[]) retWrap.get("hash")));
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 7E
|
||||
@Test
|
||||
public void testGetDNPublicKey() {
|
||||
String dn = "C=CN,O=Sunyard,OU=8001,CN=8001";
|
||||
String s = api.GetDNPublicKey(0, dn.getBytes());
|
||||
System.out.println(s);
|
||||
}
|
||||
|
||||
// 80
|
||||
@Test
|
||||
public void testSM2SignCustomized() {
|
||||
String sn = "3C93000000000025";
|
||||
String s = api.SM2SignCustomized(sn, "111".getBytes());
|
||||
System.out.println(s);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// E2
|
||||
@Test
|
||||
@@ -588,7 +771,7 @@ public class TestAllMethods {
|
||||
// E2
|
||||
@Test
|
||||
public void testSM2OrRSAGenKeyPair() {
|
||||
String index = "0000000000000001";
|
||||
String index = "1111111111111115";
|
||||
|
||||
// SM2
|
||||
// RetWrap retWrap = api.SM2OrRSAGenKeyPair(1, index, 0);
|
||||
@@ -598,6 +781,13 @@ public class TestAllMethods {
|
||||
printRetWrap(retWrap, true);
|
||||
}
|
||||
|
||||
// E4
|
||||
@Test
|
||||
public void testGenKeyPair() {
|
||||
RetWrap retWrap = api.genKeyPair(415, 0002);
|
||||
printRetWrap(retWrap);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 72
|
||||
@Test
|
||||
@@ -665,6 +855,7 @@ public class TestAllMethods {
|
||||
printRetWrap(retWrap, true);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 60
|
||||
@Test
|
||||
public void testGetTransmissionKey() {
|
||||
@@ -672,6 +863,34 @@ public class TestAllMethods {
|
||||
printRetWrap(retWrap);
|
||||
}
|
||||
|
||||
// 61
|
||||
@Test
|
||||
public void testRoleVerify() {
|
||||
// api.roleVerify()
|
||||
}
|
||||
|
||||
// 68
|
||||
@Test
|
||||
public void testDecryptAndEncryptByP() {
|
||||
|
||||
String data = "FFFFFFFFFFFFFFFF";
|
||||
|
||||
String publicKey = "03420004549B6A1A09A5D0D9432C6829D443F85ED8785340FC1AB14118BB7637830C808F7A888DF0C4F988EA6FF2EE6C76ECD00C4B7CEC92CC8EA365F8EA291041CAB231";
|
||||
|
||||
byte[] bytes = api.SYMEncryptData(3,"XF356BCBA3204F6E6F356BCBA3204F6E6", 1, data.getBytes());
|
||||
String enData = Util.bytes2HexString(bytes);
|
||||
System.out.println("加密:" + enData);
|
||||
|
||||
RetWrap retWrap = api.decryptAndEncryptByP("XF356BCBA3204F6E6F356BCBA3204F6E6", bytes, 1, Util.hexString2Bytes(publicKey));
|
||||
printRetWrap(retWrap);
|
||||
}
|
||||
|
||||
// 69
|
||||
@Test
|
||||
public void testDecryptAndEncryptByS() {
|
||||
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// Y8
|
||||
@Test
|
||||
@@ -752,23 +971,43 @@ public class TestAllMethods {
|
||||
System.out.println(Util.bytes2HexString(bytes));
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 67
|
||||
@Test
|
||||
public void testswitchEncry4PIN() {
|
||||
String srcKey = "U51B737CE0EE1A14A6411B64EDE56020B";
|
||||
String aimKey = "X94D35D86EF1F3213D55C47822F87D385";
|
||||
String infoData = "6157212";
|
||||
String srcKey = "XK111111111111111200100000001";
|
||||
String aimKey = "XK111111111111111300100000001";
|
||||
String infoData = "61572122";
|
||||
|
||||
byte[] bytes = api.switchEncry4PIN(srcKey, aimKey, infoData.getBytes());
|
||||
System.out.println(Util.bytes2HexString(bytes));
|
||||
}
|
||||
|
||||
// 6A
|
||||
@Test
|
||||
public void testGenerateDEByDn() {
|
||||
String dn = "C=CN,ST=ZJ,L=HZ,O=SUNYARD,OU=123456,CN=111";
|
||||
|
||||
RetWrap retWrap = api.generateDEByDn(dn.getBytes(), 1);
|
||||
printRetWrap(retWrap);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 6E
|
||||
@Test
|
||||
public void testGetX509SN() {
|
||||
String dn = "C=CN,ST=ZJ,L=HZ,O=SUNYARD,OU=123456,CN=111";
|
||||
String s = api.getX509SN(0, dn.getBytes());
|
||||
System.out.println(s);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// QQ
|
||||
@Test
|
||||
public void testRSAGetPublicKeyC() {
|
||||
String userId = "0000000000000001";
|
||||
String userId = "1111111111111114";
|
||||
|
||||
String s = api.RSAGetPublicKeyC(userId, 1);
|
||||
String s = api.RSAGetPublicKeyC(userId, 0);
|
||||
System.out.println(s);
|
||||
}
|
||||
|
||||
@@ -786,4 +1025,390 @@ public class TestAllMethods {
|
||||
RetWrap version = api.getVersion(null);
|
||||
printRetWrap(version);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 8008
|
||||
@Test
|
||||
public void testGetAllCert() throws UnsupportedEncodingException {
|
||||
RetWrap allCert = api.getAllCert(2);
|
||||
printRetWrap(allCert);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 8009
|
||||
@Test
|
||||
public void testImportCert() throws IOException {
|
||||
|
||||
String path = "E:\\work\\sunyard\\证书\\sm2.q\\sm2.q.enc.crt.pem";
|
||||
System.out.println(api.importCert(inputStream2ByteArray(path), "1234".getBytes()));
|
||||
|
||||
try {
|
||||
this.api.disconnect();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testImportCert2() throws IOException {
|
||||
|
||||
String cert = "-----BEGIN CERTIFICATE-----\n" +
|
||||
"MIICBTCCAamgAwIBAgIGAXn07c3CMAwGCCqBHM9VAYN1BQAwSzELMAkGA1UEBhMC\n" +
|
||||
"Q04xDjAMBgNVBAoTBUdNU1NMMRAwDgYDVQQLEwdQS0kvU00yMRowGAYDVQQDExFN\n" +
|
||||
"aWRkbGVDQSBmb3IgVGVzdDAiGA8yMDIxMDYwOTE2MDAwMFoYDzIwMjIwNjA5MTYw\n" +
|
||||
"MDAwWjBbMQswCQYDVQQGEwJDTjEKMAgGA1UECBMBMTEKMAgGA1UEBxMBMTEKMAgG\n" +
|
||||
"A1UEChMBMTEKMAgGA1UECxMBMTEKMAgGA1UEAxMBMTEQMA4GCSqGSIb3DQEJARYB\n" +
|
||||
"NDBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABCnSUhgDDtjJZfOJoWoPxe/BTnox\n" +
|
||||
"PtDLBgGJyVpj0eNde7u4LnZ+H8vqN+0QvgfLcVg84cyl76j9+RuWsmLw7USjYzBh\n" +
|
||||
"MBsGA1UdIwQUMBKAEPl/VbQnlDNiplbKb8xdGv8wGQYDVR0OBBIEEJ6MbyKdO6IX\n" +
|
||||
"d3VkNLCf/aAwDAYDVR0RBAUwA4IBMTAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIA\n" +
|
||||
"ODAMBggqgRzPVQGDdQUAA0gAMEUCIG0PqR+bbdNOb5Q4kfHq8cQZJ1wa/P+bqFfv\n" +
|
||||
"6bbL9RZCAiEAiH1LKCjq9p7MS7qOK+su5I0kenCQ505ZuuAWDMph0xk=\n" +
|
||||
"-----END CERTIFICATE-----";
|
||||
System.out.println(api.importCert(getSafeBytes(cert), null));
|
||||
}
|
||||
|
||||
|
||||
public static byte[] getSafeBytes(String s) {
|
||||
if (null != s) {
|
||||
byte[] b1 = s.getBytes();
|
||||
byte[] b2 = new byte[b1.length + 1];
|
||||
b2[b1.length] = 0;
|
||||
System.arraycopy(b1, 0, b2, 0, b1.length);
|
||||
return b2;
|
||||
} else {
|
||||
return new byte[]{0};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
String pUserId = "1572127378000000";
|
||||
String publicKey = "03420004C51A40A094B6A14500B2980603D68CA263FF1BA238AFB17BB8B791C5F444465A749B68B4584C83E7BEF66DE2446177E14DBE0F32691F54B1636CC73334A1A94D";
|
||||
String orgData = "FFFFFFFFFFFFFFFF";
|
||||
String certId = "0000000011111112";
|
||||
|
||||
// 测试通过
|
||||
// 74
|
||||
@Test
|
||||
public void testSM2SignC() {
|
||||
String userId = "1111111111111113";
|
||||
String certNo = "1234567812345678";
|
||||
String thisPublicKey = "03420004549B6A1A09A5D0D9432C6829D443F85ED8785340FC1AB14118BB7637830C808F7A888DF0C4F988EA6FF2EE6C76ECD00C4B7CEC92CC8EA365F8EA291041CAB231";
|
||||
String thisOrgData = "FFFFFFFFFFFFFFFF";
|
||||
|
||||
String s = api.SM2SignC(userId, certNo, 1, Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes());
|
||||
System.out.println(s);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 75
|
||||
@Test
|
||||
public void testSM2Verify() {
|
||||
|
||||
String userId = "1111111111111113";
|
||||
String certNo = "1234567812345678";
|
||||
String thisPublicKey = "03420004549B6A1A09A5D0D9432C6829D443F85ED8785340FC1AB14118BB7637830C808F7A888DF0C4F988EA6FF2EE6C76ECD00C4B7CEC92CC8EA365F8EA291041CAB231";
|
||||
String thisOrgData = "FFFFFFFFFFFFFFFF";
|
||||
|
||||
String s = api.SM2SignC(userId, certNo, 1, Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes());
|
||||
|
||||
System.out.println(s);
|
||||
boolean b = api.SM2Verify(certNo, 1, Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes(), s);
|
||||
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);
|
||||
}
|
||||
|
||||
// QQ
|
||||
@Test
|
||||
public void testSM2GetPublicKeyC() {
|
||||
String s = api.SM2GetPublicKeyC("0000000011111111", 0);
|
||||
}
|
||||
|
||||
|
||||
// E0
|
||||
@Test
|
||||
public void testSYMEncryptData() {
|
||||
|
||||
byte[] bytes = api.SYMEncryptData(3,"XF356BCBA3204F6E6F356BCBA3204F6E6", "1111111111111111".getBytes());
|
||||
byte[] bytes1 = api.SYMDecryptData(3, "XF356BCBA3204F6E6F356BCBA3204F6E6", bytes);
|
||||
System.out.println(new String(bytes1));
|
||||
}
|
||||
|
||||
// 01100000000000000000800331433D434E2C4F3D53756E796172642C4F553D383030312C434E3D38303031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003313131
|
||||
|
||||
// 测试通过
|
||||
// 8003
|
||||
@Test
|
||||
public void testSYD_NakedSign() {
|
||||
String dn = "C=CN,O=Sunyard,OU=8001,CN=8001";
|
||||
byte[] bytes = api.SYD_NakedSign("111".getBytes(), dn);
|
||||
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 sign = Util.bytes2HexString(bytes);
|
||||
System.out.println(sign);
|
||||
|
||||
boolean b = api.SYD_NakedVerify("2222".getBytes(), bytes, dn);
|
||||
System.out.println(b);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 8005
|
||||
@Test
|
||||
public void testSYD_DetachedSign() {
|
||||
|
||||
String orgData = "3214312341243214";
|
||||
String DN = "C=CN,O=Sunyard,OU=8001,CN=8001";
|
||||
String s = api.SYD_DetachedSign(orgData.getBytes(), DN);
|
||||
System.out.println(s);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 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);
|
||||
}
|
||||
|
||||
// 8012
|
||||
@Test
|
||||
public void testSYD_Get_X509_CertInfo_HA() {
|
||||
|
||||
String orgData = "3214312341243214";
|
||||
String DN = "C=CN,O=Sunyard,OU=8001,CN=8001";
|
||||
String s = api.SYD_DetachedSign(orgData.getBytes(), DN);
|
||||
System.out.println(s);
|
||||
|
||||
X509 x509 = api.SYD_Get_X509_CertInfo_HA(orgData.getBytes(), s);
|
||||
System.out.println(x509);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 8016
|
||||
@Test
|
||||
public void testGetX509CertInfo() {
|
||||
|
||||
// String pCert = "-----BEGIN CERTIFICATE-----\u0007MIIC1jCCAnqgAwIBAgIFQAKAAXQwDAYIKoEcz1UBg3UFADBhMQswCQYDVQQGEwJD\u0007TjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y\u0007aXR5MSAwHgYDVQQDDBdDRkNBIEFDUyBURVNUIFNNMiBPQ0EzMTAeFw0xNzExMTYw\u0007NjU0NDVaFw0yMjExMTYwNjU0NDVaMIGDMQswCQYDVQQGEwJDTjEcMBoGA1UECgwT\u0007Q0ZDQSBURVNUIFNNMiBPQ0EzMTEOMAwGA1UECwwFU0hDUEUxGTAXBgNVBAsMEE9y\u0007Z2FuaXphdGlvbmFsLTExKzApBgNVBAMMIjA1MUDkuIrmtbfnpajmja7kuqTmmJPm\u0007iYBAQUFBQUFBQDgwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAARg8D1RBEv9lpOE\u0007Q3SdzdLCQ4fDiE8Ncb2Fl4qIGc12GA/LUS1fgzLZuk0WlgyZDSe+QlQziqkmsXsx\u0007KoTCzqsto4H5MIH2MD8GCCsGAQUFBwEBBDMwMTAvBggrBgEFBQcwAYYjaHR0cDov\u0007L29jc3B0ZXN0LmNmY2EuY29tLmNuOjgwL29jc3AwHwYDVR0jBBgwFoAUBMe8+VkB\u0007aT6MNDYgYhg83ry1uwwwDAYDVR0TAQH/BAIwADA2BgNVHR8ELzAtMCugKaAnhiVo\u0007dHRwOi8vMjEwLjc0LjQyLjMvT0NBMzEvU00yL2NybDEuY3JsMA4GA1UdDwEB/wQE\u0007AwIGwDAdBgNVHQ4EFgQUomdLtdhENYb16pe1LNRlcr4N7b8wHQYDVR0lBBYwFAYI\u0007KwYBBQUHAwIGCCsGAQUFBwMEMAwGCCqBHM9VAYN1BQADSAAwRQIgZpJGhpRKmgfi\u0007Vbdq3UAGW6I3AUMfbWMd6webLQXmCOoCIQDSxTKRb0TfoXepD3VgO9qxCDwSc4yn\u0007WJ2GC3qmr81QBg==\u0007-----END CERTIFICATE-----\u0007";
|
||||
// X509 x509 = api.GetX509CertInfo(pCert);
|
||||
|
||||
String path = "E:\\work\\sunyard\\证书\\sm2.q\\sm2.q.enc.crt.pem";
|
||||
X509 x509 = api.GetX509CertInfo(getCertStr(path));
|
||||
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 8017
|
||||
@Test
|
||||
public void testGetX509CertFileC() {
|
||||
String userId = "8001";
|
||||
|
||||
String s = api.GetX509CertFileC(userId, 0);
|
||||
System.out.println(s);
|
||||
}
|
||||
|
||||
// 8024
|
||||
@Test
|
||||
public void testDetachedSign() {
|
||||
api.detachedSign(1, "111".getBytes(), 3);
|
||||
}
|
||||
|
||||
// 8026
|
||||
@Test
|
||||
public void testDetachedSignbysn() {
|
||||
//X509 证书的序列号
|
||||
String pCertSerial = "1004282452";
|
||||
//数据明文
|
||||
byte[] data2 = "asfkahfkahfkafadfhdaghfashadfaflsaldfasf".substring(0,32).getBytes();
|
||||
|
||||
//签名
|
||||
String bs = api.detachedSignbysn(0,data2,pCertSerial);
|
||||
System.out.println(bs);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 4D41
|
||||
@Test
|
||||
public void testGenerateMIYA() {
|
||||
byte[] testData = "1234567812345678".getBytes();
|
||||
String mac = api.GenerateMIYA("123456", 1, SydApi.NALG_3DES, testData);
|
||||
System.out.println("MAC = " + mac);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 4D43
|
||||
@Test
|
||||
public void testVerifyMIYA() {
|
||||
|
||||
// 000000000012345600300000001
|
||||
byte[] testData = "1234567812345678".getBytes();
|
||||
String mac = api.GenerateMIYA("123456", 1, SydApi.NALG_3DES, testData);
|
||||
System.out.println("MAC = " + mac);
|
||||
Boolean ret = api.VerifyMIYA( "123456", 1, SydApi.NALG_3DES, mac, testData);
|
||||
if ( ret ){
|
||||
System.out.println("核押通过");
|
||||
} else {
|
||||
System.out.println("核押不通过");
|
||||
}
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// QN
|
||||
@Test
|
||||
public void testSYD_SM2GenKeyPair() {
|
||||
RetWrap retWrap = api.SYD_SM2GenKeyPair();
|
||||
printRetWrap(retWrap);
|
||||
}
|
||||
|
||||
// Q1
|
||||
@Test
|
||||
public void testEncrypt_Data() {
|
||||
byte[] bytes = api.Encrypt_Data(2, 1, 0, "XK333333333333333300A33333333", "11111111".getBytes(), "122345678".getBytes());
|
||||
System.out.println(Util.bytes2HexString(bytes));
|
||||
}
|
||||
|
||||
|
||||
// YA
|
||||
@Test
|
||||
public void testSYD_Disperse() throws UnsupportedEncodingException {
|
||||
//加解密密钥
|
||||
String key1 = "123123555555555500000000001";
|
||||
//原始数据
|
||||
byte[] data = "cdb1af4bb0ab6de6".getBytes("UTF-8");
|
||||
|
||||
//分散因子
|
||||
String data3 = "0000000000002456aece4be200050001";
|
||||
|
||||
String s = api.SYD_Disperse(key1, 0, 1, data3.getBytes(), 2, 0);
|
||||
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// PA
|
||||
@Test
|
||||
public void testSetPrintFormat() throws UnsupportedEncodingException {
|
||||
api.setPrintFormat(new String(">L>003^0>033^4>L>003^1>023^P>033^5>053^Q>L>003^2>033^6>003^3>033^7>L>003THANK YOU>033>THANK YOU 中文>L>F".getBytes("UTF-8") , "GB2312"));
|
||||
|
||||
}
|
||||
|
||||
// QX
|
||||
@Test
|
||||
public void testSM2GetPublicKeyC_QX() {
|
||||
String s = api.SM2GetPublicKeyC_QX(3, 0);
|
||||
System.out.println(s);
|
||||
}
|
||||
|
||||
// 92
|
||||
@Test
|
||||
public void testGetDeviceCertiInfo() {
|
||||
RetWrap deviceCertiInfo = api.getDeviceCertiInfo();
|
||||
printRetWrap(deviceCertiInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 直接发送数据
|
||||
*/
|
||||
@Test
|
||||
public void testDirect() {
|
||||
String s = "000A00000000000000004849";
|
||||
api.directBytes(Util.hexString2Bytes(s));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void test() throws IOException {
|
||||
String path = "E:\\work\\sunyard\\hsm\\projects\\sydapi\\src\\test\\java\\com\\sunyard\\sydapi\\test\\TestAllMethods.java";
|
||||
BufferedReader reader = new BufferedReader(new FileReader(path));
|
||||
|
||||
String line = null;
|
||||
String[] list = new String[3];
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
int z = 0;
|
||||
|
||||
while ((line = reader.readLine()) != null) {
|
||||
if ("@Test".equals(line.trim())) {
|
||||
j++;
|
||||
int index = 0;
|
||||
if ((index = getIndex(list, "// 测试通过")) != -1) {
|
||||
System.out.println(list[(index + 1) % 3].substring(3));
|
||||
z++;
|
||||
}
|
||||
} else {
|
||||
list[i % 3] = line.trim();
|
||||
i++;
|
||||
}
|
||||
}
|
||||
System.out.println(j);
|
||||
System.out.println(z);
|
||||
}
|
||||
|
||||
public int getIndex(String[] list, String str) {
|
||||
|
||||
for (int i = 0; i < list.length; i++) {
|
||||
if (str.equals(list[i])) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test01() throws IOException {
|
||||
String path = "C:\\Users\\edgar\\Desktop\\新建文本文档 (2).txt";
|
||||
BufferedReader reader = new BufferedReader(new FileReader(path));
|
||||
|
||||
String line = null;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
if (line.startsWith("指令")) {
|
||||
System.out.println(line.substring(3));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test02() throws IOException {
|
||||
String path = "E:\\work\\sunyard\\hsm\\projects\\sydapi\\src\\main\\java\\racal\\sunyard\\main\\SydApi4j.java";
|
||||
|
||||
BufferedReader br = new BufferedReader(new FileReader(path));
|
||||
|
||||
String line = null;
|
||||
|
||||
while ((line = br.readLine()) != null) {
|
||||
String trimLine = line.trim();
|
||||
if (trimLine.startsWith("Proto")) {
|
||||
System.out.println(trimLine.substring(5, trimLine.indexOf(" ")));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user