Skip to main content

ans_types/
error.rs

1//! Error types for ANS shared types.
2
3use thiserror::Error;
4
5/// Certificate and cryptographic errors.
6#[derive(Debug, Error, Clone)]
7#[non_exhaustive]
8pub enum CryptoError {
9    /// Invalid DER encoding
10    #[error("Invalid DER encoding: {0}")]
11    InvalidDer(String),
12
13    /// Certificate parsing failed
14    #[error("Certificate parsing failed: {0}")]
15    ParseFailed(String),
16
17    /// Invalid fingerprint format
18    #[error("Invalid fingerprint format: {fingerprint}")]
19    InvalidFingerprint {
20        /// The invalid fingerprint string.
21        fingerprint: String,
22    },
23
24    /// Missing required certificate extension
25    #[error("Missing required certificate extension: {name}")]
26    MissingExtension {
27        /// The name of the missing extension.
28        name: String,
29    },
30
31    /// No common name found in certificate
32    #[error("No common name found in certificate")]
33    NoCommonName,
34
35    /// No URI SAN found in certificate
36    #[error("No URI SAN found in certificate")]
37    NoUriSan,
38}
39
40/// Parse errors for various types.
41#[derive(Debug, Error, Clone)]
42#[non_exhaustive]
43pub enum ParseError {
44    /// Invalid FQDN format
45    #[error("Invalid FQDN: {0}")]
46    InvalidFqdn(String),
47
48    /// Invalid version format
49    #[error("Invalid version format: {0}")]
50    InvalidVersion(String),
51
52    /// Invalid ANS name format
53    #[error("Invalid ANS name format: {0}")]
54    InvalidAnsName(String),
55
56    /// Invalid URL
57    #[error("Invalid URL: {0}")]
58    InvalidUrl(String),
59
60    /// Missing required field
61    #[error("Missing required field: {0}")]
62    MissingField(String),
63}