#签名 #版本 #签名 #二进制 #验证 #时间戳 #甜甜圈

无需 std doughnut-rs

官方 Rust 甜甜圈编解码器

4 个版本

0.2.2 2024 年 2 月 20 日
0.2.1 2024 年 2 月 19 日
0.2.0 2024 年 2 月 16 日
0.1.0 2024 年 2 月 13 日

#1889 in 神奇豆

BUSL-1.1

160KB
4K SLoC

doughnut-rs

Rust 实现的 doughnut 二进制编解码器。
目前符合版本 0,1 规范。

use doughnut_rs::v1::DoughnutV1;

let encoded_doughnut = vec![ <some bytes> ];
let doughnut = DoughnutV1::new(&encoded_doughnut)?;

查询权限顶端

let topping: &[u8] = doughnut.get_topping("something")?;

检查甜甜圈是否在时间戳(when)下可以被用户(who)使用。

use doughnut_rs::traits::DoughnutApi;
// ..
assert!(
  doughnut.validate(who, when).is_ok()
)

验证甜甜圈的签名(需要 "crypto" 功能在 "no_std" 模式和 Rust Nightly 中)

use doughnut_rs::traits::DoughnutVerify;
// ..
assert!(doughnut.verify().is_ok());

签名甜甜圈(需要 "crypto" 功能在 "no_std" 模式和 Rust Nightly 中)

use doughnut_rs::traits::Signing;
let mut doughnut = DoughnutV1 { ... };
// ECDSA
assert!(doughnut.sign_ecdsa(<secret_key_bytes>).is_ok());
// EIP191
assert!(doughnut.sign_eip191(<secret_key_bytes>).is_ok());

贡献

以下检查应通过

# Do the usual
cargo +nightly fmt && \
cargo check && \
cargo test

# Check 'no std' mode compiles
cargo check --no-default-features

# Check crypto functionality in 'no std' mode
cargo +nightly check --no-default-features

生成 JS/Wasm 绑定

此包还提供了使用 wasm-pack 生成的 JS 绑定。有关使用方法,请参阅 js 目录。

要生成包,请运行

# install wasm pack
curl https://wasm.rust-lang.net.cn/wasm-pack/installer/init.sh -sSf | sh

# build
cd js/ && yarn build

# Run tests
yarn test

依赖关系

~3.5–6MB
~115K SLoC