Documenting errors

This commit is contained in:
Rodolphe Bréard 2024-06-23 10:20:57 +02:00
parent 0955da7e09
commit cbdb9fdda2

View file

@ -1,47 +1,68 @@
pub(crate) type Result<T, E = Error> = core::result::Result<T, E>; pub(crate) type Result<T, E = Error> = core::result::Result<T, E>;
/// An error type representing all the things that can go wrong.
#[derive(thiserror::Error, Debug, PartialEq)] #[derive(thiserror::Error, Debug, PartialEq)]
pub enum Error { pub enum Error {
/// Something went wrong during the encryption or decryption using AES-GCM.
#[cfg(feature = "aes")] #[cfg(feature = "aes")]
#[error("cipher error: {0}")] #[error("cipher error: {0}")]
AesGcmError(aes_gcm::Error), AesGcmError(aes_gcm::Error),
/// Something went wrong during the encryption or decryption using (X)ChaCha-poly1305.
#[cfg(feature = "chacha")] #[cfg(feature = "chacha")]
#[error("cipher error: {0}")] #[error("cipher error: {0}")]
ChaCha20Poly1305Error(chacha20poly1305::Error), ChaCha20Poly1305Error(chacha20poly1305::Error),
/// The IKM list does not contain any usable IKM.
#[error("ikm error: no input key material available")] #[error("ikm error: no input key material available")]
IkmNoneAvailable, IkmNoneAvailable,
/// The requested IKM has not been found in the list.
#[error("ikm error: {0}: input key material not found")] #[error("ikm error: {0}: input key material not found")]
IkmNotFound(crate::ikm::IkmId), IkmNotFound(crate::ikm::IkmId),
/// The nonce does not meet the required size.
#[error("encoded data: invalid nonce size: got {1} instead of {0}")] #[error("encoded data: invalid nonce size: got {1} instead of {0}")]
InvalidNonceSize(usize, usize), InvalidNonceSize(usize, usize),
/// Something went wrong when encoding or decoding in base64.
#[error("parsing error: invalid base64-urlsafe-nopadding data: {0}")] #[error("parsing error: invalid base64-urlsafe-nopadding data: {0}")]
ParsingBase64Error(base64ct::Error), ParsingBase64Error(base64ct::Error),
/// When parsing some encoded data, an empty nonce has been encountered.
#[error("parsing error: encoded data: empty nonce")] #[error("parsing error: encoded data: empty nonce")]
ParsingEncodedDataEmptyNonce, ParsingEncodedDataEmptyNonce,
/// When parsing some encoded data, an empty ciphertext has been encountered.
#[error("parsing error: encoded data: empty ciphertext")] #[error("parsing error: encoded data: empty ciphertext")]
ParsingEncodedDataEmptyCiphertext, ParsingEncodedDataEmptyCiphertext,
/// When parsing some encoded data, an invalid IKM id has been encountered.
#[error("parsing error: encoded data: invalid IKM id: {0:?}")] #[error("parsing error: encoded data: invalid IKM id: {0:?}")]
ParsingEncodedDataInvalidIkmId(Vec<u8>), ParsingEncodedDataInvalidIkmId(Vec<u8>),
#[error("parsing error: encoded data: invalid IKM length{0}")] /// When parsing some encoded data, an invalid IKM length has been encountered.
#[error("parsing error: encoded data: invalid IKM length: {0}")]
ParsingEncodedDataInvalidIkmLen(usize), ParsingEncodedDataInvalidIkmLen(usize),
/// When parsing some encoded data, an invalid IKM list id has been encountered.
#[error("parsing error: encoded data: invalid IKM list id: {0:?}")] #[error("parsing error: encoded data: invalid IKM list id: {0:?}")]
ParsingEncodedDataInvalidIkmListId(Vec<u8>), ParsingEncodedDataInvalidIkmListId(Vec<u8>),
#[error("parsing error: encoded data: invalid IKM list length{0}")] /// When parsing some encoded data, an invalid IKM list length has been encountered.
#[error("parsing error: encoded data: invalid IKM list length: {0}")]
ParsingEncodedDataInvalidIkmListLen(usize), ParsingEncodedDataInvalidIkmListLen(usize),
/// When parsing some encoded data, an invalid number of parts has been encountered.
#[error("parsing error: encoded data: invalid number of parts: got {1} instead of {0}")] #[error("parsing error: encoded data: invalid number of parts: got {1} instead of {0}")]
ParsingEncodedDataInvalidPartLen(usize, usize), ParsingEncodedDataInvalidPartLen(usize, usize),
/// When parsing some encoded data, an invalid timestamp has been encountered.
#[error("parsing error: encoded data: invalid timestamp: {0:?}")] #[error("parsing error: encoded data: invalid timestamp: {0:?}")]
ParsingEncodedDataInvalidTimestamp(Vec<u8>), ParsingEncodedDataInvalidTimestamp(Vec<u8>),
/// When parsing some encoded data, an invalid IKM list version has been encountered.
#[error("parsing error: encoded data: invalid IKML version")] #[error("parsing error: encoded data: invalid IKML version")]
ParsingEncodedDataInvalidIkmlVersion, ParsingEncodedDataInvalidIkmlVersion,
/// When parsing some encoded data, an invalid encrypted data version has been encountered.
#[error("parsing error: encoded data: invalid encrypted data version")] #[error("parsing error: encoded data: invalid encrypted data version")]
ParsingEncodedDataInvalidEncVersion, ParsingEncodedDataInvalidEncVersion,
/// An invalid scheme has been encountered.
#[error("parsing error: scheme: {0}: unknown scheme")] #[error("parsing error: scheme: {0}: unknown scheme")]
ParsingSchemeUnknownScheme(crate::scheme::SchemeSerializeType), ParsingSchemeUnknownScheme(crate::scheme::SchemeSerializeType),
/// Something went wrong when retrieving random data from the system.
#[error("unable to generate random values: {0}")] #[error("unable to generate random values: {0}")]
RandomSourceError(getrandom::Error), RandomSourceError(getrandom::Error),
/// A `std::time::SystemTimeError` has been encountered.
#[error("system time error: {0}")] #[error("system time error: {0}")]
SystemTimeError(String), SystemTimeError(String),
/// Something went wrong when trying to parse a timestamp.
#[error("system time error: {0}: unable to represent this timestamp as a system time")] #[error("system time error: {0}: unable to represent this timestamp as a system time")]
SystemTimeReprError(u64), SystemTimeReprError(u64),
} }