golem_certificate/
error.rs

1use chrono::{DateTime, Utc};
2
3use crate::schemas::{
4    certificate::key_usage::KeyUsage, permissions::Permissions, validity_period::ValidityPeriod,
5};
6
7#[derive(thiserror::Error, Debug, PartialEq)]
8pub enum Error {
9    #[error("Expired: was valid to {0}")]
10    Expired(DateTime<Utc>),
11    #[error("Not valid yet: will be valid from {0}")]
12    NotValidYet(DateTime<Utc>),
13    #[error("Validity period extended: {parent:?}, {child:?}")]
14    ValidityPeriodExtended {
15        parent: ValidityPeriod,
16        child: ValidityPeriod,
17    },
18    #[error("Permissions extended: {parent:?}, {child:?}")]
19    PermissionsExtended {
20        parent: Permissions,
21        child: Permissions,
22    },
23    #[error("Key usage extended: {parent:?}, {child:?}")]
24    KeyUsageExtended { parent: KeyUsage, child: KeyUsage },
25    #[error("Certificate signing not permitted")]
26    CertSignNotPermitted,
27    #[error("Certificate cannot sign Node Descriptor")]
28    NodeSignNotPermitted,
29    #[error("Invalid signature")]
30    InvalidSignature,
31    #[error("Invalid signature value (cannot deserialize)")]
32    InvalidSignatureValue,
33    #[error("Invalid public key")]
34    InvalidPublicKey,
35    #[error("Invalid json: {0}")]
36    InvalidJson(String),
37    #[error("JCS serialization error: {0}")]
38    JcsSerializationError(String),
39    #[error("Json does not conform to schema: {0}")]
40    JsonDoesNotConformToSchema(String),
41    #[error("Unsupported schema for structure {structure_name}: {schema}")]
42    UnsupportedSchema {
43        schema: String,
44        structure_name: String,
45    },
46}
47
48pub type Result<T> = std::result::Result<T, Error>;