#[derive(Debug, Clone, PartialEq, Eq)]
pub enum MemoError {
DataTooShort,
DataTooLong,
DecryptionFailed,
EncryptionFailed,
InvalidNoteData,
CommitmentMismatch,
InvalidDisclosureMask(&'static str),
InvalidDisclosureData,
InvalidProof(&'static str),
ProofGenerationFailed(&'static str),
WitnessCalculationFailed(&'static str),
CircuitUnsatisfied(&'static str),
InvalidProvingKey(&'static str),
KeyLoadingFailed(&'static str),
InvalidFieldElement(&'static str),
InvalidPublicSignals(&'static str),
WasmLoadFailed(&'static str),
}
impl core::fmt::Display for MemoError {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self {
Self::DataTooShort => write!(f, "Encrypted data is too short"),
Self::DataTooLong => write!(f, "Encrypted data exceeds maximum allowed size"),
Self::DecryptionFailed => write!(f, "Decryption failed - wrong key or tampered data"),
Self::EncryptionFailed => write!(f, "Encryption operation failed"),
Self::InvalidNoteData => write!(f, "Invalid note data format"),
Self::CommitmentMismatch => write!(f, "Commitment mismatch after decryption"),
Self::InvalidDisclosureMask(msg) => write!(f, "Invalid disclosure mask: {msg}"),
Self::InvalidDisclosureData => write!(f, "Invalid disclosed data format"),
Self::InvalidProof(msg) => write!(f, "Invalid disclosure proof: {msg}"),
Self::ProofGenerationFailed(msg) => write!(f, "Proof generation failed: {msg}"),
Self::WitnessCalculationFailed(msg) => {
write!(f, "Witness calculation failed: {msg}")
}
Self::CircuitUnsatisfied(msg) => write!(f, "Circuit constraints not satisfied: {msg}"),
Self::InvalidProvingKey(msg) => write!(f, "Invalid proving key (.ark format): {msg}"),
Self::KeyLoadingFailed(msg) => write!(f, "Key loading failed: {msg}"),
Self::InvalidFieldElement(msg) => write!(f, "Invalid field element conversion: {msg}"),
Self::InvalidPublicSignals(msg) => write!(f, "Public signals validation failed: {msg}"),
Self::WasmLoadFailed(msg) => {
write!(f, "WASM witness calculator loading failed: {msg}")
}
}
}
}
#[cfg(feature = "std")]
impl std::error::Error for MemoError {}