#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Error {
Arithmetic(ArithmeticError),
Crypto(CryptoError),
Encoding,
UnauthorizedParty,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ArithmeticError {
ModulusOverflow,
}
impl From<ArithmeticError> for Error {
fn from(error: ArithmeticError) -> Self {
Self::Arithmetic(error)
}
}
impl From<CryptoError> for Error {
fn from(error: CryptoError) -> Self {
Self::Crypto(error)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum CryptoError {
InvalidSignature,
InvalidVerifyingKey,
SchemeMismatch,
UnsupportedScheme,
UnsupportedDigest,
UnsupportedEncoding,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum IdentityAuthedRequestError {
CommandMismatch,
Expired,
InvalidTimestamp,
Unauthorized(Error),
}
macro_rules! impl_from_error {
($error_type:path) => {
impl From<Error> for $error_type {
fn from(error: Error) -> Self {
Self::Unauthorized(error)
}
}
impl From<CryptoError> for $error_type {
fn from(error: CryptoError) -> Self {
Self::Unauthorized(Error::Crypto(error))
}
}
};
}
impl_from_error!(IdentityAuthedRequestError);
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum QuorumApprovedRequestError {
InsufficientApprovals,
Unauthorized(Error),
}
impl_from_error!(QuorumApprovedRequestError);
#[derive(Debug)]
pub enum ShareBackupRecoveryError {
InvalidSigningShare,
InvalidSubShare,
EncryptionError(aes_gcm::Error),
}
impl From<aes_gcm::Error> for ShareBackupRecoveryError {
fn from(error: aes_gcm::Error) -> Self {
ShareBackupRecoveryError::EncryptionError(error)
}
}