#密钥派生 #bls12-381 #派生 #derive

blastkids

使用Blaszkids派生BLS12-381子密钥

8个版本

0.2.0 2024年7月1日
0.1.6 2024年2月13日
0.1.4 2023年10月4日
0.1.3 2023年9月29日

#611 in 密码学

Download history 145/week @ 2024-06-27 57/week @ 2024-07-04 6/week @ 2024-07-11 2/week @ 2024-07-25

87 每月下载量
3 个crate中使用 (通过 delano-keys)

MIT 许可证

27KB
362

Blaszkids 🚀🔑🔑🔑

Crates.io Docs.rs dependency status MIT licensed

一个用Rust编写的BLS12-381子密钥派生库。实现了EIP-2333和EIP-2334。

基于 rust-bls-derivation 的分支,使用 bls12_381_plus 而不是 curv-kzen,并进行了清理和文档化。

理由

如果你想要使用可委托匿名凭证,验证密钥(VK)会与凭证条目一样长。由于一个 VK 只是几个BLS12-381公钥(PK),我们可以使用派生算法,如EIP-2333,从单个根 PK派生出任意长度的长 VK

安装

cargo install blastkids

API & 文档

请参阅 docs.rs 上的文档。

请参阅 lib.rs 中的测试以了解示例用法。

use blastkids::{Manager, Zeroizing, derive};
use blastkids::{G1, G2};

// make a new manager for a G2 public key
let seed = Zeroizing::new([42u8; 32]);
let manager: Manager<G2> = Manager::from_seed(seed);

// With a Manager you can create as many account sas you need
let account_number = 1u32;
let account = manager.account(account_number);

let length = 8u8; // Specify how many Child Public Keys you need (in this case, 8). Can be up to 255.

// Anyone can use an Account Public Key and a `length` to derive an expanded account
let expanded_pk: Vec<G2> = derive(&account.pk, length);

// When you want to use the child account secret keys,
// you call `expand_to` on the account
let expanded = account.expand_to(length);

// This expand public keys are the same as the ones derived above
assert_eq!(expanded.pk, expanded_pk);

测试

cargo test

依赖项

另请参阅

前期工作

贡献

欢迎贡献!如果您有任何功能想法或发现任何错误,请提交一个问题。我也热情接受pull请求。请

  1. 分支此仓库
  2. 为您的更改创建一个新的分支
  3. 创建一个草稿pull请求,以便我们能够跟踪和协作您的更改
  4. 为您的更改添加测试
  5. 每个拉取请求保持差异最小
  6. 编写有意义的提交信息
  7. 当您准备好最终审查时,将草稿改为公开

依赖项

~3MB
~67K SLoC