Better devX for attested messages in app contracts (#55)

This commit is contained in:
Shoaib Ahmed 2024-06-18 13:15:32 -07:00 committed by GitHub
parent 3509edfe3d
commit 99f2974869
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 47 additions and 2 deletions

View file

@ -5,7 +5,8 @@ use crate::{
error::Error, error::Error,
handler::Handler, handler::Handler,
msg::execute::attested::{ msg::execute::attested::{
Attestation, Attested, EpidAttestation, HasUserData, MockAttestation, Attestation, Attested, AttestedMsgSansHandler, EpidAttestation, HasUserData,
MockAttestation,
}, },
state::CONFIG, state::CONFIG,
}; };
@ -71,3 +72,14 @@ where
Handler::handle(attestation, deps, env, info) Handler::handle(attestation, deps, env, info)
} }
} }
impl<T> Handler for AttestedMsgSansHandler<T> {
fn handle(
self,
_deps: DepsMut<'_>,
_env: &Env,
_info: &MessageInfo,
) -> Result<Response, Error> {
Ok(Response::default())
}
}

View file

@ -171,3 +171,36 @@ impl Attestation for MockAttestation {
unimplemented!("MockAttestation handler is a noop") unimplemented!("MockAttestation handler is a noop")
} }
} }
#[derive(Clone, Debug, PartialEq)]
pub struct AttestedMsgSansHandler<T>(pub T);
#[cw_serde]
pub struct RawAttestedMsgSansHandler<T>(pub T);
impl<T> HasDomainType for RawAttestedMsgSansHandler<T> {
type DomainType = AttestedMsgSansHandler<T>;
}
impl<T> HasUserData for AttestedMsgSansHandler<T>
where
T: HasUserData,
{
fn user_data(&self) -> UserData {
self.0.user_data()
}
}
impl<T> TryFrom<RawAttestedMsgSansHandler<T>> for AttestedMsgSansHandler<T> {
type Error = StdError;
fn try_from(value: RawAttestedMsgSansHandler<T>) -> Result<Self, Self::Error> {
Ok(Self(value.0))
}
}
impl<T> From<AttestedMsgSansHandler<T>> for RawAttestedMsgSansHandler<T> {
fn from(value: AttestedMsgSansHandler<T>) -> Self {
Self(value.0)
}
}

View file

@ -16,7 +16,7 @@ clap.workspace = true
ecies.workspace = true ecies.workspace = true
hex.workspace = true hex.workspace = true
k256.workspace = true k256.workspace = true
rand.workspace = true rand = { workspace = true, default-features = true }
serde.workspace = true serde.workspace = true
serde_json.workspace = true serde_json.workspace = true
sha2.workspace = true sha2.workspace = true