#tls #serialization #deserialize #byte #mls #rfc #byte-slice

不使用std tls_codec

纯Rust实现的TLS(反)序列化

22个版本

0.4.2-pre.12024年7月19日
0.4.1 2024年1月26日
0.4.0 2023年11月21日
0.3.0 2023年6月22日
0.1.4 2021年7月8日

#1894 in 加密学

Download history 12437/week @ 2024-05-02 9652/week @ 2024-05-09 12821/week @ 2024-05-16 12437/week @ 2024-05-23 15006/week @ 2024-05-30 12819/week @ 2024-06-06 15271/week @ 2024-06-13 18543/week @ 2024-06-20 14903/week @ 2024-06-27 17051/week @ 2024-07-04 18416/week @ 2024-07-11 18175/week @ 2024-07-18 23264/week @ 2024-07-25 18730/week @ 2024-08-01 18932/week @ 2024-08-08 25293/week @ 2024-08-15

89,487 每月下载量
用于 18 个crate (8 直接)

Apache-2.0 OR MIT

86KB
2K SLoC

RustCrypto: TLS编解码器

MIT licensed Project Chat Rust Version

crates.io docs.rs
tls_codec Docs
tls_codec_derive Docs

该crate实现了在RFC 8446中定义的TLS编解码器,以及一些由MLS协议要求的扩展。

使用derive特性,可以派生出TlsSerializeTlsDeserialize

该crate还提供了以下实现TLS序列化和反序列化的数据结构:

  • u8, u16, u32
  • TlsVecU8, TlsVecU16, TlsVecU32
  • SecretTlsVecU8, SecretTlsVecU16, SecretTlsVecU32TlsVec*版本相同,但它实现了零化,要求元素也实现零化。
  • TlsSliceU8, TlsSliceU16, TlsSliceU32是轻量级的切片包装器,允许在不创建TlsVec*的情况下序列化它们。
  • TlsByteSliceU8, TlsByteSliceU16, TlsByteSliceU32TlsByteVecU8, TlsByteVecU16, TlsByteVecU32提供了针对字节数组的优化实现。
  • [u8; l],其中 l ∈ [1..128]
  • Option<T> 序列化,其中 T: Serialize
  • Option<T> 反序列化,其中 T: Deserialize
  • (T, U)(T, U, V) 序列化,其中 T, U, V 实现 Serialize`
  • (T, U)(T, U, V) 反序列化,其中 T, U, V 实现 Deserialize`

最低支持的 Rust 版本

本软件包至少需要 Rust 1.60.0

我们可能会在未来更改最低支持版本,但将伴随着小版本号的增加。

许可协议

在您的选择下,受以下任一许可协议的约束

贡献

除非您明确声明,否则您提交给本作品的任何有意贡献,根据 Apache-2.0 许可证的定义,应按照上述方式双重许可,不附加任何额外条款或条件。

依赖项

~0.3–0.8MB
~19K SLoC