mirror of
https://github.com/bitwarden/browser.git
synced 2024-10-30 08:10:34 +01:00
44 lines
1.1 KiB
Rust
44 lines
1.1 KiB
Rust
use std::fmt::Debug;
|
|
|
|
use thiserror::Error;
|
|
|
|
#[derive(Error, Debug)]
|
|
pub enum Error {
|
|
#[error("Error parsing CipherString: {0}")]
|
|
InvalidCipherString(#[from] CSParseError),
|
|
|
|
#[error("Cryptography Error, {0}")]
|
|
Crypto(#[from] CryptoError),
|
|
}
|
|
|
|
#[derive(Debug, Error)]
|
|
pub enum CSParseError {
|
|
#[error("No type detected, missing '.' separator")]
|
|
NoType,
|
|
#[error("Invalid type, got {enc_type} with {parts} parts")]
|
|
InvalidType { enc_type: String, parts: usize },
|
|
#[error("Error decoding base64: {0}")]
|
|
InvalidBase64(#[from] base64::DecodeError),
|
|
#[error("Invalid base64 length: expected {expected}, got {got}")]
|
|
InvalidBase64Length { expected: usize, got: usize },
|
|
}
|
|
|
|
#[derive(Debug, Error)]
|
|
pub enum CryptoError {
|
|
#[error("Error while decrypting cipher string")]
|
|
KeyDecrypt,
|
|
}
|
|
|
|
// Ensure that the error messages implement Send and Sync
|
|
#[cfg(test)]
|
|
const _: () = {
|
|
fn assert_send<T: Send>() {}
|
|
fn assert_sync<T: Sync>() {}
|
|
fn assert_all() {
|
|
assert_send::<Error>();
|
|
assert_sync::<Error>();
|
|
}
|
|
};
|
|
|
|
pub type Result<T, E = Error> = std::result::Result<T, E>;
|