1use bitwarden_error::bitwarden_error;
2use thiserror::Error;
3
4use crate::{CipherError, cipher::blob::BlobEncryptionError};
5
6#[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(transparent)]
14 BlobEncryption(#[from] BlobEncryptionError),
15 #[error("Client User Id has not been set")]
16 MissingUserId,
17}
18
19#[allow(missing_docs)]
21#[bitwarden_error(flat)]
22#[derive(Debug, Error)]
23pub enum DecryptError {
24 #[error(transparent)]
25 Crypto(#[from] bitwarden_crypto::CryptoError),
26}
27
28#[allow(missing_docs)]
29#[derive(Debug, Error)]
30pub enum VaultParseError {
31 #[error(transparent)]
32 Chrono(#[from] chrono::ParseError),
33 #[error(transparent)]
34 Crypto(#[from] bitwarden_crypto::CryptoError),
35 #[error(transparent)]
36 MissingField(#[from] bitwarden_core::MissingFieldError),
37 #[error(transparent)]
38 SerdeJson(#[from] serde_json::Error),
39}
40
41impl From<VaultParseError> for CipherError {
42 fn from(e: VaultParseError) -> Self {
43 match e {
44 VaultParseError::Crypto(e) => Self::Crypto(e),
45 VaultParseError::MissingField(e) => Self::MissingField(e),
46 VaultParseError::Chrono(e) => Self::Chrono(e),
47 VaultParseError::SerdeJson(e) => Self::SerdeJson(e),
48 }
49 }
50}