mls_rs_identity_x509/
error.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// Copyright by contributors to this project.
// SPDX-License-Identifier: (Apache-2.0 OR MIT)

use mls_rs_core::{error::AnyError, identity::CredentialType};

#[derive(Debug)]
#[cfg_attr(feature = "std", derive(thiserror::Error))]
pub enum X509IdentityError {
    #[cfg_attr(feature = "std", error("unsupported credential type {0:?}"))]
    UnsupportedCredentialType(CredentialType),
    #[cfg_attr(
        feature = "std",
        error("signing identity public key does not match the leaf certificate")
    )]
    SignatureKeyMismatch,
    #[cfg_attr(feature = "std", error("unable to parse certificate chain data"))]
    InvalidCertificateChain,
    #[cfg_attr(feature = "std", error("invalid offset within certificate chain"))]
    InvalidOffset,
    #[cfg_attr(feature = "std", error("empty certificate chain"))]
    EmptyCertificateChain,
    #[cfg_attr(feature = "std", error(transparent))]
    CredentialEncodingError(AnyError),
    #[cfg_attr(feature = "std", error(transparent))]
    X509ReaderError(AnyError),
    #[cfg_attr(feature = "std", error(transparent))]
    IdentityExtractorError(AnyError),
    #[cfg_attr(feature = "std", error(transparent))]
    X509ValidationError(AnyError),
    #[cfg_attr(feature = "std", error(transparent))]
    IdentityWarningProviderError(AnyError),
}

impl mls_rs_core::error::IntoAnyError for X509IdentityError {
    #[cfg(feature = "std")]
    fn into_dyn_error(self) -> Result<Box<dyn std::error::Error + Send + Sync>, Self> {
        Ok(self.into())
    }
}