use crate::{
codec::{Decode, Encode},
tls::{de::De, tls_decode_wrapper::TlsDecodeWrapper, tls_encode_wrapper::TlsEncodeWrapper},
};
create_enum! {
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum ProtocolVersion<u16> {
Tls1 = (0x0301),
Tls11 = (0x0302),
Tls12 = (0x0303),
Tls13 = (0x0304)
}
}
impl<'de> Decode<'de, De> for ProtocolVersion {
#[inline]
fn decode(dw: &mut TlsDecodeWrapper<'de>) -> crate::Result<Self> {
Self::try_from(<u16 as Decode<De>>::decode(dw)?)
}
}
impl Encode<De> for ProtocolVersion {
#[inline]
fn encode(&self, ew: &mut TlsEncodeWrapper<'_>) -> crate::Result<()> {
ew.buffer().extend_from_copyable_slice(&u16::from(*self).to_be_bytes())?;
Ok(())
}
}