UNPKG

mix-encryption

Version:

基于国密算法 SM2 和 SM4 实现的混合加密解决方案。

88 lines 3.43 kB
export interface EncryptionOption { cipherMode?: number; selfPriKey?: string; selfPubKey?: string; partnerKey?: string; } export interface MixEncryptResult { encryptedData: string; encryptKey: string; } export interface VerifyResult { signValueHex: string; data: Record<string, any>; } /** * 国密混合加密处理器(SM2+SM4) * 功能: * 1. 使用SM4加密业务数据 * 2. 使用SM2加密SM4密钥 * 3. 提供数字签名验证功能 */ declare class MixEncryption { private cipherMode; private selfPriKey; private selfPubKey; private partnerKey; constructor({ cipherMode, selfPriKey, selfPubKey, partnerKey, }?: EncryptionOption); get publicKey(): string; /** * 重置密钥对 * 清空当前实例的公钥、私钥及合作方公钥 * 适用于需要重新生成密钥对或清除密钥的场景 */ resetKeyPair(): void; /** * 混合加密方法,使用 SM4 加密请求数据,使用 SM2 加密 SM4 密钥 * @param requestData - 需要加密的请求数据,类型为键值对对象 * @returns 包含加密后的请求数据和加密后的 SM4 密钥的对象 * @throws 若公钥未初始化,抛出 "Public key not initialized" 错误 * @throws 若请求数据不是对象,抛出 "requestData must be an Object" 错误 */ mixCryptoEnCrypto(requestData: Record<string, any>): MixEncryptResult; /** * 混合解密方法,使用 SM2 解密 SM4 密钥,再使用解密后的 SM4 密钥解密密文响应数据 * @param responseData - 需要解密的响应数据,类型为字符串 * @param secretSM4Key - 加密后的 SM4 密钥,类型为字符串 * @param needVerifySign - 是否需要验证签名,类型为布尔值,默认值为 true,首次和服务端通信时,还未拿到服务端公钥,不能验签 * @returns 解密后的明文响应数据 * @throws 若私钥未初始化,调用 sm2DeCrypto 方法时会抛出 "Private key not initialized" 错误 */ mixCryptoDeCrypto(responseData: string, secretSM4Key: string, needVerifySign?: boolean): Record<string, any> | string; /** * 生成SM2算法密钥对 * 当开启加密功能时,生成新的SM2公私钥对并更新实例密钥 * 适用于密钥初始化或密钥轮换场景 * @returns 包含十六进制格式公钥和私钥的对象(openEncrypt为true时返回),否则返回空对象 */ generateSM2Key(): { publicKey: string; privateKey: string; }; /** * 接收配对公钥 * @param key partner公钥 */ acceptPartnerKey(key: string): void; /** * 更新密钥对 * @param sendCallBack - 发送新公钥到合作端并获取新公钥的回调函数 */ renewKeyPair(sendCallBack: (data: MixEncryptResult) => Promise<string>): Promise<void>; /** * 生成随机HEX字符串 * @param length - 需要生成的字符串长度(实际输出长度为此参数值) */ randomStr(length: number): string; private doVerifySign; private doSign; private sm2EnCrypto; private sm2DeCrypto; private sm4EnCrypto; private generateSM4key; private sm4DeCrypto; private getCrypto; } export default function getCryptoInstance(options?: EncryptionOption): MixEncryption; export {}; //# sourceMappingURL=mix-encryption.d.ts.map