-
Notifications
You must be signed in to change notification settings - Fork 48
feat(client): add E2EE support via WebRTC Encoded Transforms #2198
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
Merged
Merged
Changes from 7 commits
Commits
Show all changes
112 commits
Select commit
Hold shift + click to select a range
4d6ba0e
feat(client): add E2EE support via WebRTC Encoded Transforms
oliverlaz 138501a
feat: support more codecs
oliverlaz 86148a3
refactor(client): code-split E2EE into a separate browser chunk
oliverlaz 2b81307
refactor(client): consolidate E2EE into EncryptionManager class
oliverlaz e32bd0d
fix(client): harden E2EE against review findings
oliverlaz 97d9ff6
feat(client): add E2EE demo app and decryption failure detection
oliverlaz 9a5e9f5
refactor(client): restructure E2EE demo app for clarity and best pracβ¦
oliverlaz 2770b18
fix(e2ee-demo): fix race condition in key exchange on participant join
oliverlaz a11af82
feat(client): attach E2EE decryptors to orphaned tracks during reconcβ¦
oliverlaz 802e57b
chore: remove accidentally committed worktree pointer
oliverlaz 4d53b5b
chore: co-locate e2eeManager initialization
oliverlaz 79ea956
feat(client): harden E2EE IV derivation, add version byte and perf reβ¦
oliverlaz 283519e
chore: remove accidentally committed worktree pointer
oliverlaz e4f8189
feat(client): runtime E2EE toggle and worker performance optimizations
oliverlaz 00a0ad0
perf(client): reduce E2EE worker GC pressure and fix silent pipeline β¦
oliverlaz 7647ec0
perf: speed up encrypting and decrypting of frames
oliverlaz 66213fa
chore: switch to vp8 for better performance
oliverlaz c487dc1
refactor(client): modularize E2EE worker with build-time TypeScript bβ¦
oliverlaz 6b05723
refactor(client): rename worker to e2ee-worker and export as function
oliverlaz c4f3589
chore(client): rename inline-worker plugin to .mts to suppress Node Eβ¦
oliverlaz 5ef2c9e
feat(client,e2ee-demo): add E2EE usability improvements and debug intβ¦
oliverlaz f2e762f
feat(client): harden E2EE worker for compliance and performance
oliverlaz 1e9c1b1
feat: use event emitter for information bubbling
oliverlaz 79ae95d
Merge branch 'main' into feat/e2ee-encoded-transforms
oliverlaz 5c19015
chore: adjust to vitest 4
oliverlaz 44fb902
fix(client): scope E2EE replay window per track and surface missing keys
oliverlaz 3fd42a4
chore(e2ee-demo): move event log into each participant box
oliverlaz 3083e4f
fix(client): use VP8 clear-byte count for VP9 in E2EE worker
oliverlaz 88306fd
refactor(client): extract E2EEManager interface for pluggable E2EE
oliverlaz 117ec68
feat(client): add AV1 support to E2EE
oliverlaz b8148d9
docs(e2ee): add AV1 wire-format design and implementation plan
oliverlaz f9acbf5
chore(e2ee): remove AV1 design docs from the repo
oliverlaz 99b5595
feat(client): default E2EE to RTCRtpScriptTransform, Insertable Streaβ¦
oliverlaz 646d330
feat(e2ee-demo): bookmarkable call ID and grid/speaker layout switcher
oliverlaz b85360a
fix(client): bind AV1 E2EE OBUs to frame to close replay/splice gap
oliverlaz f908a35
refactor(e2ee): rename worker message protocol to cmd.*/e2ee.*
oliverlaz 9019c49
refactor(e2ee): deliver key dumps via the e2ee.key_state event
oliverlaz c90163e
fix(e2ee): type-check the worker with its own WebWorker tsconfig
oliverlaz 3f25784
feat(e2ee-demo): redesign sample app into an E2EE dev/QA harness
oliverlaz 09a8d95
chore: ensure trudy doesn't get any encryption keys
oliverlaz 20f770d
feat(e2ee): default Chrome to Insertable Streams, add preferredTransfβ¦
oliverlaz 93aa7a4
feat(e2ee-demo): feature-detect and preselect the transform path
oliverlaz 0d9b4a5
docs(e2ee): correct setKey userId param
oliverlaz 91aec91
fix(e2ee): authenticate frames before mutating replay/failure state
oliverlaz 714a904
fix(e2ee): validate keyIndex range and RBSP-escape the H264 trailer
oliverlaz 4e1c516
fix(e2ee): guard late setE2EEManager, fail closed on unsupported codeβ¦
oliverlaz d21975a
fix(e2ee): harden key handling, event unsubscribe, and clear-byte clamp
oliverlaz 3a9d896
perf(e2ee): O(1) replay-window bitmap and hoist the AV1 inline header
oliverlaz b587c8c
refactor(e2ee): collapse parallel key maps and dedupe worker helpers
oliverlaz b16f0a6
Merge branch 'refs/heads/main' into feat/e2ee-encoded-transforms
oliverlaz 966eb9b
perf(e2ee): single-copy H264 escape and AV1 inline-header prefix
oliverlaz 3f02b77
refactor(e2ee): simplify emitter, worker-event contract, codec/key diβ¦
oliverlaz 1bdeeef
fix(e2ee): per-track decryption-failure accounting and a re-armable eβ¦
oliverlaz 41497db
refactor(e2ee): replace the worker task queue with a 4-line promise tβ¦
oliverlaz 62e136c
chore(e2ee): drop "finding N" review-doc cross-references from code aβ¦
oliverlaz 75acbae
chore(e2ee): number the trailer wire format v1
oliverlaz 4b53e3e
refactor(e2ee): drop dead trailer version field and test-only rbspEscape
oliverlaz e1a0fbb
Merge branch 'main' into feat/e2ee-encoded-transforms
oliverlaz 3d994db
chore: align ts-config
oliverlaz c435d2c
Merge branch 'main' into feat/e2ee-encoded-transforms
oliverlaz 348aba8
chore: upgrade to the latest openapi schema
oliverlaz 9e5c44d
feat(client): declare e2ee intent on join when a manager is attached
oliverlaz 3f8334b
chore(e2ee-demo): create encrypted calls and add environment override
oliverlaz 2a84885
chore(e2ee-demo): reframe spy labels as admitted-but-keyless
oliverlaz 9f642e6
ci(e2ee-demo): add Vercel deployment job
oliverlaz a1f0e51
chore: upgrade protocol
oliverlaz 1a2ad69
chore(e2ee-demo): default to pronto-staging environment
oliverlaz 06f67cd
chore(e2ee-demo): make E2EE always-on and unlock shared-key setup
oliverlaz 8a3be9d
feat(e2ee-demo): manual per-participant key override for multi-tab teβ¦
oliverlaz f470842
fix(e2ee-demo): use a fixed shared-key index for cross-tab decryption
oliverlaz b459e94
feat(client): report E2EE encode/decode perf per track
oliverlaz 02f151e
chore(e2ee-demo): show per-track E2EE perf, stably sorted
oliverlaz 4b5320a
feat(react-dogfood): optional end-to-end encryption (pronto)
oliverlaz 8de2d9a
refactor(react-dogfood): seamless E2EE lobby toggle
oliverlaz 1577bdb
refactor(react-dogfood): extract call lifecycle + E2EE glue from joinβ¦
oliverlaz 4cb556e
feat(react-dogfood): restrict E2EE toggle to the call creator
oliverlaz 960a064
chore(react-dogfood): tidy redundant comment in LobbyEncryption
oliverlaz 8a0b904
chore: exclude `e2ee` from JoinCallData
oliverlaz e4973d1
chore: silence verbose exhaust checks
oliverlaz cb60c34
refactor(client): tidy E2EE manager API surface
oliverlaz fcdfae5
feat(react-dogfood): add --e2ee/--private to the Slack create hook
oliverlaz ac7c617
feat(client): expose the SFU e2ee_enabled flag as call state
oliverlaz b08dc4b
chore(e2ee-demo): create calls with the auto-on encryption mode
oliverlaz decfce9
feat(e2ee-demo): add a call type override and console debug handles
oliverlaz 0736ee2
feat(e2ee-demo): let the encryption mode be picked before call creation
oliverlaz ae638d7
feat(e2ee-demo): take the encryption mode from the backend
oliverlaz ea87c03
fix(e2ee-demo): retire a participant panel once its call is left
oliverlaz df40af6
refactor(client): drop shouldUseInsertableStreams from the E2EEManageβ¦
oliverlaz 480abbc
fix(e2ee-demo): stop offering key revocation to peers that hold no key
oliverlaz b24d1c1
fix(client): harden the E2EE decode path and disposed-manager handling
oliverlaz 382a7ce
feat(client): report the failing track type on E2EE decryption events
oliverlaz 9035899
refactor(client): drop AV1 from the E2EE worker
oliverlaz abb8673
chore: simplifications
oliverlaz b198fa4
refactor(client): drop the E2EE rotation_needed event
oliverlaz 2d08713
fix(client): pair the E2EE decryption failure and recovery signals
oliverlaz 75d3512
docs(client): trim the E2EE comments
oliverlaz 7f0a2df
refactor(client): change the E2EE trailer magic to 0xE2EEFEED
oliverlaz 5a41618
fix(client): fail closed on a video frame with no codec
oliverlaz d953832
refactor(client): split the E2EE worker into per-concern modules
oliverlaz ce5c577
fix(client): close the H.264 RBSP escaping gap at the clear-header boβ¦
oliverlaz 200d48d
test(client): consolidate the E2EE suite and cover the untested modules
oliverlaz 59951da
test(client): fold the repetitive E2EE tests into tables
oliverlaz 58dc3ca
Merge remote-tracking branch 'origin/main' into feat/e2ee-encoded-traβ¦
oliverlaz b89a72b
refactor(client): turn the E2EE worker factories into classes
oliverlaz c340357
feat(client): support shared E2EE key rotation
oliverlaz 86e1a1a
refactor(client): use arrow fields in typed event emitter
oliverlaz fdc77cb
refactor(client): split the E2EE worker crypto module
oliverlaz 0cdfa1b
docs(client): add the E2EE cross-SDK implementation spec
oliverlaz 3aea0a7
refactor(client): let TypedEventEmitter reuse a provided logger
oliverlaz 4a9dc63
docs(client): drop the E2EE worker module headers
oliverlaz 66917eb
Merge branch 'main' into feat/e2ee-encoded-transforms
oliverlaz a811676
Merge remote-tracking branch 'origin/main' into feat/e2ee-encoded-traβ¦
oliverlaz File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.