pub struct Web3SDK { /* private fields */ }Expand description
Backend-agnostic Web3 capability handle used by engine contexts.
The engine does not know about any concrete backend (TEE gateway, host Web3
client, etc.). Every backend is supplied as a Web3ClientFeatures trait
object; TEE-specific behaviour is expressed through
Web3ClientFeatures::tee_attestation, so the engine itself stays free of
any Web3 or TEE dependency.
Implementations§
Source§impl Web3SDK
impl Web3SDK
Sourcepub fn from_web3(client: Arc<dyn Web3ClientFeatures>) -> Self
pub fn from_web3(client: Arc<dyn Web3ClientFeatures>) -> Self
Wraps a Web3 client implementation.
Sourcepub fn not_implemented() -> Self
pub fn not_implemented() -> Self
Returns a placeholder client whose operations fail with not implemented.
Sourcepub fn get_principal(&self) -> Principal
pub fn get_principal(&self) -> Principal
Returns the principal associated with the underlying client.
Sourcepub async fn sign_envelope(
&self,
message_digest: [u8; 32],
) -> Result<SignedEnvelope, BoxError>
pub async fn sign_envelope( &self, message_digest: [u8; 32], ) -> Result<SignedEnvelope, BoxError>
Signs a challenge digest with the underlying client identity.
Sourcepub async fn tee_attestation(
&self,
public_key: ByteBufB64,
nonce: Vec<u8>,
) -> Result<Option<TEEInfo>, BoxError>
pub async fn tee_attestation( &self, public_key: ByteBufB64, nonce: Vec<u8>, ) -> Result<Option<TEEInfo>, BoxError>
Produces optional TEE attestation bound to the authentication public key
and challenge nonce. Non-TEE clients return Ok(None).
Trait Implementations§
Source§impl HttpFeatures for &Web3SDK
impl HttpFeatures for &Web3SDK
Source§async fn https_call(
&self,
url: &str,
method: Method,
headers: Option<HeaderMap>,
body: Option<Vec<u8>>,
) -> Result<Response, BoxError>
async fn https_call( &self, url: &str, method: Method, headers: Option<HeaderMap>, body: Option<Vec<u8>>, ) -> Result<Response, BoxError>
Makes an HTTPs request
§Arguments
url- Target URL, should start withhttps://method- HTTP method (GET, POST, etc.)headers- Optional HTTP headersbody- Optional request body (default empty)
Source§async fn https_signed_call(
&self,
url: &str,
method: Method,
message_digest: [u8; 32],
headers: Option<HeaderMap>,
body: Option<Vec<u8>>,
) -> Result<Response, BoxError>
async fn https_signed_call( &self, url: &str, method: Method, message_digest: [u8; 32], headers: Option<HeaderMap>, body: Option<Vec<u8>>, ) -> Result<Response, BoxError>
Makes a signed HTTPs request with message authentication
§Arguments
url- Target URLmethod- HTTP method (GET, POST, etc.)message_digest- 32-byte message digest for signingheaders- Optional HTTP headersbody- Optional request body (default empty)
Source§async fn https_signed_rpc<T>(
&self,
endpoint: &str,
method: &str,
args: impl Serialize + Send,
) -> Result<T, BoxError>where
T: DeserializeOwned,
async fn https_signed_rpc<T>(
&self,
endpoint: &str,
method: &str,
args: impl Serialize + Send,
) -> Result<T, BoxError>where
T: DeserializeOwned,
Makes a signed CBOR-encoded RPC call
§Arguments
endpoint- URL endpoint to send the request tomethod- RPC method name to callargs- Arguments to serialize as CBOR and send with the request
Source§impl KeysFeatures for &Web3SDK
impl KeysFeatures for &Web3SDK
Source§async fn a256gcm_key(
&self,
derivation_path: Vec<Vec<u8>>,
) -> Result<[u8; 32], BoxError>
async fn a256gcm_key( &self, derivation_path: Vec<Vec<u8>>, ) -> Result<[u8; 32], BoxError>
Source§async fn ed25519_sign_message(
&self,
derivation_path: Vec<Vec<u8>>,
message: &[u8],
) -> Result<[u8; 64], BoxError>
async fn ed25519_sign_message( &self, derivation_path: Vec<Vec<u8>>, message: &[u8], ) -> Result<[u8; 64], BoxError>
Source§async fn ed25519_verify(
&self,
derivation_path: Vec<Vec<u8>>,
message: &[u8],
signature: &[u8],
) -> Result<(), BoxError>
async fn ed25519_verify( &self, derivation_path: Vec<Vec<u8>>, message: &[u8], signature: &[u8], ) -> Result<(), BoxError>
Source§async fn ed25519_public_key(
&self,
derivation_path: Vec<Vec<u8>>,
) -> Result<[u8; 32], BoxError>
async fn ed25519_public_key( &self, derivation_path: Vec<Vec<u8>>, ) -> Result<[u8; 32], BoxError>
Source§async fn secp256k1_sign_message_bip340(
&self,
derivation_path: Vec<Vec<u8>>,
message: &[u8],
) -> Result<[u8; 64], BoxError>
async fn secp256k1_sign_message_bip340( &self, derivation_path: Vec<Vec<u8>>, message: &[u8], ) -> Result<[u8; 64], BoxError>
Source§async fn secp256k1_verify_bip340(
&self,
derivation_path: Vec<Vec<u8>>,
message: &[u8],
signature: &[u8],
) -> Result<(), BoxError>
async fn secp256k1_verify_bip340( &self, derivation_path: Vec<Vec<u8>>, message: &[u8], signature: &[u8], ) -> Result<(), BoxError>
Source§async fn secp256k1_sign_message_ecdsa(
&self,
derivation_path: Vec<Vec<u8>>,
message: &[u8],
) -> Result<[u8; 64], BoxError>
async fn secp256k1_sign_message_ecdsa( &self, derivation_path: Vec<Vec<u8>>, message: &[u8], ) -> Result<[u8; 64], BoxError>
Source§async fn secp256k1_sign_digest_ecdsa(
&self,
derivation_path: Vec<Vec<u8>>,
message_hash: &[u8],
) -> Result<[u8; 64], BoxError>
async fn secp256k1_sign_digest_ecdsa( &self, derivation_path: Vec<Vec<u8>>, message_hash: &[u8], ) -> Result<[u8; 64], BoxError>
Auto Trait Implementations§
impl !RefUnwindSafe for Web3SDK
impl !UnwindSafe for Web3SDK
impl Freeze for Web3SDK
impl Send for Web3SDK
impl Sync for Web3SDK
impl Unpin for Web3SDK
impl UnsafeUnpin for Web3SDK
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<T> Fruit for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more