You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Chris Fallin a13a777230 Bump to Wasmtime v0.29.0 and Cranelift 0.76.0. 3 years ago
..
spec@1f3078088b Update submodules 4 years ago
src Implement RFC 11: Redesigning Wasmtime's APIs (#2897) 3 years ago
Cargo.toml Bump to Wasmtime v0.29.0 and Cranelift 0.76.0. 3 years ago
LICENSE Add support for the experimental wasi-crypto APIs (#2597) 4 years ago
README.md Add support for the experimental wasi-crypto APIs (#2597) 4 years ago

README.md

wasmtime-wasi-crypto

This crate enables support for the wasi-crypto APIs in Wasmtime.

The sole purpose of the implementation is to allow bindings and application developers to test the proposed APIs. This implementation is not meant to be used in production. Like the specification, it is currently experimental and its functionality can quickly change.

Since the wasi-crypto API is expected to be an optional feature of WASI, this crate is currently separate from the wasi-common crate.

Wasmtime integration

Use the Wasmtime APIs to instantiate a Wasm module and link the wasi-crypto modules as follows:

use wasmtime_wasi_crypto::{
    WasiCryptoAsymmetricCommon, WasiCryptoCommon, WasiCryptoCtx, WasiCryptoSignatures,
    WasiCryptoSymmetric,
};

let cx_crypto = WasiCryptoCtx::new();
WasiCryptoCommon::new(linker.store(), cx_crypto.clone()).add_to_linker(linker)?;
WasiCryptoAsymmetricCommon::new(linker.store(), cx_crypto.clone()).add_to_linker(linker)?;
WasiCryptoSignatures::new(linker.store(), cx_crypto.clone()).add_to_linker(linker)?;
WasiCryptoSymmetric::new(linker.store(), cx_crypto.clone()).add_to_linker(linker)?;

let wasi = wasmtime_wasi::old::snapshot_0::Wasi::new(linker.store(), mk_cx()?);
wasi.add_to_linker(linker)?;

Building Wasmtime

Wasmtime must be compiled with the wasi-crypto feature flag (disabled by default) in order to include the crypto APIs.

Examples

Example rust bindings and assemblyscript bindings are provided to demonstrate how these APIs can be used and exposed to applications in an idiomatic way.