Skip to content

Commit 9c5b890

Browse files
committed
Fix parsing bridge e2ee key sharing config
1 parent 04be73a commit 9c5b890

File tree

4 files changed

+12
-16
lines changed

4 files changed

+12
-16
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## v0.17.8 (unreleased)
2+
3+
* *(crypto)* Fixed parsing `/keys/claim` responses with no `failures` field.
4+
* *(bridge)* Fixed parsing e2ee key sharing allow/minimum level config.
5+
16
## v0.17.7 (2022-08-22)
27

38
* *(util.async_db)* Added `init_commands` to run commands on each SQLite

mautrix/bridge/e2ee.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ class EncryptionManager:
6161
min_send_trust: TrustState
6262
min_share_trust: TrustState
6363
min_receive_trust: TrustState
64+
key_sharing_enabled: bool
6465

6566
bridge: br.Bridge
6667
az: AppService
@@ -76,7 +77,6 @@ def __init__(
7677
user_id_prefix: str,
7778
user_id_suffix: str,
7879
db_url: str,
79-
key_sharing_config: dict[str, bool] = None,
8080
) -> None:
8181
self.loop = bridge.loop or asyncio.get_event_loop()
8282
self.bridge = bridge
@@ -85,7 +85,6 @@ def __init__(
8585
self._id_prefix = user_id_prefix
8686
self._id_suffix = user_id_suffix
8787
self._share_session_events = {}
88-
self.key_sharing_config = key_sharing_config or {}
8988
pickle_key = "mautrix.bridge.e2ee"
9089
self.crypto_db = Database.create(
9190
url=db_url,
@@ -112,16 +111,15 @@ def __init__(
112111
self.min_receive_trust = TrustState.parse(verification_levels["receive"])
113112
self.crypto.share_keys_min_trust = self.min_share_trust
114113
self.crypto.send_keys_min_trust = self.min_receive_trust
114+
self.key_sharing_enabled = bridge.config["bridge.encryption.allow_key_sharing"]
115115

116116
async def _exit_on_sync_fail(self, data) -> None:
117117
if data["error"]:
118118
self.log.critical("Exiting due to crypto sync error")
119119
sys.exit(32)
120120

121121
async def allow_key_share(self, device: DeviceIdentity, request: RequestedKeyInfo) -> bool:
122-
require_verification = self.key_sharing_config.get("require_verification", True)
123-
allow = self.key_sharing_config.get("allow", False)
124-
if not allow:
122+
if not self.key_sharing_enabled:
125123
self.log.debug(
126124
f"Key sharing not enabled, ignoring key request from "
127125
f"{device.user_id}/{device.device_id}"
@@ -134,7 +132,7 @@ async def allow_key_share(self, device: DeviceIdentity, request: RequestedKeyInf
134132
code=RoomKeyWithheldCode.BLACKLISTED,
135133
reason="You have been blacklisted by this device",
136134
)
137-
elif device.trust == TrustState.VERIFIED or not require_verification:
135+
elif device.trust >= self.crypto.share_keys_min_trust:
138136
portal = await self.bridge.get_portal(request.room_id)
139137
if portal is None:
140138
raise RejectKeyShare(

mautrix/bridge/matrix.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,6 @@ def __init__(
182182
user_id_suffix=self.user_id_suffix,
183183
homeserver_address=self.config["homeserver.address"],
184184
db_url=self.config["appservice.database"],
185-
key_sharing_config=self.config["bridge.encryption.key_sharing"],
186185
)
187186
self.require_e2ee = self.config["bridge.encryption.require"]
188187

mautrix/crypto/key_share.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -76,18 +76,12 @@ async def default_allow_key_share(
7676
code=RoomKeyWithheldCode.BLACKLISTED,
7777
reason="You have been blacklisted by this device",
7878
)
79-
elif device.trust == TrustState.VERIFIED:
80-
self.log.debug(f"Accepting key request from verified device {device.device_id}")
81-
return True
82-
elif self.share_to_unverified_devices:
83-
self.log.debug(
84-
f"Accepting key request from unverified device {device.device_id}, "
85-
f"as share_to_unverified_devices is True"
86-
)
79+
elif device.trust >= self.share_keys_min_trust:
80+
self.log.debug(f"Accepting key request from trusted device {device.device_id}")
8781
return True
8882
else:
8983
raise RejectKeyShare(
90-
f"Rejecting key request from unverified device {device.device_id}",
84+
f"Rejecting key request from untrusted device {device.device_id}",
9185
code=RoomKeyWithheldCode.UNVERIFIED,
9286
reason="You have not been verified by this device",
9387
)

0 commit comments

Comments
 (0)