diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cipherstring.rs | 12 | ||||
-rw-r--r-- | src/error.rs | 3 |
2 files changed, 12 insertions, 3 deletions
diff --git a/src/cipherstring.rs b/src/cipherstring.rs index 6de4d6c..c1bd80d 100644 --- a/src/cipherstring.rs +++ b/src/cipherstring.rs @@ -76,9 +76,15 @@ impl CipherString { .context(crate::error::InvalidBase64)?; Ok(Self::Asymmetric { ciphertext }) } - _ => Err(Error::UnimplementedCipherStringType { - ty: ty.to_string(), - }), + _ => { + if ty < 6 { + Err(Error::TooOldCipherStringType { ty: ty.to_string() }) + } else { + Err(Error::UnimplementedCipherStringType { + ty: ty.to_string(), + }) + } + } } } diff --git a/src/error.rs b/src/error.rs index 6e8e6da..e43084c 100644 --- a/src/error.rs +++ b/src/error.rs @@ -162,6 +162,9 @@ pub enum Error { #[snafu(display("error spawning pinentry"))] Spawn { source: tokio::io::Error }, + #[snafu(display("cipherstring type {} too old\n\nPlease rotate your account encryption key (https://bitwarden.com/help/article/account-encryption-key/) and try again.", ty))] + TooOldCipherStringType { ty: String }, + #[snafu(display("two factor required"))] TwoFactorRequired { providers: Vec<crate::api::TwoFactorProviderType>, |