qubip_aurora 0.12.0

A framework to build OpenSSL Providers tailored for the transition to post-quantum cryptography
Documentation
#![allow(dead_code)]

use std::error::Error as ErrorTrait;
use std::fmt::Debug;

pub use ::signature::{Error, Keypair, SignatureEncoding, Signer, Verifier};

#[derive(Debug)]
pub enum VerificationError {
    InvalidSignature,
    GenericVerificationError,
}

impl core::fmt::Display for VerificationError {
    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::result::Result<(), core::fmt::Error> {
        match self {
            VerificationError::InvalidSignature => write!(f, "error: verification failed"),
            VerificationError::GenericVerificationError => {
                write!(f, "error: generic internal failure")
            }
        }
    }
}

impl ErrorTrait for VerificationError {}

impl From<Error> for VerificationError {
    fn from(value: Error) -> Self {
        value
            .source()
            .map_or(VerificationError::GenericVerificationError, |e| {
                if let Some(ver_err) = e.downcast_ref::<VerificationError>() {
                    match ver_err {
                        VerificationError::InvalidSignature => VerificationError::InvalidSignature,
                        VerificationError::GenericVerificationError => {
                            VerificationError::GenericVerificationError
                        }
                    }
                } else {
                    VerificationError::GenericVerificationError
                }
            })
    }
}