Skip to content

feat: add firefox 148 spec#362

Merged
mingyech merged 2 commits intomasterfrom
ff141
Feb 28, 2026
Merged

feat: add firefox 148 spec#362
mingyech merged 2 commits intomasterfrom
ff141

Conversation

@mingyech
Copy link
Member

@mingyech mingyech commented Jul 26, 2025

For browsers that sends pq hybrid and classical keyshare pairs, it may or may not choose to reuse the classical part between them. Add a helper to be used when crafting the spec to signify that the reuse should happen, and implement the reuse when generating keyshares. Existing specs will still generate keys independently.

Add Firefox 148 spec that uses this reuse.

@mingyech
Copy link
Member Author

Firefox is reusing the x25519 part for its X25519 and X25519MLKEM768 keyshares, different from the chrome behavior in #342

@RPRX
Copy link
Contributor

RPRX commented Jul 27, 2025

@mingyech 其实我觉得 Chrome 的做法有点浪费,但我猜是实现方式不同的原因,Chromium 里现在可能是每个密钥交换方式都对应着单独的函数,为未来某一天去掉 X25519 做准备

@mingyech mingyech force-pushed the ff141 branch 3 times, most recently from 91b8012 to ba7fabc Compare February 28, 2026 22:44
For browsers that sends pq hybrid and classical keyshare pairs, it may
or may not choose to reuse the classical part between them. Add a
helper to be used when crafting the spec to signify that the reuse
should happen, and implement the reuse when generating keyshares.
Existing specs will still generate keys independently.

Add Firefox 148 spec that uses this reuse.
@mingyech mingyech changed the title feat: add firefox 141 spec feat: add firefox 148 spec Feb 28, 2026
@mingyech mingyech requested a review from Copilot February 28, 2026 23:05
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds support for Firefox 148’s TLS 1.3 hybrid PQ/classical key share behavior where the classical X25519 share is reused between the standalone classical entry and the hybrid entry, and makes Firefox 148 the default “auto” Firefox fingerprint.

Changes:

  • Extend KeyShare with an internal reuse marker and add ReuseHybridAndClassicalKeyShares helper for specs.
  • Implement hybrid/classical classical-key reuse during UConn.ApplyPreset keyshare generation.
  • Add HelloFirefox_148 spec and update HelloFirefox_Auto to point to it; add tests validating reuse and default independence.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

File Description
u_public.go Adds a reuse marker on KeyShare plus a helper to mark hybrid/classical pairs for reuse during ApplyPreset.
u_parrots.go Implements the reuse behavior in ApplyPreset and adds the HelloFirefox_148 parrot spec using it.
u_common.go Introduces HelloFirefox_148 ID and updates HelloFirefox_Auto default to 148.
u_parrots_test.go Adds tests verifying reuse for Firefox 148 and that hybrid/classical shares remain independent by default.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated no new comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@mingyech mingyech merged commit ddebe39 into master Feb 28, 2026
7 checks passed
@mingyech mingyech deleted the ff141 branch February 28, 2026 23:52
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

Successfully merging this pull request may close these issues.

3 participants