Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions api/SubtleCrypto.json
Original file line number Diff line number Diff line change
Expand Up @@ -1158,6 +1158,43 @@
"deprecated": false
}
},
"compressed_ec_points": {
"__compat": {
"description": "ECDSA or ECDH key data can contain compressed elliptic curve points.",
"support": {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't there any spec section that we could link?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems that support for compressed points is not mandatory, see: https://w3c.github.io/webcrypto/#:~:text=The%20uncompressed%20point%20format%20MUST%20be%20supported%2E

From BCD's point of view, this would warrant setting standard_track: false.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Really? That makes no sense to me.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hamishwillee If you come to the same conclusion as me looking at the phrasing in the spec, would you like to file a spec issue asking for clarification?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@caugner Sorry for the delay - went away for a few days.

Yes, support for compressed points is not mandatory - I don't think there is any doubt about that and I wouldn't request clarification.

The bit I don't understand is this:

From BCD's point of view, this would warrant setting standard_track: false.

It doesn't make sense to me that something not being mandatory means that it is "not on the standards track" - in particular because the behaviour when EC uncompressed points are discovered is explicitly and clearly documented in the spec at the point you linked.

Copy link
Contributor Author

@hamishwillee hamishwillee Dec 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So assuming you agree and I just wasn't clear about my confusion originally, I added the spec url in a380a85

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's get a second opinion from @ddbeck here.

My understanding is we treat non-mandatory and non-normative features in BCD as non-standard, as if it wasn't described at all. The most recent case might have been this input picker UI behavior.

However, we only mention "mandatory specified behavior" in the partial implementation guidelines.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you. Obviously whatever the rules are we will follow.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I read this bit of the spec:

If the implementation does not support the compressed point format and a compressed point is provided, throw a DataError.

to mean that a browser may support compressed points, but doesn't have to (unlike the uncompressed points). Therefore this is optional normative behavior and it's fine if this has a spec URL and "standard_track": true.

I'd expect these support scenarios for this feature:

  • Accepts a compressed point → supported
  • Throws a DataError → unsupported
  • Does anything else → partial implementation

"chrome": {
"version_added": "≤80"
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

80 is the earliest version of chrome the the test I am using works for https://wpt.live/WebCryptoAPI/import_export/ec_importKey.https.any.html

},
"chrome_android": "mirror",
"deno": {
"version_added": false
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can't find information on node or deno so have set as false.

},
"edge": "mirror",
"firefox": {
"version_added": "146"
},
"firefox_android": "mirror",
"nodejs": {
"version_added": false
},
"oculus": "mirror",
"opera": "mirror",
"opera_android": "mirror",
"safari": {
"version_added": false
},
"safari_ios": "mirror",
"samsunginternet_android": "mirror",
"webview_android": "mirror",
"webview_ios": "mirror"
},
"status": {
"experimental": false,
"standard_track": true,
"deprecated": false
}
}
},
"ed25519": {
"__compat": {
"description": "`Ed25519` algorithm",
Expand Down