5个版本

0.1.5 2021年10月24日
0.1.4 2021年7月20日
0.1.3 2021年6月18日
0.1.1 2021年5月24日
0.1.0 2021年5月24日

#1162 in 密码学

Download history 50/week @ 2024-04-07 90/week @ 2024-04-14 23/week @ 2024-04-21 13/week @ 2024-04-28 26/week @ 2024-05-05 15/week @ 2024-05-12 25/week @ 2024-05-19 62/week @ 2024-05-26 49/week @ 2024-06-02 20/week @ 2024-06-09 41/week @ 2024-06-16 99/week @ 2024-06-23 6/week @ 2024-06-30 21/week @ 2024-07-07 24/week @ 2024-07-14 279/week @ 2024-07-21

331 每月下载量
用于 kem

MIT 许可证

29KB
611 代码行

Crate License Coverage Status Workflow Status Maintenance

x3dh-ke

X3DH的实现

基于 Rust 编写的扩展三重Diffie-Hellman实现,如Signal文档所述。警告!这个crate尚未经过审查,可能包含严重错误。请谨慎使用。

示例使用

标准

use x3dh_ke::{IdentityKey, SignedPreKey, EphemeralKey, OneTimePreKey, Key, x3dh_a, x3dh_b};
let ika = IdentityKey::default();
let ikas = ika.strip();
let ikb = IdentityKey::default();
let ikbs = ikb.strip();
let spkb = SignedPreKey::default();
let spkbs = spkb.strip();
let eka = EphemeralKey::default();
let ekas = eka.strip();
let opkb = OneTimePreKey::default();
let opkbs = opkb.strip();
let signature = ikb.sign(&spkbs.pk_to_bytes());
let cka = x3dh_a(&signature, &ika, &spkbs, &eka, &ikbs, &opkbs).unwrap();
let ckb = x3dh_b(&ikas, &spkb, &ekas, &ikb, &opkb);
assert_eq!(cka, ckb)

序列化和反序列化

该库描述的每个密钥都可以转换为字节并从它们创建。

use x3dh_ke::{IdentityKey, Key};
let ika = IdentityKey::default();
let data = ika.to_bytes();
let ikr = IdentityKey::from_bytes(&data).unwrap();
assert_eq!(ika.to_bytes(), ikr.to_bytes())

移除私钥

要共享密钥,必须先从其中移除私钥部分。

use x3dh_ke::{IdentityKey, Key};
let ika = IdentityKey::default();
let _iks = ika.strip(); // Without private key

WASM

此crate支持WASM。为此,启用 wasm 功能。

当前版本:0.1.3

许可证:MIT

依赖项

~3MB
~63K SLoC