bitwarden_vault/
error.rs

1use bitwarden_error::bitwarden_error;
2use thiserror::Error;
3
4use crate::CipherError;
5
6/// Generic error type for vault encryption errors.
7#[allow(missing_docs)]
8#[bitwarden_error(flat)]
9#[derive(Debug, Error)]
10pub enum EncryptError {
11    #[error(transparent)]
12    Crypto(#[from] bitwarden_crypto::CryptoError),
13    #[error("Client User Id has not been set")]
14    MissingUserId,
15}
16
17/// Generic error type for decryption errors
18#[allow(missing_docs)]
19#[bitwarden_error(flat)]
20#[derive(Debug, Error)]
21pub enum DecryptError {
22    #[error(transparent)]
23    Crypto(#[from] bitwarden_crypto::CryptoError),
24}
25
26#[allow(missing_docs)]
27#[derive(Debug, Error)]
28pub enum VaultParseError {
29    #[error(transparent)]
30    Chrono(#[from] chrono::ParseError),
31    #[error(transparent)]
32    Crypto(#[from] bitwarden_crypto::CryptoError),
33    #[error(transparent)]
34    MissingField(#[from] bitwarden_core::MissingFieldError),
35    #[error(transparent)]
36    SerdeJson(#[from] serde_json::Error),
37}
38
39impl From<VaultParseError> for CipherError {
40    fn from(e: VaultParseError) -> Self {
41        match e {
42            VaultParseError::Crypto(e) => Self::Crypto(e),
43            VaultParseError::MissingField(e) => Self::MissingField(e),
44            VaultParseError::Chrono(e) => Self::Chrono(e),
45            VaultParseError::SerdeJson(e) => Self::SerdeJson(e),
46        }
47    }
48}