alloy_primitives/signature/
error.rs1use core::{convert::Infallible, fmt};
2
3#[derive(Debug)]
5#[cfg_attr(not(feature = "k256"), derive(Copy, Clone))]
6pub enum SignatureError {
7 FromBytes(&'static str),
9
10 FromHex(hex::FromHexError),
12
13 InvalidParity(u64),
15
16 #[cfg(feature = "k256")]
18 K256(k256::ecdsa::Error),
19}
20
21#[cfg(feature = "k256")]
22impl From<k256::ecdsa::Error> for SignatureError {
23 fn from(err: k256::ecdsa::Error) -> Self {
24 Self::K256(err)
25 }
26}
27
28impl From<hex::FromHexError> for SignatureError {
29 fn from(err: hex::FromHexError) -> Self {
30 Self::FromHex(err)
31 }
32}
33
34impl core::error::Error for SignatureError {
35 fn source(&self) -> Option<&(dyn core::error::Error + 'static)> {
36 match self {
37 #[cfg(all(feature = "k256", feature = "std"))]
38 Self::K256(e) => Some(e),
39 #[cfg(any(feature = "std", not(feature = "hex-compat")))]
40 Self::FromHex(e) => Some(e),
41 _ => None,
42 }
43 }
44}
45
46impl fmt::Display for SignatureError {
47 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
48 match self {
49 #[cfg(feature = "k256")]
50 Self::K256(e) => e.fmt(f),
51 Self::FromBytes(e) => f.write_str(e),
52 Self::FromHex(e) => e.fmt(f),
53 Self::InvalidParity(v) => write!(f, "invalid parity: {v}"),
54 }
55 }
56}
57
58impl From<Infallible> for SignatureError {
59 fn from(_: Infallible) -> Self {
60 unreachable!()
61 }
62}