#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[non_exhaustive]
pub enum SignatureBackend {
Native,
Swift,
Wasm,
Kotlin,
SecureEnclave,
}
impl core::fmt::Display for SignatureBackend {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
let name = match self {
SignatureBackend::Native => "native",
SignatureBackend::Swift => "swift",
SignatureBackend::Wasm => "wasm",
SignatureBackend::Kotlin => "kotlin",
SignatureBackend::SecureEnclave => "secure_enclave",
};
write!(f, "{name}")
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[non_exhaustive]
pub enum SignatureOperation {
Sign,
Verify,
KeyManagement,
}
impl core::fmt::Display for SignatureOperation {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
let op = match self {
SignatureOperation::Sign => "sign",
SignatureOperation::Verify => "verify",
SignatureOperation::KeyManagement => "key_management",
};
write!(f, "{op}")
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[non_exhaustive]
pub enum SignatureFailureKind {
BackendFailure,
InvalidPrivateKey,
InvalidPublicKey,
InvalidSignature,
InvalidMessage,
KeyGenerationFailed,
SecureEnclaveUnavailable,
SecureEnclaveRejectedKey,
}
impl core::fmt::Display for SignatureFailureKind {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
let detail = match self {
SignatureFailureKind::BackendFailure => "backend failure",
SignatureFailureKind::InvalidPrivateKey => "invalid private key",
SignatureFailureKind::InvalidPublicKey => "invalid public key",
SignatureFailureKind::InvalidSignature => "invalid signature",
SignatureFailureKind::InvalidMessage => "invalid message",
SignatureFailureKind::KeyGenerationFailed => "key generation failed",
SignatureFailureKind::SecureEnclaveUnavailable => "secure enclave unavailable",
SignatureFailureKind::SecureEnclaveRejectedKey => "secure enclave rejected key",
};
write!(f, "{detail}")
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[non_exhaustive]
pub enum KeyAgreementFailureKind {
DeriveSharedSecretFailed,
KeyGenerationFailed,
}
impl core::fmt::Display for KeyAgreementFailureKind {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
let detail = match self {
KeyAgreementFailureKind::DeriveSharedSecretFailed => "derive shared secret failed",
KeyAgreementFailureKind::KeyGenerationFailed => "key generation failed",
};
write!(f, "{detail}")
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[non_exhaustive]
pub enum KemFailureKind {
KeyGenerationFailed,
EncapsulateFailed,
DecapsulateFailed,
}
impl core::fmt::Display for KemFailureKind {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
let detail = match self {
KemFailureKind::KeyGenerationFailed => "key generation failed",
KemFailureKind::EncapsulateFailed => "encapsulate failed",
KemFailureKind::DecapsulateFailed => "decapsulate failed",
};
write!(f, "{detail}")
}
}