Port of the OpenBSD
version of Devi Mandiri’s port,
with some minor performance improvements. The code is copied verbatim (and
un-styled) from Devi’s work.
This product includes software developed by Niels Provos.
bcrypt_pbkdf.pbkdf(pass, passlen, salt, saltlen, key, keylen, rounds)
Derive a cryptographic key of arbitrary length from a given password and salt,
using the OpenBSD
bcrypt_pbkdf function. This is a combination of Blowfish and
See this article for further information.
pass, a Uint8Array of length
passlen, an integer Number
salt, a Uint8Array of length
saltlen, an integer Number
key, a Uint8Array of length
keylen, will be filled with output
keylen, an integer Number
rounds, an integer Number, number of rounds of the PBKDF to run
bcrypt_pbkdf.hash(sha2pass, sha2salt, out)
Calculate a Blowfish hash, given SHA2-512 output of a password and salt. Used as part of the inner round function in the PBKDF.
sha2pass, a Uint8Array of length 64
sha2salt, a Uint8Array of length 64
out, a Uint8Array of length 32, will be filled with output
This source form is a 1:1 port from the OpenBSD
As a result, it retains the original copyright and license. The two files are
under slightly different (but compatible) licenses, and are here combined in
one file. For each of the full license texts see