emerald_vault/
error.rs

1use crate::{
2    convert::error::ConversionError,
3    crypto::error::CryptoError,
4};
5use std::fmt::Display;
6use emerald_hwkey::errors::HWKeyError;
7
8#[derive(Debug, Display, Clone, PartialEq)]
9pub enum VaultError {
10    FilesystemError(String),
11    UnsupportedDataError(String),
12    InvalidDataError(String),
13    IncorrectIdError,
14    IncorrectBlockchainError,
15    ConversionError(ConversionError),
16    UnrecognizedError,
17    PasswordRequired,
18    DataNotFound,
19    InvalidPrivateKey,
20    PrivateKeyUnavailable,
21    PublicKeyUnavailable,
22    CryptoFailed(CryptoError),
23    HWKeyFailed(HWKeyError),
24    GlobalKeyRequired,
25}
26
27impl std::convert::From<ConversionError> for VaultError {
28    fn from(err: ConversionError) -> Self {
29        VaultError::ConversionError(err)
30    }
31}
32
33impl std::convert::From<std::io::Error> for VaultError {
34    fn from(err: std::io::Error) -> Self {
35        VaultError::FilesystemError(err.to_string())
36    }
37}
38
39impl std::convert::From<protobuf::ProtobufError> for VaultError {
40    fn from(err: protobuf::ProtobufError) -> Self {
41        VaultError::ConversionError(ConversionError::from(err))
42    }
43}
44
45impl std::convert::From<uuid::Error> for VaultError {
46    fn from(_: uuid::Error) -> Self {
47        VaultError::IncorrectIdError
48    }
49}
50
51impl std::convert::From<String> for VaultError {
52    fn from(err: String) -> Self {
53        VaultError::InvalidDataError(err)
54    }
55}
56
57impl std::convert::From<()> for VaultError {
58    fn from(_: ()) -> Self {
59        VaultError::UnrecognizedError
60    }
61}
62
63impl From<hex::FromHexError> for VaultError {
64    fn from(err: hex::FromHexError) -> Self {
65        VaultError::ConversionError(ConversionError::from(err))
66    }
67}
68
69impl From<secp256k1::Error> for VaultError {
70    fn from(err: secp256k1::Error) -> Self {
71        VaultError::CryptoFailed(CryptoError::from(err))
72    }
73}
74
75impl std::convert::From<std::convert::Infallible> for VaultError {
76    fn from(_: std::convert::Infallible) -> Self {
77        VaultError::UnrecognizedError
78    }
79}
80
81impl std::convert::From<csv::Error> for VaultError {
82    fn from(_: csv::Error) -> Self {
83        VaultError::ConversionError(ConversionError::CSVError)
84    }
85}
86
87impl std::convert::From<CryptoError> for VaultError {
88    fn from(err: CryptoError) -> Self {
89        VaultError::CryptoFailed(err)
90    }
91}
92
93impl std::convert::From<HWKeyError> for VaultError {
94    fn from(err: HWKeyError) -> Self {
95        VaultError::HWKeyFailed(err)
96    }
97}
98
99impl std::convert::From<hdpath::Error> for VaultError {
100    fn from(err: hdpath::Error) -> Self {
101        VaultError::UnsupportedDataError(format!("Invalid HDPath: {:?}", err))
102    }
103}
104