pub enum WelcomeError<StorageError> {
Show 32 variants
GroupSecrets(GroupSecretsError),
PrivateInitKeyNotFound,
LibraryError(LibraryError),
CiphersuiteMismatch,
GroupInfo(GroupInfoError),
JoinerSecretNotFound,
MissingRatchetTree,
ConfirmationTagMismatch,
InvalidGroupInfoSignature,
UnsupportedMlsVersion,
UnsupportedCapability,
UnsupportedCiphersuite(Ciphersuite),
UnknownSender,
NotAWelcomeMessage,
MalformedWelcomeMessage,
UnableToDecrypt,
UnsupportedExtensions,
Psk(PskError),
NoMatchingEncryptionKey,
NoMatchingKeyPackage,
PublicTreeError(PublicTreeError),
PublicGroupError(CreationFromExternalError<StorageError>),
LeafNodeValidation(LeafNodeValidationError),
StorageError(StorageError),
GroupAlreadyExists,
VirtualClientsError(VirtualClientsError),
RegisterVcDerivationEpoch(RegisterVcDerivationEpochError<StorageError>),
KeySchedule(KeyScheduleError),
SubgroupParameterMismatch,
SubgroupEpochInvalid,
SubgroupLeafMismatch,
SubgroupParentMismatch,
}Expand description
Welcome error
Variants§
GroupSecrets(GroupSecretsError)
See GroupSecretsError for more details.
PrivateInitKeyNotFound
Private part of init_key not found in key store.
LibraryError(LibraryError)
See LibraryError for more details.
CiphersuiteMismatch
Ciphersuites in Welcome and key package bundle don’t match.
GroupInfo(GroupInfoError)
See GroupInfoError for more details.
JoinerSecretNotFound
No joiner secret found in the Welcome message.
MissingRatchetTree
No ratchet tree available to build initial tree after receiving a Welcome message.
ConfirmationTagMismatch
The computed confirmation tag does not match the expected one.
InvalidGroupInfoSignature
The signature on the GroupInfo is not valid.
UnsupportedMlsVersion
We don’t support the version of the group we are trying to join.
UnsupportedCapability
We don’t support all capabilities of the group.
UnsupportedCiphersuite(Ciphersuite)
The crypto provider doesn’t support the ciphersuite of the group we are trying to join.
UnknownSender
Sender not found in tree.
NotAWelcomeMessage
The provided message is not a Welcome message.
MalformedWelcomeMessage
Malformed Welcome message.
UnableToDecrypt
Could not decrypt the Welcome message.
UnsupportedExtensions
Unsupported extensions found in the GroupContext or KeyPackage of another member.
Psk(PskError)
See PskError for more details.
NoMatchingEncryptionKey
No matching encryption key was found in the key store.
NoMatchingKeyPackage
No matching key package was found in the key store.
PublicTreeError(PublicTreeError)
This error indicates the public tree is invalid. See PublicTreeError for more details.
PublicGroupError(CreationFromExternalError<StorageError>)
This error indicates the public tree is invalid. See
CreationFromExternalError for more details.
LeafNodeValidation(LeafNodeValidationError)
This error indicates the leaf node is invalid. See LeafNodeValidationError for more details.
StorageError(StorageError)
This error indicates that an error occurred while reading or writing from/to storage.
GroupAlreadyExists
A group with this GroupId already exists.
VirtualClientsError(VirtualClientsError)
virtual-clients-draft only.A virtual-clients error occurred while deriving or validating the virtual client’s join material.
RegisterVcDerivationEpoch(RegisterVcDerivationEpochError<StorageError>)
virtual-clients-draft only.The joined group is an emulation group, and registering the derivation epoch of the Welcome’s output epoch failed.
KeySchedule(KeyScheduleError)
This error indicates that computing the key schedule failed
SubgroupParameterMismatch
The subgroup’s protocol version or ciphersuite does not match the parent group (RFC 9420 §11.3).
SubgroupEpochInvalid
The subgroup is not at epoch 1, as required for a branched subgroup (RFC 9420 §11.3).
SubgroupLeafMismatch
A member of the subgroup does not match any member of the parent group (RFC 9420 §11.3).
SubgroupParentMismatch
The parent group or epoch referenced by the subgroup’s branch PSK does not match the provided parent group information (RFC 9420 §11.3).
Trait Implementations§
Source§impl<StorageError: Clone> Clone for WelcomeError<StorageError>
impl<StorageError: Clone> Clone for WelcomeError<StorageError>
Source§fn clone(&self) -> WelcomeError<StorageError>
fn clone(&self) -> WelcomeError<StorageError>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<StorageError: Debug> Debug for WelcomeError<StorageError>
impl<StorageError: Debug> Debug for WelcomeError<StorageError>
Source§impl<StorageError> Display for WelcomeError<StorageError>where
CreationFromExternalError<StorageError>: Display,
RegisterVcDerivationEpochError<StorageError>: Display,
impl<StorageError> Display for WelcomeError<StorageError>where
CreationFromExternalError<StorageError>: Display,
RegisterVcDerivationEpochError<StorageError>: Display,
Source§impl<StorageError> Error for WelcomeError<StorageError>where
CreationFromExternalError<StorageError>: Error,
RegisterVcDerivationEpochError<StorageError>: Error,
Self: Debug + Display,
impl<StorageError> Error for WelcomeError<StorageError>where
CreationFromExternalError<StorageError>: Error,
RegisterVcDerivationEpochError<StorageError>: Error,
Self: Debug + Display,
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl<StorageError> From<CreationFromExternalError<StorageError>> for WelcomeError<StorageError>
impl<StorageError> From<CreationFromExternalError<StorageError>> for WelcomeError<StorageError>
Source§fn from(source: CreationFromExternalError<StorageError>) -> Self
fn from(source: CreationFromExternalError<StorageError>) -> Self
Source§impl<StorageError> From<GroupInfoError> for WelcomeError<StorageError>
impl<StorageError> From<GroupInfoError> for WelcomeError<StorageError>
Source§fn from(source: GroupInfoError) -> Self
fn from(source: GroupInfoError) -> Self
Source§impl<StorageError> From<GroupSecretsError> for WelcomeError<StorageError>
impl<StorageError> From<GroupSecretsError> for WelcomeError<StorageError>
Source§fn from(source: GroupSecretsError) -> Self
fn from(source: GroupSecretsError) -> Self
Source§impl<StorageError> From<KeyScheduleError> for WelcomeError<StorageError>
impl<StorageError> From<KeyScheduleError> for WelcomeError<StorageError>
Source§fn from(source: KeyScheduleError) -> Self
fn from(source: KeyScheduleError) -> Self
Source§impl<StorageError> From<LeafNodeValidationError> for WelcomeError<StorageError>
impl<StorageError> From<LeafNodeValidationError> for WelcomeError<StorageError>
Source§fn from(source: LeafNodeValidationError) -> Self
fn from(source: LeafNodeValidationError) -> Self
Source§impl<StorageError> From<LibraryError> for WelcomeError<StorageError>
impl<StorageError> From<LibraryError> for WelcomeError<StorageError>
Source§fn from(source: LibraryError) -> Self
fn from(source: LibraryError) -> Self
Source§impl<StorageError> From<PskError> for WelcomeError<StorageError>
impl<StorageError> From<PskError> for WelcomeError<StorageError>
Source§impl<StorageError> From<PublicTreeError> for WelcomeError<StorageError>
impl<StorageError> From<PublicTreeError> for WelcomeError<StorageError>
Source§fn from(source: PublicTreeError) -> Self
fn from(source: PublicTreeError) -> Self
Source§impl<StorageError> From<RegisterVcDerivationEpochError<StorageError>> for WelcomeError<StorageError>
impl<StorageError> From<RegisterVcDerivationEpochError<StorageError>> for WelcomeError<StorageError>
Source§fn from(source: RegisterVcDerivationEpochError<StorageError>) -> Self
fn from(source: RegisterVcDerivationEpochError<StorageError>) -> Self
Source§impl<StorageError> From<VirtualClientsError> for WelcomeError<StorageError>
impl<StorageError> From<VirtualClientsError> for WelcomeError<StorageError>
Source§fn from(source: VirtualClientsError) -> Self
fn from(source: VirtualClientsError) -> Self
Source§impl<StorageError> From<WelcomeError<StorageError>> for ClientError<StorageError>
Available on crate features test-utils only.
impl<StorageError> From<WelcomeError<StorageError>> for ClientError<StorageError>
test-utils only.Source§fn from(source: WelcomeError<StorageError>) -> Self
fn from(source: WelcomeError<StorageError>) -> Self
Source§impl<StorageError: PartialEq> PartialEq for WelcomeError<StorageError>
impl<StorageError: PartialEq> PartialEq for WelcomeError<StorageError>
impl<StorageError: PartialEq> StructuralPartialEq for WelcomeError<StorageError>
Auto Trait Implementations§
impl<StorageError> Freeze for WelcomeError<StorageError>where
CreationFromExternalError<StorageError>: Freeze,
StorageError: Freeze,
RegisterVcDerivationEpochError<StorageError>: Freeze,
impl<StorageError> RefUnwindSafe for WelcomeError<StorageError>where
CreationFromExternalError<StorageError>: RefUnwindSafe,
StorageError: RefUnwindSafe,
RegisterVcDerivationEpochError<StorageError>: RefUnwindSafe,
impl<StorageError> Send for WelcomeError<StorageError>where
CreationFromExternalError<StorageError>: Send,
StorageError: Send,
RegisterVcDerivationEpochError<StorageError>: Send,
impl<StorageError> Sync for WelcomeError<StorageError>where
CreationFromExternalError<StorageError>: Sync,
StorageError: Sync,
RegisterVcDerivationEpochError<StorageError>: Sync,
impl<StorageError> Unpin for WelcomeError<StorageError>where
CreationFromExternalError<StorageError>: Unpin,
StorageError: Unpin,
RegisterVcDerivationEpochError<StorageError>: Unpin,
impl<StorageError> UnsafeUnpin for WelcomeError<StorageError>where
CreationFromExternalError<StorageError>: UnsafeUnpin,
StorageError: UnsafeUnpin,
RegisterVcDerivationEpochError<StorageError>: UnsafeUnpin,
impl<StorageError> UnwindSafe for WelcomeError<StorageError>where
CreationFromExternalError<StorageError>: UnwindSafe,
StorageError: UnwindSafe,
RegisterVcDerivationEpochError<StorageError>: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more