@types/jsrsasign
Version:
TypeScript definitions for jsrsasign
141 lines (131 loc) • 4.95 kB
TypeScript
declare namespace jsrsasign.KJUR.crypto {
/**
* MessageDigest class which is very similar to java.security.MessageDigest class
* @description
* Currently this supports following algorithm and providers combination:
* - md5 - cryptojs
* - sha1 - cryptojs
* - sha224 - cryptojs
* - sha256 - cryptojs
* - sha384 - cryptojs
* - sha512 - cryptojs
* - ripemd160 - cryptojs
* - sha256 - sjcl (NEW from crypto.js 1.0.4)
*
* @example
* // CryptoJS provider sample
* var md = new KJUR.crypto.MessageDigest({alg: "sha1", prov: "cryptojs"});
* md.updateString('aaa')
* var mdHex = md.digest()
*
* // SJCL(Stanford JavaScript Crypto Library) provider sample
* var md = new KJUR.crypto.MessageDigest({alg: "sha256", prov: "sjcl"}); // sjcl supports sha256 only
* md.updateString('aaa')
* var mdHex = md.digest()
*
* // HASHLENGTH property
* KJUR.crypto.MessageDigest.HASHLENGTH['sha1'] → 20
* KJUR.crypto.MessageDigest.HASHLENGTH['sha512'] → 64
*/
class MessageDigest {
/** static Array of resulted byte length of hash (ex. HASHLENGTH["sha1"] == 20) */
static readonly HASHLENGTH: {
md5: number;
sha1: number;
sha224: number;
sha256: number;
sha384: number;
sha512: number;
ripemd160: number;
};
constructor(params: { alg?: string | undefined; prov?: string | undefined });
/**
* set hash algorithm and provider
* @param alg hash algorithm name
* @param prov provider name
* @description
* This methods set an algorithm and a cryptographic provider.
* Here is acceptable algorithm names ignoring cases and hyphens:
* - MD5
* - SHA1
* - SHA224
* - SHA256
* - SHA384
* - SHA512
* - RIPEMD160
* NOTE: Since jsrsasign 6.2.0 crypto 1.1.10, this method ignores
* upper or lower cases. Also any hyphens (i.e. "-") will be ignored
* so that "SHA1" or "SHA-1" will be acceptable.
* @example
* // for SHA1
* md.setAlgAndProvider('sha1', 'cryptojs');
* md.setAlgAndProvider('SHA1');
* // for RIPEMD160
* md.setAlgAndProvider('ripemd160', 'cryptojs');
*/
setAlgAndProvider(alg: string, prov: string): void;
/**
* update digest by specified string
* @param str string to update
* @description
* @example
* md.updateString('New York');
*/
updateString(str: string): void;
/**
* update digest by specified hexadecimal string
* @param hex hexadecimal string to update
* @description
* @example
* md.updateHex('0afe36');
*/
updateHex(hex: string): void;
/**
* completes hash calculation and returns hash result
* @description
* @example
* md.digest()
*/
digest(): string;
/**
* performs final update on the digest using string, then completes the digest computation
* @param str string to final update
* @description
* @example
* md.digestString('aaa')
*/
digestString(str: string): string;
/**
* performs final update on the digest using hexadecimal string, then completes the digest computation
* @param hex hexadecimal string to final update
* @description
* @example
* md.digestHex('0f2abd')
*/
digestHex(hex: string): string;
/**
* get canonical hash algorithm name
* @param alg hash algorithm name (ex. MD5, SHA-1, SHA1, SHA512 et.al.)
* @return canonical hash algorithm name
* @description
* This static method normalizes from any hash algorithm name such as
* "SHA-1", "SHA1", "MD5", "sha512" to lower case name without hyphens
* such as "sha1".
* @example
* KJUR.crypto.MessageDigest.getCanonicalAlgName("SHA-1") → "sha1"
* KJUR.crypto.MessageDigest.getCanonicalAlgName("MD5") → "md5"
*/
static getCanonicalAlgName(alg: string): string;
/**
* get resulted hash byte length for specified algorithm name
* @param alg non-canonicalized hash algorithm name (ex. MD5, SHA-1, SHA1, SHA512 et.al.)
* @return resulted hash byte length
* @description
* This static method returns resulted byte length for specified algorithm name such as "SHA-1".
* @example
* KJUR.crypto.MessageDigest.getHashLength("SHA-1") → 20
* KJUR.crypto.MessageDigest.getHashLength("sha1") → 20
*/
static getHashLength(alg: string): number;
}
}