Skip to main content

pq_mayo/
error.rs

1// SPDX-License-Identifier: Apache-2.0 OR MIT
2
3//! Error types for the MAYO signature scheme.
4
5/// Errors that can occur during MAYO operations.
6#[derive(Debug, thiserror::Error)]
7pub enum Error {
8    /// Key generation failed.
9    #[error("key generation failed")]
10    KeyGeneration,
11    /// Signing failed.
12    #[error("signing failed")]
13    Signing,
14    /// Signature verification failed.
15    #[error("verification failed")]
16    VerificationFailed,
17    /// Invalid key length.
18    #[error("invalid key length: expected {expected}, got {got}")]
19    InvalidKeyLength {
20        /// Expected length.
21        expected: usize,
22        /// Actual length.
23        got: usize,
24    },
25    /// Invalid signature length.
26    #[error("invalid signature length: expected {expected}, got {got}")]
27    InvalidSignatureLength {
28        /// Expected length.
29        expected: usize,
30        /// Actual length.
31        got: usize,
32    },
33    /// Invalid seed length.
34    #[error("invalid seed length: expected {expected}, got {got}")]
35    InvalidSeedLength {
36        /// Expected length.
37        expected: usize,
38        /// Actual length.
39        got: usize,
40    },
41}
42
43impl From<Error> for signature::Error {
44    fn from(e: Error) -> Self {
45        signature::Error::from_source(e.to_string())
46    }
47}
48
49/// Result type alias using [`Error`].
50pub type Result<T> = core::result::Result<T, Error>;