1use std::fmt;
4use thiserror::Error;
5
6#[derive(Error)]
8pub enum SignerError {
9 #[error("Invalid private key format: {0}")]
11 InvalidPrivateKey(String),
12
13 #[error("Invalid public key: {0}")]
15 InvalidPublicKey(String),
16
17 #[error("Signing failed: {0}")]
19 SigningFailed(String),
20
21 #[error("Remote API error: {0}")]
23 RemoteApiError(String),
24
25 #[error("HTTP request failed: {0}")]
27 HttpError(String),
28
29 #[error("Serialization error: {0}")]
31 SerializationError(String),
32
33 #[error("Configuration error: {0}")]
35 ConfigError(String),
36
37 #[error("Signer not available: {0}")]
39 NotAvailable(String),
40
41 #[error("IO error: {0}")]
43 IoError(String),
44
45 #[error("{0}")]
47 Other(String),
48}
49
50impl From<std::io::Error> for SignerError {
51 fn from(err: std::io::Error) -> Self {
52 SignerError::IoError(err.to_string())
53 }
54}
55
56impl From<serde_json::Error> for SignerError {
57 fn from(err: serde_json::Error) -> Self {
58 SignerError::SerializationError(err.to_string())
59 }
60}
61
62#[cfg(any(
63 feature = "vault",
64 feature = "privy",
65 feature = "turnkey",
66 feature = "fireblocks",
67 feature = "cdp",
68 feature = "dfns",
69 feature = "para"
70))]
71impl From<reqwest::Error> for SignerError {
72 fn from(err: reqwest::Error) -> Self {
73 SignerError::HttpError(err.to_string())
74 }
75}
76
77impl fmt::Debug for SignerError {
79 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
80 match self {
81 SignerError::InvalidPrivateKey(_) => {
82 write!(f, "SignerError::InvalidPrivateKey([REDACTED])")
83 }
84 SignerError::InvalidPublicKey(_) => {
85 write!(f, "SignerError::InvalidPublicKey([REDACTED])")
86 }
87 SignerError::SigningFailed(_) => write!(f, "SignerError::SigningFailed([REDACTED])"),
88 SignerError::RemoteApiError(_) => {
89 write!(f, "SignerError::RemoteApiError([REDACTED])")
90 }
91 SignerError::HttpError(_) => write!(f, "SignerError::HttpError([REDACTED])"),
92 SignerError::SerializationError(_) => {
93 write!(f, "SignerError::SerializationError([REDACTED])")
94 }
95 SignerError::ConfigError(_) => write!(f, "SignerError::ConfigError([REDACTED])"),
96 SignerError::NotAvailable(_) => write!(f, "SignerError::NotAvailable([REDACTED])"),
97 SignerError::IoError(_) => write!(f, "SignerError::IoError([REDACTED])"),
98 SignerError::Other(_) => write!(f, "SignerError::Other([REDACTED])"),
99 }
100 }
101}