use super::EncryptedExtension;
#[derive(Default)]
pub struct EncryptedExtensions {
pub extensions: Vec<EncryptedExtension>,
}
impl EncryptedExtensions {
pub fn ser(&self) -> Vec<u8> {
let mut ret: Vec<u8> = vec![0; 2];
let mut len: u16 = 0;
for extension in &self.extensions {
let data: Vec<u8> = match extension {
EncryptedExtension::ServerName(server_name) => server_name.ser(),
e => unimplemented!("Extension is unimplemented: {e:?}"),
};
ret.extend_from_slice(&data);
len = len.checked_add(data.len().try_into().unwrap()).unwrap();
}
ret[0..2].copy_from_slice(&len.to_be_bytes());
ret
}
}