Blake2b (64-bit version) in pure Javascript with WASM upgrade
ISC License
blake2b
Blake2b (64-bit version) in pure Javascript
This module is based on @dcposch implementation of BLAKE2b, with some changes:
out
buffer, saving an allocationsalt
and personal
parametersAll credit goes to @dcposch for doing the hard work of porting the implementation from C to Javascript.
var blake2b = require('blake2b')
var output = new Uint8Array(64)
var input = Buffer.from('hello world')
console.log('hash:', blake2b(output.length).update(input).digest('hex'))
var hash = blake2b(outLength, [key], [salt], [personal], [noAssert = false])
Create a new hash instance, optionally with key
, salt
and
personal
. Bypass input assertions by setting noAssert
to true
.
All parameters must be Uint8Array
, Buffer
or another object with a compatible
API. All parameters must also fulfill the following constraints, or an
AssertionError
will be thrown (unless noAssert = true
):
outLength
must within the byte ranges defined by the constants below.key
is optional, but must within the byte ranges defined by the constantssalt
is optional, but must be exactly SALTBYTES
, if given. You can usepersonal
is optional, but must be exactly PERSONALBYTES
, if given. You canvar hash = hash.update(input)
Update the hash with new input
. Calling this method after .digest
will throw
an error.
var out = hash.digest(out)
Finalise the the hash and write the digest to out
. out
must be exactly equal
to outLength
given in the blake2b
method.
Optionally you can pass hex
to get the hash as a hex string or no arguments
to have the hash return a new Uint8Array with the hash.
blake2b.BYTES_MIN
Minimum length of out
blake2b.BYTES_MAX
Maximum length of out
blake2b.BYTES
Recommended default length of out
blake2b.KEYBYTES_MIN
Minimum length of key
blake2b.KEYBYTES_MAX
Maximum length of key
blake2b.KEYBYTES
Recommended default length of key
blake2b.SALTBYTES
Required length of salt
blake2b.PERSONALBYTES
Required length of personal
npm install blake2b
This repository includes test vectors with
{outlen, out, input, key, salt, personal}
objects for testing conformance
against the spec and other implementations: