openmls/ciphersuite/
codec.rs1use std::io::{Read, Write};
5
6use ::tls_codec::Error;
7use tls_codec::{Deserialize, DeserializeBytes, Serialize, Size};
8
9use crate::ciphersuite::*;
10
11impl Size for Secret {
12 fn tls_serialized_len(&self) -> usize {
13 self.value.tls_serialized_len()
14 }
15}
16
17impl Serialize for Secret {
18 fn tls_serialize<W: Write>(&self, writer: &mut W) -> Result<usize, Error> {
19 self.value.tls_serialize(writer)
20 }
21}
22
23impl Deserialize for Secret {
24 fn tls_deserialize<R: Read>(bytes: &mut R) -> Result<Self, Error> {
25 let value = Vec::tls_deserialize(bytes)?;
26 Ok(Secret {
27 value: value.into(),
28 })
29 }
30}
31
32impl DeserializeBytes for Secret {
33 fn tls_deserialize_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), Error>
34 where
35 Self: Sized,
36 {
37 let mut bytes_ref = bytes;
38 let secret = Secret::tls_deserialize(&mut bytes_ref)?;
39 let remainder = &bytes[secret.tls_serialized_len()..];
40 Ok((secret, remainder))
41 }
42}