fix(crypto): Load the recovery key from the sled store

This commit is contained in:
Damir Jelić
2021-11-12 16:08:36 +01:00
parent f8fdfd1613
commit a417aa23fa
2 changed files with 17 additions and 6 deletions

View File

@@ -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<Self, UnpicklingError> {

View File

@@ -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 })
}
}