#[non_exhaustive]pub enum Error {
Show 19 variants
InvalidKeyLength {
actual: usize,
},
InvalidParameters,
InvalidSegmentLength {
actual: u32,
},
InvalidPlaintextLength {
actual: usize,
required: LengthRequirement,
},
InvalidHeaderLength {
actual: usize,
},
InvalidHeaderParameters,
InvalidHeaderTag,
InvalidCiphertextLength {
actual: usize,
required: LengthRequirement,
},
InvalidSegmentPrefix,
AuthenticationFailed,
Closed,
Truncated,
SegmentLimit,
OutputTooSmall {
actual: usize,
required: usize,
},
InvalidBufferState,
ProviderSelectionRequired,
LengthOverflow,
RngFailure,
CryptoFailure,
}Expand description
Errors returned by FLOE operations.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
InvalidKeyLength
A key did not have the required 32-byte length.
InvalidParameters
An operation combined values from different FLOE parameter sets.
InvalidSegmentLength
A segment length was outside
Parameters::VALID_SEGMENT_LENGTHS.
InvalidPlaintextLength
A plaintext segment did not meet its required length.
InvalidHeaderLength
A header did not have the length required by crate::Header.
InvalidHeaderParameters
The encoded parameters in a header do not match the selected parameters.
InvalidHeaderTag
Header authentication failed.
InvalidCiphertextLength
A ciphertext segment did not meet its required length, or its encoded final-length prefix contradicted its actual length.
InvalidSegmentPrefix
An internal segment did not begin with 0xffff_ffff.
AuthenticationFailed
AES-GCM authentication failed.
Closed
An online encryptor or decryptor was used after its final segment.
Truncated
A message or online operation ended without producing or authenticating a final segment.
SegmentLimit
A segment position exceeded the AES-GCM FLOE limit.
OutputTooSmall
A caller-provided output buffer was too small.
InvalidBufferState
A segment buffer was used in the wrong preparation state.
ProviderSelectionRequired
An operation omitted its provider while multiple providers were compiled.
LengthOverflow
A length calculation overflowed.
RngFailure
The selected provider could not obtain cryptographically secure bytes.
CryptoFailure
The selected cryptographic backend rejected an otherwise valid operation.
Implementations§
Source§impl Error
impl Error
Sourcepub fn io_source(error: &Error) -> Option<&Self>
pub fn io_source(error: &Error) -> Option<&Self>
Returns the Error carried as the source of a wrapped
std::io::Error.
The crate::io and crate::random_access adapters report FLOE
failures as io::Error values with the original Error attached as
the source. Use this helper to distinguish authentication, truncation,
and policy failures from ordinary I/O errors:
use fast_floe::Error;
fn is_tampered(error: &std::io::Error) -> bool {
matches!(Error::io_source(error), Some(Error::AuthenticationFailed))
}Returns None for errors that did not originate in this crate, such
as failures of the wrapped reader or writer.
Trait Implementations§
impl Eq for Error
Source§impl Error for Error
impl Error for Error
1.30.0 · 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()