1use std::{error, fmt};
7
8type RemoteError = Box<dyn error::Error>;
9
10#[derive(Debug)]
11pub enum Error {
12 ExternalKey(RemoteError),
14
15 ExternalKeyString(String),
17
18 NodeAgentClient(RemoteError),
20
21 TargetReport(RemoteError),
23
24 TargetReportHash(RemoteError),
26
27 TargetReportInternal(String),
29
30 AttestationCert(RemoteError),
32
33 AttestationCertHash(RemoteError),
35
36 AttestationCertInternal(String),
38
39 AttestationCertValidation(String),
41
42 CertIssue(RemoteError),
44
45 ConfigIdIssue(String),
47
48 NonceGeneration(RemoteError),
50
51 NsmDriver(String),
53
54 UnexpectedNsmResponse(String),
56}
57
58impl fmt::Display for crate::Error {
59 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
60 match &*self {
61 Error::ExternalKey(e) => write!(f, "External key returned error: {}", e),
62 Error::ExternalKeyString(e) => write!(f, "External key returned error: {}", e),
63 Error::NodeAgentClient(e) => write!(f, "Error creating node agent client: {}", e),
64 Error::TargetReport(e) => write!(f, "Unable to get target report from node agent: {}", e),
65 Error::TargetReportHash(e) => write!(f, "Failure in hash operations while processing target report: {}", e),
66 Error::TargetReportInternal(e) => write!(f, "Internal error in target report handling: {}", e),
67 Error::AttestationCert(e) => write!(f, "Failure requesting attestation certificate: {}", e),
68 Error::AttestationCertHash(e) => write!(f, "Failure in hash operations while processing attestation certificate: {}", e),
69 Error::AttestationCertInternal(e) => write!(f, "Internal error in processing attestation certificate: {}", e),
70 Error::AttestationCertValidation(e) => write!(f, "Validation failed for data returned by Node Agent: {}", e),
71 Error::CertIssue(e) => write!(f, "Failure in final certificate issue step: {}", e),
72 Error::ConfigIdIssue(e) => write!(f, "Failure in parsing input application config id: {}", e),
73 Error::NonceGeneration(e) => write!(f, "Failure generating nonce: {}", e),
74 Error::NsmDriver(e) => write!(f, "Failure in communicating with NSM driver: {}", e),
75 Error::UnexpectedNsmResponse(e) => write!(f, "Unexpected response from NSM driver: {}", e),
76 }
77 }
78}