mirror of
https://github.com/emn178/js-sha256.git
synced 2026-08-13 04:51:56 +08:00
- Add dedicated ESM, CommonJS, Node.js, and browser distribution entry points. - Add streaming support to the native Node.js SHA-256, SHA-224, and HMAC implementations. - Add distribution contract tests and real browser Web Worker tests with Playwright. - Add Node.js 16, 18, 20, 22, and 24 runtime tests against the packed npm artifact. ### Changed - Refactor the implementation into environment-independent core and Node.js modules. - Use the native Node.js `crypto` implementation for hashing and HMAC. - Load the package version automatically when generating distribution banners. - Export unminified ESM source directly and build only CommonJS and browser/minified distributions. - Replace `expect.js`, NYC, Tiny Worker, and UglifyJS with Node.js assert, c8, Playwright, and Rollup/Terser. - Build automatically before `npm pack` and `npm publish`. - Throw error if update after finalize ### Removed - Remove runtime CommonJS, AMD, Node.js, Web Worker, and ArrayBuffer environment switches from the core implementation. - Remove legacy environment flags and obsolete compatibility polyfills. - Remove the old generated `sha256.mjs` and `sha256.node.mjs` entry points.
151 lines
2.9 KiB
TypeScript
151 lines
2.9 KiB
TypeScript
type Message = string | number[] | ArrayBuffer | Uint8Array;
|
|
|
|
interface Hasher {
|
|
/**
|
|
* Update hash
|
|
*
|
|
* @param message The message you want to hash.
|
|
*/
|
|
update(message: Message): Hasher;
|
|
|
|
/**
|
|
* Return hash in hex string.
|
|
*/
|
|
hex(): string;
|
|
|
|
/**
|
|
* Return hash in hex string.
|
|
*/
|
|
toString(): string;
|
|
|
|
/**
|
|
* Return hash in ArrayBuffer.
|
|
*/
|
|
arrayBuffer(): ArrayBuffer;
|
|
|
|
/**
|
|
* Return hash in integer array.
|
|
*/
|
|
digest(): number[];
|
|
|
|
/**
|
|
* Return hash in integer array.
|
|
*/
|
|
array(): number[];
|
|
}
|
|
|
|
interface Hmac {
|
|
/**
|
|
* Computes a Hash-based message authentication code (HMAC) using a secret key
|
|
*
|
|
* @param secretKey The Secret Key
|
|
* @param message The message you want to hash.
|
|
*/
|
|
(secretKey: Message, message: Message): string;
|
|
|
|
/**
|
|
* Create a hash object using a secret key.
|
|
*
|
|
* @param secretKey The Secret Key
|
|
*/
|
|
create(secretKey: Message): Hasher;
|
|
|
|
/**
|
|
* Create a hash object and hash message using a secret key
|
|
*
|
|
* @param secretKey The Secret Key
|
|
* @param message The message you want to hash.
|
|
*/
|
|
update(secretKey: Message, message: Message): Hasher;
|
|
|
|
/**
|
|
* Return hash in hex string.
|
|
*
|
|
* @param secretKey The Secret Key
|
|
* @param message The message you want to hash.
|
|
*/
|
|
hex(secretKey: Message, message: Message): string;
|
|
|
|
/**
|
|
* Return hash in ArrayBuffer.
|
|
*
|
|
* @param secretKey The Secret Key
|
|
* @param message The message you want to hash.
|
|
*/
|
|
arrayBuffer(secretKey: Message, message: Message): ArrayBuffer;
|
|
|
|
/**
|
|
* Return hash in integer array.
|
|
*
|
|
* @param secretKey The Secret Key
|
|
* @param message The message you want to hash.
|
|
*/
|
|
digest(secretKey: Message, message: Message): number[];
|
|
|
|
/**
|
|
* Return hash in integer array.
|
|
*
|
|
* @param secretKey The Secret Key
|
|
* @param message The message you want to hash.
|
|
*/
|
|
array(secretKey: Message, message: Message): number[];
|
|
}
|
|
|
|
interface Hash {
|
|
/**
|
|
* Hash and return hex string.
|
|
*
|
|
* @param message The message you want to hash.
|
|
*/
|
|
(message: Message): string;
|
|
|
|
/**
|
|
* Create a hash object.
|
|
*/
|
|
create(): Hasher;
|
|
|
|
/**
|
|
* Create a hash object and hash message.
|
|
*
|
|
* @param message The message you want to hash.
|
|
*/
|
|
update(message: Message): Hasher;
|
|
|
|
/**
|
|
* Return hash in hex string.
|
|
*
|
|
* @param message The message you want to hash.
|
|
*/
|
|
hex(message: Message): string;
|
|
|
|
/**
|
|
* Return hash in ArrayBuffer.
|
|
*
|
|
* @param message The message you want to hash.
|
|
*/
|
|
arrayBuffer(message: Message): ArrayBuffer;
|
|
|
|
/**
|
|
* Return hash in integer array.
|
|
*
|
|
* @param message The message you want to hash.
|
|
*/
|
|
digest(message: Message): number[];
|
|
|
|
/**
|
|
* Return hash in integer array.
|
|
*
|
|
* @param message The message you want to hash.
|
|
*/
|
|
array(message: Message): number[];
|
|
|
|
/**
|
|
* HMAC interface
|
|
*/
|
|
hmac: Hmac;
|
|
}
|
|
|
|
export var sha256: Hash;
|
|
export var sha224: Hash;
|
|
export default sha256;
|