137 lines
5.0 KiB
Java
137 lines
5.0 KiB
Java
package com.sunyard.inf.customize;
|
||
|
||
import com.sunyard.cert.X509;
|
||
|
||
public interface SydHAApi {
|
||
|
||
/**
|
||
* 通过机构实体ID获得使用者的SM2公钥(DER编码)
|
||
* @param pUserID 本机构实体ID,最大长度为16位数字,即设备安装生成实体时的实体机构输入栏的内容
|
||
* @param nKeyType 密钥类型,0:签名公钥,1:加密公钥,如无加解密业务,传入0即可
|
||
* @return 输出的公钥串,DER编码,HEX格式,此公钥是机构自己公钥证书的公钥
|
||
*/
|
||
public String SYD_SM2_Get_Id_PublicKey_HA (
|
||
String pUserID,
|
||
int nKeyType
|
||
);
|
||
|
||
|
||
/**
|
||
* 通过证书DN获得机构的公钥(DER编码),联调前需要导入公钥证书
|
||
* @param Dn 证书的DN,每个证书有唯一的DN
|
||
* @param nKeyType 密钥类型,0:签名公钥,1:加密公钥,如无加解密业务,传入0即可
|
||
* @return 输出的公钥串,DER编码,HEX格式,此公钥为他方机构的公钥
|
||
*/
|
||
public String SYD_SM2_Get_Dn_PublicKey_HA (
|
||
byte[] Dn,
|
||
int nKeyType
|
||
);
|
||
|
||
|
||
/**
|
||
* 通过本机构实体ID所对应的私钥对指定的原始数据进行数字签名(PKCS#1)
|
||
* @param pUserID 本机构实体ID,最大长度为16位数字,即设备安装生成实体时的实体机构输入栏的内容
|
||
* @param nOrgDataType 输入的数据类型,0:HASH值,1:原始数据,原始数据由加密设备内部完成HASH并签名
|
||
* @param publicKey 公钥串,DER编码,HEX格式。仅 OrgDataType=1有效, 2.1章节接口,输出公钥原串传入
|
||
* @param orgData 待签名的原始数据
|
||
* @return 签名数据( DER 编码 + Base64 编码)
|
||
*/
|
||
public String SYD_SM2_Sign_HA(
|
||
String pUserID,
|
||
int nOrgDataType,
|
||
byte[] publicKey,
|
||
byte[] orgData
|
||
);
|
||
|
||
/**
|
||
* 通过本机构实体ID所对应的私钥对指定的原始数据进行数字签名(PKCS#1)
|
||
* @param nOrgDataType 输入的数据类型,0:HASH值,1:原始数据,原始数据由加密设备内部完成HASH并签名
|
||
* @param privateKey 私钥串,LMK34-35 下加密的私钥
|
||
* @param publicKey 公钥串,DER编码,HEX格式。仅 OrgDataType=1有效, 2.1章节接口,输出公钥原串传入
|
||
* @param orgData 待签名的原始数据
|
||
* @return 签名数据( DER 编码 + Base64 编码)
|
||
*/
|
||
public String SYD_SM2_Sign_HA(
|
||
int nOrgDataType,
|
||
byte[] privateKey,
|
||
byte[] publicKey,
|
||
byte[] orgData
|
||
);
|
||
|
||
|
||
|
||
/**
|
||
* 用指定的公钥对指定的原始数据进行数字签名验证(PKCS#1)
|
||
* @param nOrgDataType 数据类型,SydApi.DATA_ORIGIN 原始数据 SydApi.DATA_HASH : hash 后的类型
|
||
* @param publicKey 公钥串,DER编码,HEX格式,2.1章节接口,输出公钥原串传入
|
||
* @param orgData 待签名的原始数据
|
||
* @param sign 签名数据 (DER 编码 + Base64 编码)
|
||
* @return 验签是否通过
|
||
*/
|
||
public boolean SYD_SM2_Verify_HA(
|
||
int nOrgDataType,
|
||
byte[] publicKey,
|
||
byte[] orgData,
|
||
String sign
|
||
);
|
||
|
||
|
||
/**
|
||
* 对指定的原始数据核验其带公钥证书签名(PKCS#7)
|
||
* @param orgData 待签名的原始数据
|
||
* @param sign 签名数据
|
||
* @return 验签是否通过
|
||
*/
|
||
public boolean SYD_SM2_DetachedVerify_HA(
|
||
byte[] orgData,
|
||
String sign );
|
||
|
||
|
||
/**
|
||
* 通过指定的私钥对指定的原始数据编制带公钥证书的数字签名(遵循PKCS#7)
|
||
* @param orgData 待签名的原始数据
|
||
* @param sCertDN 签名者证书 DN
|
||
* @return 签名数据
|
||
*/
|
||
public String SYD_SM2_DetachedSign_HA(
|
||
byte[] orgData,
|
||
String sCertDN
|
||
);
|
||
|
||
|
||
/**
|
||
* 用私钥签名(外部私钥)
|
||
* @param nOrgDataType 签名数据类型,0 : hash 1 : 原数据
|
||
* @param privateKey LMK34-35 下加密的私钥
|
||
* @param orgData “签名数据类型”为 0 时:HASH 值。“签名数据类型”为 1 时:要签名的信息
|
||
* @return 签名的 base64 编码
|
||
*/
|
||
public String SM2Sign(
|
||
int nOrgDataType,
|
||
byte[] privateKey,
|
||
byte[] orgData
|
||
);
|
||
|
||
/**
|
||
* 用指定的公钥对指定的原始数据进行数字签名验证(PKCS#1)
|
||
* @param nOrgDataType 签名数据类型,SydApi.DATA_ORIGIN(1) 原始数据 SydApi.DATA_HASH(0) : hash 后的类型
|
||
* @param publicKey 公钥串,DER编码,HEX格式
|
||
* @param orgData 待签名的原始数据,“签名数据类型”为 0 时:HASH 值。“签名数据类型”为 1 时:要签名的信息
|
||
* @param sign S+R
|
||
* @return 验签是否通过
|
||
*/
|
||
public boolean SM2Verify(
|
||
int nOrgDataType,
|
||
byte[] publicKey,
|
||
byte[] orgData,
|
||
byte[] sign
|
||
);
|
||
|
||
public boolean SM2Verify(
|
||
int nOrgDataType,
|
||
byte[] publicKey,
|
||
byte[] orgData,
|
||
String base64Sign
|
||
);
|
||
}
|