pub enum Hello {
Anonymous,
Krb5(Option<UserInfo>),
Local(Option<UserInfo>),
ResolverAuthenticate(SocketAddr),
Tls(Option<UserInfo>),
}Variants§
Anonymous
No authentication will be provided. The publisher may drop the connection at this point, if it chooses to allow this then it will return Anonymous.
Krb5(Option<UserInfo>)
Authenticate using kerberos 5, following the hello, the subscriber and publisher will exchange tokens to complete the authentication.
Local(Option<UserInfo>)
Authenticate using a local unix socket, only valid for publishers on the same machine as the subscriber.
ResolverAuthenticate(SocketAddr)
In order to prevent denial of service, spoofing, etc, authenticated publishers must prove that they are actually listening on the socket they claim to be listening on. To facilitate this, after a new security context has been created the resolver server will encrypt a random number with it, connect to the write address specified by the publisher, and send the encrypted token. The publisher must decrypt the token using it’s end of the security context, add 1 to the number, encrypt it again and send it back. If that round trip succeeds then the new security context will replace any old one, if it fails the new context will be thrown away and the old one will continue to be associated with the write address.
Tls(Option<UserInfo>)
Authenticate using transport layer security. In this case both the server AND the client must have certificates that are signed by a CA they mutually trust.
Trait Implementations§
Source§impl Pack for Hello
impl Pack for Hello
fn encoded_len(&self) -> usize
fn encode(&self, buf: &mut impl BufMut) -> Result<(), PackError>
fn decode(buf: &mut impl Buf) -> Result<Self, PackError>
fn const_encoded_len() -> Option<usize>
fn decode_into(&mut self, buf: &mut impl Buf) -> Result<(), PackError>where
Self: Sized,
impl Eq for Hello
impl StructuralPartialEq for Hello
Auto Trait Implementations§
impl !Freeze for Hello
impl RefUnwindSafe for Hello
impl Send for Hello
impl Sync for Hello
impl Unpin for Hello
impl UnwindSafe for Hello
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.