1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
//! # HPKE Crypto Trait Errors
//!
//! Errors thrown by crypto functions implementing the [`crate::HpkeCrypto`] traits.
use std::fmt::Display;
/// Errors thrown by [`crate::HpkeCrypto`] trait implementations.
#[derive(Debug)]
pub enum Error {
/// The output length is invalid (too large).
HpkeInvalidOutputLength,
/// Unknown or unsupported KDF algorithm.
UnknownKdfAlgorithm,
/// Invalid secret key for the KEM.
KemInvalidSecretKey,
/// Invalid public key for the KEM.
KemInvalidPublicKey,
/// Unknown or unsupported KEM algorithm,
UnknownKemAlgorithm,
/// Unknown or unsupported AEAD algorithm.
UnknownAeadAlgorithm,
/// Invalid nonce for the AEAD algorithm.
AeadInvalidNonce,
/// Error opening an AEAD cipher text.
AeadOpenError,
/// Invalid cipher text for the AEAD algorithm.
AeadInvalidCiphertext,
/// Insufficient randomness to perform the operation.
InsufficientRandomness,
/// A crypto library error.
CryptoLibraryError(String),
}
impl std::error::Error for Error {}
impl Display for Error {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "HPKE Crypto Error: {:?}", self)
}
}