use core::fmt;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Error {
InvalidPrivateKey,
InvalidPublicKey,
InvalidSignature,
VerifyFailed,
DecryptFailed,
PointAtInfinity,
InvalidInputLength,
KeyExchangeFailed,
AuthTagMismatch,
NotOnCurve,
ZeroScalar,
IntegerOutOfRange,
Sm9DecryptFailed,
Sm9VerifyFailed,
InvalidInput,
}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Error::InvalidPrivateKey => write!(f, "invalid private key"),
Error::InvalidPublicKey => write!(f, "invalid public key"),
Error::InvalidSignature => write!(f, "invalid signature"),
Error::VerifyFailed => write!(f, "signature verification failed"),
Error::DecryptFailed => write!(f, "decryption failed"),
Error::PointAtInfinity => write!(f, "point at infinity"),
Error::InvalidInputLength => write!(f, "invalid input length"),
Error::KeyExchangeFailed => write!(f, "key exchange failed"),
Error::AuthTagMismatch => write!(f, "authentication tag mismatch"),
Error::NotOnCurve => write!(f, "point not on curve"),
Error::ZeroScalar => write!(f, "zero scalar"),
Error::IntegerOutOfRange => write!(f, "integer out of range"),
Error::Sm9DecryptFailed => write!(f, "SM9 decryption failed"),
Error::Sm9VerifyFailed => write!(f, "SM9 signature verification failed"),
Error::InvalidInput => write!(f, "invalid input"),
}
}
}
#[cfg(feature = "std")]
impl std::error::Error for Error {}
pub type Result<T> = core::result::Result<T, Error>;