#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[non_exhaustive]
pub enum RngOutputKind {
Generic,
AeadNonce12,
Argon2Salt16,
Argon2Salt32,
Aes256GcmKey,
MlKem1024Seed,
MlDsa87Seed,
Ed25519Seed,
SlhDsaSha2_128sSeed,
}
impl core::fmt::Display for RngOutputKind {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
let detail = match self {
RngOutputKind::Generic => "random bytes",
RngOutputKind::AeadNonce12 => "AEAD nonce",
RngOutputKind::Argon2Salt16 => "Argon2 16-byte salt",
RngOutputKind::Argon2Salt32 => "Argon2 32-byte salt",
RngOutputKind::Aes256GcmKey => "AES-256-GCM key",
RngOutputKind::MlKem1024Seed => "ML-KEM-1024 seed",
RngOutputKind::MlDsa87Seed => "ML-DSA-87 seed",
RngOutputKind::Ed25519Seed => "Ed25519 seed",
RngOutputKind::SlhDsaSha2_128sSeed => "SLH-DSA-SHA2-128s seed",
};
write!(f, "{detail}")
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[non_exhaustive]
pub enum RngFailureKind {
EntropyUnavailable,
InvalidOutputLength,
}
impl core::fmt::Display for RngFailureKind {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
let detail = match self {
RngFailureKind::EntropyUnavailable => "entropy unavailable",
RngFailureKind::InvalidOutputLength => "invalid output length",
};
write!(f, "{detail}")
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[non_exhaustive]
pub enum ConstantTimeFailureKind {
LengthMismatch,
NotEqual,
}
impl core::fmt::Display for ConstantTimeFailureKind {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
let detail = match self {
ConstantTimeFailureKind::LengthMismatch => "length mismatch",
ConstantTimeFailureKind::NotEqual => "not equal",
};
write!(f, "{detail}")
}
}