#crypto-api #cryptography #testing #crypto

wasmtime-wasi-crypto

Wasmtime对wasi-crypto API的实现

64个版本 (33个稳定版本)

12.0.2 2023年9月14日
11.0.2 2023年9月14日
11.0.1 2023年7月24日
10.0.2 2023年9月14日
0.25.0 2021年3月16日

#1565 in WebAssembly

Apache-2.0 WITH LLVM-exception

2.5MB
41K SLoC

wasmtime-wasi-crypto

此crate允许在Wasmtime中支持wasi-crypto API。

实现的主要目的是允许绑定和应用开发者测试提议的API。这个实现不打算用于生产。像规范一样,它目前是实验性的,其功能可能会迅速改变。

由于wasi-crypto API预计将是WASI的可选功能,因此此crate目前与wasi-common crate分开。

Wasmtime集成

使用Wasmtime API实例化Wasm模块,并按如下方式链接wasi-crypto模块:

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)?;

构建Wasmtime

为了包含加密API,Wasmtime必须使用wasi-crypto功能标志进行编译(默认禁用)。

示例

提供了示例rust绑定assemblyscript绑定,以演示如何以符合语法的 方式使用这些API并将其暴露给应用程序。

依赖关系

~47–63MB
~1.5M SLoC