Skip to content
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

Open
panva opened this issue Dec 12, 2022 · 17 comments
Open

Implementation status #20

panva opened this issue Dec 12, 2022 · 17 comments

Comments

@panva
Copy link
Contributor

panva commented Dec 12, 2022

Tracking implementation states all in one place. Feel free to post updates or other implementations here.

Implementor Ed25519 X25519 Ed448 X448 in a stable release
Chromium (Chrome, Edge)1
WebKit (Safari)2
Gecko (Firefox)3
Node.js4
Deno5
Netlify Edge Functions5
Bun6
Cloudflare Workers7
workerd7
Vercel's Edge Runtime8
Vercel's Edge Functions8
Flow9

Footnotes

  1. Chromium

  2. WebKit

  3. Gecko

  4. Node.js

  5. Deno 2

  6. Bun

  7. Clouflare 2

  8. Vercel 2

  9. Flow

@panva
Copy link
Contributor Author

panva commented Dec 12, 2022

Node.js

Ed25519, Ed448, X25519, and X448 are available since v18.4.0, also backported to v16.x (LTS).

cc @panva @tniessen @jasnell

@panva
Copy link
Contributor Author

panva commented Dec 12, 2022

Deno

Ed25519 is available since v1.26.1, X25519 is not far from being complete.

Refs:

cc @littledivy

@panva
Copy link
Contributor Author

panva commented Dec 12, 2022

Chromium

Implementation is done for Ed25519 and X25519, currently behind WebCryptoCurve25519 runtime flag.

Refs:

cc @javifernandez

@panva
Copy link
Contributor Author

panva commented Dec 12, 2022

@panva
Copy link
Contributor Author

panva commented Dec 12, 2022

Bun

Ed25519 is available in Bun.

Refs: oven-sh/bun#1816

@fabricedesre
Copy link

Gecko bug

Tracked in: https://bugzilla.mozilla.org/show_bug.cgi?id=1804788

@panva
Copy link
Contributor Author

panva commented Jan 17, 2023

PeculiarVentures/webcrypto

Refs: PeculiarVentures/webcrypto#60

@dwaite
Copy link

dwaite commented Feb 10, 2023

Ed25519 enabled as an experimental option in Safari Tech Preview 163. https://webkit.org/blog/13839/release-notes-for-safari-technology-preview-163/

@panva
Copy link
Contributor Author

panva commented Apr 1, 2023

Cloudflare Workers and workerd

Ed25519 and X25519 is available in workerd / Cloudflare Workers.

Refs: cloudflare/workerd#500
Refs: https://github.com/cloudflare/workerd/releases/tag/v1.20230419.0

@panva
Copy link
Contributor Author

panva commented May 29, 2023

edge-runtime

Ed25519 and X25519 is available in both local edge-runtime as well as on Vercel's service deployments.

@WICG WICG deleted a comment from Jarred-Sumner Jun 20, 2023
steveluscher added a commit to solana-labs/solana-web3.js that referenced this issue Jul 13, 2023
## 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
```
steveluscher added a commit to solana-labs/solana-web3.js that referenced this issue Jul 13, 2023
…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
```
steveluscher added a commit to solana-labs/solana-web3.js that referenced this issue Jul 13, 2023
## 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
```
steveluscher added a commit to solana-labs/solana-web3.js that referenced this issue Jul 13, 2023
…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
```
steveluscher added a commit to solana-labs/solana-web3.js that referenced this issue Jul 13, 2023
…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
```
steveluscher added a commit to solana-labs/solana-web3.js that referenced this issue Jul 13, 2023
…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
```
steveluscher added a commit to solana-labs/solana-web3.js that referenced this issue Jul 13, 2023
## 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
```
steveluscher added a commit to solana-labs/solana-web3.js that referenced this issue Jul 13, 2023
…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
```
steveluscher added a commit to solana-labs/solana-web3.js that referenced this issue Jul 14, 2023
## 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
```
steveluscher added a commit to solana-labs/solana-web3.js that referenced this issue Jul 14, 2023
…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
```
steveluscher added a commit to solana-labs/solana-web3.js that referenced this issue Jul 14, 2023
* 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
```
steveluscher added a commit to solana-labs/solana-web3.js that referenced this issue Jul 14, 2023
…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
```
steveluscher added a commit to solana-labs/solana-web3.js that referenced this issue Jul 14, 2023
…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
```
steveluscher added a commit to solana-labs/solana-web3.js that referenced this issue Jul 14, 2023
…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
```
@panva
Copy link
Contributor Author

panva commented Oct 2, 2023

Safari 17.0 was released recently, now with support for Ed25519 without any feature flags 🎉 congratulations

@pwombwell
Copy link

@Frosne
Copy link
Collaborator

Frosne commented Jul 17, 2024

Hi guys,
Mozilla currently supports Ed25519 in Nightly: https://bugzilla.mozilla.org/show_bug.cgi?id=1804788

@panva
Copy link
Contributor Author

panva commented Jul 17, 2024

@Frosne will this gradually make it to a stable release? or is it behind some sort of flag like Chrome's implementation?

@Frosne
Copy link
Collaborator

Frosne commented Jul 17, 2024

@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 :)

@panva
Copy link
Contributor Author

panva commented Jul 17, 2024

In that case Chromium is the only vendor not shipping its completed implementation.

@Frosne
Copy link
Collaborator

Frosne commented Jul 31, 2024

Hi,
Mozilla starts to support X25519 in Nightly: https://bugzilla.mozilla.org/show_bug.cgi?id=1904836.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants