Blake2b implemented in WASM
Blake2b implemented in WASM
```
npm install @bitgo/blake2b-wasm
Works in browsers that support WASM and Node.js 8+.
`js
var blake2b = require('@bitgo/blake2b-wasm');
if (!blake2b.SUPPORTED) {
console.log('WebAssembly not supported by your runtime');
}
blake2b.ready(function (err) {
if (err) throw err;
var hash = blake2b()
.update(Buffer.from('hello')) // pass in a buffer or uint8array
.update(Buffer.from(' '))
.update(Buffer.from('world'))
.digest('hex');
console.log('Blake2b hash of "hello world" is %s', hash);
});
`
#### var hash = blake2b([digestLength], [key], [salt], [personal])
Create a new hash instance. digestLength defaults to 32.
#### hash.update(data)
Update the hash with a new piece of data. data should be a buffer or uint8array.
#### var digest = hash.digest([enc])
Digest the hash.
#### var promise = blake2b.ready([cb])
Wait for the WASM code to load. Returns the WebAssembly instance promise as well for convenience.
You have to call this at least once before instantiating the hash.
There is a browser example included in example.html and example.js.
The bulk of this module is implemented in WebAssembly in the blake2b.wat file.
The format of this file is S-Expressions that can be compiled to their binary WASM representation by doing
``
wat2wasm blake2b.wat -o blake2b.wasm
To build the thin JavaScript wrapper for the WASM module use wat2js:
`npm run compilealso available as
`
wat2js blake2b.wat -o blake2b.js
If you do not have wat2wasm` installed follow the instructions here, https://github.com/WebAssembly/wabt
MIT