1use crate::verifier::VerifierError;
3use ssi::vc::{CredentialSubject, OneOrMany, VerificationResult};
4use thiserror::Error;
5
6#[derive(Error, Debug)]
8pub enum CredentialError {
9 #[error("No issuer.")]
11 NoIssuerPresent,
12 #[error("No proof.")]
14 NoProofPresent,
15 #[error("Missing verification method in credential proof.")]
17 MissingVerificationMethod,
18 #[error("Failed to decode JWT.")]
20 FailedToDecodeJWT,
21 #[error("A wrapped Verifier error: {0}")]
23 VerifierError(VerifierError),
24 #[error("A wrapped verification result error: {0:?}")]
26 VerificationResultError(VerificationResult),
27}
28
29#[derive(Error, Debug)]
31pub enum DataCredentialError {
32 #[error("Credential error: {0:?}")]
34 CredentialError(CredentialError),
35 #[error("Hash digests do not match. Expected: {0}. Actual: {1}.")]
37 MismatchedHashDigests(String, String),
38 #[error("Multiple credential subjects: {0:?}")]
40 ManyCredentialSubject(OneOrMany<CredentialSubject>),
41 #[error("Missing attribute: {0}")]
43 MissingAttribute(String),
44}
45
46impl From<CredentialError> for DataCredentialError {
47 fn from(err: CredentialError) -> Self {
48 DataCredentialError::CredentialError(err)
49 }
50}
51
52impl From<VerifierError> for CredentialError {
53 fn from(err: VerifierError) -> Self {
54 CredentialError::VerifierError(err)
55 }
56}