Don't use iv = null, pass an empty Uint8Array instance instead to crypto.createCipheriv / crypto.createDecipheriv
Check that crypto implementation supports chacha20, chacha20-poly1305, aes*-wrap before using them
To test:
[x] npm run lint && npm run test
[x] CI
[x] node test/crosstest.test.js and check that modified ciphers have Node.js implementation cross-tested (unlike e.g. xchacha20poly1305)
[x] npx @exodus/test test/*.test.js (Node.js)
This is also faster than npm test here 🙃 (not very noticeable, both are fast)
[x] npx @exodus/test --engine jsc:bundle --bundle-entropy-size=10000000 --testTimeout 5000000 test/*.test.js (JSC)
Requires jsc being available in PATH
Note that due to micro-should relying on Node.js unhandled rejection handling to update the process exit code and jsc cli not supporting that, reported process status will be incorrect. micro-should stdout output indicates a pass though.
[x] npx @exodus/test --engine hermes:bundle --bundle-entropy-size=10000000 --testTimeout 5000000 test/*.test.js (Hermes)
Requires hermes being available in PATH or https://npmjs.com/hermes-engine-cli installed with @exodus/test:
npm add @exodus/test hermes-engine-cli
This one sets proper process exit code on unhandled rejections.
This allows running tests in bundle mode under different engines
In bundle,
reqire('crypto')
is https://www.npmjs.com/package/crypto-browserify For compatibility:iv = null
, pass an empty Uint8Array instance instead tocrypto.createCipheriv
/crypto.createDecipheriv
crypto
implementation supportschacha20
,chacha20-poly1305
,aes*-wrap
before using themTo test:
npm run lint && npm run test
node test/crosstest.test.js
and check that modified ciphers have Node.js implementation cross-tested (unlike e.g.xchacha20poly1305
)npx @exodus/test test/*.test.js
(Node.js) This is also faster thannpm test
here 🙃 (not very noticeable, both are fast)npx @exodus/test --engine jsc:bundle --bundle-entropy-size=10000000 --testTimeout 5000000 test/*.test.js
(JSC) Requiresjsc
being available in PATH Note that due tomicro-should
relying on Node.js unhandled rejection handling to update the process exit code andjsc
cli not supporting that, reported process status will be incorrect.micro-should
stdout output indicates a pass though.npx @exodus/test --engine hermes:bundle --bundle-entropy-size=10000000 --testTimeout 5000000 test/*.test.js
(Hermes) Requireshermes
being available in PATH or https://npmjs.com/hermes-engine-cli installed with@exodus/test
:npm add @exodus/test hermes-engine-cli
This one sets proper process exit code on unhandled rejections.Refs: https://github.com/paulmillr/noble-curves/pull/166