31 个版本 (14 个重大更改)
0.15.0 | 2024年6月11日 |
---|---|
0.13.0 | 2024年3月17日 |
0.12.0 | 2023年11月9日 |
0.11.0 | 2023年5月31日 |
0.0.1 | 2019年6月20日 |
在 WebAssembly 中排名 212
每月下载量 16,622
在 52 个 crate 中使用(13 个直接使用)
1MB
1.5K SLoC
ℹ️ 兼容性信息
使用 v0.10.1
及更高版本计算的 wascap 哈希与先前版本签名的哈希不兼容。因此,使用较旧版本的 wascap 签名的模块将 不会 验证其模块哈希(它们将被忽略)。一旦模块使用 0.10.1
或更高版本签名,它将恢复其模块哈希的验证。
wasmCloud Capabilities
在 wasmCloud 主机运行时,每个组件都会安全地声明它所需的集合。此库用于嵌入、提取和验证包含这些能力声明的 JSON Web Tokens(JWT),以及 wasm
文件的哈希和用于验证模块来源的可证明发行者。
如果您想使用允许您签名和检查模块声明的 CLI,则可以安装 wash CLI 并使用 wash claims
命令集。 请注意,早期版本的 wascap
附带 CLI。这已不再可用,并由 wash
CLI 取代。
虽然库中已经定义了一些标准、众所周知的声明(例如 wasmcloud:messaging
和 wasmcloud:keyvalue
),但您可以在自己的命名空间中添加自定义声明。
以下示例说明了将一组新声明嵌入 WebAssembly 模块,然后提取、验证和检查这些声明的过程。
use wascap::prelude::*;
let unsigned = read_unsigned_wasm(); // Read a Wasm file into a byte vector
let issuer = KeyPair::new_account(); // Create an Ed25519 key pair to sign the module
let module = KeyPair::new_module(); // Create a key pair for the module itself
// Grant the module some basic capabilities, with no date limits
let claims = ClaimsBuilder::new()
.with_capability(caps::MESSAGING)
.with_capability(caps::KEY_VALUE)
.issuer(&issuer.public_key())
.subject(&module.public_key())
.build();
// Sign the JWT and embed it into the WebAssembly module, returning the signed bytes
let embedded = wasm::embed_claims(&unsigned, &claims, &issuer)?;
// Extract a signed JWT from a WebAssembly module's bytes (performs a check on
// the signed module hash)
let extracted = wasm::extract_claims(&embedded)?.unwrap();
// Validate dates, signature, JWT structure, etc.
let v = validate_token(&extracted.jwt)?;
assert_eq!(v.expired, false);
assert_eq!(v.cannot_use_yet, false);
assert_eq!(v.expires_human, "never");
assert_eq!(v.not_before_human, "immediately");
assert_eq!(extracted.claims.issuer, issuer.public_key());
Ed25519
密钥功能由 nkeys crate 提供。
wash
CLI 允许您从终端提示符检查和签名 WebAssembly 文件。
$ wash claims inspect echo_s.wasm
Echo - Module
Account ACM7TOENKEIO6Q6J66FX53AKXRHH6TH2WZ6K6SZQULNSWLDUIQHSRRSS
Module MC2N2ERC4J7GGMVEMH2TYY73YXYZT2BJK2VGFNYWV26K3KOSVALIFUIB
Expires never
Can Be Used immediately
Version None (0)
Call Alias (Not set)
Capabilities
HTTP Server
Tags
None
依赖项
~12–21MB
~400K SLoC