/// /// /// /** * @description 不对称加密算法对象 * * PKey 对象属于 crypto 模块,创建: * ```JavaScript * var k = new crypto.PKey(); * ``` * */ declare class Class_PKey extends Class_object { /** * @description PKey 构造函数 */ constructor(); /** * @description 通过 DER 格式的密钥构造 PKey * @param DerKey DER 格式的密钥 * @param password 解密密码 * */ constructor(DerKey: Class_Buffer, password?: string); /** * @description 通过 PEM 格式的密钥构造 PKey * @param pemKey PEM 格式的密钥 * @param password 解密密码 * */ constructor(pemKey: string, password?: string); /** * @description 通过 JSON 格式的密钥构造 PKey * * jsonKey 的格式支持以下四种,RSA 私钥: * ```JavaScript * { * "kty": "RSA", * "n": "0m5lvKpWqy9JS7tV2HIPqHCYHLquSuxIC3F8strIQLJKO3rZmTT96KTnhsOfBO7Y1bI7mnT0PB3_vcHd9ekWMEoZJQw7MuB8KeM_Wn54-elJr5DNLk5bMppSGxX7ZnumiXGG51_X3Yp-_EbGtDG80GxXXix7Mucyo7K25uE0uW8=", * "e": "AQAB", * "d": "agN2O9NxMHL1MTMi75WfL9Pxvl-KWXKqZSF6mjzAsF9iKI8euyHIXYFepzU8kual1RsjDhCnzvWqFvZplW8lXqrHf_P-rS_9Y4gBUw6pjnI_DnFIRwWHRvrUHHSCfWOdTCIKdOTkgLZuGFuhEY3RMIW0WSYejjLtftwy0RVxAzk=", * "p": "6a4G1qmfwWmn1biigN7IVFlkbLf9oVe6g7rOmHxI-hn1GRxKDSVuAUrmR1IhuAnca9M0y7SD-7TUs6wjOxWxaw==", * "q": "5ofkxFKdPBD0CQHMb9q13AMHUVe0rJ-hSjqqIBrmqApUOneyAcMV76M0QyIQnI2p3POa4Qu_7XChDwRVl7LlDQ==", * "dp": "2mXGiGwCHl8j-FBWuID-1C6z-BRB3MBEVoeKPOOzxOPruatB3mWEGXsqG7A8SWgV9URxTI2K6P3J6Z7RUpBkvw==", * "dq": "oagn5vfb5NQqnOpS9xkSsD67cfIj821ZSFlNFYhnuOzNVda7z_qCtnHm4zDPH0lEFXoKYMfBhfqWJpaugttjPQ==", * "qi": "dqEQgxNmOVFrF4s776hTqeC6oEDila8EvpVb2F2ZvwAOLjCQ66OiAZK1BiYGHqUy0NeqNmtlsLSuBEZQZvqZwg==" * } * ``` * RSA 公钥: * ```JavaScript * { * "kty": "RSA", * "n": "0m5lvKpWqy9JS7tV2HIPqHCYHLquSuxIC3F8strIQLJKO3rZmTT96KTnhsOfBO7Y1bI7mnT0PB3_vcHd9ekWMEoZJQw7MuB8KeM_Wn54-elJr5DNLk5bMppSGxX7ZnumiXGG51_X3Yp-_EbGtDG80GxXXix7Mucyo7K25uE0uW8=", * "e": "AQAB" * } * ``` * EC 私钥: * ```JavaScript * { * "kty": "EC", * "crv": "P-521", * "x": "ATfNNFuuvlGxrTGoXgyfSAGgRNNDnO3rN3k74urKJdVS14RYhdnSwm91Bm-F1l-T1XKlAY2yRnzG9w1Ukvo8c0wL", * "y": "ASBHqrruB6kdkEUB3vlW3-UIkk4HtKdUeTwN-7m3j2rgZvYR1ffRAapDvWqKGiBjomqWafxokBkbDI0c95f6f4XU", * "d": "AfkIbUHXfW41njdpoKuqqKludcoLJS8D_oMEwkj-GVaXFNKccIoF5iKGu2c69kNDjo83R_7wyGlfRczsklkik1ST" * } * ``` * EC 公钥: * ```JavaScript * { * "kty": "EC", * "crv": "P-521", * "x": "ATfNNFuuvlGxrTGoXgyfSAGgRNNDnO3rN3k74urKJdVS14RYhdnSwm91Bm-F1l-T1XKlAY2yRnzG9w1Ukvo8c0wL", * "y": "ASBHqrruB6kdkEUB3vlW3-UIkk4HtKdUeTwN-7m3j2rgZvYR1ffRAapDvWqKGiBjomqWafxokBkbDI0c95f6f4XU" * } * ``` * @param jsonKey JSON 格式的密钥 * */ constructor(jsonKey: FIBJS.GeneralObject); /** * @description 返回当前算法名称 */ readonly name: string; /** * @description 返回当前算法密码长度,以位为单位 */ readonly keySize: number; /** * @description 返回当前密钥的公钥 * @return 当前密钥的公钥 * */ readonly publicKey: Class_PKey; /** * @description 生成一个 RSA 私钥 * @param size 指定 RSA 密钥长度,bit 为单位 * */ genRsaKey(size: number): void; genRsaKey(size: number, callback: (err: Error | undefined | null)=>any): void; /** * @description 生成一个 EC 私钥 * @param curve 指定预置椭圆曲线,可选值为:"secp521r1", "brainpoolP512r1", "secp384r1", "brainpoolP384r1", "secp256r1", "secp256k1", "brainpoolP256r1", "secp224r1", "secp224k1", "secp192r1", "secp192k1" * */ genEcKey(curve?: string): void; genEcKey(curve?: string, callback?: (err: Error | undefined | null)=>any): void; /** * @description 生成一个 SM2 私钥 * */ genSm2Key(): void; genSm2Key(callback: (err: Error | undefined | null)=>any): void; /** * @description 查询当前密钥是否为私钥 * @return 为 True 表示为私钥 * */ isPrivate(): boolean; /** * @description 复制当前密钥 * @return 当前密钥的复制对象 * */ clone(): Class_PKey; /** * @description 加载一个 DER 格式的密钥 * @param DerKey DER 格式的密钥 * @param password 解密密码 * */ importKey(DerKey: Class_Buffer, password?: string): void; /** * @description 加载一个 PEM 格式的密钥 * @param pemKey PEM 格式的密钥 * @param password 解密密码 * */ importKey(pemKey: string, password?: string): void; /** * @description 加载一个 JSON 格式的密钥 * * jsonKey 的格式支持以下四种,RSA 私钥: * ```JavaScript * { * "kty": "RSA", * "n": "0m5lvKpWqy9JS7tV2HIPqHCYHLquSuxIC3F8strIQLJKO3rZmTT96KTnhsOfBO7Y1bI7mnT0PB3_vcHd9ekWMEoZJQw7MuB8KeM_Wn54-elJr5DNLk5bMppSGxX7ZnumiXGG51_X3Yp-_EbGtDG80GxXXix7Mucyo7K25uE0uW8=", * "e": "AQAB", * "d": "agN2O9NxMHL1MTMi75WfL9Pxvl-KWXKqZSF6mjzAsF9iKI8euyHIXYFepzU8kual1RsjDhCnzvWqFvZplW8lXqrHf_P-rS_9Y4gBUw6pjnI_DnFIRwWHRvrUHHSCfWOdTCIKdOTkgLZuGFuhEY3RMIW0WSYejjLtftwy0RVxAzk=", * "p": "6a4G1qmfwWmn1biigN7IVFlkbLf9oVe6g7rOmHxI-hn1GRxKDSVuAUrmR1IhuAnca9M0y7SD-7TUs6wjOxWxaw==", * "q": "5ofkxFKdPBD0CQHMb9q13AMHUVe0rJ-hSjqqIBrmqApUOneyAcMV76M0QyIQnI2p3POa4Qu_7XChDwRVl7LlDQ==", * "dp": "2mXGiGwCHl8j-FBWuID-1C6z-BRB3MBEVoeKPOOzxOPruatB3mWEGXsqG7A8SWgV9URxTI2K6P3J6Z7RUpBkvw==", * "dq": "oagn5vfb5NQqnOpS9xkSsD67cfIj821ZSFlNFYhnuOzNVda7z_qCtnHm4zDPH0lEFXoKYMfBhfqWJpaugttjPQ==", * "qi": "dqEQgxNmOVFrF4s776hTqeC6oEDila8EvpVb2F2ZvwAOLjCQ66OiAZK1BiYGHqUy0NeqNmtlsLSuBEZQZvqZwg==" * } * ``` * RSA 公钥: * ```JavaScript * { * "kty": "RSA", * "n": "0m5lvKpWqy9JS7tV2HIPqHCYHLquSuxIC3F8strIQLJKO3rZmTT96KTnhsOfBO7Y1bI7mnT0PB3_vcHd9ekWMEoZJQw7MuB8KeM_Wn54-elJr5DNLk5bMppSGxX7ZnumiXGG51_X3Yp-_EbGtDG80GxXXix7Mucyo7K25uE0uW8=", * "e": "AQAB" * } * ``` * EC 私钥: * ```JavaScript * { * "kty": "EC", * "crv": "P-521", * "x": "ATfNNFuuvlGxrTGoXgyfSAGgRNNDnO3rN3k74urKJdVS14RYhdnSwm91Bm-F1l-T1XKlAY2yRnzG9w1Ukvo8c0wL", * "y": "ASBHqrruB6kdkEUB3vlW3-UIkk4HtKdUeTwN-7m3j2rgZvYR1ffRAapDvWqKGiBjomqWafxokBkbDI0c95f6f4XU", * "d": "AfkIbUHXfW41njdpoKuqqKludcoLJS8D_oMEwkj-GVaXFNKccIoF5iKGu2c69kNDjo83R_7wyGlfRczsklkik1ST" * } * ``` * EC 公钥: * ```JavaScript * { * "kty": "EC", * "crv": "P-521", * "x": "ATfNNFuuvlGxrTGoXgyfSAGgRNNDnO3rN3k74urKJdVS14RYhdnSwm91Bm-F1l-T1XKlAY2yRnzG9w1Ukvo8c0wL", * "y": "ASBHqrruB6kdkEUB3vlW3-UIkk4HtKdUeTwN-7m3j2rgZvYR1ffRAapDvWqKGiBjomqWafxokBkbDI0c95f6f4XU" * } * ``` * @param jsonKey JSON 格式的密钥 * */ importKey(jsonKey: FIBJS.GeneralObject): void; /** * @description 加载一个 PEM/DER 格式的密钥文件 * @param filename 密钥文件名 * @param password 解密密码 * */ importFile(filename: string, password?: string): void; /** * @description 返回当前 key 的 PEM 格式编码 * @return 当前 key 的 PEM 格式编码 * */ exportPem(): string; /** * @description 返回当前 key 的 DER 格式编码 * @return 当前 key 的 DER 格式编码 * */ exportDer(): Class_Buffer; /** * @description 返回当前 key 的 DER 格式编码 * @return 当前 key 的 DER 格式编码 * */ exportJson(): FIBJS.GeneralObject; /** * @description 使用当前算法密码公钥加密数据 * @param data 指定要加密的数据 * @return 返回加密后的数据 * */ encrypt(data: Class_Buffer): Class_Buffer; encrypt(data: Class_Buffer, callback: (err: Error | undefined | null, retVal: Class_Buffer)=>any): void; /** * @description 使用当前算法密码私钥解密数据 * @param data 指定要解密的数据 * @return 返回解密后的数据 * */ decrypt(data: Class_Buffer): Class_Buffer; decrypt(data: Class_Buffer, callback: (err: Error | undefined | null, retVal: Class_Buffer)=>any): void; /** * @description 使用当前算法密码私钥签名数据 * @param data 指定要签名的数据 * @param alg 指定要签名的算法, 默认0. 支持算法: 0=NONE,1=MD2,2=MD4,3=MD5,4=SHA1,5=SHA224,6=SHA256,7=SHA384,8=SHA512,9=RIPEMD160 * @return 返回签名后的数据 * */ sign(data: Class_Buffer, alg?: number): Class_Buffer; sign(data: Class_Buffer, alg?: number, callback?: (err: Error | undefined | null, retVal: Class_Buffer)=>any): void; /** * @description 使用当前算法密码公钥验证数据 * @param data 指定要验证的数据 * @param sign 指定要验证的签名 * @param alg 指定要签名的算法, 默认0. 支持算法: 0=NONE,1=MD2,2=MD4,3=MD5,4=SHA1,5=SHA224,6=SHA256,7=SHA384,8=SHA512,9=RIPEMD160 * @return 返回验证后的结果 * */ verify(data: Class_Buffer, sign: Class_Buffer, alg?: number): boolean; verify(data: Class_Buffer, sign: Class_Buffer, alg?: number, callback?: (err: Error | undefined | null, retVal: boolean)=>any): void; }