core_crypto/error/
mls.rs

1// Wire
2// Copyright (C) 2022 Wire Swiss GmbH
3
4// This program is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8
9// This program is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13
14// You should have received a copy of the GNU General Public License
15// along with this program. If not, see http://www.gnu.org/licenses/.
16
17/// A MLS operation failed, but we captured some context about how it did so
18pub type MlsError = super::wrapper::WrappedContextualError<MlsErrorKind>;
19
20/// Openmls produces these kinds of error
21#[derive(Debug, thiserror::Error, strum::IntoStaticStr)]
22pub enum MlsErrorKind {
23    /// Welcome error
24    #[error(transparent)]
25    MlsWelcomeError(#[from] openmls::prelude::WelcomeError<core_crypto_keystore::CryptoKeystoreError>),
26    /// Generic error type that indicates unrecoverable errors in the library. See [openmls::error::LibraryError]
27    #[error(transparent)]
28    MlsLibraryError(#[from] openmls::error::LibraryError),
29    /// Create message error
30    #[error(transparent)]
31    MlsInvalidMessageError(#[from] openmls::prelude::CreateMessageError),
32    /// EmptyInput error
33    #[error(transparent)]
34    MlsEmptyInputError(#[from] openmls::prelude::EmptyInputError),
35    /// An error that occurs in methods of a [openmls::credentials::Credential].
36    #[error(transparent)]
37    MlsCredentialError(#[from] openmls::prelude::CredentialError),
38    /// New group error
39    #[error(transparent)]
40    MlsNewGroupError(#[from] openmls::prelude::NewGroupError<core_crypto_keystore::CryptoKeystoreError>),
41    /// Add members error
42    #[error(transparent)]
43    MlsAddMembersError(#[from] openmls::prelude::AddMembersError<core_crypto_keystore::CryptoKeystoreError>),
44    /// Remove members error
45    #[error(transparent)]
46    MlsRemoveMembersError(#[from] openmls::prelude::RemoveMembersError<core_crypto_keystore::CryptoKeystoreError>),
47    /// Parse message error
48    #[error(transparent)]
49    MlsMessageError(#[from] openmls::prelude::ProcessMessageError),
50    /// `KeyPackageBundle` new error
51    #[error(transparent)]
52    MlsKeyPackageBundleNewError(
53        #[from] openmls::prelude::KeyPackageNewError<core_crypto_keystore::CryptoKeystoreError>,
54    ),
55    /// Self update error
56    #[error(transparent)]
57    MlsSelfUpdateError(#[from] openmls::prelude::SelfUpdateError<core_crypto_keystore::CryptoKeystoreError>),
58    /// Group state error
59    #[error(transparent)]
60    MlsMlsGroupStateError(#[from] openmls::prelude::MlsGroupStateError),
61    /// Propose add members error
62    #[error(transparent)]
63    ProposeAddMemberError(#[from] openmls::prelude::ProposeAddMemberError),
64    /// Propose self update error
65    #[error(transparent)]
66    ProposeSelfUpdateError(#[from] openmls::prelude::ProposeSelfUpdateError<core_crypto_keystore::CryptoKeystoreError>),
67    /// Propose remove members error
68    #[error(transparent)]
69    ProposeRemoveMemberError(#[from] openmls::prelude::ProposeRemoveMemberError),
70    /// Commit to pending proposals error
71    #[error(transparent)]
72    MlsCommitToPendingProposalsError(
73        #[from] openmls::prelude::CommitToPendingProposalsError<core_crypto_keystore::CryptoKeystoreError>,
74    ),
75    /// Export public group state error
76    #[error(transparent)]
77    MlsExportGroupInfoError(#[from] openmls::prelude::ExportGroupInfoError),
78    /// Errors that are thrown by TLS serialization crate.
79    #[error(transparent)]
80    MlsTlsCodecError(#[from] tls_codec::Error),
81    /// This type represents all possible errors that can occur when serializing or
82    /// deserializing JSON data.
83    #[error(transparent)]
84    MlsKeystoreSerializationError(#[from] serde_json::Error),
85    /// A wrapper struct for an error string. This can be used when no complex error
86    /// variant is needed.
87    #[error(transparent)]
88    MlsErrorString(#[from] openmls::error::ErrorString),
89    /// External Commit error
90    #[error(transparent)]
91    MlsExternalCommitError(#[from] openmls::prelude::ExternalCommitError),
92    /// OpenMls crypto error
93    #[error(transparent)]
94    MlsCryptoError(#[from] openmls::prelude::CryptoError),
95    /// OpenMls Export Secret error
96    #[error(transparent)]
97    MlsExportSecretError(#[from] openmls::prelude::ExportSecretError),
98    /// OpenMLS merge commit error
99    #[error(transparent)]
100    MlsMergeCommitError(#[from] openmls::prelude::MergeCommitError<core_crypto_keystore::CryptoKeystoreError>),
101    /// OpenMLS keypackage validation error
102    #[error(transparent)]
103    MlsKeyPackageValidationError(#[from] openmls::prelude::KeyPackageVerifyError),
104    /// OpenMLS Commit merge error
105    #[error(transparent)]
106    MlsMergePendingCommitError(
107        #[from] openmls::prelude::MergePendingCommitError<core_crypto_keystore::CryptoKeystoreError>,
108    ),
109    /// OpenMLS encrypt message error
110    #[error(transparent)]
111    MlsEncryptMessageError(#[from] openmls::framing::errors::MlsMessageError),
112    /// OpenMLS delete KeyPackage error
113    #[error(transparent)]
114    MlsDeleteKeyPackageError(
115        #[from] openmls::key_packages::errors::KeyPackageDeleteError<core_crypto_keystore::CryptoKeystoreError>,
116    ),
117    /// OpenMLS update extensions error
118    #[error(transparent)]
119    MlsUpdateExtensionsError(
120        #[from] openmls::prelude::UpdateExtensionsError<core_crypto_keystore::CryptoKeystoreError>,
121    ),
122    /// OpenMLS LeafNode validation error
123    #[error(transparent)]
124    MlsLeafNodeValidationError(#[from] openmls::prelude::LeafNodeValidationError),
125    /// OpenMLS LeafNode validation error
126    #[error(transparent)]
127    RatchetTreeError(#[from] openmls::treesync::RatchetTreeError),
128    /// OpenMLS GroupInfo error
129    #[error(transparent)]
130    GroupInfoError(#[from] openmls::messages::group_info::GroupInfoError),
131    /// Provider Error
132    #[error(transparent)]
133    ProviderError(#[from] mls_crypto_provider::MlsProviderError),
134}