1use baseid_core::error::BilingualError;
2use baseid_core::Language;
3
4#[derive(Debug, thiserror::Error)]
5pub enum BbsError {
6 #[error("key generation failed: {0}")]
7 KeyGeneration(String),
8 #[error("signing failed: {0}")]
9 SigningFailed(String),
10 #[error("verification failed: {0}")]
11 VerificationFailed(String),
12 #[error("proof generation failed: {0}")]
13 ProofGenerationFailed(String),
14 #[error("proof verification failed: {0}")]
15 ProofVerificationFailed(String),
16 #[error("invalid credential: {0}")]
17 InvalidCredential(String),
18 #[error("unsupported predicate: {0}")]
19 UnsupportedPredicate(String),
20}
21
22impl BilingualError for BbsError {
23 fn message(&self, lang: Language) -> &str {
24 match lang {
25 Language::Fr => match self {
26 BbsError::KeyGeneration(_) => "échec de la génération de clé",
27 BbsError::SigningFailed(_) => "échec de la signature",
28 BbsError::VerificationFailed(_) => "échec de la vérification",
29 BbsError::ProofGenerationFailed(_) => "échec de la génération de preuve",
30 BbsError::ProofVerificationFailed(_) => "échec de la vérification de preuve",
31 BbsError::InvalidCredential(_) => "attestation invalide",
32 BbsError::UnsupportedPredicate(_) => "prédicat non supporté",
33 },
34 _ => match self {
35 BbsError::KeyGeneration(m) => m,
36 BbsError::SigningFailed(m) => m,
37 BbsError::VerificationFailed(m) => m,
38 BbsError::ProofGenerationFailed(m) => m,
39 BbsError::ProofVerificationFailed(m) => m,
40 BbsError::InvalidCredential(m) => m,
41 BbsError::UnsupportedPredicate(m) => m,
42 },
43 }
44 }
45}
46
47impl From<BbsError> for baseid_core::Error {
48 fn from(_err: BbsError) -> Self {
49 baseid_core::Error::Crypto(baseid_core::error::CryptoError::VerificationFailed)
50 }
51}