6C、6D指令添加接口,通过外部公钥做hash

This commit is contained in:
zhoubin
2021-12-29 10:34:26 +08:00
parent 564c98aca0
commit 91a824101d
4 changed files with 130 additions and 3 deletions
@@ -1297,6 +1297,55 @@ public class TestAllMethods {
System.out.println(b);
}
// 测试通过
// 6D
@Test
public void testNetGSSign() {
String sn = "1004282451";
String data = "111";
/**
* 通过证书序号 sn 获取的 X509 证书文件。
* @param sn sn,证书序号
* @param nCertType 证书类型,0:签名证书, 1:加密证书
* @return base64 编码的证书
*/
String s = api.GetX509CertFileBySN(sn, 0);
System.out.println(s);
/**
* 输入 X509 格式的证书,获取证书信息。
* @param pCert base64 编码的证书
* @return 证书信息类
* 证书信息类,包含:颁发者DN、 证书序列号、 证书主题、证书有效期的起始时间、证书有效期的终止时间、DER编码的公钥。
*/
X509 x509 = api.GetX509CertInfo(s);
byte[] pubKey = x509.getPubKey();
/**
* 用指定的证书私钥对指定的数据进行数字签名。
* 最大签名原始数据为8161byte
* @param publicKey 输入。签名 X509 证书的公钥。
* @param pCertSerial 输入。签名 X509 证书的序列号。
* @param pOrgData 输入。 待签名的原始数据。
* @return 签名数据(BASE64 编码)。
*/
String sign = api.netGSSign(Util.bytes2HexString(pubKey), sn, data.getBytes());
System.out.println("签名: " + sign);
/**
* 用指定证书对指定的原始数据进行数字签名验证。
* @param publicKey 输入。签名 X509 证书的公钥。
* @param pCertSerial 输入。 签名 X509 证书的序列号。
* @param pOrgData 输入。 待签名的原始数据。
* @param pSignData 输入。 签名数据(BASE64 编码)。
* @return true 表示验证正确;false 表示失败;
*/
boolean b = api.netGSVerify(Util.bytes2HexString(pubKey), sn, data.getBytes(), sign);
System.out.println(b);
}
// 测试通过
// 6D
@Test
@@ -1436,7 +1485,8 @@ public class TestAllMethods {
String pUserId = "1572127378000000";
String publicKey = "03420004C51A40A094B6A14500B2980603D68CA263FF1BA238AFB17BB8B791C5F444465A749B68B4584C83E7BEF66DE2446177E14DBE0F32691F54B1636CC73334A1A94D";
String publicKey = "03420004C51A40A094B6A14500B2980603D68CA263FF1BA238AFB17BB8B791C5F444465A7" +
"49B68B4584C83E7BEF66DE2446177E14DBE0F32691F54B1636CC73334A1A94D";
String orgData = "FFFFFFFFFFFFFFFF";
String certId = "0000000011111112";
@@ -221,4 +221,53 @@ public class TestGSYH {
}
// 签名验签流程
@Test
public void testNetGSSign() {
String sn = "1004282451";
String data = "111";
/**
* 通过证书序号 sn 获取的 X509 证书文件。
* @param sn sn,证书序号
* @param nCertType 证书类型,0:签名证书, 1:加密证书
* @return base64 编码的证书
*/
String s = api.GetX509CertFileBySN(sn, 0);
System.out.println("证书信息为: " + s);
/**
* 输入 X509 格式的证书,获取证书信息。
* @param pCert base64 编码的证书
* @return 证书信息类
* 证书信息类,包含:颁发者DN、 证书序列号、 证书主题、证书有效期的起始时间、证书有效期的终止时间、DER编码的公钥。
*/
X509 x509 = api.GetX509CertInfo(s);
byte[] pubKey = x509.getPubKey();
/**
* 用指定的证书私钥对指定的数据进行数字签名。
* 最大签名原始数据为8161byte
* @param publicKey 输入。公钥。
* @param pCertSerial 输入。签名 X509 证书的序列号。
* @param pOrgData 输入。 待签名的原始数据。
* @return 签名数据(BASE64 编码)。
*/
String sign = api.netGSSign(Util.bytes2HexString(pubKey), sn, data.getBytes());
System.out.println("签名结果: " + sign);
/**
* 用指定证书对指定的原始数据进行数字签名验证。
* @param publicKey 输入。公钥。
* @param pCertSerial 输入。 签名 X509 证书的序列号。
* @param pOrgData 输入。 待签名的原始数据。
* @param pSignData 输入。 签名数据(BASE64 编码)。
* @return true 表示验证正确;false 表示失败;
*/
boolean b = api.netGSVerify(Util.bytes2HexString(pubKey), sn, data.getBytes(), sign);
System.out.println("验签结果: " + b);
}
}