/// declare module "crypto" { export type Algorithm = "md5" | "sha1" | "sha256"; export type DigestEncoding = Exclude; export interface Hash { /** * Returns a new Hash object that contains a deep copy of * the internal state of the current Hash object. */ copy(): Hash; /** * Updates the hash content with the given `data` and returns self. */ update(data: NjsStringOrBuffer): Hash; /** * Calculates the digest of all of the data passed using `hash.update()`. * * @example * import cr from 'crypto' * cr.createHash('sha1').update('A').update('B').digest('base64url') // => 'BtlFlCqiamG-GMPiK_GbvKjdK10' * * @param encoding The encoding of the return value. If not provided, a `Buffer` object * (or a byte string before version 0.4.4) is returned. * @return A calculated digest. */ digest(): Buffer; digest(encoding: DigestEncoding): string; } export interface Hmac { /** * Updates the HMAC content with the given `data` and returns self. */ update(data: NjsStringOrBuffer): Hmac; /** * Calculates the HMAC digest of all of the data passed using `hmac.update()`. * * @example * import cr from 'crypto' * cr.createHmac('sha1', 'secret.key').update('AB').digest('base64url') // => 'Oglm93xn23_MkiaEq_e9u8zk374' * * @param encoding The encoding of the return value. If not provided, a `Buffer` object * (or a byte string before version 0.4.4) is returned. * @return The calculated HMAC digest. */ digest(): Buffer; digest(encoding: DigestEncoding): string; } interface Crypto { /** * Creates and returns a `Hash` object that can be used to generate hash digests using * the given `algorithm`. * * @param algorithm `'md5'`, `'sha1'`, or `'sha256'` * @returns A `Hash` object. */ createHash(algorithm: Algorithm): Hash; /** * Creates and returns an HMAC object that uses the given `algorithm` and secret `key`. * * @param algorithm `'md5'`, `'sha1'`, or `'sha256'` * @param key The secret key. * @returns An `HMAC` object. */ createHmac(algorithm: Algorithm, key: NjsStringOrBuffer): Hmac; } const crypto: Crypto; // It's exported like this because njs doesn't support named imports. // TODO: Replace NjsFS with individual named exports as soon as njs supports named imports. export default crypto; }