Skip to main content

slim_config/tls/
errors.rs

1// Copyright AGNTCY Contributors (https://github.com/agntcy)
2// SPDX-License-Identifier: Apache-2.0
3
4use rustls::server::VerifierBuilderError;
5use thiserror::Error;
6
7#[cfg(not(target_family = "windows"))]
8use crate::auth::spire;
9
10/// Errors for Config
11#[derive(Error, Debug)]
12pub enum ConfigError {
13    // Version / format parsing
14    // TLS version validation
15    #[error("invalid tls version: {0}")]
16    InvalidTlsVersion(String),
17    // PEM / certificate/key parsing
18    #[error("invalid pem format")]
19    InvalidPem(#[from] rustls_pki_types::pem::Error),
20    // File content/read validation
21    #[error("error reading cert/key from file: {0}")]
22    InvalidFile(String),
23    // Low-level I/O
24    #[error("file I/O error")]
25    FileIo(#[from] std::io::Error),
26    // SPIRE integration / configuration
27    #[error("error in spire configuration: {details}, config={config:?}")]
28    #[cfg(not(target_family = "windows"))]
29    InvalidSpireConfig {
30        details: Box<String>,
31        config: Box<spire::SpireConfig>,
32    },
33    #[error("auth error")]
34    AuthError(#[from] slim_auth::errors::AuthError),
35
36    #[error("auth config error")]
37    ConfigAuthError(#[from] crate::auth::ConfigAuthError),
38
39    // rustls library errors
40    #[error("rustls error")]
41    Rustls(#[from] rustls::Error),
42    // Builder pattern errors
43    #[error("config builder error: {0}")]
44    ConfigBuilder(String),
45    // Required artifacts
46    #[error("missing server cert or key")]
47    MissingServerCertAndKey,
48    // Verifier construction errors
49    #[error("verifier builder error")]
50    VerifierBuilder(#[from] VerifierBuilderError),
51    // Unknown / catch-all
52    #[error("unknown error")]
53    Unknown,
54
55    // SPIRE runtime errors
56    #[error("spire error: {0}")]
57    #[cfg(not(target_family = "windows"))]
58    Spire(String),
59}