You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// Always use crypto if available natively (browser / Deno)
webcrypto=self.crypto;
}else{
// Always use node webcrypto if available ( >= 16.0 )
if(platformCrypto&&platformCrypto.webcrypto){
webcrypto=platformCrypto.webcrypto;
}else{
// Fallback to @peculiar/webcrypto
webcrypto=newpeculiarCrypto.Crypto();
}
}
It seems that the node.js crypto module is only used in these lines and nowhere else in this package.
While I'm not familiar with @peculiar/webcrypto, it seems that it exists solely for this purpose - to provide an abstraction over such issues and always point to the natively supported crypto implementation. I might be wrong about this - again, not familiar with @peculiar/webcrypto.
Could you consider not importing the native crypto module, and instead just using the @peculiar/webcrypto module? The implication of this is that lines 31-34 above will go away, and when using node.js, all calls to the crypto module will always go through @peculiar/webcrypto, thus supporting a larger number of runtimes.
The text was updated successfully, but these errors were encountered:
Hey rakeshpai, thanks for the question. Basically the module tries to import the native and global crypto (L26), and has two layers of fallbacks if this is not supported - first using a platform-specific crypto, and then using JS emulation.
So if your environment has one of the fallbacks before @peculiar/webcrypto, it will use those and should never use peculiar.
Do you maybe have a simple example for an environment where this code leads to issues?
I'm trying to use this lib in an edge runtime using next.js's Edge runtime, which like the browser has a global crypto object, and not an importable module for crypto. This is also how Cloudflare Workers behaves, and I believe this is part of the WinterCG common minimum API.
The issue is that the code in
toolbox.ts
imports the"crypto"
module, which doesn't exist in such environments.fido2-lib/lib/toolbox.js
Lines 22 to 38 in 9da9eb9
It seems that the node.js crypto module is only used in these lines and nowhere else in this package.
While I'm not familiar with
@peculiar/webcrypto
, it seems that it exists solely for this purpose - to provide an abstraction over such issues and always point to the natively supported crypto implementation. I might be wrong about this - again, not familiar with@peculiar/webcrypto
.Could you consider not importing the native crypto module, and instead just using the
@peculiar/webcrypto
module? The implication of this is that lines 31-34 above will go away, and when using node.js, all calls to thecrypto
module will always go through@peculiar/webcrypto
, thus supporting a larger number of runtimes.The text was updated successfully, but these errors were encountered: