sigstore_trust_root/
error.rs1use thiserror::Error;
4
5#[derive(Debug, Error)]
7pub enum Error {
8 #[error("failed to parse JSON: {0}")]
10 Json(#[from] serde_json::Error),
11
12 #[error("failed to decode base64: {0}")]
14 Base64(#[from] base64::DecodeError),
15
16 #[error("failed to parse certificate: {0}")]
18 Certificate(String),
19
20 #[error("invalid key format: {0}")]
22 InvalidKey(String),
23
24 #[error("missing required field: {0}")]
26 MissingField(String),
27
28 #[error("unsupported media type: {0}")]
30 UnsupportedMediaType(String),
31
32 #[error("no matching key found for ID: {0}")]
34 KeyNotFound(String),
35
36 #[error("no matching certificate found")]
38 CertificateNotFound,
39
40 #[error("failed to parse time: {0}")]
42 TimeParse(String),
43
44 #[error("TUF error: {0}")]
46 Tuf(String),
47}
48
49pub type Result<T> = std::result::Result<T, Error>;
51
52impl From<sigstore_types::Error> for Error {
54 fn from(err: sigstore_types::Error) -> Self {
55 match err {
56 sigstore_types::Error::Base64(e) => Error::Base64(e),
57 sigstore_types::Error::Json(e) => Error::Json(e),
58 sigstore_types::Error::InvalidEncoding(s) => Error::InvalidKey(s),
59 sigstore_types::Error::InvalidCertificate(s) => Error::Certificate(s),
60 sigstore_types::Error::MissingField(s) => Error::MissingField(s),
61 _ => Error::InvalidKey(err.to_string()),
63 }
64 }
65}