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