1个不稳定版本
0.1.0 | 2023年11月29日 |
---|
#1575 在 密码学
48KB
735 行
hohibe — 层次身份基于加密
此crate提供了一种Rust的层次身份基于加密的实现。更多信息,请参阅crate文档(运行cargo doc
以生成它)。
⚠️ 警告:加密危险品 ☣️
此crate是为了与HIBE进行实验以及为使用HIBE的应用程序和协议原型设计而制作的。它尚未经过审计,尚未经过实战测试,也没有人声称它是安全的。
请自行承担风险,并在了解自己在做什么的情况下使用它!
示例代码
use hohibe::kem::HybridKem;
const MAX_DEPTH: usize = 3;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut rng = rand::thread_rng();
let kem = HybridKem::new(MAX_DEPTH);
let (public_key, master_secret) = kem.setup(&mut rng)?;
// Encrypt for hibe.example.com
let ciphertext = kem.encrypt(&mut rng, &public_key, &["com", "example", "hibe"], b"GET /")?;
// Assume that the owner of example.com is given the secret key for their domain ...
let example_com = kem.generate_key(
&mut rng,
&public_key,
&master_secret,
&["com", "example"],
)?;
// ... and they can use that to derive the key for the subdomain
let secret_key = kem.derive_key(
&mut rng,
&public_key,
&example_com,
&["com", "example", "hibe"],
)?;
// Now we can decrypt
let plaintext = kem.decrypt(&public_key, &secret_key, &ciphertext)?;
assert_eq!(plaintext, b"GET /");
Ok(())
}
许可证
hohibe是免费软件:您可以按照自由软件基金会发布的GNU lesser通用公共许可证的条款重新分发和/或修改它,许可证版本3,或者(根据您的选择)许可证的任何后续版本。
hohibe是根据希望它将是有用的目的进行分发的,但没有任何保证;甚至没有关于其商业性或适用于特定目的的暗示保证。有关详细信息,请参阅GNU lesser通用公共许可证。
您应已收到GNU lesser通用公共许可证副本,随同Foobar一起。如果没有,请参阅https://www.gnu.org/licenses/。
依赖项
~4.5MB
~85K SLoC