Intent to Prototype: Curve25519 in Web Cryptography

Skip to first unread message

Qingsi Wang

Jan 27, 2020, 5:17:49 PM1/27/20
to blink-dev

Contact emails


Design docs/spec

N/A. The explainer provides the basic design.

TAG review


This feature adds support for Curve25519 algorithms in the Web Cryptography API, namely the signature algorithm Ed25519 and the key agreement algorithm X25519.


Today web developers are getting around the unavailability of Curve25519 [1] in browser by either including an implementation of its operations in JavaScript or compiling a native one into WebAssembly. Aside from wasting bandwidth shipping algorithms that are already included in browsers that support TLS 1.3, this practice also has security implications, e.g. side-channel attacks as studied by Daniel Genkin et al [2].

[1] RFC 7748, Elliptic Curves for Security

[2] Daniel Genkin et al, Drive-By Key-Extraction Cache Attacks from Portable Code.


Interoperability and Compatibility

WebCrypto API was specified to allow the addition of new (normalized) crypto algorithms. When an algorithm is not yet supported by a browser, an exception of unrecognized algorithms would be thrown after invoking related APIs.

Firefox: No public signals

Edge: No public signals

Safari: No public signals

Web developers: No signals

Is this feature fully tested by web-platform-tests?

No. The feature is not yet prototyped and the WPTs will be part of the prototype.

Link to entry on the Chrome Platform Status

Reply all
Reply to author
0 new messages