测试接口,修改错误的配置文件
This commit is contained in:
parent
86118eaf4e
commit
fa9e46c318
@ -14,7 +14,7 @@
|
||||
设备型号
|
||||
</equipNo>
|
||||
|
||||
<equipSkLen :value="equipSkLen()" cn="设备密钥私钥长度">
|
||||
<equipSkLen len="4" :value="equipSkLen()" cn="设备密钥私钥长度">
|
||||
设备密钥私钥长度
|
||||
</equipSkLen>
|
||||
|
||||
@ -22,15 +22,15 @@
|
||||
设备密钥私钥
|
||||
</equipSk>
|
||||
|
||||
<equipPkLen :value="equipPkLen()" cn="设备密钥公钥长度">
|
||||
<equipPkLen len="4" :value="equipPkLen()" cn="设备密钥公钥长度">
|
||||
设备密钥公钥长度
|
||||
</equipPkLen>
|
||||
|
||||
<equipPK cn="设备密钥公钥">
|
||||
<equipPk cn="设备密钥公钥">
|
||||
设备密钥公钥
|
||||
</equipPK>
|
||||
</equipPk>
|
||||
|
||||
<manuPkLen :value="manuPkLen()" cn="厂商公钥长度">
|
||||
<manuPkLen len="4" :value="manuPkLen()" cn="厂商公钥长度">
|
||||
厂商公钥长度
|
||||
</manuPkLen>
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<hex>91</hex>
|
||||
</command>
|
||||
<data extend="data">
|
||||
<equipSkLen :value="equipSkLen()" cn="设备密钥私钥长度">
|
||||
<equipSkLen len="4" :value="equipSkLen()" cn="设备密钥私钥长度">
|
||||
设备密钥私钥长度
|
||||
</equipSkLen>
|
||||
|
||||
@ -14,13 +14,13 @@
|
||||
设备密钥私钥
|
||||
</equipSk>
|
||||
|
||||
<equipPkLen :value="equipPkLen()" cn="设备密钥公钥长度">
|
||||
<equipPkLen len="4" :value="equipPkLen()" cn="设备密钥公钥长度">
|
||||
设备密钥公钥长度
|
||||
</equipPkLen>
|
||||
|
||||
<equipPK cn="设备密钥公钥">
|
||||
<equipPk cn="设备密钥公钥">
|
||||
设备密钥公钥
|
||||
</equipPK>
|
||||
</equipPk>
|
||||
|
||||
<authSign len="64" cn="授权签名">
|
||||
授权签名
|
||||
|
||||
Binary file not shown.
@ -208,12 +208,13 @@ public interface SydGenApi {
|
||||
|
||||
* @param dn 对*方 X509 证书DN。
|
||||
* @param alg 算法标识,0:AES,1:SM4
|
||||
* @param model 证书模式,0:证书序号,1:证书 DN
|
||||
* @return RetWrap 包含 CipherKey SessionKey KCV
|
||||
* CipherKey 公钥加密的会话密钥 ,BASE64 编码
|
||||
* SessionKey 本地LMK 加密的会话密钥,HEX 格式, 本地 LMK 加密的会话密钥长度,HEX 格式(不包括第 1 个字符),一般为 33 个 Bytes。默认输入值为缓冲区的大小。
|
||||
* KCV 会话密钥的检验值,HEX 格式,长度为 32H。
|
||||
*/
|
||||
RetWrap generateDEByDn(byte[] dn, int alg) throws Exception;
|
||||
RetWrap generateDEByDn(byte[] dn, int alg, int model) throws Exception;
|
||||
|
||||
/**
|
||||
* 产生对称密钥,通过公钥加密生成网联格式的数字信封。
|
||||
|
||||
@ -2047,8 +2047,10 @@ public class SydApi4j implements SydApi {
|
||||
return repackEncrypt(packet);
|
||||
}
|
||||
|
||||
// 当证书模式为证书序号时,测试成功
|
||||
// 测试通过
|
||||
@Override
|
||||
public RetWrap generateDEByDn(byte[] dn, int alg) {
|
||||
public RetWrap generateDEByDn(byte[] dn, int alg, int model) {
|
||||
Proto6A proto = new Proto6A();
|
||||
// 填充数据
|
||||
PacketSN sn = PacketSN.gen();
|
||||
@ -2056,9 +2058,15 @@ public class SydApi4j implements SydApi {
|
||||
packet.put("header", sn.getSn().array());
|
||||
HashMap<String, Object> data = new HashMap<String, Object>();
|
||||
data.put("alg$option", alg);
|
||||
data.put("certificateModel$option", 1);
|
||||
data.put("certificateModel$option", model);
|
||||
|
||||
if (model == 0) {
|
||||
data.put("certificateSn", dn);
|
||||
} else {
|
||||
data.put("certificateDn", dn);
|
||||
}
|
||||
data.put("keyType", "X");
|
||||
|
||||
packet.put("data", data);
|
||||
// 渲染发送 耗时长
|
||||
ByteBuffer bb = proto.rend(packet);
|
||||
@ -2137,6 +2145,7 @@ public class SydApi4j implements SydApi {
|
||||
return rw;
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
@Override
|
||||
public RetWrap decryptDE(String certSerial, String pCipherKey) {
|
||||
// 获取协议
|
||||
@ -2221,6 +2230,7 @@ public class SydApi4j implements SydApi {
|
||||
return ((PacketSection) ret.get("random")).getString();
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
@Override
|
||||
public String netSign(String pCertSerial, byte[] pOrgData) {
|
||||
|
||||
@ -2263,6 +2273,7 @@ public class SydApi4j implements SydApi {
|
||||
return ((PacketSection) ret.get("sign")).getString();
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
@Override
|
||||
public boolean netVerify(String pCertSerial, byte[] pOrgData, String pSignData) {
|
||||
// 获取协议
|
||||
@ -2990,6 +3001,7 @@ public class SydApi4j implements SydApi {
|
||||
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
@Override
|
||||
public String SM2SignCustomized(String certNo, byte[] orgData) {
|
||||
|
||||
@ -3125,7 +3137,7 @@ public class SydApi4j implements SydApi {
|
||||
return Util.encodeBase64(s);
|
||||
}
|
||||
|
||||
|
||||
// 测试通过
|
||||
@Override
|
||||
public boolean SM2VerifyCustomized(String certNo, byte[] orgData, String base64Sign) {
|
||||
|
||||
@ -4320,6 +4332,7 @@ public class SydApi4j implements SydApi {
|
||||
* @param vector 初始向量数据,可选项,当加密模式为CBC,CFB或OFB时才显示此项
|
||||
* @return infoData: 密文数据
|
||||
*/
|
||||
// 测试通过
|
||||
public byte[] Encrypt_Data(int alg, int roundModel, int fullMode, String DEK, byte[] infoData, byte[] vector) {
|
||||
ProtoQ1 proto = new ProtoQ1();
|
||||
|
||||
@ -4387,10 +4400,11 @@ public class SydApi4j implements SydApi {
|
||||
* @param roundModel 密钥解密模式,1:ECB,2:CBC,3:CFB,4:OFB
|
||||
* @param fullMode 填充模式,0:数据刚好是8的整数倍,不填充;1:在数据后面填充0x00,0x00…;2:在数据后填充0x80,0x00 …
|
||||
* @param DEK DEK秘钥,如果源密钥为外部送入,则为LMK加密,否则为HSM用户密钥存储区。
|
||||
* @param infoData 数据
|
||||
* @param infoData 数据密文
|
||||
* @param vector 初始向量数据,可选项,当加密模式为CBC,CFB或OFB时才显示此项
|
||||
* @return 解密后的明文数据
|
||||
*/
|
||||
// 测试通过
|
||||
public byte[] Decrypt_Data(int alg, int roundModel, int fullMode, String DEK, byte[] infoData, byte[] vector) {
|
||||
ProtoQ2 proto = new ProtoQ2();
|
||||
|
||||
@ -5103,7 +5117,7 @@ public class SydApi4j implements SydApi {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// 测试通过
|
||||
@Override
|
||||
public RetWrap getStatus() {
|
||||
ProtoHI proto = new ProtoHI();
|
||||
@ -8390,7 +8404,7 @@ public class SydApi4j implements SydApi {
|
||||
return msg_all_de;
|
||||
}
|
||||
|
||||
|
||||
// 测试通过
|
||||
@Override
|
||||
public boolean setDevCert(String equipType, String equipNo, byte[] equipSk, byte[] equipPk, byte[] manuPk, byte[] authSign) {
|
||||
Proto90 proto = new Proto90();
|
||||
@ -8427,7 +8441,7 @@ public class SydApi4j implements SydApi {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 测试通过
|
||||
@Override
|
||||
public boolean changeDevCert(byte[] equipSk, byte[] equipPk, byte[] authSign) {
|
||||
Proto91 proto = new Proto91();
|
||||
@ -8470,6 +8484,7 @@ public class SydApi4j implements SydApi {
|
||||
* equipPk: 设备密钥公钥
|
||||
* authSign: 授权签名
|
||||
*/
|
||||
// 测试通过
|
||||
@Override
|
||||
public RetWrap getDeviceCertiInfo() {
|
||||
Proto92 proto = new Proto92();
|
||||
@ -8514,7 +8529,7 @@ public class SydApi4j implements SydApi {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 测试通过
|
||||
@Override
|
||||
public String deviceSignC(byte[] orgData) {
|
||||
Proto97 proto = new Proto97();
|
||||
|
||||
@ -21,7 +21,7 @@ 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.1.7", 8889, null, 1000);
|
||||
api = (SydApi4j) new SydApi4j().connect("192.168.1.7", 8889, null, 5000);
|
||||
// api = (SydApi4j) new SydApi4j().connect("192.168.0.66", 8889, null, 1000);
|
||||
}
|
||||
|
||||
@ -751,14 +751,27 @@ public class TestAllMethods {
|
||||
System.out.println(s);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 80
|
||||
@Test
|
||||
public void testSM2SignCustomized() {
|
||||
String sn = "3C93000000000025";
|
||||
String sn = "1004282452";
|
||||
String s = api.SM2SignCustomized(sn, "111".getBytes());
|
||||
System.out.println(s);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 81
|
||||
@Test
|
||||
public void testSM2VerifyCustomized() {
|
||||
String sn = "1004282452";
|
||||
String data = "111";
|
||||
String s = api.SM2SignCustomized(sn, data.getBytes());
|
||||
|
||||
boolean b = api.SM2VerifyCustomized(sn, data.getBytes(), s);
|
||||
System.out.println(b);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// E2
|
||||
@Test
|
||||
@ -855,7 +868,6 @@ public class TestAllMethods {
|
||||
printRetWrap(retWrap, true);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 60
|
||||
@Test
|
||||
public void testGetTransmissionKey() {
|
||||
@ -983,15 +995,75 @@ public class TestAllMethods {
|
||||
System.out.println(Util.bytes2HexString(bytes));
|
||||
}
|
||||
|
||||
// 001B3030303030303030
|
||||
// 3641
|
||||
// 30
|
||||
// 30
|
||||
// 30303130
|
||||
// 31303034323832343532
|
||||
// 58
|
||||
|
||||
// 测试通过
|
||||
// 6A
|
||||
@Test
|
||||
public void testGenerateDEByDn() {
|
||||
String dn = "C=CN,ST=ZJ,L=HZ,O=SUNYARD,OU=123456,CN=111";
|
||||
String dn = "1004282452";
|
||||
|
||||
RetWrap retWrap = api.generateDEByDn(dn.getBytes(), 1);
|
||||
RetWrap retWrap = api.generateDEByDn(dn.getBytes(), 0, 0);
|
||||
printRetWrap(retWrap);
|
||||
}
|
||||
|
||||
// 01210000000000000000
|
||||
// 3642
|
||||
// 3030
|
||||
// 30313932
|
||||
// 4D49474D416945417058426D4C43545A4D54543247454A677A576658634555645770376D64466E5A5A344F4972556E326E5145434948766C2F674534707448476D4748737739464844566D3357334F6E636B764D71325044766C38374657667742434250347175466B346243715A48735177585258614E712B576E6C664234634C6859762F59766D6777496F7541516A56685551545578666C50464C783357734D56703362426A6658567539426278796F6A2B6D4937686D774A665178416B3D
|
||||
// 4C4246373430343745463846384343353532463039313838363233373639343241424637343034374546384638434335353246303931383836323337363934324132303034443039344339433336334445
|
||||
|
||||
// 00DE0000000000000001
|
||||
// 3642
|
||||
// 3030
|
||||
// 30
|
||||
// 31
|
||||
// 3031303034323832343532
|
||||
// 30313932
|
||||
// 4D49474D4169454167746A6D2F3364654C44754D5A6A5446454C44564D7A6A77336F4A527354772F4E37594A54536151517A63434944524A30317053787A346D7864364464504848337639726E617075564B4B6668664E6557576E4530324F354243414748696241702F2F64373538574D77574E78356A6E4B3458564E536F4D4C724A3271757056734747707677516A6F357969655A5A76624368354B6B4662494942642F426A3133436631504C556C5952614D4F416442633973744A35413D58
|
||||
|
||||
// 测试通过
|
||||
// 6B
|
||||
@Test
|
||||
public void testDecryptDE() {
|
||||
String sn = "1004282452";
|
||||
RetWrap retWrap = api.generateDEByDn(sn.getBytes(), 0, 0);
|
||||
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
|
||||
public void testNetSign() {
|
||||
String sn = "1004282451";
|
||||
String s = api.netSign(sn, "111".getBytes());
|
||||
System.out.println(s);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 6D
|
||||
@Test
|
||||
public void testNetVerify() {
|
||||
String sn = "1004282451";
|
||||
String data = "111";
|
||||
String s = api.netSign(sn, data.getBytes());
|
||||
|
||||
boolean b = api.netVerify(sn, data.getBytes(), s);
|
||||
System.out.println(b);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 6E
|
||||
@Test
|
||||
@ -1011,10 +1083,12 @@ public class TestAllMethods {
|
||||
System.out.println(s);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// HI
|
||||
@Test
|
||||
public void testGetStatus() {
|
||||
RetWrap status = api.getStatus();
|
||||
|
||||
printRetWrap(status);
|
||||
}
|
||||
|
||||
@ -1289,13 +1363,30 @@ public class TestAllMethods {
|
||||
printRetWrap(retWrap);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// Q1
|
||||
@Test
|
||||
public void testEncrypt_Data() {
|
||||
byte[] bytes = api.Encrypt_Data(2, 1, 0, "XK333333333333333300A33333333", "11111111".getBytes(), "122345678".getBytes());
|
||||
byte[] bytes = api.Encrypt_Data(2, 1, 0, "XK123456212145212200A00000001", "1111111111111111".getBytes(), "122345678".getBytes());
|
||||
System.out.println(Util.bytes2HexString(bytes));
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// Q2
|
||||
@Test
|
||||
public void testDecrypt_Data() {
|
||||
String dek = "XK123456212145212200A00000001";
|
||||
String infoData = "1111111111111111";
|
||||
String vector = "122345678";
|
||||
|
||||
|
||||
byte[] bytes = api.Encrypt_Data(2, 1, 0, dek, infoData.getBytes(), vector.getBytes());
|
||||
System.out.println(Util.bytes2HexString(bytes));
|
||||
|
||||
byte[] bytes1 = api.Decrypt_Data(2, 1, 0, dek, bytes, vector.getBytes());
|
||||
System.out.println(Util.bytes2HexString(bytes1));
|
||||
}
|
||||
|
||||
|
||||
// YA
|
||||
@Test
|
||||
@ -1327,11 +1418,110 @@ public class TestAllMethods {
|
||||
System.out.println(s);
|
||||
}
|
||||
|
||||
// 011E3030303030303030
|
||||
// 3930
|
||||
// 31313131313131313131313131313131
|
||||
// 32323232323232323232323232323232
|
||||
// 30303332
|
||||
// F9CC9E2B67C61043B87552E61F9F50120902EA5462FC65A29695FC8F5E0FF7AF
|
||||
// 30303638
|
||||
// 03420004CAFC8EC6782D9DE8F834B7D47B9D9057A0F21DAB402694EC580723879CC221A1730977F0DE947A0D5390858EE1FD827A3BE2F07E5671131BF3BE1868D3333029
|
||||
// 30303638
|
||||
// 0342000424A686E34777690C732D2C04F707DAE37AAA346461AACFABDF00982D84BB27B9DEB717FCEF55BA7C288FC935C637FD0681028E69584BFDA7A38BDB4557E1551C
|
||||
// 0FBE0F3D6BAB184A20A235BA8DF2494C8FFC0826F60C22D3E4D89776CBD203E03707D2D530232EFE8600282A6EF171816E83AFA20A7991BBF2AD30DC59C71E76
|
||||
|
||||
// 设备型号
|
||||
private String equipType = "1111111111111111";
|
||||
// 设备序号
|
||||
private String equipNo = "2222222222222222";
|
||||
// 设备密钥私钥
|
||||
private String equipSk = "F9CC9E2B67C61043B87552E61F9F50120902EA5462FC65A29695FC8F5E0FF7AF";
|
||||
// 设备密钥公钥
|
||||
private String equipPk = "03420004CAFC8EC6782D9DE8F834B7D47B9D9057A0F21DAB402694EC580723879CC221A1730977F0DE947A0D5390858EE1FD827A3BE2F07E5671131BF3BE1868D3333029";
|
||||
// 厂商公钥
|
||||
private String manuPk = "0342000424A686E34777690C732D2C04F707DAE37AAA346461AACFABDF00982D84BB27B9DEB717FCEF55BA7C288FC935C637FD0681028E69584BFDA7A38BDB4557E1551C";
|
||||
// 授权签名
|
||||
private String authSign = "0FBE0F3D6BAB184A20A235BA8DF2494C8FFC0826F60C22D3E4D89776CBD203E03707D2D530232EFE8600282A6EF171816E83AFA20A7991BBF2AD30DC59C71E76";
|
||||
|
||||
// 测试通过
|
||||
// 90
|
||||
@Test
|
||||
public void testSetDevCert() {
|
||||
|
||||
boolean b = api.setDevCert(equipType, equipNo, Util.hexString2Bytes(equipSk), Util.hexString2Bytes(equipPk),
|
||||
Util.hexString2Bytes(manuPk), Util.hexString2Bytes(authSign));
|
||||
System.out.println(b);
|
||||
}
|
||||
|
||||
// 00B63030303030303030
|
||||
// 3931
|
||||
// 30303332
|
||||
// F9CC9E2B67C61043B87552E61F9F50120902EA5462FC65A29695FC8F5E0FF7AF
|
||||
// 30303638
|
||||
// 03420004CAFC8EC6782D9DE8F834B7D47B9D9057A0F21DAB402694EC580723879CC221A1730977F0DE947A0D5390858EE1FD827A3BE2F07E5671131BF3BE1868D3333029
|
||||
// 0FBE0F3D6BAB184A20A235BA8DF2494C8FFC0826F60C22D3E4D89776CBD203E03707D2D530232EFE8600282A6EF171816E83AFA20A7991BBF2AD30DC59C71E76
|
||||
|
||||
// 测试通过
|
||||
// 91
|
||||
@Test
|
||||
public void testChangeDevCert() {
|
||||
boolean b = api.changeDevCert(Util.hexString2Bytes(equipSk), Util.hexString2Bytes(equipPk), Util.hexString2Bytes(authSign));
|
||||
System.out.println(b);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 92
|
||||
@Test
|
||||
public void testGetDeviceCertiInfo() {
|
||||
RetWrap deviceCertiInfo = api.getDeviceCertiInfo();
|
||||
printRetWrap(deviceCertiInfo);
|
||||
printRetWrap(deviceCertiInfo, true);
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
// 97
|
||||
@Test
|
||||
public void testDeviceSignC() {
|
||||
String hash = "11111111111111111111111111111111";
|
||||
String s = api.deviceSignC(hash.getBytes());
|
||||
System.out.println(s);
|
||||
}
|
||||
|
||||
// 00883030303030303030
|
||||
// 3938
|
||||
// 30313232
|
||||
// 3078022017665B26FD20D2BE19CBCF275C43D7ECF95BBEEC2C2D1A79DF5068629D6FDDB302204A76974ADD337B5F3EAA0191AF6C7ADEE6BA86B30B828B7B32948B8DB0FF3E1A04204E4A371B154D42CC2536033F8EE8854FE0EF4BC79CB78A7CEA0C335147C7DF5B0410CF8690DC1D9ECD1951E86B6AE26A94DB
|
||||
|
||||
// 00880000000000000000
|
||||
// 3938
|
||||
// 30313232
|
||||
// 3078022017665B26FD20D2BE19CBCF275C43D7ECF95BBEEC2C2D1A79DF5068629D6FDDB302204A76974ADD337B5F3EAA0191AF6C7ADEE6BA86B30B828B7B32948B8DB0FF3E1A04204E4A371B154D42CC2536033F8EE8854FE0EF4BC79CB78A7CEA0C335147C7DF5B0410CF8690DC1D9ECD1951E86B6AE26A94DB
|
||||
|
||||
// 98
|
||||
@Test
|
||||
public void testSetToken() {
|
||||
|
||||
String tocken = "3078022017665B26FD20D2BE19CBCF275C43D7ECF95BBEEC2C2D1A79DF5068629D6FDDB302204A76974ADD337B5F3EAA0191AF6C7ADEE6BA86B30B828B7B32948B8DB0FF3E1A04204E4A371B154D42CC2536033F8EE8854FE0EF4BC79CB78A7CEA0C335147C7DF5B0410CF8690DC1D9ECD1951E86B6AE26A94DB";
|
||||
boolean b = api.setToken(Util.hexString2Bytes(tocken));
|
||||
System.out.println(b);
|
||||
|
||||
}
|
||||
|
||||
// 00223030303030303030
|
||||
// 3939
|
||||
// 30303230
|
||||
// 3333333333333333333333333333333333333333
|
||||
|
||||
// 00220000000000000000
|
||||
// 3939
|
||||
// 30303230
|
||||
// 3333333333333333333333333333333333333333
|
||||
|
||||
// 99
|
||||
@Test
|
||||
public void testCalcAuthHead() {
|
||||
String info = "33333333333333333333";
|
||||
byte[] bytes = api.calcAuthHead(info.getBytes());
|
||||
System.out.println(Util.bytes2HexString(bytes));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Loading…
Reference in New Issue
Block a user