core_crypto/e2e_identity/
error.rs

1//! End to end identity errors
2
3use crate::prelude::MlsCredentialType;
4use core_crypto_keystore::CryptoKeystoreError;
5
6/// Wrapper over a [Result] of an end to end identity error
7pub type E2eIdentityResult<T> = Result<T, E2eIdentityError>;
8
9/// End to end identity errors
10#[derive(Debug, thiserror::Error)]
11#[cfg_attr(feature = "uniffi", derive(uniffi::Error))]
12#[cfg_attr(feature = "uniffi", uniffi(flat_error))]
13pub enum E2eIdentityError {
14    /// Client misused this library
15    #[error("Incorrect usage of this API")]
16    ImplementationError,
17    /// Incoming support
18    #[error("Not yet supported")]
19    NotYetSupported,
20    /// The required local MLS client was not initialized. It's likely a consumer error
21    #[error("Expected a MLS client with credential type {0:?} but none found")]
22    MissingExistingClient(MlsCredentialType),
23    /// Enrollment methods are called out of order
24    #[error("Enrollment methods are called out of order: {0}")]
25    OutOfOrderEnrollment(&'static str),
26    /// Invalid OIDC RefreshToken supplied
27    #[error("Invalid OIDC RefreshToken supplied")]
28    InvalidRefreshToken,
29    /// An error occurred while trying to persist the RefreshToken in the keystore
30    #[error("An error occurred while trying to persist the RefreshToken in the keystore")]
31    KeyStoreError(#[from] CryptoKeystoreError),
32    /// Error creating client Dpop token or acme error
33    #[error(transparent)]
34    IdentityError(#[from] wire_e2e_identity::prelude::E2eIdentityError),
35    /// Error validating X509 parameters
36    #[error(transparent)]
37    X509Error(#[from] wire_e2e_identity::prelude::x509::RustyX509CheckError),
38    /// Error parsing a URL
39    #[error(transparent)]
40    UrlError(#[from] url::ParseError),
41    /// Json error
42    #[error(transparent)]
43    JsonError(#[from] serde_json::Error),
44    /// We already have an ACME Root Trust Anchor registered. Cannot proceed but this is usually indicative of double registration and can be ignored
45    #[error("We already have an ACME Root Trust Anchor registered. Cannot proceed but this is usually indicative of double registration and can be ignored")]
46    TrustAnchorAlreadyRegistered,
47}