Skip to content

Commit c4028be

Browse files
committed
Don't allow verifying before sharing account keys
1 parent 03258b1 commit c4028be

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

mautrix/crypto/cross_signing.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ class CrossSigningMachine(DeviceListMachine):
2525
_cross_signing_private_keys: CrossSigningPrivateKeys | None
2626

2727
async def verify_with_recovery_key(self, recovery_key: str) -> None:
28+
if not self.account.shared:
29+
raise ValueError("Device keys must be shared before verifying with recovery key")
2830
key_id, key_data = await self.ssss.get_default_key_data()
2931
ssss_key = key_data.verify_recovery_key(key_id, recovery_key)
3032
seeds = await self._fetch_cross_signing_keys_from_ssss(ssss_key)
@@ -38,6 +40,8 @@ def _import_cross_signing_keys(self, seeds: CrossSigningSeeds) -> None:
3840
async def generate_recovery_key(
3941
self, passphrase: str | None = None, seeds: CrossSigningSeeds | None = None
4042
) -> str:
43+
if not self.account.shared:
44+
raise ValueError("Device keys must be shared before generating recovery key")
4145
seeds = seeds or CrossSigningSeeds.generate()
4246
ssss_key = await self.ssss.generate_and_upload_key(passphrase)
4347
await self._upload_cross_signing_keys_to_ssss(ssss_key, seeds)

mautrix/crypto/device_lists.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ async def _store_cross_signing_keys(self, resp: QueryKeysResponse, user_id: User
206206
signing_key = device.ed25519
207207
except KeyError:
208208
pass
209-
if len(signing_key) != 43:
209+
if not signing_key or len(signing_key) != 43:
210210
self.log.debug(
211211
f"Cross-signing key {user_id}/{actual_key} has a signature from "
212212
f"an unknown key {key_id}"

0 commit comments

Comments
 (0)