sdjwt 0.8.1

SD-JWT support for Issuers, Holders, and Verifiers
Documentation
use jwt_rustcrypto::Error as JwtError;
use serde_json::Error as SerdeError;
use thiserror::Error;
#[cfg(target_arch = "wasm32")]
use wasm_bindgen::JsValue;

#[derive(Error, Debug)]
pub enum Error {
    #[error("failed to form disclosuer")]
    DisclosureFailed(#[from] SerdeError),
    #[error("invalid disclosure key {0}")]
    InvalidDisclosureKey(String),
    #[error("encoding key error")]
    EncodingKeyError(#[from] JwtError),
    #[error("invalid path pointer to disclosure")]
    InvalidPathPointer,
    #[error("invalid path pointer array index")]
    InvalidPathPointerArrayIndex(#[from] std::num::ParseIntError),
    #[error("invalid _sd type")]
    InvalidSDType,
    #[error("decoding error")]
    DecodingError(#[from] base64::DecodeError),
    #[error("from utf8 conversion error")]
    FromUtf8Error(#[from] std::string::FromUtf8Error),
    #[error("invalid disclosure format {0}")]
    InvalidDisclosureFormat(String),
    #[error("sd-jwt rejected {0}")]
    SDJWTRejected(String),
    #[error("invalid hash algorithm {0}")]
    InvalidHashAlgorithm(String),
    #[error("JWT must have exactly three parts")]
    JwtMustHaveThreeParts,
    #[error("Key Binding JWT is required for the presentation.  Use .key_binding() to set it.")]
    KeyBindingJWTRequired,
    #[error("KB-JWT parameter missing: {0}")]
    KeyBindingJWTParameterMissing(String),
    #[error("RSA PKCS1 error")]
    RsaError(#[from] rsa::pkcs1::Error),
    #[error("RSA PKCS8 error")]
    RsaPkcs8Error(#[from] rsa::pkcs8::Error),
    #[error("UTF8 conversion error")]
    Utf8Error(#[from] std::str::Utf8Error),
    #[error("YAML parsing error")]
    YamlError(#[from] serde_yaml::Error),
    #[error("YAML invalid sd tag: {0}")]
    YamlInvalidSDTag(String),

    #[cfg(target_arch = "wasm32")]
    #[error("WasmJsValueConversionFailed {0}")]
    WasmJsValueConversionFailed(#[from] serde_wasm_bindgen::Error),
}

#[cfg(target_arch = "wasm32")]
impl From<Error> for JsValue {
    fn from(val: Error) -> Self {
        JsValue::from_str(&val.to_string())
    }
}