///
///
///
///
///
///
///
///
/**
* @description 加密算法模块
*
* 使用方法:
* ```JavaScript
* var crypto = require('crypto');
* ```
*
*/
declare module 'crypto' {
/**
* @description 指定对称加密算法 AES,支持 128, 192, 256 位 key,分组密码工作模式支持 ECB, CBC, CFB128, CTR, GCM,CCM,XTS
*/
export const AES: 1;
/**
* @description 指定对称加密算法 CAMELLIA,支持 128, 192, 256 位 key,分组密码工作模式支持 ECB, CBC, CFB128, CTR, GCM,CCM
*/
export const CAMELLIA: 2;
/**
* @description 指定对称加密算法 DES,支持 64 位 key,分组密码工作模式支持 ECB, CBC
*/
export const DES: 3;
/**
* @description 指定对称加密算法 DES-EDE,支持 128 位 key,分组密码工作模式支持 ECB, CBC
*/
export const DES_EDE: 4;
/**
* @description 指定对称加密算法 DES-EDE3,支持 192 位 key,分组密码工作模式支持 ECB, CBC
*/
export const DES_EDE3: 5;
/**
* @description 指定对称加密算法 BLOWFISH,支持 192 位 key,分组密码工作模式支持 ECB, CBC, CFB64, CTR
*/
export const BLOWFISH: 6;
/**
* @description 指定对称加密算法 ARC4,支持 40, 56, 64, 128 位 key
*/
export const ARC4: 7;
/**
* @description 指定对称加密算法 ARIA,支持 128, 192, 256 位 key,分组密码工作模式支持 ECB, CBC, CFB128, CTR, GCM,CCM
*/
export const ARIA: 8;
/**
* @description 指定对称加密算法 CHACHA20,支持 256 位 key,分组密码工作模式支持 POLY1305
*/
export const CHACHA20: 9;
/**
* @description 指定对称加密算法 SM4, 分组密码工作模式支持 ECB, CBC
*/
export const SM4: 10;
/**
* @description 指定分组密码工作模式支持 ECB
*/
export const ECB: 1;
/**
* @description 指定分组密码工作模式支持 CBC
*/
export const CBC: 2;
/**
* @description 指定分组密码工作模式支持 CFB64
*/
export const CFB64: 3;
/**
* @description 指定分组密码工作模式支持 CFB128
*/
export const CFB128: 4;
/**
* @description 指定分组密码工作模式支持 OFB
*/
export const OFB: 5;
/**
* @description 指定分组密码工作模式支持 CTR
*/
export const CTR: 6;
/**
* @description 指定分组密码工作模式支持 GCM
*/
export const GCM: 7;
/**
* @description 指定流密码模式
*/
export const STREAM: 8;
/**
* @description 指定分组密码工作模式支持 CCM
*/
export const CCM: 9;
/**
* @description 指定分组密码工作模式支持 XTS
*/
export const XTS: 10;
/**
* @description 指定分组密码工作模式支持 POLY1305
*/
export const POLY1305: 11;
/**
* @description 指定填充模式为 PKCS7
*/
export const PKCS7: 0;
/**
* @description 指定填充模式为 ONE_AND_ZEROS
*/
export const ONE_AND_ZEROS: 1;
/**
* @description 指定填充模式为 ZEROS_AND_LEN
*/
export const ZEROS_AND_LEN: 2;
/**
* @description 指定填充模式为 ZEROS
*/
export const ZEROS: 3;
/**
* @description 指定填充模式为 NOPADDING
*/
export const NOPADDING: 4;
/**
* @description Cipher 构造函数,参见 Cipher
*/
const Cipher: typeof Class_Cipher;
/**
* @description PKey 构造函数,参见 PKey
*/
const PKey: typeof Class_PKey;
/**
* @description X509Cert 构造函数,参见 X509Cert
*/
const X509Cert: typeof Class_X509Cert;
/**
* @description X509Crl 构造函数,参见 X509Crl
*/
const X509Crl: typeof Class_X509Crl;
/**
* @description X509Req 构造函数,参见 X509Req
*/
const X509Req: typeof Class_X509Req;
/**
* @description 根据给定的算法名称创建一个信息摘要对象
* @param algo 指定信息摘要对象的算法
* @return 返回信息摘要对象
*
*/
function createHash(algo: string): Class_Digest;
/**
* @description 根据给定的算法名称创建一个 hmac 信息摘要对象
* @param algo 指定信息摘要对象的算法
* @param key 二进制签名密钥
* @return 返回信息摘要对象
*
*/
function createHmac(algo: string, key: Class_Buffer): Class_Digest;
/**
* @description 加载一个 PEM/DER 格式的密钥文件
* @param filename 密钥文件名
* @param password 解密密码
* @return 返回包含密钥的对象
*
*/
function loadPKey(filename: string, password?: string): Class_PKey;
/**
* @description 加载一个 CRT/PEM/DER/TXT 格式的证书,可多次调用
*
* loadFile 加载 mozilla 的 certdata,txt, 可于 http://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt 下载使用
* @param filename 证书文件名
* @return 返回包含证书的对象
*
*/
function loadCert(filename: string): Class_X509Cert;
/**
* @description 加载一个 PEM/DER 格式的撤销证书,可多次调用
* @param filename 撤销证书文件名
* @return 返回包含撤销证书的对象
*
*/
function loadCrl(filename: string): Class_X509Crl;
/**
* @description 加载一个 PEM/DER 格式的证书请求,可多次调用
* @param filename 证书请求文件名
* @return 返回包含请求证书的对象
*
*/
function loadReq(filename: string): Class_X509Req;
/**
* @description 生成指定尺寸的随机数,使用 havege 生成器
* @param size 指定生成的随机数尺寸
* @return 返回生成的随机数
*
*/
function randomBytes(size: number): Class_Buffer;
function randomBytes(size: number, callback: (err: Error | undefined | null, retVal: Class_Buffer)=>any): void;
/**
* @description 生成指定尺寸的低强度随机数,使用快速的算法
* @param size 指定生成的随机数尺寸
* @return 返回生成的随机数
*
*/
function simpleRandomBytes(size: number): Class_Buffer;
function simpleRandomBytes(size: number, callback: (err: Error | undefined | null, retVal: Class_Buffer)=>any): void;
/**
* @description 生成指定尺寸的伪随机数,使用 entropy 生成器
* @param size 指定生成的随机数尺寸
* @return 返回生成的随机数
*
*/
function pseudoRandomBytes(size: number): Class_Buffer;
function pseudoRandomBytes(size: number, callback: (err: Error | undefined | null, retVal: Class_Buffer)=>any): void;
/**
* @description 生成给定数据的可视化字符图像
* @param data 指定要展示的数据
* @param title 指定字符图像的标题,多字节字符会导致宽度错误
* @param size 字符图像尺寸
* @return 返回生成的可视化字符串图像
*
*/
function randomArt(data: Class_Buffer, title: string, size?: number): string;
/**
* @description 生成一个 RSA 私钥
* @param size 指定 RSA 密钥长度,bit 为单位
* @return 返回包含生成私钥的对象
*
*/
function genRsaKey(size: number): Class_PKey;
function genRsaKey(size: number, callback: (err: Error | undefined | null, retVal: Class_PKey)=>any): void;
/**
* @description 生成一个 EC 私钥
* @param curve 指定预置椭圆曲线,可选值为:"secp521r1", "brainpoolP512r1", "secp384r1", "brainpoolP384r1", "secp256r1", "secp256k1", "brainpoolP256r1", "secp224r1", "secp224k1", "secp192r1", "secp192k1"
* @return 返回包含生成私钥的对象
*
*/
function genEcKey(curve?: string): Class_PKey;
function genEcKey(curve?: string, callback?: (err: Error | undefined | null, retVal: Class_PKey)=>any): void;
/**
* @description 生成一个 SM2 私钥
* @return 返回包含生成私钥的对象
*
*/
function genSm2Key(): Class_PKey;
function genSm2Key(callback: (err: Error | undefined | null, retVal: Class_PKey)=>any): void;
/**
* @description 依据 pbkdf1 根据明文 password 生成要求的二进制钥匙
* @param password 指定使用的密码
* @param salt 指定 hmac 使用的 salt
* @param iterations 指定迭代次数
* @param size 指定钥匙尺寸
* @param algo 指定要使用的 hash 算法,详见 hash 模块
* @return 返回生成的二进制钥匙
*
*/
function pbkdf1(password: Class_Buffer, salt: Class_Buffer, iterations: number, size: number, algo: number): Class_Buffer;
function pbkdf1(password: Class_Buffer, salt: Class_Buffer, iterations: number, size: number, algo: number, callback: (err: Error | undefined | null, retVal: Class_Buffer)=>any): void;
/**
* @description 依据 pbkdf1 根据明文 password 生成要求的二进制钥匙
* @param password 指定使用的密码
* @param salt 指定 hmac 使用的 salt
* @param iterations 指定迭代次数
* @param size 指定钥匙尺寸
* @param algoName 指定要使用的 hash 算法,详见 hash 模块
* @return 返回生成的二进制钥匙
*
*/
function pbkdf1(password: Class_Buffer, salt: Class_Buffer, iterations: number, size: number, algoName: string): Class_Buffer;
function pbkdf1(password: Class_Buffer, salt: Class_Buffer, iterations: number, size: number, algoName: string, callback: (err: Error | undefined | null, retVal: Class_Buffer)=>any): void;
/**
* @description 依据 rfc2898 根据明文 password 生成要求的二进制钥匙
* @param password 指定使用的密码
* @param salt 指定 hmac 使用的 salt
* @param iterations 指定迭代次数
* @param size 指定钥匙尺寸
* @param algo 指定要使用的 hash 算法,详见 hash 模块
* @return 返回生成的二进制钥匙
*
*/
function pbkdf2(password: Class_Buffer, salt: Class_Buffer, iterations: number, size: number, algo: number): Class_Buffer;
function pbkdf2(password: Class_Buffer, salt: Class_Buffer, iterations: number, size: number, algo: number, callback: (err: Error | undefined | null, retVal: Class_Buffer)=>any): void;
/**
* @description 依据 rfc2898 根据明文 password 生成要求的二进制钥匙
* @param password 指定使用的密码
* @param salt 指定 hmac 使用的 salt
* @param iterations 指定迭代次数
* @param size 指定钥匙尺寸
* @param algoName 指定要使用的 hash 算法,详见 hash 模块
* @return 返回生成的二进制钥匙
*
*/
function pbkdf2(password: Class_Buffer, salt: Class_Buffer, iterations: number, size: number, algoName: string): Class_Buffer;
function pbkdf2(password: Class_Buffer, salt: Class_Buffer, iterations: number, size: number, algoName: string, callback: (err: Error | undefined | null, retVal: Class_Buffer)=>any): void;
/**
* @description 获取 crypto 模块支持的的 hash(摘要) 算法, 比如 'md5', 'sha224'
* @return 返回 fibjs 支持的 hash 算法数组
*
*/
function getHashes(): any[];
}