Skip to main content

quartz_contract_core/handler/execute/
signed.rs

1use cosmwasm_std::{DepsMut, Env, MessageInfo, Response};
2
3use crate::{
4    error::Error,
5    handler::Handler,
6    msg::execute::signed::{Auth, MsgVerifier, Signed},
7};
8
9impl<M, A, P, S> Handler for Signed<M, A>
10where
11    M: Handler + MsgVerifier<PubKey = P, Sig = S>,
12    A: Auth<P, S>,
13{
14    fn handle(
15        self,
16        mut deps: DepsMut<'_>,
17        env: &Env,
18        info: &MessageInfo,
19    ) -> Result<Response, Error> {
20        let (msg, auth) = self.into_tuple();
21        let pub_key = auth.pub_key();
22        msg.verify(pub_key, auth.sig())?;
23        Handler::handle(msg, deps.branch(), env, info)
24    }
25}