Skip to main content

uvb_mrvb/
error.rs

1//! Error types for MRVB assertion signing and verification.
2
3use thiserror::Error;
4
5/// MRVB error types
6#[derive(Error, Debug)]
7pub enum MrvbError {
8    #[error("signing failed: {0}")]
9    SigningFailed(String),
10
11    #[error("verification failed: {0}")]
12    VerificationFailed(String),
13
14    #[error("invalid signature")]
15    InvalidSignature,
16
17    #[error("invalid token format: {0}")]
18    InvalidTokenFormat(String),
19
20    #[error("token expired")]
21    TokenExpired,
22
23    #[error("keyset unavailable")]
24    KeysetUnavailable,
25
26    #[error("invalid key length: expected {expected}, got {actual}")]
27    InvalidKeyLength { expected: usize, actual: usize },
28
29    #[error("unsupported algorithm: {0}")]
30    UnsupportedAlgorithm(String),
31
32    #[error("invalid algorithm: expected {expected}, got {actual}")]
33    InvalidAlgorithm { expected: String, actual: String },
34
35    #[error("cryptographic operation failed: {0}")]
36    CryptoError(String),
37
38    #[error("invalid mode: {0}")]
39    InvalidMode(String),
40
41    #[error("encoding/decoding error: {0}")]
42    EncodingError(String),
43
44    #[error("serialization error: {0}")]
45    SerializationError(String),
46
47    #[error("key generation failed: {0}")]
48    KeyGenerationFailed(String),
49
50    #[error("internal error: {0}")]
51    Internal(String),
52}
53
54/// Result type for MRVB operations
55pub type MrvbResult<T> = Result<T, MrvbError>;
56
57impl From<serde_json::Error> for MrvbError {
58    fn from(e: serde_json::Error) -> Self {
59        MrvbError::SerializationError(e.to_string())
60    }
61}
62
63impl From<base64::DecodeError> for MrvbError {
64    fn from(e: base64::DecodeError) -> Self {
65        MrvbError::EncodingError(e.to_string())
66    }
67}