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
@@ -15,7 +15,7 @@ public interface SydQNUCApi {
* @param pOrgData 输入。 待签名的原始数据。
* @return 签名数据(BASE64 编码)。
*/
public String netSign(String pCertSerial, byte[] pOrgData);
String netSign(String pCertSerial, byte[] pOrgData);
/**
@@ -31,4 +31,24 @@ public interface SydQNUCApi {
String pSignData
);
/**
* 用指定的证书私钥对指定的数据进行数字签名。
* 最大签名原始数据为8161byte
* @param publicKey 输入。签名 X509 证书的公钥。
* @param pCertSerial 输入。签名 X509 证书的序列号。
* @param pOrgData 输入。 待签名的原始数据。
* @return 签名数据(BASE64 编码)。
*/
String netGSSign(String publicKey, String pCertSerial, byte[] pOrgData);
/**
* 用指定证书对指定的原始数据进行数字签名验证。
* @param publicKey 输入。签名 X509 证书的公钥。
* @param pCertSerial 输入。 签名 X509 证书的序列号。
* @param pOrgData 输入。 待签名的原始数据。
* @param pSignData 输入。 签名数据(BASE64 编码)。
* @return true 表示验证正确;false 表示失败;
*/
boolean netGSVerify(String publicKey, String pCertSerial, byte[] pOrgData, String pSignData);
}
@@ -2453,11 +2453,19 @@ public class SydApi4j implements SydApi {
return true;
}
public String netGSSign(String publicKey, String pCertSerial, byte[] pOrgData) {
byte[] hash = SM3Hash(publicKey, pOrgData);
return _netSign(pCertSerial, hash);
}
public boolean netGSVerify(String publicKey, String pCertSerial, byte[] pOrgData, String pSignData) {
byte[] hash = SM3Hash(publicKey, pOrgData);
return _netVerify(pCertSerial, hash, pSignData);
}
// 测试通过
private String _netSign(String pCertSerial, byte[] pOrgData) {
// 获取协议
//ProtocolRender render = pset.getProtocolReqRender("6C");
Proto6C proto = new Proto6C();