Crate tls_codec[−][src]
Expand description
RustCrypto: TLS Codec
| crates.io | docs.rs | |
|---|---|---|
| tls_codec | ||
| tls_codec_derive |
This crate implements the TLS codec as defined in RFC 8446 as well as some extensions required by MLS.
With the derive feature TlsSerialize and TlsDeserialize can be
derived.
The crate also provides the following data structures that implement TLS serialization/deserialization
u8,u16,u32,u64TlsVecU8,TlsVecU16,TlsVecU32SecretTlsVecU8,SecretTlsVecU16,SecretTlsVecU32The same as theTlsVec*versions but it implements zeroize, requiring the elements to implement zeroize as well.TlsSliceU8,TlsSliceU16,TlsSliceU32are lightweight wrapper for slices that allow to serialize them without having to create aTlsVec*.TlsByteSliceU8,TlsByteSliceU16,TlsByteSliceU32, andTlsByteVecU8,TlsByteVecU16,TlsByteVecU32are provided with optimized implementations for byte vectors.[u8; l], forl ∈ [1..128]- Serialize for
Option<T>whereT: Serialize - Deserialize for
Option<T>whereT: Deserialize - Serialize for
(T, U)and(T, U, V)whereT, U, Vimplement Serialize` - Deserialize for
(T, U)and(T, U, V)whereT, U, Vimplement Deserialize`
Minimum Supported Rust Version
This crate requires Rust 1.56 at a minimum.
We may change the MSRV in the future, but it will be accompanied by a minor version bump.
License
Licensed under either of:
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Usage
use tls_codec::{TlsVecU8, Serialize, Deserialize};
let mut b = &[1u8, 4, 77, 88, 1, 99] as &[u8];
let a = u8::tls_deserialize(&mut b).expect("Unable to tls_deserialize");
assert_eq!(1, a);
println!("b: {:?}", b);
let v = TlsVecU8::<u8>::tls_deserialize(&mut b).expect("Unable to tls_deserialize");
assert_eq!(&[77, 88, 1, 99], v.as_slice());Structs
Enums
Errors that are thrown by this crate.
Traits
The Deserialize trait defines functions to deserialize a byte slice to a
struct or enum.
The Serialize trait provides functions to serialize a struct or enum.
The Size trait needs to be implemented by any struct that should be
efficiently serialized.
This allows to collect the length of a serialized structure before allocating
memory.