package com.sunyard.inf.sva; import com.sunyard.RetWrap; import com.sunyard.cert.X509; import java.io.UnsupportedEncodingException; /** * 带原文的签名验签 */ public interface SydAttachedSVApi { /** * sm2私钥签名 * 用户id默认为1234567812345678 * 签名结果R/S序列串先进行der编码,再进行base64编码 * * @param flag 私钥标志位,当为1时第二个参数传入存储私钥的索引,当为0时第二个参数传入私钥 * @param privateKey 当私钥标志位为1时传入存储私钥的索引,当为0时传入私钥 * @param publicKey 公钥 * @param orgData 要签名的信息 * @return 签名结果 */ byte[] SM2SignC(int flag, String privateKey, byte[] publicKey, byte[] orgData); byte[] SM2SignC(int flag, String pUserID, String privateKey, byte[] publicKey, byte[] orgData); /** * SM2 私钥签名 * @param pUserID 使用者的 ID,最大长度为 16 位数字,右对齐。 * @param certNo 证书号 * @param nOrgDataType 原始数据类型 0 : hash 1 : 原数据 * @param publicKey 公钥的 DER 编码 * @param orgData 原始数据 * @return 签名的 base64 编码 */ String SM2SignC( String pUserID, String certNo, int nOrgDataType, byte[] publicKey, byte[] orgData ); /** * RSA 私钥签名 * @param HashMark 哈希标识 指示用于哈希证书数据的哈希算法的标识。0: SHA1 1: SHA256 2: MD5。 * @param privateKeyTag 私钥标记 指示私钥位置的标记。数字为存储私钥的索引,除了全9表示使用由命令中提供的密钥。 * 27位的索引号:16位机构号+3位密钥类型+8位密钥索引号 * @param nOrgDataType 原始数据类型 0 : hash 1 : 原数据 * @param orgData 原始数据 * @return 签名的 base64 编码 */ byte[] RSASignC( String privateKeyTag, int HashMark, int nOrgDataType, byte[] orgData); byte[] RSASign( String privateKey, int HashMark, int nOrgDataType, byte[] orgData); /** * 采用 RSA 算法,用指定的公钥对指定的原始数据进行数字签名验证。 * @param HashMark 哈希标识 * @param nOrgDataType 签名方式 * @param publicKey 公钥 * @param orgData 原始数据 * @param sign base64 格式的签名 * @return true 验签通过 false 验签失败 */ boolean RSAVerify( int HashMark, int nOrgDataType, byte[] publicKey, byte[] orgData, byte[] sign); /** * sm2验签 * 用户id默认为1234567812345678 * * @param publicKey 公钥的 DER 编码 * @param orgData 要签名的信息 * @param base64Sign 计算的签名,签名结果R/S序列串先进行der编码,再进行base64编码后的结果 * @return true 验签成功,false 验签失败 */ boolean SM2Verify(byte[] publicKey, byte[] orgData, String base64Sign); /** * 采用 SM2 算法,用指定的公钥对指定的原始数据进行数字签名验证。 * @param certNo id 用于计算SM3-HASH * @param nOrgDataType 原始数据类型 0 : hash 1 : 原数据,用1.2.3章节限定符亦可 * @param publicKey 公钥 * @param orgData 原始数据 * @param sign base64 格式的签名 * @return true 验签通过 false 验签失败 */ boolean SM2Verify( String certNo, int nOrgDataType, byte[] publicKey, byte[] orgData, byte[] sign ); /** * SM2 私钥签名 * @param certNo 证书号 * @param orgData 原始数据 * @return 签名的 base64 编码 */ String SM2SignCustomized( String certNo, byte[] orgData ); /** * 采用 SM2 算法,用指定的公钥对指定的原始数据进行数字签名验证。 * @param certNo 证书号 * @param orgData 原始数据 * @param sign base64 格式的签名 * @return true 验签通过 false 验签失败 */ boolean SM2VerifyCustomized( String certNo, byte[] orgData, String sign ); /** * 带公钥证书与原始数据的数字签名(遵循 PKCS#7) * 使用指定的证书 DN,从加密设备获取对应的私钥证书,对指定的原始数据编制带公钥证书的数字签名(遵循 PKCS#7)。 * * @param orgData 待签名数据 * @param sCertDN 证书DN * @return * 符合PKCS7标准的签名结果 */ String attachedSign(byte[] orgData, String sCertDN) throws UnsupportedEncodingException; byte[] attachedSignC(byte[] orgData, String sCertDN); /** * 人行项目需要需要支持RSA * 带公钥证书与原始数据的数字签名(遵循 PKCS#7) * 使用指定的证书 DN,从加密设备获取对应的私钥证书,对指定的原始数据编制带公钥证书的数字签名(遵循 PKCS#7)。 * * @param orgData 待签名数据 * @param sCertDN 证书DN * @return * 符合PKCS7标准的签名结果 */ String attachedSignRSA(int rFlag,byte[] orgData, String sCertDN) throws UnsupportedEncodingException; /** * 带公钥证书与原始数据的数字签名验签(遵循 PKCS#7) * 对指定的原始数据核验其带公钥证书签名。如签名有效(含证书无效)且需返回签名者公钥证书信息时,同时返回签名者公钥证书信息。 * * @param sign 已签名数据 * @return true 验签通过 false 验签失败 */ boolean attachedVerify(String sign); /** * 带公钥证书与原始数据的数字签名验签(遵循 PKCS#7) * 对指定的原始数据核验其带公钥证书签名。如签名有效(含证书无效)且需返回签名者公钥证书信息时,同时返回签名者公钥证书信息。 * * @param sign 已签名数据 * @return true 验签通过 false 验签失败 */ boolean attachedVerifyRSA(int rFlag,String sign); boolean attachedVerify(byte[] sign); /** * 带公钥证书与原始数据的数字签名验签(遵循 PKCS#7) * 对指定的原始数据核验其带公钥证书签名。如签名有效(含证书无效)且需返回签名者公钥证书信息时,同时返回签名者公钥证书信息。 * * @param sign 已签名数据 * @return 成功返回签名的原数据,失败则报错 */ byte[] attachedVerifyRD(byte[] sign); byte[] attachedVerifyRD(String sign); /** * 带公钥证书与原始数据的数字签名验签(遵循 PKCS#7) * 对指定的原始数据核验其带公钥证书签名。如签名有效(含证书无效)且需返回签名者公钥证书信息时,同时返回签名者公钥证书信息。 * * @param sign 已签名数据 * @return * 若发送报文返回证书信息标志位为0,则返回已签名数据, * 若发送报文返回证书信息标志位为1,则返回CERT_INFO结构的证书数据 */ X509 attachedVerifyAndGetX509(byte[] sign); X509 attachedVerifyAndGetX509(String sign); /** * 带公钥证书与原始数据的数字签名验签(遵循 PKCS#7) * 对指定的原始数据核验其带公钥证书签名。如签名有效(含证书无效)且需返回签名者公钥证书信息时,同时返回签名者公钥证书信息。 * * @param sign 已签名数据 * @return * 若发送报文返回证书信息标志位为0,则返回已签名数据, * 若发送报文返回证书信息标志位为1,则返回CERT_INFO结构的证书数据 */ RetWrap attachedVerifyAndGetAll(byte[] sign); }