blake3-wasm
Version:
BLAKE3 hashing for JavaScript: WebAssembly bindings only
84 lines • 2.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createDeriveKey = exports.createKeyed = exports.createHash = exports.NodeHash = void 0;
const blake3_internal_1 = require("@c4312/blake3-internal");
const stream_1 = require("stream");
class BufferHash extends blake3_internal_1.WasmHasher {
alloc(n) {
return Buffer.allocUnsafe(n);
}
}
/**
* @inheritdoc
*/
class NodeHash extends stream_1.Transform {
constructor(wasmModule, hasher) {
super();
this.hash = new BufferHash(wasmModule, hasher);
}
/**
* @reader
*/
reader() {
return this.hash.reader();
}
/**
* @inheritdoc
*/
update(data, encoding) {
this.hash.update(encoding && typeof data === 'string' ? Buffer.from(data, encoding) : (0, blake3_internal_1.inputToArray)(data));
return this;
}
/**
* @inheritdoc
*/
dispose() {
this.hash.dispose();
}
digest(encoding, options) {
let resolvedOpts;
let resolvedEnc;
if (encoding && typeof encoding === 'object') {
resolvedOpts = encoding;
resolvedEnc = undefined;
}
else {
resolvedOpts = options;
resolvedEnc = encoding;
}
const result = this.hash.digest(resolvedOpts);
return resolvedEnc ? result.toString(resolvedEnc) : result;
}
/**
* @inheritdoc
* @hidden
*/
_transform(chunk, encoding, callback) {
this.update(chunk, encoding);
callback();
}
/**
* @inheritdoc
* @hidden
*/
_flush(callback) {
callback(null, this.digest());
}
}
exports.NodeHash = NodeHash;
/**
* A Node.js crypto-like createHash method.
*/
const createHash = () => new NodeHash((0, blake3_internal_1.getWasm)(), blake3_internal_1.HashRaw.default());
exports.createHash = createHash;
/**
* Construct a new Hasher for the keyed hash function.
*/
const createKeyed = (key) => new NodeHash((0, blake3_internal_1.getWasm)(), blake3_internal_1.HashRaw.keyed((0, blake3_internal_1.inputToArray)(key)));
exports.createKeyed = createKeyed;
/**
* Construct a new Hasher for the key derivation function.
*/
const createDeriveKey = (context) => new NodeHash((0, blake3_internal_1.getWasm)(), blake3_internal_1.HashRaw.derive((0, blake3_internal_1.inputToArray)(context)));
exports.createDeriveKey = createDeriveKey;
//# sourceMappingURL=hash-instance.js.map