blake3-wasm
Version:
BLAKE3 hashing for JavaScript: WebAssembly bindings only
45 lines • 1.37 kB
JavaScript
import { getWasm, HashRaw, inputToArray, WasmHasher, } from '@c4312/blake3-internal';
import { mustGetEncoder } from './encoding.js';
import { Hash } from './hash.js';
/**
* @inheritdoc
*/
export class BrowserHasher extends WasmHasher {
alloc(n) {
return new Hash(n);
}
/**
* @inheritdoc
* @override
*/
update(data) {
return super.update(inputToArray(data));
}
digest(encoding, options) {
let resolvedOpts;
let resolvedEnc;
if (encoding && typeof encoding === 'object') {
resolvedOpts = encoding;
resolvedEnc = undefined;
}
else {
resolvedOpts = options;
resolvedEnc = encoding;
}
const result = super.digest(resolvedOpts);
return resolvedEnc ? mustGetEncoder(resolvedEnc)(result) : result;
}
}
/**
* A Node.js crypto-like createHash method.
*/
export const createHash = () => new BrowserHasher(getWasm(), HashRaw.default());
/**
* A Node.js crypto-like createHash method.
*/
export const createKeyed = (key) => new BrowserHasher(getWasm(), HashRaw.keyed(inputToArray(key)));
/**
* Construct a new Hasher for the key derivation function.
*/
export const createDeriveKey = (context) => new BrowserHasher(getWasm(), HashRaw.derive(inputToArray(context)));
//# sourceMappingURL=hash-instance.js.map