pub struct TlvSubTypeSsl<'s> { /* private fields */ }Expand description
A SSL TLV composer.
Implementations§
Source§impl<'s> TlvSubTypeSsl<'s>
impl<'s> TlvSubTypeSsl<'s>
Sourcepub fn done(self) -> HaProxRes<TlType<'s>>
pub fn done(self) -> HaProxRes<TlType<'s>>
When all necessary SSL sub TLVs are added, this function calculates the length of SSL TLV and writes the size.
§Returns
A HaProxRes is returned. On success the previous (root) TlType (which was consumed previously) will be returned.
Examples found in repository?
examples/example_custom_composer.rs (line 59)
46fn main()
47{
48 let addr = ProxyV2Addr::try_from(("127.0.0.1:39754", "127.0.0.67:11883")).unwrap();
49
50 let mut comp =
51 ProxyHdrV2::<HdrV2OpProxy>::new(ProxyTransportFam::STREAM, addr).unwrap();
52
53 let plts = comp.set_plts();
54
55 let mut ssl = plts.add_ssl(PP2TlvClient::PP2_CLIENT_SSL, 0).unwrap();
56
57 ssl.add_ssl_sub_version("TLSv1.2").unwrap();
58
59 let mut plts = ssl.done().unwrap();
60
61
62 let cust_plt = ProxyV2Dummy2::SomeTlvName(0x01020304, 0x05060708);
63
64 plts.add_tlv(cust_plt, Some(&[0xE0..=0xE0])).unwrap();
65
66 drop(plts);
67
68 let pkt: Vec<u8> = comp.try_into().unwrap();
69
70 let ctrl =
71b"\x0d\x0a\x0d\x0a\x00\x0d\x0a\x51\x55\x49\x54\x0a\x21\x11\x00\x29\
72\x7f\x00\x00\x01\x7f\x00\x00\x43\x9b\x4a\x2e\x6b\x20\x00\x0f\x01\
73\x00\x00\x00\x00\x21\x00\x07\x54\x4c\x53\x76\x31\x2e\x32\xE0\x00\
74\x08\x01\x02\x03\x04\x05\x06\x07\x08";
75
76 assert_eq!(pkt.as_slice(), ctrl.as_slice());
77}Sourcepub fn add_ssl_sub_version(&mut self, ver: impl Into<String>) -> HaProxRes<()>
pub fn add_ssl_sub_version(&mut self, ver: impl Into<String>) -> HaProxRes<()>
Sets the version of the SSL i,e TLSv1.2.
Examples found in repository?
examples/example_custom_composer.rs (line 57)
46fn main()
47{
48 let addr = ProxyV2Addr::try_from(("127.0.0.1:39754", "127.0.0.67:11883")).unwrap();
49
50 let mut comp =
51 ProxyHdrV2::<HdrV2OpProxy>::new(ProxyTransportFam::STREAM, addr).unwrap();
52
53 let plts = comp.set_plts();
54
55 let mut ssl = plts.add_ssl(PP2TlvClient::PP2_CLIENT_SSL, 0).unwrap();
56
57 ssl.add_ssl_sub_version("TLSv1.2").unwrap();
58
59 let mut plts = ssl.done().unwrap();
60
61
62 let cust_plt = ProxyV2Dummy2::SomeTlvName(0x01020304, 0x05060708);
63
64 plts.add_tlv(cust_plt, Some(&[0xE0..=0xE0])).unwrap();
65
66 drop(plts);
67
68 let pkt: Vec<u8> = comp.try_into().unwrap();
69
70 let ctrl =
71b"\x0d\x0a\x0d\x0a\x00\x0d\x0a\x51\x55\x49\x54\x0a\x21\x11\x00\x29\
72\x7f\x00\x00\x01\x7f\x00\x00\x43\x9b\x4a\x2e\x6b\x20\x00\x0f\x01\
73\x00\x00\x00\x00\x21\x00\x07\x54\x4c\x53\x76\x31\x2e\x32\xE0\x00\
74\x08\x01\x02\x03\x04\x05\x06\x07\x08";
75
76 assert_eq!(pkt.as_slice(), ctrl.as_slice());
77}Sourcepub fn add_ssl_sub_cn(&mut self, cn: impl Into<String>) -> HaProxRes<()>
pub fn add_ssl_sub_cn(&mut self, cn: impl Into<String>) -> HaProxRes<()>
Sets the Common Name field.
Sourcepub fn add_ssl_sub_cipher(&mut self, ver: impl Into<String>) -> HaProxRes<()>
pub fn add_ssl_sub_cipher(&mut self, ver: impl Into<String>) -> HaProxRes<()>
Sets the Cipher type i.e “ECDHE-RSA-AES128-GCM-SHA256”
Sourcepub fn add_ssl_sub_sigalg(&mut self, ver: impl Into<String>) -> HaProxRes<()>
pub fn add_ssl_sub_sigalg(&mut self, ver: impl Into<String>) -> HaProxRes<()>
Sets the signature algorithm i.e “SHA256”
Trait Implementations§
Auto Trait Implementations§
impl<'s> Freeze for TlvSubTypeSsl<'s>
impl<'s> RefUnwindSafe for TlvSubTypeSsl<'s>
impl<'s> Send for TlvSubTypeSsl<'s>
impl<'s> Sync for TlvSubTypeSsl<'s>
impl<'s> Unpin for TlvSubTypeSsl<'s>
impl<'s> !UnwindSafe for TlvSubTypeSsl<'s>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more