use crate::cosmos::crypto::PublicKey;
use crate::error::Error;
use crate::prelude::*;
use crate::proof::types::signature_and_data::SignatureAndData;
use tendermint::crypto::signature::Verifier;
use tendermint::Signature;
pub mod types;
pub fn verify_signature(
publik_key: PublicKey,
sign_bytes: Vec<u8>,
signature_and_data: SignatureAndData,
) -> Result<(), Error> {
let signature = Signature::try_from(signature_and_data.signature)
.map_err(|e| Error::Other(format!("{}", e)))?;
tendermint::crypto::default::signature::Verifier::verify(
publik_key.into(),
&sign_bytes,
&signature,
)
.map_err(|e| Error::Other(format!("{}", e)))
}