proofmode 0.9.0

Capture, share, and preserve verifiable photos and videos
Documentation
// Originally from appattest-rs by Ayodeji Akinola
// https://github.com/TheDhejavu/appattest-rs
// Licensed under the MIT License. See LICENSE-MIT in this directory.

use std::{error::Error, fmt};

#[derive(Debug, PartialEq)]
pub enum AppAttestError {
    InvalidNonce,
    InvalidAppIDHash,
    InvalidPublicKey,
    InvalidCounter,
    InvalidCredentialID,
    InvalidAAGUID,
    InvalidSignature,
    InvalidAppID,
    InvalidClientData,
    ExpectedASN1Node,
    FailedToExtractValueFromASN1Node,
    ExpectedOctetStringInsideASN1Node,

    Message(String),
}

impl fmt::Display for AppAttestError {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        match self {
            AppAttestError::Message(e) => write!(f, "{}", e),
            AppAttestError::InvalidNonce => write!(f, "invalid nonce"),
            AppAttestError::InvalidAppIDHash => write!(f, "invalid App ID hash"),
            AppAttestError::InvalidPublicKey => write!(f, "invalid public key"),
            AppAttestError::InvalidCounter => write!(f, "invalid counter"),
            AppAttestError::InvalidCredentialID => write!(f, "invalid credential ID"),
            AppAttestError::InvalidAAGUID => write!(f, "invalid AAGUID"),
            AppAttestError::InvalidSignature => write!(f, "invalid signature"),
            AppAttestError::InvalidAppID => write!(f, "invalid App ID"),
            AppAttestError::InvalidClientData => write!(f, "invalid client data"),
            AppAttestError::ExpectedASN1Node => write!(f, "expected ASN1 node"),
            AppAttestError::FailedToExtractValueFromASN1Node => {
                write!(f, "failed to extract value from ASN1 node")
            }
            AppAttestError::ExpectedOctetStringInsideASN1Node => {
                write!(f, "expected octet string inside ASN1 node")
            }
        }
    }
}

impl Error for AppAttestError {}