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 密码学
87 每月下载量
在 3 个crate中使用 (通过 delano-keys)
27KB
362 行
Blaszkids 🚀🔑🔑🔑
一个用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
依赖项
- BLS12-381: bls12_381_plus
- 椭圆曲线: RustCrypto/elliptic-curves
- 大整数: RustCrypto/ctypro-bigint
另请参阅
- 使用
password
+salt
生成种子: seed-keeper-core - 使用
seed
生成凭证: delanocreds
前期工作
- EIP-2333
- EIP-2334
- rust-bls-derivation (大约2023年,使用
curv-kzen
库,该库与 rust-nightly 冲突,并且似乎没有得到很好的维护)
贡献
欢迎贡献!如果您有任何功能想法或发现任何错误,请提交一个问题。我也热情接受pull请求。请
- 分支此仓库
- 为您的更改创建一个新的分支
- 创建一个草稿pull请求,以便我们能够跟踪和协作您的更改
- 为您的更改添加测试
- 每个拉取请求保持差异最小
- 编写有意义的提交信息
- 当您准备好最终审查时,将草稿改为公开
依赖项
~3MB
~67K SLoC