Support async random number generators #180
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Make
randomBytes
and its dependant functionsasync
.This will allow using the library with custom secure random number generators (e.g. on mobile via Expo's Random module).
Change the signature of the following methods to make them async (return a Promise):
nacl.randomBytes()
nacl.box.keyPair()
nacl.sign.keyPair()
nacl.sign.keyPair.fromSeed()
The signature of
nacl.setPRNG
also changed to allow passing either a regular function (like in tweetnacl@1) or a function that returns a Promise like async functions.I also switched uglifyjs to terser in order to support ES6+ syntax.
BREAKING CHANGE: this change breaks compatibility with tweetnacl@1 as the signature of few public functions have changed to return Promises and the minimum required runtime becomes ES 2017 (no IE11 support).