53 个版本
0.9.6 | 2024年1月26日 |
---|---|
0.9.4 | 2023年11月11日 |
0.9.2 | 2023年3月13日 |
0.9.0 | 2022年2月3日 |
0.0.1-preview.10 | 2017年3月21日 |
#17 in 加密学
394,322 个月下载量
在 377 个 crate 中使用 (直接使用 42 个)
615KB
3.5K SLoC
Snow
Snow 是 Trevor Perrin 的 Noise 协议 的实现,旨在设计为“难以搞砸”。
🔥 警告 🔥 此库尚未经过任何正式审计。
它看起来像什么?
请参阅 examples/simple.rs
以获取更完整的 TCP 客户端/服务器示例。
let mut noise = snow::Builder::new("Noise_NN_25519_ChaChaPoly_BLAKE2s".parse()?)
.build_initiator()?;
let mut buf = [0u8; 65535];
// write first handshake message
noise.write_message(&[], &mut buf)?;
// receive response message
let incoming = receive_message_from_the_mysterious_ether();
noise.read_message(&incoming, &mut buf)?;
// complete handshake, and transition the state machine into transport mode
let mut noise = noise.into_transport_mode()?;
请参阅完整的文档:https://docs.rs/snow。
实现
Snow 目前正在跟踪 Noise 规范修订版 34。
然而,并非所有功能都已实现(欢迎 pull request)
加密
通过 Builder::with_resolver()
可在加密提供者之间进行切换,但默认情况下它会选择一些手工制作的纯 Rust 实现(请参阅 Cargo.toml
以快速了解概述)。
其他提供者
ring
ring 是一个基于 BoringSSL 的加密库,并且比大多数纯 Rust 实现要快得多。
如果您启用 ring-resolver
功能,Snow 将包括一个 resolvers::ring
模块以及一个可用的 RingAcceleratedResolver
,可以与 Builder::with_resolver()
一起使用。
如果您启用 ring-accelerated
功能,Snow 在可用的情况下将默认选择 ring
的加密实现。
支持的解析器原语
默认 | ring | |
---|---|---|
CSPRNG | ✔ | ✔ |
25519 | ✔ | ✔ |
448 | ||
AESGCM | ✔ | ✔ |
ChaChaPoly | ✔ | ✔ |
SHA256 | ✔ | ✔ |
SHA512 | ✔ | ✔ |
BLAKE2s | ✔ | |
BLAKE2b | ✔ |
许可证
根据您的选择,许可协议为
。
贡献
除非您明确声明,否则您有意提交以包含在您的工作中的任何贡献,根据 Apache-2.0 许可证定义,均应如上双许可,而无需任何其他条款或条件。
依赖关系
~0.1–18MB
~229K SLoC