ed448_goldilocks/sign/
error.rs1use core::{
2 error::Error,
3 fmt::{self, Display, Formatter},
4};
5
6#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)]
8pub enum SigningError {
9 PrehashedContextLength,
11 InvalidPublicKeyBytes,
13 InvalidSignatureSComponent,
15 InvalidSignatureRComponent,
17 InvalidSignatureLength,
19 Verify,
21}
22
23impl Display for SigningError {
24 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
25 match self {
26 SigningError::PrehashedContextLength => {
27 write!(f, "prehashed context length is invalid")
28 }
29 SigningError::InvalidPublicKeyBytes => write!(f, "public key bytes are invalid"),
30 SigningError::InvalidSignatureSComponent => {
31 write!(f, "signature S component is invalid")
32 }
33 SigningError::InvalidSignatureRComponent => {
34 write!(f, "signature R component is invalid")
35 }
36 SigningError::InvalidSignatureLength => write!(f, "signature length is invalid"),
37 SigningError::Verify => write!(f, "signature verification failed"),
38 }
39 }
40}
41
42impl Error for SigningError {}
43
44impl From<SigningError> for signature::Error {
45 #[cfg(feature = "alloc")]
46 fn from(err: SigningError) -> Self {
47 signature::Error::from_source(err)
48 }
49
50 #[cfg(not(feature = "alloc"))]
51 fn from(_err: SigningError) -> Self {
52 signature::Error::new()
53 }
54}