# Igalia Updates for Decentralized Web Grant
## Report w50 2025 - 02 2026
Hello, please find the status reports for weeks 50-02 below.
### Support Extensions in custom protocols
* Continue working on the CL with the Navigation Throttling logic
- [ MERGED ] https://chromium-review.googlesource.com/c/chromium/src/+/7156864
- Refactoring of the navigation interception browser tests
- Additional browser tests
- Rebase and merge the patch
* Rebase and merge the CL with the Prompt Dialog logic
- [ MERGED ] https://chromium-review.googlesource.com/c/chromium/src/+/7031939
- Implementing interactive tests for the new Prompt dialog
- Rebase and merge the patch
## Report w46-49 2025
Hello, please find the status reports for weeks 46-49 below.
### Support Extensions in custom protocols
* Implement the permission management logic
* Navigation interception
* [ REVIEW ] https://chromium-review.googlesource.com/c/chromium/src/+/7156864
* Prompt dialog
* [ REVIEW ] https://chromium-review.googlesource.com/c/chromium/src/+/7031939
* Both patches are in the final review stages.
* The last task would be the UX review and translations.
### Handling pending WebTransport sessions
* Continue working on the early-cancellation mitigation
- [ MERGED ] https://chromium-review.googlesource.com/c/chromium/src/+/6727715
- This would be the last patch of the tasks, which we could consider completed at this stage.
- There are still some issues with the demo, but those would need further analysis on their side and probably changes in how the application manages the available peers.
## Communications
### New blog post: Web Extensions and Protocol Handlers
* Still a very early draft
## Report for w42-45 2025
Hello, please find the status reports for weeks 42-45 below.
### Support Extensions in custom protocols
* Implement Permissions Management logic
- [ REVIEW ] https://chromium-review.googlesource.com/c/chromium/src/+/7031939
- Navigation Interception
- Prompt dialog
- Remember decision
* Cleaning up the dependencies of the //custom_handler component
- [ REVERTED ] https://chromium-review.googlesource.com/c/chromium/src/+/7116098
- [ REVIEW ] https://chromium-review.googlesource.com/c/chromium/src/+/7130938
* Updating the design document with the new design proposal for the permission logic
- https://docs.google.com/document/d/1e6mSsbjLqBd1_4EAS_AX543vy53oq8SlycNwQ0mZ46g/edit?usp=sharing
### Handling pending WebTransport sessions
* Retake the patch to solve the early-cancellation issues
- [ REVIEW ] https://chromium-review.googlesource.com/c/chromium/src/+/6727715
* additional debugging of the libp2p app
- it seems there are still cases where the same IP, but different port, which are being considered as potential valid peers by the app
- this is identified by the current implemented throttling strategy by a clear **port-scanning attack** pattern.
* evaluating a potential implementation of a ip+port based key for the handshake failures map
- the solution didn't provide a definitive advantage because sometimes I got cases where the same host+port is tried as a potential valid target (!!!)
- this is identified by the current implemented throttling strategy by a clear **DoS attack** pattern.
## Report for w38-41 2025
Hello, please find the status reports for weeks 38-41 below.
### Support Extensions in custom protocols
* Implementing the API that performs the custom handler registration
- [ MERGED ] https://chromium-review.googlesource.com/c/chromium/src/+/6727594
* Implementation of the Permission management logic
- [ WIP ] https://chromium-review.googlesource.com/c/chromium/src/+/7031939
- update the design document with some of the changes suggested during the last CL's review
+ https://docs.google.com/document/d/1e6mSsbjLqBd1_4EAS_AX543vy53oq8SlycNwQ0mZ46g/edit?tab=t.0#heading=h.brfyb0wbqzmg
+ include different approaches for the implementation of the prompt dialog and the navigation interception
### Handling pending WebTransport sessions
* Continue working on the early-cancellation penalties
* [ WIP ] https://chromium-review.googlesource.com/c/chromium/src/+/6727715
* Preparing Chrome packages for ARM to perform a pair-programming session with Alex Potsides (Ipshipyard)
* Meeting with Alex to analyze the results with the last patch and fine-tuning the p2p app
* Analyze the logs, trying to figure out the root cause and/or worst-case scenarios where the max-connection limit is reached.
- with some changes in the app, we managed to make the patch for the early-cancellation penalties mitigation to become a promising approach
- some changes in the p2p app are still needed:
- control the **same ip - different port** cases, as they are legitimately identified as a port-scanning attack.
- reduce the number of simultaneous connection attempts from 50 to 25.
## Report for w35-37 2025
Hello, please find the status reports for weeks 35-37 below.
### WebCrypto API maintenance
* Updating the latest tests in the generateKey folder from the WPT repo
* [ MERGED ] https://github.com/WebKit/WebKit/pull/49674
* Investigate a WebKit bug in the X25519 generateKey method
- https://bugs.webkit.org/show_bug.cgi?id=289693
- [ MERGED ] https://github.com/WebKit/WebKit/pull/49923
* Submitted a new PR to fix an issue with the version number of the license header in some WebCrypto related files.
- [ MERGED ] https://github.com/WebKit/WebKit/pull/50143
### Support Extensions in custom protocols
* Implementing the API that performs the custom handler registration
- [ REVIEW ] https://chromium-review.googlesource.com/c/chromium/src/+/6727594
- Continue with the patch review process driven by Solomon
- Got the lgtm
- Devlin started his review on the CL and suggested several changes
- Implement the startup sanity-checks.
- Address the conflict resolution issues during the protocol handler registration.
- Implementing additional browser tests
- Fixing several test regressions, caused by the lack of TestingFactory support for the ProtocolHandlerRegistryFactory
## Report for w28-34 2025
Hello, please find the status reports for weeks 28-34 below. Bear in mind that the period is longer than usual due to the summer holidays.
### Support Extensions in custom protocols
* Implementing the API that performs the custom handler registration
- [ REVIEW] https://chromium-review.googlesource.com/c/chromium/src/+/6727594
- Handling the extension enabled/disabled use case
- Implemented tests for the extension update use case
- Fixed some bugs related to the Extension API's life-cycle.
- Fixed a few regressions detected by the bots, caused by the lack of Testing Factories for the ProtocolHandlersRegistry instance.
### Handling pending WebTransport sessions
* Rebased the branch with the early-cancellation logic
- [ WIP ] https://chromium-review.googlesource.com/c/chromium/src/+/6727715
* Built a new arm package based on 126 for a pair-programming session with Alex
### A Manifest with a Service Worker handling the protocol response
This tasks has also the goal of adding support in browsers for the Service Worker Gateway (https://github.com/ipfs/service-worker-gateway) and fix bugs or implement new features in browsers to provide a better integration with the Web Platform.
* Start investigating some of the blockers bug in Chrome, preventing this idea to be developed properly
- https://issues.chromium.org/issues/40410035
- managed to reproduce the issue and get a reduced test case.
* debugging the test case, trying to understand the DownloadManager logic and how it's related with the "fetch" operation.
### WebCrypto API maintenance
* Investigate a WebKit bug in the X25519 generateKey method
- https://bugs.webkit.org/show_bug.cgi?id=289693
- debugging a basic test case and updating the bug report with information about the issue itself and how to reproduce it.
- found the bug and it's an easy patch in the end, so preparing the patch with the fix to ask for a formal review.
* Updating the latest tests in the generateKey folder from the WPT repo
- submitted a PR for review
- https://github.com/WebKit/WebKit/pull/49674 [ REVIEW ]
## Communications
### New blog post: Impact of the Curve25519 algorithms in the IPFS community
* Completed the first full-draft and ask for peer-review to different people, from both Igalia and IPFS Foundation
- https://docs.google.com/document/d/1JPMHmT0zz2q6KvjFaxbi1gbgVN-4vhUlFVuZ7mTt590/edit?pli=1&tab=t.0
* Shared with Mosh (IPFS Foundation) to get a final review, especially regarding the organizations mentioned in the intro as supporters of the project.
- Got LGTM in the monthly meeting held this week, so I'm going to publish the post on Monday, to avoid the "weekend" effect.
## Report w24-27 2025
Hello, please find the status reports for weeks 24-27 below.
### Handling pending WebTransport sessions
* Removing the runtime flag from the "about:flags" menu
* Adam gave the lgtm (!!) but asked a few additional minor changes
- Submitted a new patch to the CL, and asked for review again
- [ LANDED ] https://chromium-review.googlesource.com/c/chromium/src/+/5756508
## Support Extensions in custom protocols
* Implementation of the Manifest key parsing logic
- [ LANDED ] https://chromium-review.googlesource.com/c/chromium/src/+/6382139
* resume the work to implement the API to perform the actual custom handler registration
- rebase the old branch and solve the conflicts
- handling the "extension enabled/disabled" cases
- improving the extension's life-cycle log
## Communications
* Continue working on the draft
- https://docs.google.com/document/d/1JPMHmT0zz2q6KvjFaxbi1gbgVN-4vhUlFVuZ7mTt590/edit?pli=1&tab=t.0
* Collect information about IPFS related projects that use the Curver25519 algorithms
## Report w19-23
Hello, please find the status reports for weeks 19-23 below.
### Handling pending WebTransport sessions
* Discussion about the early-cancellation penalties
- agreed on margin the CL as it is, behind a runtime flag, and working on the mitigation of the early cancellation in a follow-up patch.
- [ REVIEW ] https://chromium-review.googlesource.com/c/chromium/src/+/5756508
* Implemented a runtime flag for the _Smart Throttling_ feature.
* Investigating the impact of the early cancellation and implemented a few mitigation actions:
- If no DNS is needed, we use the IP before the network process is involved, so early cancellations could consider it.
- Detecting different scenarios of early cancellation
- by the network process after the thorttle_done callaback but before the DNS request has been resolved.
- by the network process before the throttle_done callback, probably due to a timeout in the web application.
* Working on the CL to define a new runtime flag for the basic throttling feature
- [ ABANDONED ] https://chromium-review.googlesource.com/c/chromium/src/+/6512967
* Building Chromium packages for ARM64 architecture and provide them to Alex for testing
## Support Extensions in custom protocols
* First CL to implement the Manifest parsing
- https://chromium-review.googlesource.com/c/chromium/src/+/6382139 [ REVIEW ]
- Working now on the final phase of the review, improving the patch with generated code for the Manfifest key parsing and related checks.
## Communications
* Start working on the blog post about the impact of the Curve255129 algorithms in the IPFS community
- [ DRAFT ] https://docs.google.com/document/d/1JPMHmT0zz2q6KvjFaxbi1gbgVN-4vhUlFVuZ7mTt590/edit?pli=1&tab=t.0
* Attended the Web Engines Hackfest
- Invited Daniel Huges and Anna Weine to talk about the Web Crypto API, current status and future plans
- There are 2 new potential tasks that may fit in the project:
- Streaming WebCrypto operations
- https://github.com/w3c/webcrypto/issues/7
- It seems the WinterCG is also interested
- https://github.com/WinterTC55/proposal-webcrypto-streams/blob/main/explainer.md
- https://webcrypto-streams.proposal.wintercg.org/
- encrypt / decrypt is controversial, but hashing operations are doable
- https://github.com/w3c/webcrypto/issues/250 (old)
- https://github.com/w3c/webcrypto/issues/73#issuecomment-455065709
- Firefox bug about lack of EC keys with compression
- https://bugzilla.mozilla.org/show_bug.cgi?id=1971499
- Filed by the AtProto team
- Maintenance
- https://bugzilla.mozilla.org/show_bug.cgi?id=1970321
- Filed by Alex, it seems it's the last issue blocking the use of native Curve25519 algorithms
- https://bugzilla.mozilla.org/show_bug.cgi?id=1932396
- Same root cause, also source of a few interop issues in Firefox
- Also invited Robin Berjon, who gave a talk about how to fund the web platform
- Had interesting conversations about the impact of the Web Crypto API in the IPFS ecosystem
- He agrees on that Streaming Hashing would be a very nice feature for IPFS
## Report w15-18 2025
Hello, please find the status reports for weeks 15-18 below.
### Implement the Ed25519 in browsers
- Implementing the new "alg" JWK member behavior
+ Web Platform Tests
- https://github.com/web-platform-tests/wpt/pull/51788 [ MERGED ]
- https://github.com/web-platform-tests/wpt/pull/51915 [ MERGED ]
- Continue the process of shipping the Ed25519 feature
+ https://chromium-review.googlesource.com/c/chromium/src/+/6440173 [ MERGED ]
+ shipped enabled by default in Chrome 137 (reach stable around late May)
### Handling pending WebTransport sessions
- Continue with the review of the CL to mitigate the throttling penalties
+ https://chromium-review.googlesource.com/c/chromium/src/+/5756508 [ REVIEW ]
+ implementing a mechanisms to remove the obsolete entries in the failed_handshake_ map
+ trying to solve the penalties when the connection is closed before the DNS resolution
- investigating the effect of the webtransport-developer-mode flag
- investigating the bad results of the last patch, based on the feedback provided by lidel
+ found out a but in the last patch
- generating new packages for Alex and Lidel
## Report w11-14 2025
Hello, please find the status reports for weeks 11-14 below.
### Support extensions in custom protocols
* Got the first review to the prototype
* https://chromium-review.googlesource.com/c/chromium/src/+/5518971 [REVIEW]
* Implementing a runtime flag and browser tests to help with the early review process
* Alex Moshchuck (security team) commented in the CL and also on the design document
- Addressed the comments in the CL and wrote a new Security Considerations section in the design document, as requested by Alex
* Start working on splitting up the prototype's CL while getting feedback about the general approach and the privacy issues
- patch with the Manifest parsing logic and unit tests
+ https://chromium-review.googlesource.com/c/chromium/src/+/6382139 [WIP]
- implementing the extension feature description and the related flag
+ no upstream patch yet
- implementation of the new Protocol Handlers API
+ additional unit and browser tests
+ no upstream patch yet
- start the implementation of the ProtocolHandler logic to provide it a status
+ this will be the first step towards the runtime permission logic
+ implementing the new PermissionRequest to confirm the protocol handler
+ no upstream patch yet
### Implement the Ed25519 in browsers
* investigating a few bugs in the WebKitGtk+ implementation
* https://bugs.webkit.org/show_bug.cgi?id=279113
* https://bugs.webkit.org/show_bug.cgi?id=288585
* The 'alg' JWK member is again part of the spec, so Investigate the current status of the 3 implementers and WPT
* WebKit
- https://bugs.webkit.org/show_bug.cgi?id=289535 [FIXED]
- https://github.com/WebKit/WebKit/pull/42258 [MERGED]
* Blink
- https://issues.chromium.org/issues/402138569 [FIXED ]
- https://chromium-review.googlesource.com/c/chromium/src/+/6339929 [MERGED]
* Gecko
- https://bugzilla.mozilla.org/show_bug.cgi?id=1954700
- https://phabricator.services.mozilla.com/D241955 [REVIEW]
* Web Platform Tests
- https://github.com/web-platform-tests/wpt/pull/51788 [REVIEW]
- https://github.com/web-platform-tests/wpt/pull/51915 [REVIEW]
* preparing the Ed25519 intent-to-ship request
- sent to the mailing list
+ https://groups.google.com/a/chromium.org/g/blink-dev/c/T2kriFdjXsg/m/ZeD_PoLXBwAJ
### Handling pending WebTransport sessions
* Adam finally reviewed the CL and suggested a new approach
- https://chromium-review.googlesource.com/c/chromium/src/+/5756508 [REVIEW]
* Ideal solution:
- global failures + failures for this subnet + failures for this IP
* Got a compromise to proceed with your approach, with two adjustments:
- Entries that have been forgiven will be removed from the map either when they are looked up and discovered to be forgiven, or from a periodic timer that sweeps the map looking for forgiven entries.
+ bad bimodal behaviour for client/server architectures where one failure dooms the page to bad behaviour forever
- The current logic is much too lenient on cancelled connections, making it trivial for an attacker to bypass most throttling just be cancelling every connection attempt after 2 seconds.
+ A rapid cancellation should be considered just as suspicious as a failed connection.
## Report 2025 w01-10
Hello, please find the status reports for weeks 01-10 below.
### Support extensions in custom protocols
* Continue the discussion with Devlin about the proposal to implement the new procotol_handlers Manifest key.
- We have got the Design doc approved finally, although there are still a few issues that would need to be sorted out during the patches review process.
* Implementing a PoC feature
- https://chromium-review.googlesource.com/c/chromium/src/+/5518971 [ WIP ]
- submitted a new version of the patch and asked for an informal review
### Handling pending WebTransport sessions
* Implement the subnet based penalties
- https://chromium-review.googlesource.com/c/chromium/src/+/5756508 [ REVIEW ]
### Communications
- Wrote and published a blog post "[Can I use Secure Curves in the Web Platform?](https://blogs.igalia.com/jfernandez/2025/02/28/can-i-use-secure-curves-in-the-web-platform/)"
## Report 2024 w41-45
Hello, please find the status reports for weeks 41-45 below.
### Implement the Ed25519 in browsers
* HKDF interop bug in Chromium
- https://issues.chromium.org/issues/352364580 [ WONFIX ]
- https://chromium-review.googlesource.com/c/chromium/src/+/5729992 [ ABANDONED ]
- David Ben reviewed the CL to solve the HKDF interop issue, but expressed doubts about the change in the spec that motivated the patch
- Wrote an email to Daniel to talk about David's reluctance to fix Chrome's behavior
- I've filed an issue for the WebCrypto spec to try to get some consensus
+ https://github.com/w3c/webcrypto/issues/370 [ FIXED ]
* WebKit implementation of the change to deal with the length=0 case in ECDH
- https://bugs.webkit.org/show_bug.cgi?id=276916 [ FIXED ]
* It seems that Apple decided to revert my patch for the bug 276916
- filed bug 282096 as the root cause of the regression that motivated the revert
- https://bugs.webkit.org/show_bug.cgi?id=282096 [ FIXED ]
- Added new WPT to detect regressions like this, since there were no tests covering the Get Length operation
* Investigate the wrap/unwrap WPTs to understand why a change to throw on any truncation is causing failures in WebKit
- https://bugs.webkit.org/show_bug.cgi?id=282578 [ WIP ]
- https://github.com/WebKit/WebKit/pull/36184 [ REVIEW ]
* Update the WPT tests in the WebKit repository
- https://bugs.webkit.org/show_bug.cgi?id=280754 [ FIXED ]
- https://bugs.webkit.org/show_bug.cgi?id=281572 [ FIXED ]
- https://bugs.webkit.org/show_bug.cgi?id=282240 [ FIXED ]
- https://bugs.webkit.org/show_bug.cgi?id=282285 [ FIXED ]
- https://bugs.webkit.org/show_bug.cgi?id=282293 [ REVIEW ]
- https://bugs.webkit.org/show_bug.cgi?id=282296 [ REVIEW ]
* Bug in Gecko's X25519 when importing 'raw' keys using just a string for the algorithm parameter
- https://bugzilla.mozilla.org/show_bug.cgi?id=1924951 [ FIXED ]
- It seems the problem is in the JWK import code of the X25519 algorithm
* Gecko implementation of the new X25519 and ECDH behavior when length is zero
- https://bugzilla.mozilla.org/show_bug.cgi?id=1922522 [ FIXED ]
* Changes in the WPT WebCryptoAPI tests
- https://github.com/web-platform-tests/wpt/pull/48471 [ MERGED ]
- https://github.com/web-platform-tests/wpt/pull/48645 [ MERGED ]
- https://github.com/web-platform-tests/wpt/pull/48852 [ MERGED ]
- https://github.com/web-platform-tests/wpt/pull/49048 [ REVIEW ]
- https://github.com/web-platform-tests/wpt/pull/49043 [ REVIEW ]
* Implementing the change to allow zero n HKDF and PBKDF2
- Gecko
- https://bugzilla.mozilla.org/show_bug.cgi?id=1928968 [ REVIEW ]
- WebKit
- https://bugs.webkit.org/show_bug.cgi?id=282531 [ REVIEW ]
- Blink
- https://issues.chromium.org/issues/352364580 [ REVIEW ]
- David reviewed the CL to change the PBKDF2 behavior on length 0
+ https://chromium-review.googlesource.com/c/chromium/src/+/5979996
+ Although I've got the LGTM, I'd rather merge the change in the WPT first, so that I can import them in all the engines
* Discussing about the Ed25519 small-order checks
- Apple has expressed support for implementing the additional checks, aligning with Mozilla
- https://github.com/WICG/webcrypto-secure-curves/issues/27#issuecomment-2406625208
- Wrote an email to David to see whether Chrome would align or not
* Follow the last comments on the PR to merge the Curve25519 algorithms into the WebCryptoAPI spec
- https://github.com/w3c/webcrypto/pull/362
* There was movement on the issues I filed about the lack of interop on HKDF when length is 0 and the PR to merge the Curve25519
- https://github.com/w3c/webcrypto/issues/370
- Got an agreement finally
+ https://github.com/w3c/webcrypto/pull/380
## 2024 Weeks 37-40
Hello, please find the status reports for weeks 37-40 below.
### Implement the Ed25519 in browsers
- While waiting for reviews began doing some cleanup on the WPTs
+ [Split up the Curve488 and Curve25519](https://github.com/web-platform-tests/wpt/pull/48195 ), since the former is not implemented and is creating some noise [ MERGED]
+ Doing the same for the [import/export tests](https://github.com/web-platform-tests/wpt/pull/48206) [ MERGED ]
+ Working on the [sign / verify tests](https://github.com/web-platform-tests/wpt/pull/48207) [ MERGED ]
+ [Defining new tests for EC algorithms](https://github.com/web-platform-tests/wpt/pull/48243) [MERGED] with failure test cases
+ implemented also some refactoring to share some code with the OPK related tests
- Bug triage:
- Investigated some failures already registered in the expected.txt files of Chrome
- Investigated a Chrome [issue 40072218](https://issues.chromium.org/issues/40072218)
- Closed as INVALID, since Chrome was working as expected.
- Investigated a few bugs related to the EC import / export operations
+ filed a few bugs in Firefox
+ [bug id 1919532](https://bugzilla.mozilla.org/show_bug.cgi?id=1919532)
+ Reviewed a patch to fix the bug
+ [bug id 1919539](https://bugzilla.mozilla.org/show_bug.cgi?id=1919539)
- Investigated a WPT failure on WebKit / Safari related to X25519 import / export
+ it seems that in the Mac Port the public key generated from the private one is different to what other crypto libraries produce
+ I'm investigating whether this may be another instance of bug 262499
- Filed [WebKit bug 279963](https://bugs.webkit.org/show_bug.cgi?id=279963)
- Attended the TPAC meeting
- Discussed the current status of the Curver25519 algorithms
- Asked explicitly about the current blockers to merge the [PR#362](https://github.com/w3c/webcrypto/pull/362)
- https://github.com/WICG/webcrypto-secure-curves/issues/28
- See the [full Web App Sec meeting minutes](https://github.com/w3c/webappsec/blob/main/meetings/2024/2024-09-23-TPAC-Minutes.md#crypto)
- More bug triage based on the WPT failure son the different engines
+ Filed a few more bugs
+ [bug 1920672](https://bugzilla.mozilla.org/show_bug.cgi?id=1920672)
+ [bug 1920705](https://bugzilla.mozilla.org/show_bug.cgi?id=1920705) [ FIXED ]
+ Some other failures in Firefox are caused by [bug 1917228](https://bugzilla.mozilla.org/show_bug.cgi?id=1917228), recently fixed but still not reached any release
- Follow up after TPAC to manage the issues blocking the merge into the WebCrypto spec
- Sent [a PR to the secure Curves spec](https://github.com/WICG/webcrypto-secure-curves/pull/29) for the X25519 alg with the changes agreed on the ECDH deriveBits operation
- [Discussion in the PR](https://github.com/w3c/webcrypto/pull/351) about throwing on any truncation
+ Claims that this change would break wrap/unwrap use cases
- Start the chrome implementation for X25519 throw-on-truncation spec changes
+ [DRAFT] https://chromium-review.googlesource.com/c/chromium/src/+/5895196
- Start the WebKit implementation of the throw-on-truncation spec changes
+ Import the latest change from the WPT WebCrypto suite
+ [MERGED] https://github.com/WebKit/WebKit/pull/34571
- Fixing WebKit bug on ECDH when length is 0
- [REVIEW] https://bugs.webkit.org/show_bug.cgi?id=276916
- Rebase and clean up the WebKIt PR with the fix for the length = 0
- Submitted [a patch for review](https://github.com/WebKit/WebKit/pull/31146 )
- Start the Gecko implementation to fix the length = 0 behavior
- [REVIEW] https://bugzilla.mozilla.org/show_bug.cgi?id=1922522
- Submitted [a patch for review](https://phabricator.services.mozilla.com/D224555 )
- Implemented additional WPT for the derive_bits_length
+ too long and non-multiple of 8 test cases
+ [REVIEW] https://github.com/web-platform-tests/wpt/pull/48471
### Cross-Origin-Embedder policy issue blocking Web Tiles development
- Continued studying the spec
- Tried to make some examples of how these headers are inherited on iframes
- Studied the WPT already defined for similar cases
- Found out the root cause of the problem, which is related to how the permission policy is inherited by iframes
- this is clearly a bug in the demo
- Investigating a bit more how the permission policy inheritance works
+ Investigate why the "*" allow list doesn't allow the iframe to inherit the value from its parent policy
+ Submitted my conclusion on the bug initially reported to Chrome
- [INVALID] https://issues.chromium.org/issues/346852676
## 2024 Weeks 32-36
Hello, please find the status for the tasks from weeks 32-36 below. We have included a few relevant bits from early this week (week 37). Please let us know if you have any questions.
### Implement the Ed25519 in browsers
* Retaking the patches to address the deriveBit cases with zero value for the length argument
- Analyzing previous discussions in GitHub
- Preparing a proposal to be discussed with Daniel (WebCrypto spec editor)
* Continue working on the proposal to address the deriveBits interop issues with length zero
* Reading the relevant sections of the RFCs referenced by the the affected algorithms
* Discussing with Daniel via email about my proposal
* Scheduled a call for next week (week 37)
* Met with Daniel and the following are highlights from the call:
* Ed25519 random signatures
* not sure if randomizes signatures will be part of an official RFC (likely, will)
* TODO: create an issue to gather opinions from Chromium and Firefox
* PR to change the WPT
* small-order
* easiest way is forget about full correctness, as WebKit and Chrome does.
* propose this as optional
* better to move the discusson to the ITEF and made the changes in the crypto libraries
* deriveBits
* Implement what it's specicied for PBKDF2 & HKDF (PR#275)
* File an issue for ECDH and X25519 so that we throw on any value different than the default curve's length
### Cross-Origin-Embedder policy issue blocking Web Tiles development
* Start the investigation of the Cross-Origin-Embedder policy issue
* Analysis of the HTML spec sections where this headers are defined
* Debugging the test case provided in the bug
* Ideally need a more simple test case
## 2024 Weeks 28 - 31
Hello, please find the status for the tasks from weeks 28-31 below. Please let us know if you have any questions.
### Handling pending WebTransport sessions
* Implementing a more complete solution, as defined in the design document, based on getting the WebTransport server's IP just after the DNS request is resolved
- https://chromium-review.googlesource.com/c/chromium/src/+/5745063 [ REVIEW ]
- Added a new argument to the OnHandshakeFailed method of the WebTransport Mojom interface to pass the server address as an IPEndPoint instance from the network process to the browser process.
- This patch seems to solve the issues detected in the [libp2p demo](https://libp2p-webtransport-sessions.on.fleek.co/)
- During the review, Adam suggested a new approach; we would define a new method OnBeforeConnect to the WebTransport mojom interface to pass the server address just before the UDP connection is created.
- https://chromium-review.googlesource.com/c/chromium/src/+/5756508 [ WIP ]
### Implement the Ed25519 in browsers**
* Fixing the interoperability issues of the deriveBits operation and it's 'length' parameter
- Blink implementation
- Make the deriveBits length as optional
- https://issues.chromium.org/issues/40265696
- https://chromium-review.googlesource.com/c/chromium/src/+/5686232 \[ REVIEW \]
- Implementing a patch for the case of length=0 in HKDF algorithms
- https://issues.chromium.org/issues/352364580
- https://chromium-review.googlesource.com/c/chromium/src/+/5729992 \[ REVIEW \]
- WebKit implementation
- Make the deriveBits length as optional
- https://bugs.webkit.org/show_bug.cgi?id=276331 [ FIXED ]
- Implementing a patch for the case of length=0 in HKDF algorithms
- https://bugs.webkit.org/show_bug.cgi?id=276394
- https://github.com/WebKit/WebKit/pull/30667 \[ REVIEW \]
- Gecko implementation
- Make the deriveBits length as optional
- https://bugzilla.mozilla.org/show_bug.cgi?id=1793429
- https://phabricator.services.mozilla.com/D217532 \[ REVIEW \]
## 2024 Weeks 24 - 27
Hello, please find the status for the tasks from weeks 24-27 below. Please let us know if you have any questions.
### Handling pending WebTransport sessions
- Prepared a deb package with the strategy pattern and the runtime flag
- ["Consider the origin on the WebTransport throttle" Prototype](https://chromium-review.googlesource.com/c/chromium/src/+/5600351)
- Addressing review feedback from Adam (Google) in regards to the MVP patch.
- Implemented a small-refactoring in preparation for the origin-based throttling approach
- https://chromium-review.googlesource.com/c/chromium/src/+/5664914 [ MERGED ]
### Support Extensions in custom protocols
- Completed the [design document](https://docs.google.com/document/d/1e6mSsbjLqBd1_4EAS_AX543vy53oq8SlycNwQ0mZ46g/edit?usp=sharing) with the permissions management and conflict resolutions
- Shared the design document with Google for feedback.
- Expecting to make more progress with this over the next month.
### Implement the Ed25519 in browsers
* Resume the efforts to push forward the issues blocking the intent-to-ship request
- https://github.com/w3c/webcrypto/pull/362
+ how to manage small-order points
+ randomized EdDSA signatures
- https://github.com/w3c/webcrypto/pull/345
+ deriveBits interoperability
* Sent emails to Apple, Mozilla and Google about the different issues
* The [PR#345](https://github.com/w3c/webcrypto/pull/345) to resolve the interop issues of the deriveBits operation has been merged
- update my [PR](https://github.com/web-platform-tests/wpt/pull/43400) with the new tests considering the new behavior
* Implementing the changes in the algorithms with the deriveBits operation to support optional length parameter
- https://chromium-review.googlesource.com/c/chromium/src/+/5686232 [REVIEW]
- https://github.com/WebKit/WebKit/pull/30667 [ REVIEW ]
* Google asked to solve the interop issue regarding HKDF and length=0 in a separate issue
- The [PR](https://github.com/w3c/webcrypto/pull/275) to change the spec was back in 2021 and both Safari and Firefox implement that behavior
## 2024 Weeks 19 - 23
Hello, Please find below the status summary for the tasks from wk19-23 of 2024. Please let us know if you have any questions.
**Support Extensions in custom protocols**
* Continue working on the design document
- https://docs.google.com/document/d/1e6mSsbjLqBd1_4EAS_AX543vy53oq8SlycNwQ0mZ46g/edit?usp=sharing
- permissions management
- security considerations
- alternatives considered
* Shared the design document with google
- asking also for early feedback on the Extension API prototype
**Handling pending WebTransport sessions**
* Prototyping the origin's hashmap as the first mitigation issue
- Implementation of strategy pattern, under a runtime flag
- https://chromium-review.googlesource.com/c/chromium/src/+/5577378
- https://chromium-review.googlesource.com/c/chromium/src/+/5587497
* Implementation of a MVP and asked Google engineers for an early review
- https://chromium-review.googlesource.com/c/chromium/src/+/5600351
* Provided a prebuilt Linux binary of Chromium with my prototype
**New blog post about the WebCrypto related work**
* First draft of the blog post
- Summary about the current status and focus on the blockers for the intent-to-ship
## 2024 Weeks 13 - 18
Hello, Please find below the status summary for the tasks from wk13-18 of 2024. Please let us know if you have any questions.
**Support Extensions in custom protocols**
* Competed the analysis of the PWAs as Protocol Handlers feature's logic
- https://docs.google.com/document/d/1e6mSsbjLqBd1_4EAS_AX543vy53oq8SlycNwQ0mZ46g/edit?userstoinvite=steph.stimac@gmail.com&sharingaction=manageaccess&role=writer#heading=h.brfyb0wbqzmg
- permissions before registering the protocol handlers
- integration with the Chromium's external handlers logic
- OS integration layer
* Implemented a prototype
- new approach, based on the //components/custom_hadnlers, to share the logic used by the registerProtocolHander HTML API
- https://chromium-review.googlesource.com/c/chromium/src/+/5518971
risks/challenges
- could be perceived as a origin policy bypass
- argument was that pwa can do it
- but pwa model is not about redirecting network reqs
- maybe custom protocol is less dangerous - visually says it's doing non-http stuff, vs extensions that have cross-origin but have no user interface
- sec review is easier/clearer for vendors/market
- pwa shim: reduces new stuff to implement by vendors
**Implement the Ed25519 in browsers**
* Working on the interoperability issues of the deriveBits operation
- Fixed a bug in some of the histograms added for this feature
+ https://chromium-review.googlesource.com/c/chromium/src/+/5328466 \[ LANDED \]
* Continue the discussion about the PR to merge the Curve25519 algorithms in the Web Cryptography API specification
- https://github.com/w3c/webcrypto/pull/362
## 2024 Weeks 10 - 12
Hello, Please find below the status summary for the tasks from wk10-12 of 2024. Please let us know if you have any questions.
**Implement the Ed25519 in browsers**
- recap of the blockers for the intent-to-ship
- https://github.com/w3c/webcrypto/pull/362
- refactoring of the EdDSA WPT tests
- https://github.com/web-platform-tests/wpt/pull/44719
- Attended the WepAppSec WG meeting to talk about the PR to merge the Curve25519 algorithms
**Handling pending WebTransport sessions**
- Working on the design document
- https://docs.google.com/document/d/1j2NJqLQyAHSBZArW6Iwg8uVId3NGQxnBV7b9LYbd8FM/edit#heading=h.numlu03ovx44
- Sent the email to the blink-networking-dev mailing list
- https://groups.google.com/a/chromium.org/d/msgid/blink-network-dev/932783a5-d2cf-4f6a-b7a0-88d7212d9ec1%40igalia.com
**Support Extensions in custom protocols**
- doing a recap of the proposal lidel outlined to implement a service-worker fetch listener
- https://github.com/ipfs/in-web-browsers/issues/212
- Start a new design doc for the implementation of the protocol handler registration at install time
- https://docs.google.com/document/d/1e6mSsbjLqBd1_4EAS_AX543vy53oq8SlycNwQ0mZ46g/edit#heading=h.brfyb0wbqzmg
- Resume the prototyping efforts (will share the code soon)
- Evaluating ways to use the PWAs ManifestManage
+ discard the use of the PWAs ManifestManager since its architecture (happening on the renderer process) doesn't fix well with how the WebExtensions logic is implemented.
- going back to the regular ManifestHander based parsing
+ focusing now on usins the custom_handlers component and share the PWAs permissions logic if possible
**Firefox support for WebTransport transport**
- Attending the Web Transport WG meeting to talk about the need of WPT
- https://github.com/w3c/webtransport/issues/589
## 2024 Weeks 08 - 09
Hello, Please find below the status summary for the tasks from wk08-09 of 2024. Please let us know if you have any questions.
**Implement the Ed25519 in browsers**
* Anne (WebKit) asked me last Friday to bring the Curve25519 algorithms into the WebAppSec WG
- he thinks it would be good to unblock the shipment of the feature
- Review the PR by Daniel to merge the Curve25519 into the Web Cryptography API specification
- https://github.com/w3c/webcrypto/pull/362
* Fixing some wrong tests in the Ed25519 cases
- https://github.com/web-platform-tests/wpt/pull/44719 [ REVIEW ]
* Filed a bug against BoringSSL to request additional checks for the of small-order points in the Ed25519 algorithm
- https://bugs.chromium.org/p/boringssl/issues/detail?id=697&
- David Ben replied that this issue is extremely low priority and thinks that the Web Crypto implementation should stick to what the platform's library provides.
* Continue working on the deriveBts interoperability issues
- investigating a possible bug in the UMAs implementation
- https://chromium-review.googlesource.com/c/chromium/src/+/5328466 [ REVIEW ]
- The counter for the '0' value seems correct, so the lack of data may imply no usage at all, which would be good news since we want to merge a PR in the spec that would change WebKit's behavior on that use case.
- https://chromestatus.com/metrics/feature/timeline/popularity/4745
- https://chromestatus.com/metrics/feature/timeline/popularity/4746
**Firefox support for WebTransport transport**
* Review the patch to complete the implementation of the serverCertificateHash feature
- https://bugzilla.mozilla.org/show_bug.cgi?id=1873263
- This bug has been fixed by an external contributor and it's been merged already
- https://phabricator.services.mozilla.com/D197857
* Still working on the WPT for this feature
- Filed an issue for the Web Transport WG
- https://github.com/w3c/webtransport/issues/589
- It's going to be discussed in the next meeting
- https://www.w3.org/wiki/WebTransport/Meetings2023#WebTransport_Bi-weekly_Virtual_Meeting_#76_early_-_March_12,_2024
**Handling pending WebTransport sessions**
* continue with the analysis of the too many pending WebTransport connections issues
* Meeting with lidel about the WebTransport bug related to the pending handshake requests
- brainstorming about the test case and possible approaches
* start working on the design document
* https://docs.google.com/document/d/1j2NJqLQyAHSBZArW6Iwg8uVId3NGQxnBV7b9LYbd8FM/edit?usp=sharing
## 2024 Weeks 06 - 07
Hello, Please find below the status summary for the tasks from wk06-07 of 2024. Please let us know if you have any questions.
**Implement the Ed25519 in browsers**
* Continue the discussion about the interoperability issues related to the deriveKey length
- https://github.com/w3c/webcrypto/issues/322
- https://github.com/w3c/webcrypto/issues/329
- New tentative Web Platform Tests
- https://github.com/web-platform-tests/wpt/pull/43400 [ REVIEW ]
- Conversation with David Ben (Google) about the UMAs we added last year to evaluate the use of the value '0' as deriveKey's length
+ https://chromestatus.com/metrics/feature/timeline/popularity/4745
+ https://chromestatus.com/metrics/feature/timeline/popularity/4746
+ It seems there must be a bug, since we've got no data so far
* Discussion about the use if small-order key in Ed25519 signatures
- New Web Platform tests, thanks to the test vectors found in a paper
- https://github.com/web-platform-tests/wpt/pull/43751 [ MERGED ]
- Discussed with the spec editor some changes in the spec
- https://github.com/WICG/webcrypto-secure-curves/issues/19
- https://github.com/WICG/webcrypto-secure-curves/pull/25 [ MERGED ]
* Reactivate the issue about the removal of the 'alg' JWK field from the import operation's logic
- https://bugs.webkit.org/show_bug.cgi?id=262613
- https://issues.chromium.org/issues/40074061
**Firefox support for WebTransport transport**
* retake the review of the patch to complete the serverCertificateHashes feature
- https://bugzilla.mozilla.org/show_bug.cgi?id=1873263
* filed an WebTransposrt issue for the lack of WPT
- https://github.com/w3c/webtransport/issues/589
**Handling pending WebTransport sessions**
* Preliminary analysis of the demo, the test cases provided and the discussion in the issue tracker
* Contacted Google's engineer that owns the bug to ask about the current status and their plans
- It seems that there is no plans to do any work on this feature, but they offered help with reviews
- They asked for a design do before to discuss any potential approach
## 2024 Weeks 01 - 05
Hello, Please find below the status summary for the tasks from wk01-05 of 2024. Please let us know if you have any questions.
**Firefox support for WebTransport transport**
- The patch with the serverCertificateHas implementation has landed, but someone filed a bug claiming the implementation is not complete according to the specs
- https://bugzilla.mozilla.org/show_bug.cgi?id=1873263
- help with the reviews
- Continue working on the WPT
- trying to figure out a way to use the WPT HTTP server's certificate from the tests
- Investigating why the test fail in Chrome (shows an error during handshaking logic)
- the problem was that the spec, which Chrome implements completely, requires a maximum of 14 days validity for the certificate and doesn't allow RSA
- discussion in the WPT channel about the problems we have and changes needed in the testing infrastructure
- gathering feedback among the browser engineers that own the feature
- Exploring the server substitutions to make the hash fingerprint be resolved at execution time
## 2023 Weeks 50 - 52
Hello, Please find below the status summary for the tasks from wk50-52 of 2023. Please let us know if you have any questions.
**Implement the Ed25519 in browsers**
* Fixing the interoperability issues in the deriveBits method
- Change X25519´s behavior to match the current spec
+ https://chromium-review.googlesource.com/c/chromium/src/+/5013612 [ LANDED ]
- There is an ongoing discussion about this that eventually will imply another change in all the algorithms providing the deriveBits implementation (HKDF, PBKDF2, ECDH and X25519)
+ https://github.com/w3c/webcrypto/issues/322
- Implementing new WPT with new test cases for the deriveBits operation
+ https://github.com/web-platform-tests/wpt/pull/43400
* Analyzing the discussion in the bug about the "JWK" field removal
- https://issues.chromium.org/issues/40074061
- https://bugs.webkit.org/show_bug.cgi?id=262613
- There are patches to fix these 2 bugs, but they are blocked until we get an agreement
+ https://chromium-review.googlesource.com/c/chromium/src/+/5054207 [ REVIEW ]
+ https://github.com/WebKit/WebKit/pull/21006 [ REVIEW ]
* Additional checks against the use of small-order points in EdDSA signatures
- https://issues.chromium.org/issues/40251305
- Working on new WPT for these cases
+ https://github.com/web-platform-tests/wpt/pull/43751
These 3 issues are the ones blocking the intent-to-ship on Chrome, and probably in Safari as well.
**Firefox support for WebTransport transport**
* Initial implementation in Firefox of the serverCertificateHash feature of the Web Transport spec
- https://phabricator.services.mozilla.com/D195966 [ LANDED ]
* Evaluating possible WPT based on Chrome's internal tests
- investigating how to deal with the WPT https server certificates
- the problem is that the spec, which Chrome implements completely, requires a maximum of 14 days validity for the certificate and doesn't allow RSA
- exploring the server substitutions to make the hash fingerprint be resolved at execution time
* someone filed a bug claiming the implementation is not complete according to the specs
- https://bugzilla.mozilla.org/show_bug.cgi?id=1873263
- The initial implementation was incomplete; we need a specific certificate validators to fulfill the requirements of the spec
+ https://w3c.github.io/webtransport/#custom-certificate-requirements
+ the certificate MUST be an X.509v3 certificate as defined in [RFC5280]
+ the key used in the Subject Public Key field MUST be one of the allowed public key algorithms
+ the current time MUST be within the validity period of the certificate as defined in Section 4.1.2.5 of [RFC5280]
+ the total length of the validity period MUST NOT exceed two weeks
+ Some external contributor is working on it and asked me for reviews
* filed an WebTransposrt issue for the lack of WPT
- https://github.com/w3c/webtransport/issues/589