diff options
author | Jesse Luehrs <doy@tozt.net> | 2021-03-02 02:45:04 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2021-03-02 02:45:04 -0500 |
commit | d149a01bffd2bfdd16e471c8be55f7760c70dd69 (patch) | |
tree | 552b9f5a1288cf29ae88bf65a5e201692a29004a /src | |
parent | afde294f5922cead3efde54400c973e55004aa0a (diff) | |
download | rbw-d149a01bffd2bfdd16e471c8be55f7760c70dd69.tar.gz rbw-d149a01bffd2bfdd16e471c8be55f7760c70dd69.zip |
suggest rotating the user's encryption key for old cipherstring types
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>, |