1、修改了8017指令xml文档,兼容通过sn获取证书信息。添加通过sn获取证书信息的接口

This commit is contained in:
zhoubin
2021-12-27 16:17:38 +08:00
parent 45db61b1cd
commit 38327139b7
6 changed files with 149 additions and 34 deletions
@@ -9,7 +9,6 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import racal.sunyard.main.SydApi4j;
import racal.sunyard.main.SydApiBuilder;
import java.io.*;
import java.util.Base64;
@@ -32,10 +31,19 @@ public class TestAllMethods {
System.setProperty("com.sunyard.sydapi4j.debug", "true");
api = (SydApi4j) new SydApi4j().connect("192.168.0.66", 8889, null, 1000);
// api = (SydApi4j) new SydApi4j().connect("192.168.0.100", 8889, null, 1000);
// api = (SydApi4j) new SydApi4j().connect("192.168.0.99", 8889, null, 1000);
// api = (SydApi4j) new SydApi4j().connect("172.16.17.162", 8889, null, 1000);
// api = (SydApi4j) new SydApi4j().connect("192.168.1.7", 8889, null, 5000);
}
// 测试通过
// Y8
@Test
public void testLink() {
String s = api.GenerateRandom(16);
System.out.println(s);
}
@After
public void after() {
try {
@@ -1407,20 +1415,23 @@ public class TestAllMethods {
"ODAMBggqgRzPVQGDdQUAA0gAMEUCIG0PqR+bbdNOb5Q4kfHq8cQZJ1wa/P+bqFfv\n" +
"6bbL9RZCAiEAiH1LKCjq9p7MS7qOK+su5I0kenCQ505ZuuAWDMph0xk=\n" +
"-----END CERTIFICATE-----";
System.out.println(api.importCert(getSafeBytes(cert), null));
}
String cert2 = "-----BEGIN CERTIFICATE-----\n" +
"MIIB4TCCAYSgAwIBAgIIPJMAAAAAACswDAYIKoEcz1UBg3UFADAmMQswCQYDVQQG\n" +
"EwJDTjEXMBUGA1UEAwwOU3VueWFyZFNNMlJvb3QwHhcNMTcxMTE3MDIzMDUxWhcN\n" +
"MjMwMTI1MDIzMDUxWjBZMQswCQYDVQQGEwJDTjELMAkGA1UECAwCWkoxCzAJBgNV\n" +
"BAcMAkhaMQ4wDAYDVQQKDAVISkpZUzERMA8GA1UECwwIMDAwMDAwMDAxDTALBgNV\n" +
"BAMMBDIyMjIwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAATxqegqlmc/lduzBaKR\n" +
"EyeNuPf78RA3wfJuhAv8zymLwQ6doefs1Iul+kMOukhfwY9aEhVdqws34FZMm2vs\n" +
"1+wXo2cwZTAOBgNVHQ8BAf8EBAMCAMAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYD\n" +
"VR0jBBgwFoAU93/arv8hxtk6eq2g+6z+AqVO1cEwHQYDVR0OBBYEFHfjFl72707A\n" +
"6s+YVuGvEuyvFWTMMAwGCCqBHM9VAYN1BQADSQAwRgIhALzg7+QW7RU4phv+4arE\n" +
"v0IOeaA6dtR8VT4Bwin9oHTWAiEA9kLESGiYm8L5Htf7GBXgH+pk7BJ68clml41B\n" +
"/ejZglI=\n" +
"-----END CERTIFICATE-----";
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 jgh = "00000000";
System.out.println(api.importCert(Util.getSafeBytes(cert2), jgh.getBytes()));
}
@@ -1645,11 +1656,27 @@ public class TestAllMethods {
@Test
public void testGetX509CertFileC() {
String userId = "8012";
String userId2 = "8001";
String s = api.GetX509CertFileC(userId, 0);
String s = api.GetX509CertFileC(userId2, 0);
System.out.println(s);
X509 x509 = api.GetX509CertInfo(s);
System.out.println("颁发者DN为: " + x509.getIssuer());
System.out.println("证书主题: " + x509.getSubject());
}
// 8017
@Test
public void testGetX509CertFileBySN() {
String sn = "1004282452";
String sn2 = "3C93000000000025";
String s = api.GetX509CertFileBySN(sn2, 0);
System.out.println(s);
X509 x509 = api.GetX509CertInfo(s);
System.out.println("证书序列号: " + x509.getSerialNumber());
System.out.println("证书主题DN: " + x509.getSubject());
}
// 测试通过
@@ -8,6 +8,7 @@ import org.junit.Before;
import org.junit.Test;
import racal.sunyard.main.SydApi4j;
import java.io.IOException;
import java.util.Base64;
/**
@@ -25,7 +26,7 @@ public class TestGSYH {
public void before() {
// 通过设置debug的属性开启debug,如果不设置则默认不打开
System.setProperty("com.sunyard.sydapi4j.debug", "true");
api = (SydApi4j) new SydApi4j().connect("192.168.0.100", 8889, null, 1000);
api = (SydApi4j) new SydApi4j().connect("192.168.0.66", 8889, null, 1000);
}
@@ -92,16 +93,16 @@ public class TestGSYH {
// 测试通过
// 8017
@Test
public void testGetX509CertFileC() {
String userId = "8001";
public void testGetX509CertFileBySN() {
String sn2 = "3C93000000000025";
/**
* 通过使用者 ID 获取的 X509 证书文件。
* @param userId 使用者的 ID,最大长度为 16 位数字(要与生成实体的机构号保持一致)。
* 通过证书序号 sn 获取的 X509 证书文件。
* @param sn sn,证书序号
* @param nCertType 证书类型,0:签名证书, 1:加密证书
* @return base64 编码的证书
*/
String s = api.GetX509CertFileC(userId, 1);
String s = api.GetX509CertFileBySN(sn2, 0);
System.out.println(s);
/**
@@ -111,8 +112,36 @@ public class TestGSYH {
* 证书信息类,包含:颁发者DN、 证书序列号、 证书主题、证书有效期的起始时间、证书有效期的终止时间、DER编码的公钥。
*/
X509 x509 = api.GetX509CertInfo(s);
byte[] pubKey = x509.getPubKey();
System.out.println("publicKey: " + Util.bytes2HexString(pubKey));
System.out.println("证书主题DN: " + x509.getSubject());
}
@Test
public void testImportCert2() throws IOException {
String cert2 = "-----BEGIN CERTIFICATE-----\n" +
"MIIB4TCCAYSgAwIBAgIIPJMAAAAAACswDAYIKoEcz1UBg3UFADAmMQswCQYDVQQG\n" +
"EwJDTjEXMBUGA1UEAwwOU3VueWFyZFNNMlJvb3QwHhcNMTcxMTE3MDIzMDUxWhcN\n" +
"MjMwMTI1MDIzMDUxWjBZMQswCQYDVQQGEwJDTjELMAkGA1UECAwCWkoxCzAJBgNV\n" +
"BAcMAkhaMQ4wDAYDVQQKDAVISkpZUzERMA8GA1UECwwIMDAwMDAwMDAxDTALBgNV\n" +
"BAMMBDIyMjIwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAATxqegqlmc/lduzBaKR\n" +
"EyeNuPf78RA3wfJuhAv8zymLwQ6doefs1Iul+kMOukhfwY9aEhVdqws34FZMm2vs\n" +
"1+wXo2cwZTAOBgNVHQ8BAf8EBAMCAMAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYD\n" +
"VR0jBBgwFoAU93/arv8hxtk6eq2g+6z+AqVO1cEwHQYDVR0OBBYEFHfjFl72707A\n" +
"6s+YVuGvEuyvFWTMMAwGCCqBHM9VAYN1BQADSQAwRgIhALzg7+QW7RU4phv+4arE\n" +
"v0IOeaA6dtR8VT4Bwin9oHTWAiEA9kLESGiYm8L5Htf7GBXgH+pk7BJ68clml41B\n" +
"/ejZglI=\n" +
"-----END CERTIFICATE-----";
String organizationId = "00000000";
/**
* 上传指定证书到加密设备
* @param certData 证书的字节数组
* @param organizationId 机构号的字节数组
* @return
*/
RetWrap retWrap = api.importCert(Util.getSafeBytes(cert2), organizationId.getBytes());
System.out.println(retWrap);
}
@Test