#[cfg(feature = "encryption")]
use crate::encryption::{EncryptionError, KeyDerivationError};
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum CachekitError {
Ok = 0,
InvalidInput = 1,
ChecksumMismatch = 2,
DecompressionFailed = 3,
DecryptionFailed = 4,
RotationNeeded = 5,
CounterExhausted = 6,
InvalidKeyLength = 7,
BufferTooSmall = 8,
NullPointer = 9,
InputTooLarge = 10,
DecompressionBomb = 11,
SizeValidationFailed = 12,
RngFailure = 13,
DomainTooLong = 14,
SaltTooLong = 15,
InvalidHandle = 16,
}
#[cfg(feature = "encryption")]
impl From<EncryptionError> for CachekitError {
fn from(e: EncryptionError) -> Self {
match e {
EncryptionError::InvalidKeyLength(_) => CachekitError::InvalidKeyLength,
EncryptionError::InvalidNonceLength(_) => CachekitError::InvalidInput,
EncryptionError::EncryptionFailed(_) => CachekitError::InvalidInput,
EncryptionError::DecryptionFailed(_) => CachekitError::DecryptionFailed,
EncryptionError::RngFailure => CachekitError::RngFailure,
EncryptionError::InvalidCiphertext(_) => CachekitError::InvalidInput,
EncryptionError::InvalidHeader(_) => CachekitError::InvalidInput,
EncryptionError::UnsupportedVersion(_) => CachekitError::InvalidInput,
EncryptionError::UnsupportedAlgorithm(_) => CachekitError::InvalidInput,
EncryptionError::AuthenticationFailed => CachekitError::DecryptionFailed,
EncryptionError::NonceCounterExhausted => CachekitError::CounterExhausted,
EncryptionError::NotImplemented(_) => CachekitError::InvalidInput,
}
}
}
#[cfg(feature = "encryption")]
impl From<KeyDerivationError> for CachekitError {
fn from(e: KeyDerivationError) -> Self {
match e {
KeyDerivationError::InvalidMasterKeyLength(_) => CachekitError::InvalidKeyLength,
KeyDerivationError::InvalidDomain(_) => CachekitError::InvalidInput,
KeyDerivationError::InvalidSaltLength(_) => CachekitError::InvalidInput,
KeyDerivationError::DerivationFailed(_) => CachekitError::InvalidInput,
KeyDerivationError::DomainTooLong => CachekitError::DomainTooLong,
KeyDerivationError::TenantSaltTooLong => CachekitError::SaltTooLong,
}
}
}
impl From<crate::byte_storage::ByteStorageError> for CachekitError {
fn from(e: crate::byte_storage::ByteStorageError) -> Self {
use crate::byte_storage::ByteStorageError;
match e {
ByteStorageError::InputTooLarge => CachekitError::InputTooLarge,
ByteStorageError::DecompressionBomb => CachekitError::DecompressionBomb,
ByteStorageError::ChecksumMismatch => CachekitError::ChecksumMismatch,
ByteStorageError::DecompressionFailed => CachekitError::DecompressionFailed,
ByteStorageError::SizeValidationFailed => CachekitError::SizeValidationFailed,
ByteStorageError::CompressionFailed => CachekitError::InvalidInput,
ByteStorageError::SerializationFailed(_) => CachekitError::InvalidInput,
ByteStorageError::DeserializationFailed(_) => CachekitError::InvalidInput,
}
}
}