enigma-storage 0.0.1

Encrypted local storage for Enigma with mandatory at-rest encryption and cross-platform key vault providers.
Documentation
use thiserror::Error;

pub type Result<T> = std::result::Result<T, EnigmaStorageError>;

#[derive(Debug, Error)]
pub enum EnigmaStorageError {
    #[error("invalid key")]
    InvalidKey,
    #[error("crypto error: {0}")]
    CryptoError(String),
    #[error("aead error")]
    AeadError,
    #[error("backend error: {0}")]
    BackendError(String),
    #[error("key provider error: {0}")]
    KeyProviderError(String),
    #[error("kdf error: {0}")]
    KdfError(String),
    #[error("corrupted data")]
    CorruptedData,
    #[error("unsupported version")]
    UnsupportedVersion,
    #[error("platform unavailable: {0}")]
    PlatformUnavailable(String),
    #[error("permission denied")]
    PermissionDenied,
}

impl From<sled::Error> for EnigmaStorageError {
    fn from(value: sled::Error) -> Self {
        EnigmaStorageError::BackendError(value.to_string())
    }
}

impl From<argon2::Error> for EnigmaStorageError {
    fn from(value: argon2::Error) -> Self {
        EnigmaStorageError::KdfError(value.to_string())
    }
}