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 ); }