pub struct WasmInstance {Show 13 fields
pub memory: Memory,
pub alloc: Func,
pub free: Func,
pub public_key: Func,
pub convert: Func,
pub unconvert: Func,
pub verify: Func,
pub verify_eip155: Func,
pub recover_v: Func,
pub address_eth: Func,
pub address_cosmos: Func,
pub store: Store<()>,
pub instance: Instance,
}Fields§
§memory: Memory§alloc: Func§free: Func§public_key: Func§convert: Func§unconvert: Func§verify: Func§verify_eip155: Func§recover_v: Func§address_eth: Func§address_cosmos: Func§store: Store<()>§instance: InstanceImplementations§
Source§impl WasmInstance
impl WasmInstance
Sourcepub fn new(loader: &Arc<WasmLoader>) -> Result<Self, Box<dyn Error>>
pub fn new(loader: &Arc<WasmLoader>) -> Result<Self, Box<dyn Error>>
Creates a new CryptoService by instantiating a WASM module from the given loader.
§Errors
Returns an error if the WASM module instantiation fails.
Sourcepub fn address_eth(
&mut self,
public_key: &str,
) -> Result<String, Box<dyn Error>>
pub fn address_eth( &mut self, public_key: &str, ) -> Result<String, Box<dyn Error>>
§Arguments
public_key- The public key as a string.
§Returns
A Result containing the Ethereum address as a hexadecimal string (with 0x prefix) if successful,
or an error if the WASM invocation fails.
§Errors
Returns an error if the WASM function cannot be typed or invoked correctly, or if the WASM function returns an error string.
Sourcepub fn address_cosmos(
&mut self,
public_key: &str,
hrp: &str,
) -> Result<String, Box<dyn Error>>
pub fn address_cosmos( &mut self, public_key: &str, hrp: &str, ) -> Result<String, Box<dyn Error>>
§Arguments
public_key- The compressed secp256k1 public key as a hex string (33 bytes, starts with 0x02 or 0x03).hrp- The desired Bech32 HRP prefix (e.g., “cosmos”, “osmo”). If empty or invalid, defaults to"cosmos".
§Returns
A Result containing the Cosmos address as a Bech32m string if successful,
or an error if the WASM invocation fails.
§Errors
Returns an error if the WASM function cannot be typed or invoked correctly, or if the WASM function returns an error string.
Sourcepub fn verify(
&mut self,
message: &str,
signature: &str,
public_key: &str,
) -> Result<bool, Box<dyn Error>>
pub fn verify( &mut self, message: &str, signature: &str, public_key: &str, ) -> Result<bool, Box<dyn Error>>
Verifies a message signature using a public key via the WASM module.
§Arguments
message- The original message.signature- The signature to verify.public_key- The public key used for verification.
§Returns
Ok(true) if the signature is valid, Ok(false) if invalid, or an error on failure.
§Errors
Returns an error if memory allocation or WASM function invocation fails.
Sourcepub fn recover_v(
&mut self,
message: &str,
signature: &str,
public_key: &str,
eth_chain_id: Option<u8>,
) -> Result<String, Box<dyn Error>>
pub fn recover_v( &mut self, message: &str, signature: &str, public_key: &str, eth_chain_id: Option<u8>, ) -> Result<String, Box<dyn Error>>
Recovers the Ethereum-compatible recovery ID v (as a hex string) from a signature and public key via the WASM module.
§Arguments
message- The original message hash as a hex string (64 characters).signature- The signature without the recovery ID (r + s) as a hex string (128 characters).public_key- The compressed public key as a hex string (66 characters).
§Returns
Returns Ok(String) containing the recovered v value in hex (e.g., "1b") if successful,
or an error string from the WASM module if recovery fails.
§Errors
Returns an error if memory allocation fails, the WASM function invocation fails, or if the returned pointer is null or the returned string is invalid UTF-8.
Sourcepub fn verify_eip155(
&mut self,
message_hash: &str,
signature: &str,
public_key: &str,
) -> Result<bool, Box<dyn Error>>
pub fn verify_eip155( &mut self, message_hash: &str, signature: &str, public_key: &str, ) -> Result<bool, Box<dyn Error>>
Verifies an Ethereum EIP-155 message signature using a public key via the WASM module.
§Arguments
message_hash- The 32-byte hex-encoded hash of the original message.signature- The 65-byte signature (r[32] + s[32] + v[1]), hex-encoded.public_key- The compressed 33-byte public key, hex-encoded.
§Returns
Ok(true) if the signature is valid, Ok(false) if invalid, or an error on failure.
§Errors
Returns an error if memory allocation or WASM function invocation fails.
Auto Trait Implementations§
impl Freeze for WasmInstance
impl !RefUnwindSafe for WasmInstance
impl Send for WasmInstance
impl Sync for WasmInstance
impl Unpin for WasmInstance
impl !UnwindSafe for WasmInstance
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<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.