diff --git a/crates/matrix-sdk-crypto/src/backups/keys/recovery.rs b/crates/matrix-sdk-crypto/src/backups/keys/recovery.rs index de74ae93d..e929a8d0c 100644 --- a/crates/matrix-sdk-crypto/src/backups/keys/recovery.rs +++ b/crates/matrix-sdk-crypto/src/backups/keys/recovery.rs @@ -260,7 +260,6 @@ impl RecoveryKey { /// Try to import a `RecoveryKey` from a previously exported pickle. pub fn from_pickle( - &self, pickle: PickledRecoveryKey, pickle_key: &[u8], ) -> Result { diff --git a/crates/matrix-sdk-crypto/src/store/sled.rs b/crates/matrix-sdk-crypto/src/store/sled.rs index 76d649ced..f109da128 100644 --- a/crates/matrix-sdk-crypto/src/store/sled.rs +++ b/crates/matrix-sdk-crypto/src/store/sled.rs @@ -917,11 +917,23 @@ impl CryptoStore for SledStore { .map(|v| serde_json::from_slice(&v)) .transpose()?; - Ok(BackupKeys { - backup_version: version, - // TODO fetch the key as well. - recovery_key: None, - }) + #[cfg(feature = "backups_v1")] + let recovery_key = { + self.account + .get("recovery_key_v1".encode())? + .map(|p| serde_json::from_slice(&p)) + .transpose()? + .map(|p| { + crate::backups::RecoveryKey::from_pickle(p, self.get_pickle_key()) + .map_err(|_| CryptoStoreError::UnpicklingError) + }) + .transpose()? + }; + + #[cfg(not(feature = "backups_v1"))] + let recovery_key = None; + + Ok(BackupKeys { backup_version: version, recovery_key }) } }