uvb-mrvb 0.2.1

Multi-Rail Verification Bus (MRVB) with post-quantum cryptography support
Documentation
//! Error types for MRVB assertion signing and verification.

use thiserror::Error;

/// MRVB error types
#[derive(Error, Debug)]
pub enum MrvbError {
    #[error("signing failed: {0}")]
    SigningFailed(String),

    #[error("verification failed: {0}")]
    VerificationFailed(String),

    #[error("invalid signature")]
    InvalidSignature,

    #[error("invalid token format: {0}")]
    InvalidTokenFormat(String),

    #[error("token expired")]
    TokenExpired,

    #[error("keyset unavailable")]
    KeysetUnavailable,

    #[error("invalid key length: expected {expected}, got {actual}")]
    InvalidKeyLength { expected: usize, actual: usize },

    #[error("unsupported algorithm: {0}")]
    UnsupportedAlgorithm(String),

    #[error("invalid algorithm: expected {expected}, got {actual}")]
    InvalidAlgorithm { expected: String, actual: String },

    #[error("cryptographic operation failed: {0}")]
    CryptoError(String),

    #[error("invalid mode: {0}")]
    InvalidMode(String),

    #[error("encoding/decoding error: {0}")]
    EncodingError(String),

    #[error("serialization error: {0}")]
    SerializationError(String),

    #[error("key generation failed: {0}")]
    KeyGenerationFailed(String),

    #[error("internal error: {0}")]
    Internal(String),
}

/// Result type for MRVB operations
pub type MrvbResult<T> = Result<T, MrvbError>;

impl From<serde_json::Error> for MrvbError {
    fn from(e: serde_json::Error) -> Self {
        MrvbError::SerializationError(e.to_string())
    }
}

impl From<base64::DecodeError> for MrvbError {
    fn from(e: base64::DecodeError) -> Self {
        MrvbError::EncodingError(e.to_string())
    }
}