@@ -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 (
0 commit comments