Skip to main content

signedby_sdk/
error.rs

1//! Error types for SignedByMe SDK
2
3use thiserror::Error;
4
5/// SDK error type
6#[derive(Error, Debug)]
7pub enum SdkError {
8    /// Invalid input data
9    #[error("Invalid input: {0}")]
10    InvalidInput(String),
11    
12    /// Proof verification failed
13    #[error("Proof verification failed: {0}")]
14    VerificationFailed(String),
15    
16    /// Invalid proof format
17    #[error("Invalid proof format: {0}")]
18    InvalidProof(String),
19    
20    /// Invalid verification key
21    #[error("Invalid verification key: {0}")]
22    InvalidVerificationKey(String),
23    
24    /// JWT validation error
25    #[error("JWT validation failed: {0}")]
26    JwtError(String),
27    
28    /// OIDC discovery error
29    #[cfg(feature = "oidc")]
30    #[error("OIDC discovery failed: {0}")]
31    OidcError(String),
32    
33    /// Network error
34    #[cfg(feature = "oidc")]
35    #[error("Network error: {0}")]
36    NetworkError(String),
37    
38    /// Serialization error
39    #[error("Serialization error: {0}")]
40    SerializationError(String),
41}
42
43impl From<serde_json::Error> for SdkError {
44    fn from(e: serde_json::Error) -> Self {
45        SdkError::SerializationError(e.to_string())
46    }
47}
48
49impl From<hex::FromHexError> for SdkError {
50    fn from(e: hex::FromHexError) -> Self {
51        SdkError::InvalidInput(format!("Invalid hex: {}", e))
52    }
53}
54
55impl From<jsonwebtoken::errors::Error> for SdkError {
56    fn from(e: jsonwebtoken::errors::Error) -> Self {
57        SdkError::JwtError(e.to_string())
58    }
59}
60
61#[cfg(feature = "oidc")]
62impl From<reqwest::Error> for SdkError {
63    fn from(e: reqwest::Error) -> Self {
64        SdkError::NetworkError(e.to_string())
65    }
66}