chromium_crypto/
error.rs

1use std::string::FromUtf8Error;
2
3use snafu::{Location, Snafu};
4
5#[derive(Debug)]
6#[derive(Snafu)]
7#[snafu(visibility(pub))]
8#[cfg(target_os = "linux")]
9pub enum CryptoError {
10    #[snafu(display("{source}\n@:{location}"))]
11    Utf8 {
12        source: FromUtf8Error,
13        #[snafu(implicit)]
14        location: Location,
15    },
16    #[snafu(display("{source}\n@:{location}"))]
17    GetPass {
18        source: secret_service::Error,
19        #[snafu(implicit)]
20        location: Location,
21    },
22    #[snafu(display("{source}\n@:{location}"))]
23    Unpadding {
24        source: aes::cipher::block_padding::UnpadError,
25        #[snafu(implicit)]
26        location: Location,
27    },
28}
29
30#[derive(Debug)]
31#[derive(Snafu)]
32#[snafu(visibility(pub))]
33#[cfg(target_os = "macos")]
34pub enum CryptoError {
35    #[snafu(display("{source}\n@:{location}"))]
36    Utf8 {
37        source: FromUtf8Error,
38        #[snafu(implicit)]
39        location: Location,
40    },
41    #[snafu(display("{source}\n@:{location}"))]
42    Keyring {
43        source: keyring::Error,
44        #[snafu(implicit)]
45        location: Location,
46    },
47    #[snafu(display("{source}\n@:{location}"))]
48    Unpadding {
49        source: aes::cipher::block_padding::UnpadError,
50        #[snafu(implicit)]
51        location: Location,
52    },
53    #[snafu(display("{source}\n@:{location}"))]
54    Task {
55        source: tokio::task::JoinError,
56        #[snafu(implicit)]
57        location: Location,
58    },
59}
60
61#[derive(Debug)]
62#[derive(Snafu)]
63#[snafu(visibility(pub))]
64#[cfg(target_os = "windows")]
65pub enum CryptoError {
66    #[snafu(display("{source}\n@:{location}"))]
67    Utf8 {
68        source: FromUtf8Error,
69        #[snafu(implicit)]
70        location: Location,
71    },
72    #[snafu(display("{source}, path: {}\n@:{location}",path.display()))]
73    Io {
74        source: std::io::Error,
75        path: std::path::PathBuf,
76        #[snafu(implicit)]
77        location: Location,
78    },
79    #[snafu(display("{source}\n@:{location}"))]
80    Serde {
81        source: serde_json::Error,
82        #[snafu(implicit)]
83        location: Location,
84    },
85    #[snafu(display("{source}\n@:{location}"))]
86    Base64 {
87        source: base64::DecodeError,
88        #[snafu(implicit)]
89        location: Location,
90    },
91    #[snafu(display("{source}\n@:{location}"))]
92    Task {
93        source: tokio::task::JoinError,
94        #[snafu(implicit)]
95        location: Location,
96    },
97    #[snafu(display("{source}\n@:{location}"))]
98    AesGcm {
99        source: aes_gcm::Error,
100        #[snafu(implicit)]
101        location: Location,
102    },
103    #[snafu(display("{source}\n@:{location}"))]
104    CryptUnprotectData {
105        source: windows::core::Error,
106        #[snafu(implicit)]
107        location: Location,
108    },
109    #[snafu(display("CryptUnprotectData returned a null pointer\n@:{location}"))]
110    CryptUnprotectDataNull {
111        #[snafu(implicit)]
112        location: Location,
113    },
114    #[snafu(display("{source}\n@:{location}"))]
115    ChaCha {
116        source: chacha20poly1305::Error,
117        #[snafu(implicit)]
118        location: Location,
119    },
120    #[snafu(display("{render}\n@:{location}"))]
121    Context {
122        render: winnow::error::ContextError,
123        #[snafu(implicit)]
124        location: Location,
125    },
126    #[snafu(display(r#"app_bound_encrypted_key not start with "APPB"\n@:{location}"#))]
127    Appb {
128        #[snafu(implicit)]
129        location: Location,
130    },
131    #[snafu(display("Get process path failed\n@:{location}"))]
132    ProcessPath {
133        #[snafu(implicit)]
134        location: Location,
135    },
136    #[snafu(display("Invalid status from `RtlAdjustPrivilege`\n@:{location}"))]
137    Privilege {
138        #[snafu(implicit)]
139        location: Location,
140    },
141    #[snafu(display("No such Process lsass.exe or winlogon.exe\n@:{location}"))]
142    NotFoundProcess {
143        #[snafu(implicit)]
144        location: Location,
145    },
146}
147
148pub type Result<T> = std::result::Result<T, CryptoError>;