sm4_ff1/
ff1error.rs

1use thiserror::Error;
2
3#[derive(Error, Debug)]
4pub enum FF1Error {
5    #[error("Cryptography error")]
6    Crypto(),
7    #[error("Invalid input length n={n}: must be minlen <= n <= maxlen")]
8    InvalidLength { n: usize },
9    #[error("Invalid radix={radix}: must be 2 <= radix <= 2^16")]
10    InvalidRadix { radix: u32 },
11    #[error("Invalid tweak length t={t}: must be 0 <= t <= maxTlen")]
12    InvalidTweakLength { t: usize },
13    #[error("Constraint violation: radix^minlen ({radix}^{minlen}) must be >= 100")]
14    ConstraintViolation { radix: u32, minlen: usize },
15    #[error("Internal error: BigUint conversion failed")]
16    BigUintConversion,
17    #[error("Internal error: Failed to convert number to bytes")]
18    NumToBytesConversion,
19    #[error("Internal error: Failed to convert bytes to number")]
20    BytesToNumConversion,
21    #[error("Internal error: String conversion length mismatch")]
22    StrLenMismatch,
23    #[error("Internal error: Cipher output length mismatch (expected 16 bytes)")]
24    CipherLengthError,
25    #[error("Invalid digit in input: {0} >= radix {1}")]
26    InvalidDigit(u32, u32),
27    #[error("Invalid character in input: '{0}' is not a valid digit in radix {1}")]
28    InvalidCharDigit(char, u32),
29}