#[non_exhaustive]pub enum Error {
InvalidKey {
expected: usize,
actual: usize,
},
InvalidCiphertext(String),
AuthenticationFailed,
AlgorithmNotEnabled(&'static str),
RandomFailure(&'static str),
Mac(&'static str),
Kdf(&'static str),
}Expand description
The error type for all crypt-io operations.
Authentication failures are deliberately collapsed into a single variant — distinguishing “wrong key” from “tampered ciphertext” would leak which failure mode an attacker is closer to, which is a side-channel.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
InvalidKey
The supplied key was not the correct size for the selected algorithm (ChaCha20-Poly1305 and AES-256-GCM both require exactly 32 bytes).
InvalidCiphertext(String)
The ciphertext was malformed (too short to contain a nonce + tag, or the embedded length fields were inconsistent).
AuthenticationFailed
Authentication of the ciphertext failed. This is the single observable outcome of any corruption: wrong key, tampered bytes, truncated message, or wrong associated data. The variant is opaque by design.
AlgorithmNotEnabled(&'static str)
The requested algorithm is not enabled at compile time. Re-build with the appropriate Cargo feature.
RandomFailure(&'static str)
The OS random source failed to produce a nonce. This is rare and
almost always indicates a misconfigured sandbox or exhausted
getrandom entropy on a freshly-booted VM.
Mac(&'static str)
A MAC operation could not be initialised or computed. In practice
this is unreachable for the algorithms shipped (HMAC accepts any
key length; BLAKE3 keyed takes a fixed-size key), but the variant
exists because the upstream Mac trait surface is fallible by
signature.
Kdf(&'static str)
A KDF operation could not be carried out. Surfaces HKDF
expansion-length overflows (output longer than 255 * digest_size), Argon2 parameter errors, and PHC-string parse
failures.
Trait Implementations§
Source§impl Error for Error
Available on crate feature std only.
impl Error for Error
std only.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()