pub enum VirtualClientsError {
Show 18 variants
DerivationInfoMalformed,
DerivationInfoDecryptionFailed,
MissingOperationTree,
MissingEmulationEpochState,
StorageError,
EncryptionKeyMismatch,
CryptoError(CryptoError),
HashOutputLengthMismatch {
actual_length: usize,
expected_length: usize,
},
Tls(Error),
AppDataDictionaryNotSupported,
VcComponentNotListed,
IndexOutOfBounds,
OperationGenerationConsumed,
OperationGenerationTooDistant,
OperationRatchetTooLong,
LibraryError,
DuplicateKeyPackageIndex(u32),
DuplicateKeyPackageRef,
}extensions-draft and crate feature virtual-clients-draft and (32-bit or 64-bit) only.Expand description
Errors that can occur while processing virtual-clients derivation info.
Variants§
DerivationInfoMalformed
The derivation-info bytes failed to deserialize.
DerivationInfoDecryptionFailed
AEAD decryption of the encrypted derivation info failed (wrong key, tampered ciphertext, or mismatched AAD).
MissingOperationTree
No virtual-clients operation secret tree was registered for this epoch.
MissingEmulationEpochState
No virtual-clients EmulationEpochState was registered for this
epoch, or it has been deleted.
StorageError
Loading or storing virtual-clients state via the storage provider failed.
EncryptionKeyMismatch
The leaf encryption key in the path does not match the key derived from the path secret.
CryptoError(CryptoError)
A cryptographic operation failed during virtual-clients processing.
HashOutputLengthMismatch
Hash function produced output of unexpected length.
Fields
Tls(Error)
TLS encoding/decoding of a virtual-clients structure failed. Covers
both serialization on the sender side and deserialization of the
decrypted DerivationInfoTbe on the receiver side.
AppDataDictionaryNotSupported
The leaf carrying (or about to carry) a VC derivation-info entry
does not declare AppDataDictionary in its capabilities.
VcComponentNotListed
The leaf’s AppDataDictionary extension is missing the
AppComponents entry, or that entry does not list
VC_COMPONENT_ID.
IndexOutOfBounds
The requested leaf index lies outside the operation secret tree.
OperationGenerationConsumed
The operation secret for the requested generation was already derived and deleted for forward secrecy.
OperationGenerationTooDistant
The requested operation generation lies too far beyond the current
ratchet head (see MAXIMUM_FORWARD_DISTANCE in the operation secret
tree).
OperationRatchetTooLong
An operation ratchet has reached the maximum generation.
LibraryError
An unrecoverable error has occurred due to a bug in the implementation.
DuplicateKeyPackageIndex(u32)
The KeyPackageUpload lists the same key_package_index more than
once. Each batch index must appear at most once.
DuplicateKeyPackageRef
The KeyPackageUpload lists the same KeyPackageRef more than once.
Each KeyPackage reference must appear at most once.
Trait Implementations§
Source§impl Clone for VirtualClientsError
impl Clone for VirtualClientsError
Source§fn clone(&self) -> VirtualClientsError
fn clone(&self) -> VirtualClientsError
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for VirtualClientsError
impl Debug for VirtualClientsError
Source§impl Display for VirtualClientsError
impl Display for VirtualClientsError
Source§impl Error for VirtualClientsError
impl Error for VirtualClientsError
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 From<CryptoError> for VirtualClientsError
impl From<CryptoError> for VirtualClientsError
Source§fn from(source: CryptoError) -> Self
fn from(source: CryptoError) -> Self
Source§impl From<Error> for VirtualClientsError
impl From<Error> for VirtualClientsError
Source§impl From<VirtualClientsError> for MessageDecryptionError
impl From<VirtualClientsError> for MessageDecryptionError
Source§fn from(source: VirtualClientsError) -> Self
fn from(source: VirtualClientsError) -> Self
Source§impl<StorageError> From<VirtualClientsError> for MessageEncryptionError<StorageError>
impl<StorageError> From<VirtualClientsError> for MessageEncryptionError<StorageError>
Source§fn from(source: VirtualClientsError) -> Self
fn from(source: VirtualClientsError) -> 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<VirtualClientsError> for VcExternalCommitJoinError<StorageError>
impl<StorageError> From<VirtualClientsError> for VcExternalCommitJoinError<StorageError>
Source§fn from(source: VirtualClientsError) -> Self
fn from(source: VirtualClientsError) -> Self
Source§impl<StorageError> From<VirtualClientsError> for VcGroupCreationJoinError<StorageError>
impl<StorageError> From<VirtualClientsError> for VcGroupCreationJoinError<StorageError>
Source§fn from(source: VirtualClientsError) -> Self
fn from(source: VirtualClientsError) -> Self
Source§impl From<VirtualClientsError> for StageCommitError
impl From<VirtualClientsError> for StageCommitError
Source§fn from(source: VirtualClientsError) -> Self
fn from(source: VirtualClientsError) -> Self
Source§impl From<VirtualClientsError> for CreateCommitError
impl From<VirtualClientsError> for CreateCommitError
Source§fn from(source: VirtualClientsError) -> Self
fn from(source: VirtualClientsError) -> Self
Source§impl<StorageError> From<VirtualClientsError> for NewGroupError<StorageError>
impl<StorageError> From<VirtualClientsError> for NewGroupError<StorageError>
Source§fn from(source: VirtualClientsError) -> Self
fn from(source: VirtualClientsError) -> Self
Source§impl<StorageError> From<VirtualClientsError> for SelfUpdateError<StorageError>
impl<StorageError> From<VirtualClientsError> for SelfUpdateError<StorageError>
Source§fn from(source: VirtualClientsError) -> Self
fn from(source: VirtualClientsError) -> Self
Source§impl<StorageError> From<VirtualClientsError> for RegisterVcEmulationEpochError<StorageError>
impl<StorageError> From<VirtualClientsError> for RegisterVcEmulationEpochError<StorageError>
Source§fn from(source: VirtualClientsError) -> Self
fn from(source: VirtualClientsError) -> Self
Source§impl From<VirtualClientsError> for KeyPackageNewError
impl From<VirtualClientsError> for KeyPackageNewError
Source§fn from(source: VirtualClientsError) -> Self
fn from(source: VirtualClientsError) -> Self
Source§impl PartialEq for VirtualClientsError
impl PartialEq for VirtualClientsError
impl StructuralPartialEq for VirtualClientsError
Auto Trait Implementations§
impl Freeze for VirtualClientsError
impl RefUnwindSafe for VirtualClientsError
impl Send for VirtualClientsError
impl Sync for VirtualClientsError
impl Unpin for VirtualClientsError
impl UnsafeUnpin for VirtualClientsError
impl UnwindSafe for VirtualClientsError
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