10个版本 (6个破坏性)
0.7.0 | 2023年3月30日 |
---|---|
0.6.0 | 2023年2月3日 |
0.5.0 | 2022年5月17日 |
0.4.0 | 2021年4月3日 |
0.1.0 | 2019年12月9日 |
#1290 in 加密学
13,972 每月下载量
用于 21 个crate(4个直接使用)
71KB
228 行
用于Zebra的RedJubjub最小实现。
Zcash中使用了两种RedJubjub参数化,一种用于BindingSig
,另一种用于SpendAuthSig
。此库通过使用密封的SigType
特质作为类型枚举来区分这些。
除了Signature
、SigningKey
和VerificationKey
类型外,此库还提供了VerificationKeyBytes
,这是一个精炼类型,表示一个[u8; 32]
,表示字节表示了RedJubjub验证键的编码。这允许VerificationKey
类型缓存与验证键编码相关的验证检查。
示例
创建一个BindingSig
、序列化和反序列化它,以及验证签名
# use std::convert::TryFrom;
use rand::thread_rng;
use redjubjub::*;
let msg = b"Hello!";
// Generate a secret key and sign the message
let sk = SigningKey::<Binding>::new(thread_rng());
let sig = sk.sign(thread_rng(), msg);
// Types can be converted to raw byte arrays using From/Into
let sig_bytes: [u8; 64] = sig.into();
let pk_bytes: [u8; 32] = VerificationKey::from(&sk).into();
// Deserialize and verify the signature.
let sig: Signature<Binding> = sig_bytes.into();
assert!(
VerificationKey::try_from(pk_bytes)
.and_then(|pk| pk.verify(msg, &sig))
.is_ok()
);
文档
cargo doc --features "nightly" --open
依赖关系
~4MB
~81K SLoC