For node.js bindings refer to ./node directory,
For WebAssembly bindings refer to ./wasm directory
./yescrypt-c/example.c, ./node/example.js, and ./wasm/example.js each hash
a 19-byte and a 20-byte all-"a" password with fixed salts and check the encoded
$y$... output against known-good values (a regression check for the 20-byte
password bug). They print their results and exit non-zero on any mismatch.
Run them individually:
cc -O2 -DSKIP_MEMZERO -o yescrypt-c/example yescrypt-c/example.c \
yescrypt-c/yescrypt-opt.c yescrypt-c/yescrypt-common.c yescrypt-c/yescrypt.c \
yescrypt-c/sha256.c yescrypt-c/insecure_memzero.c && ./yescrypt-c/example
(cd node && yarn && node example.js) # builds the native addon
(cd wasm && yarn && yarn build && node example.js) # builds the JS bundleOr run all three via the helper script:
./run-examples.sh # all targets
./run-examples.sh node wasm # a subset-
openwall/yescrypt Reference implementation itself
-
openwall/yescrypt-go Reference golang implementation
-
RustCrypto: yescrypt Pure Rust implementation
-
BitzenyCoreDevelopers/node-bitzeny-yescrypt Another Node.js bindings
-
0xcb/pyescrypt Python bindings