message: Add RecoverPubkeyError to StdError converter
diff: use std::backtrace::Backtrace;
  use thiserror::Error;
  -use crate::errors::VerificationError;
  +use crate::errors::{RecoverPubkeyError, VerificationError};
  /// Structured error type for init, handle and query.
  ///
  @@ -27,6 +27,12 @@ pub enum StdError {
  #[cfg(feature = "backtraces")]
  backtrace: Backtrace,
  },
  + #[error("Recover pubkey error: {source}")]
  + RecoverPubkeyErr {
  + source: RecoverPubkeyError,
  + #[cfg(feature = "backtraces")]
  + backtrace: Backtrace,
  + },
  /// Whenever there is no specific error type available
  #[error("Generic error: {msg}")]
  GenericErr {
  @@ -94,6 +100,14 @@ impl StdError {
  }
  }
  + pub fn recover_pubkey_err(source: RecoverPubkeyError) -> Self {
  + StdError::RecoverPubkeyErr {
  + source,
  + #[cfg(feature = "backtraces")]
  + backtrace: Backtrace::capture(),
  + }
  + }
  +
  pub fn generic_err<S: Into<String>>(msg: S) -> Self {
  StdError::GenericErr {
  msg: msg.into(),
  @@ -183,6 +197,22 @@ impl PartialEq<StdError> for StdError {
  false
  }
  }
  + StdError::RecoverPubkeyErr {
  + source,
  + #[cfg(feature = "backtraces")]
  + backtrace: _,
  + } => {
  + if let StdError::RecoverPubkeyErr {
  + source: rhs_source,
  + #[cfg(feature = "backtraces")]
  + backtrace: _,
  + } = rhs
  + {
  + source == rhs_source
  + } else {
  + false
  + }
  + }
  StdError::GenericErr {
  msg,
  #[cfg(feature = "backtraces")]
  @@ -341,6 +371,12 @@ impl From<VerificationError> for StdError {
  }
  }
  +impl From<RecoverPubkeyError> for StdError {
  + fn from(source: RecoverPubkeyError) -> Self {
  + Self::recover_pubkey_err(source)
  + }
  +}
  +
  /// The return type for init, handle and query. Since the error type cannot be serialized to JSON,
  /// this is only available within the contract and its unit tests.
  ///
  