-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implementation status #20
Comments
DenoEd25519 is available since v1.26.1, X25519 is not far from being complete. Refs: cc @littledivy |
ChromiumImplementation is done for Ed25519 and X25519, currently behind WebCryptoCurve25519 runtime flag. Refs: |
WebKitImplementation is done for Ed25519 and underway for X25519 Refs:
Update October 2023: Safari 17.0 was released recently, now with support for Ed25519 without any feature flags. |
BunEd25519 is available in Bun. Refs: oven-sh/bun#1816 |
Gecko bugTracked in: https://bugzilla.mozilla.org/show_bug.cgi?id=1804788 |
PeculiarVentures/webcrypto |
Ed25519 enabled as an experimental option in Safari Tech Preview 163. https://webkit.org/blog/13839/release-notes-for-safari-technology-preview-163/ |
Cloudflare Workers and
|
edge-runtimeEd25519 and X25519 is available in both local |
## Summary This PR introduces `generateSecretKey()`. You might need to use this when you need to sign for the creation of an account, for instance. Instead of vending the _bytes_ of a secret key, however, we use JS-native `CryptoKey` instances. These are opaque tokens that you can return at a later time to perform some action, like deriving the public key for the secret they represent, or signing a message. The idea is that you can freely pass these `CryptoKey` instances around your application without worrying about accidentally logging the key material itself – ie. to Sentry or to the browser console. The only environments that support Ed25519 key generation at the moment: * Node >=17.4 * Safari 17 For other environments, we'll supply a polyfill that implements key generation, signing, encryption, decryption, and verification in userspace. Spec: https://wicg.github.io/webcrypto-secure-curves/#ed25519 Proposal repo: https://github.com/WICG/webcrypto-secure-curves Implementation status: WICG/webcrypto-secure-curves#20 ## Test Plan ``` cd packages/keys/ pnpm test:unit:browser pnpm test:unit:node ```
…s Ed25519 key generation in userspace ## Summary For environments where Ed25519 key generation is not supported, this polyfill injects a suitable implementation that uses `@noble/curves/ed25519` behind the scenes. Here's the list of environments that do support it: WICG/webcrypto-secure-curves#20 ## Test Plan ``` cd packages/webcrypto-ed25519-polyfill pnpm test:unit:browser pnpm test:unit:node ```
## Summary This PR introduces `generateSecretKey()`. You might need to use this when you need to sign for the creation of an account, for instance. Instead of vending the _bytes_ of a secret key, however, we use JS-native `CryptoKey` instances. These are opaque tokens that you can return at a later time to perform some action, like deriving the public key for the secret they represent, or signing a message. The idea is that you can freely pass these `CryptoKey` instances around your application without worrying about accidentally logging the key material itself – ie. to Sentry or to the browser console. The only environments that support Ed25519 key generation at the moment: * Node >=17.4 * Safari 17 For other environments, we'll supply a polyfill that implements key generation, signing, encryption, decryption, and verification in userspace. Spec: https://wicg.github.io/webcrypto-secure-curves/#ed25519 Proposal repo: https://github.com/WICG/webcrypto-secure-curves Implementation status: WICG/webcrypto-secure-curves#20 ## Test Plan ``` cd packages/keys/ pnpm test:unit:browser pnpm test:unit:node ```
…s Ed25519 key generation in userspace ## Summary For environments where Ed25519 key generation is not supported, this polyfill injects a suitable implementation that uses `@noble/curves/ed25519` behind the scenes. Here's the list of environments that do support it: WICG/webcrypto-secure-curves#20 ## Test Plan ``` cd packages/webcrypto-ed25519-polyfill pnpm test:unit:browser pnpm test:unit:node ```
…s Ed25519 key generation in userspace ## Summary For environments where Ed25519 key generation is not supported, this polyfill injects a suitable implementation that uses `@noble/curves/ed25519` behind the scenes. Here's the list of environments that do support it: WICG/webcrypto-secure-curves#20 ## Test Plan ``` cd packages/webcrypto-ed25519-polyfill pnpm test:unit:browser pnpm test:unit:node ```
…s Ed25519 key generation in userspace ## Summary For environments where Ed25519 key generation is not supported, this polyfill injects a suitable implementation that uses `@noble/curves/ed25519` behind the scenes. Here's the list of environments that do support it: WICG/webcrypto-secure-curves#20 ## Test Plan ``` cd packages/webcrypto-ed25519-polyfill pnpm test:unit:browser pnpm test:unit:node ```
## Summary This PR introduces `generateSecretKey()`. You might need to use this when you need to sign for the creation of an account, for instance. Instead of vending the _bytes_ of a secret key, however, we use JS-native `CryptoKey` instances. These are opaque tokens that you can return at a later time to perform some action, like deriving the public key for the secret they represent, or signing a message. The idea is that you can freely pass these `CryptoKey` instances around your application without worrying about accidentally logging the key material itself – ie. to Sentry or to the browser console. The only environments that support Ed25519 key generation at the moment: * Node >=17.4 * Safari 17 For other environments, we'll supply a polyfill that implements key generation, signing, encryption, decryption, and verification in userspace. Spec: https://wicg.github.io/webcrypto-secure-curves/#ed25519 Proposal repo: https://github.com/WICG/webcrypto-secure-curves Implementation status: WICG/webcrypto-secure-curves#20 ## Test Plan ``` cd packages/keys/ pnpm test:unit:browser pnpm test:unit:node ```
…s Ed25519 key generation in userspace ## Summary For environments where Ed25519 key generation is not supported, this polyfill injects a suitable implementation that uses `@noble/curves/ed25519` behind the scenes. Here's the list of environments that do support it: WICG/webcrypto-secure-curves#20 ## Test Plan ``` cd packages/webcrypto-ed25519-polyfill pnpm test:unit:browser pnpm test:unit:node ```
## Summary This PR introduces `generateSecretKey()`. You might need to use this when you need to sign for the creation of an account, for instance. Instead of vending the _bytes_ of a secret key, however, we use JS-native `CryptoKey` instances. These are opaque tokens that you can return at a later time to perform some action, like deriving the public key for the secret they represent, or signing a message. The idea is that you can freely pass these `CryptoKey` instances around your application without worrying about accidentally logging the key material itself – ie. to Sentry or to the browser console. The only environments that support Ed25519 key generation at the moment: * Node >=17.4 * Safari 17 For other environments, we'll supply a polyfill that implements key generation, signing, encryption, decryption, and verification in userspace. Spec: https://wicg.github.io/webcrypto-secure-curves/#ed25519 Proposal repo: https://github.com/WICG/webcrypto-secure-curves Implementation status: WICG/webcrypto-secure-curves#20 ## Test Plan ``` cd packages/keys/ pnpm test:unit:browser pnpm test:unit:node ```
…s Ed25519 key generation in userspace ## Summary For environments where Ed25519 key generation is not supported, this polyfill injects a suitable implementation that uses `@noble/curves/ed25519` behind the scenes. Here's the list of environments that do support it: WICG/webcrypto-secure-curves#20 ## Test Plan ``` cd packages/webcrypto-ed25519-polyfill pnpm test:unit:browser pnpm test:unit:node ```
* refactor(experimental): a function for generating secret keys ## Summary This PR introduces `generateSecretKey()`. You might need to use this when you need to sign for the creation of an account, for instance. Instead of vending the _bytes_ of a secret key, however, we use JS-native `CryptoKey` instances. These are opaque tokens that you can return at a later time to perform some action, like deriving the public key for the secret they represent, or signing a message. The idea is that you can freely pass these `CryptoKey` instances around your application without worrying about accidentally logging the key material itself – ie. to Sentry or to the browser console. The only environments that support Ed25519 key generation at the moment: * Node >=17.4 * Safari 17 For other environments, we'll supply a polyfill that implements key generation, signing, encryption, decryption, and verification in userspace. Spec: https://wicg.github.io/webcrypto-secure-curves/#ed25519 Proposal repo: https://github.com/WICG/webcrypto-secure-curves Implementation status: WICG/webcrypto-secure-curves#20 ## Test Plan ``` cd packages/keys/ pnpm test:unit:browser pnpm test:unit:node ```
…s Ed25519 key generation in userspace ## Summary For environments where Ed25519 key generation is not supported, this polyfill injects a suitable implementation that uses `@noble/curves/ed25519` behind the scenes. Here's the list of environments that do support it: WICG/webcrypto-secure-curves#20 ## Test Plan ``` cd packages/webcrypto-ed25519-polyfill pnpm test:unit:browser pnpm test:unit:node ```
…s Ed25519 key generation in userspace ## Summary For environments where Ed25519 key generation is not supported, this polyfill injects a suitable implementation that uses `@noble/curves/ed25519` behind the scenes. Here's the list of environments that do support it: WICG/webcrypto-secure-curves#20 ## Test Plan ``` cd packages/webcrypto-ed25519-polyfill pnpm test:unit:browser pnpm test:unit:node ```
…s Ed25519 key generation in userspace (#1395) ## Summary For environments where Ed25519 key generation is not supported, this polyfill injects a suitable implementation that uses `@noble/curves/ed25519` behind the scenes. Here's the list of environments that do support it: WICG/webcrypto-secure-curves#20 ## Test Plan ``` cd packages/webcrypto-ed25519-polyfill pnpm test:unit:browser pnpm test:unit:node ```
Safari 17.0 was released recently, now with support for Ed25519 without any feature flags 🎉 congratulations |
Flow 6.17 supports Ed25519, X25519, Ed448 and X448. |
Hi guys, |
@Frosne will this gradually make it to a stable release? or is it behind some sort of flag like Chrome's implementation? |
It should arrive to Firefox Release 129 (that's in 3 weeks I believe) if we don't observe any problems :) |
In that case Chromium is the only vendor not shipping its completed implementation. |
Hi, |
Chromium has enabled by default the X25519 feature upstream, shipping in M133 as target. |
WebKit has just merged the PR to enable X25519 in stable, but no information about when this would be released. |
@javifernandez what about Ed25519 in Chromium? |
The conclusion is that the spec needs more work, at least to address the open issues about randomized signatures and small-order checks: |
None of those are in my opinion blockers for releasing the current state of it that we can observe from WPTs / with |
Tracking implementation states all in one place. Feel free to post updates or other implementations here.
Footnotes
Chromium ↩
WebKit ↩
Gecko ↩
Node.js ↩
Deno ↩ ↩2
Bun ↩
Clouflare ↩ ↩2
Vercel ↩ ↩2
Flow ↩
The text was updated successfully, but these errors were encountered: