use crate::proto::tags::Error;
use sl_mpc_mate::coord::MessageSendError;
#[derive(thiserror::Error, Debug)]
#[allow(missing_docs)]
pub enum SignError {
#[error("Invalid commitment")]
InvalidCommitment,
#[error("Invalid digest")]
InvalidDigest,
#[error("Invalid final_session_id")]
InvalidFinalSessionID,
#[error("Failed check: {0}")]
FailedCheck(&'static str),
#[error("k256 error")]
K256Error,
#[error("invalid pre signature")]
InvalidPreSign,
#[error("invalid message format")]
InvalidMessage,
#[error("Missing message")]
MissingMessage,
#[error("Send message")]
SendMessage,
#[error("Abort protocol by party {0}")]
AbortProtocol(usize),
#[error("Abort the protocol and ban the party {0}")]
AbortProtocolAndBanParty(u8),
}
impl From<MessageSendError> for SignError {
fn from(_err: MessageSendError) -> Self {
SignError::SendMessage
}
}
impl From<k256::ecdsa::Error> for SignError {
fn from(_err: k256::ecdsa::Error) -> Self {
Self::K256Error
}
}
impl From<Error> for SignError {
fn from(err: Error) -> Self {
match err {
Error::Abort(p) => SignError::AbortProtocol(p as _),
Error::Recv => SignError::MissingMessage,
Error::Send => SignError::SendMessage,
Error::InvalidMessage => SignError::InvalidMessage,
}
}
}