fix: Enable E2EE with caller's key as shared key

Element Call now rejects unencrypted audio. Use caller's key
as shared_key so both sides encrypt/decrypt with the same key.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Christian Gick
2026-02-21 20:51:43 +02:00
parent 4a93827de3
commit ced2783a09

View File

@@ -189,14 +189,15 @@ class VoiceSession:
break break
await asyncio.sleep(0.1) await asyncio.sleep(0.1)
# E2EE disabled — Element Call key derivation mismatch not yet resolved. # Use caller's key as shared key for E2EE
# Audio pipeline confirmed working without E2EE.
if self._e2ee_key: if self._e2ee_key:
logger.info("Caller E2EE key available (%d bytes) — E2EE disabled pending fix", logger.info("Enabling E2EE with caller's key (%d bytes)", len(self._e2ee_key))
len(self._e2ee_key))
if self._publish_key_cb: if self._publish_key_cb:
self._publish_key_cb(self._e2ee_key) self._publish_key_cb(self._e2ee_key)
e2ee_opts = None e2ee_opts = _build_e2ee_options(self._e2ee_key)
else:
logger.warning("No E2EE key available, connecting without encryption")
e2ee_opts = None
room_opts = rtc.RoomOptions(e2ee=e2ee_opts) room_opts = rtc.RoomOptions(e2ee=e2ee_opts)
self.lk_room = rtc.Room() self.lk_room = rtc.Room()