feature detect to avoid self.crypto if subtle isn't available #123
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.
In context of React Native environment, some polyfill exists like
react-native-get-random-values
that implementsglobal.crypto.getRandomValues
function but do not provide acrypto.subtle
implementation. ( example of lib that recommend this polyfill https://docs.ethers.org/v5/cookbook/react-native/#cookbook-reactnative )Since
@noble/secp256k1
requires an implementation of crypto.subtle to be able to do things likecrypto.web.subtle.digest('SHA-256', concatBytes(...messages))
it is necessary for the feature detection to consider the extra case wherecrypto.web.subtle
might not be available.Without this fix, you get
TypeError: Cannot read property 'digest' of undefined
as soon as you start using.util.sha256
function