angulu 0.1.3

angulu is a library, which contains some cipher components.
Documentation
use thiserror::Error;

#[derive(Error, Debug)]
pub enum AnguluError {
    #[error("编码错误: {0}")]
    Encoding(#[from] EncodingError),

    #[error("加密错误: {0}")]
    Crypter(#[from] CrypterError),

    #[error("通用错误: {0}")]
    Etc(#[from] EtcError),
}

#[derive(Error, Debug)]
pub enum EncodingError {
    #[error("非法的16进制字符串")]
    InvalidHex,

    #[error("非法的Base64字符串")]
    InvalidBase64,

    #[error("二进制编码错误")]
    BinaryEncoding,
}

#[derive(Error, Debug)]
pub enum CrypterError {
    #[error("不满足要求的IV长度")]
    InvalidIVLength,

    #[error("不满足要求的Key长度")]
    InvalidKeyLength,

    #[error("执行密码操作时失败")]
    CryptionFailed,

    #[error("完成密码操作时失败")]
    FinalizationFailed,

    #[error("刷新缓冲区时失败")]
    BufferFlushFailed,

    #[error("解密后内容无法通过校验")]
    ChecksumValidationFailed,

    #[error("字符串编码时失败")]
    StringEncodingFailed,

    #[error("字符串解码时失败")]
    StringDecodingFailed,

    #[error("不能对空串进行密码操作")]
    EmptyStringNotAllowed,

    #[error("密码不能为空")]
    EmptyPasswordNotAllowed,
}

#[derive(Error, Debug)]
pub enum EtcError {
    #[error("拷贝原始内存和目的内存长度不一致")]
    MemoryLengthMismatch,

    #[error("进行异或操作的两段内存长度不一致")]
    XorMemoryLengthMismatch,

    #[error("内存获取器中的内容长度不足")]
    InsufficientMemoryContent,
}

pub type AnguluResult<T> = Result<T, AnguluError>;