@@ -315,18 +315,23 @@ async def _validate_device(
315315 deleted = False ,
316316 )
317317
318- async def resolve_trust (self , device : DeviceIdentity ) -> TrustState :
318+ async def resolve_trust (self , device : DeviceIdentity , allow_fetch : bool = True ) -> TrustState :
319319 try :
320- return await self ._try_resolve_trust (device )
320+ return await self ._try_resolve_trust (device , allow_fetch )
321321 except Exception :
322322 self .log .exception (f"Failed to resolve trust of { device .user_id } /{ device .device_id } " )
323323 return TrustState .UNVERIFIED
324324
325- async def _try_resolve_trust (self , device : DeviceIdentity ) -> TrustState :
326- if device .trust in (TrustState .VERIFIED , TrustState .BLACKLISTED ):
325+ async def _try_resolve_trust (
326+ self , device : DeviceIdentity , allow_fetch : bool = True
327+ ) -> TrustState :
328+ if device .device_id != self .client .device_id and device .trust in (
329+ TrustState .VERIFIED ,
330+ TrustState .BLACKLISTED ,
331+ ):
327332 return device .trust
328333 their_keys = await self .crypto_store .get_cross_signing_keys (device .user_id )
329- if len (their_keys ) == 0 and device .user_id not in self ._cs_fetch_attempted :
334+ if len (their_keys ) == 0 and allow_fetch and device .user_id not in self ._cs_fetch_attempted :
330335 self .log .debug (f"Didn't find any cross-signing keys for { device .user_id } , fetching..." )
331336 async with self ._fetch_keys_lock :
332337 if device .user_id not in self ._cs_fetch_attempted :
@@ -337,7 +342,8 @@ async def _try_resolve_trust(self, device: DeviceIdentity) -> TrustState:
337342 msk = their_keys [CrossSigningUsage .MASTER ]
338343 ssk = their_keys [CrossSigningUsage .SELF ]
339344 except KeyError as e :
340- self .log .error (f"Didn't find cross-signing key { e .args [0 ]} of { device .user_id } " )
345+ if allow_fetch :
346+ self .log .error (f"Didn't find cross-signing key { e .args [0 ]} of { device .user_id } " )
341347 return TrustState .UNVERIFIED
342348 ssk_signed = await self .crypto_store .is_key_signed_by (
343349 target = CrossSigner (device .user_id , ssk .key ),
0 commit comments