use crate::{Buf, BufMut, BufResult, Codec, Cursor};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct ProtocolVersion {
pub major: u8,
pub minor: u8,
}
impl ProtocolVersion {
pub const TLS10: ProtocolVersion = ProtocolVersion {
major: 0x03,
minor: 0x01,
};
pub const TLS11: ProtocolVersion = ProtocolVersion {
major: 0x03,
minor: 0x02,
};
pub const TLS12: ProtocolVersion = ProtocolVersion {
major: 0x03,
minor: 0x03,
};
pub const TLS13: ProtocolVersion = ProtocolVersion {
major: 0x03,
minor: 0x04,
};
}
impl Codec for ProtocolVersion {
fn encode<W: BufMut>(&self, writer: &mut Cursor<W>, _: ()) -> BufResult<()> {
self.major.encode(writer, ())?;
self.minor.encode(writer, ())
}
fn decode<R: Buf>(reader: &mut Cursor<R>, _: ()) -> BufResult<Self> {
let major = u8::decode(reader, ())?;
let minor = u8::decode(reader, ())?;
Ok(Self { major, minor })
}
}
#[cfg(test)]
mod tests {
#[test]
fn test() {}
}