Struct retina_core::protocols::stream::tls::Tls

source ·
pub struct Tls {
    pub client_hello: Option<ClientHello>,
    pub server_hello: Option<ServerHello>,
    pub server_certificates: Vec<Certificate>,
    pub client_certificates: Vec<Certificate>,
    pub server_key_exchange: Option<ServerKeyExchange>,
    pub client_key_exchange: Option<ClientKeyExchange>,
    /* private fields */
}
Expand description

Parsed TLS handshake contents.

Fields§

§client_hello: Option<ClientHello>

ClientHello message.

§server_hello: Option<ServerHello>

ServerHello message.

§server_certificates: Vec<Certificate>

Server Certificate chain.

§client_certificates: Vec<Certificate>

Client Certificate chain.

§server_key_exchange: Option<ServerKeyExchange>

ServerKeyExchange message (TLS 1.2 or earlier).

§client_key_exchange: Option<ClientKeyExchange>

ClientKeyExchange message (TLS 1.2 or earlier).

Implementations§

source§

impl Tls

source

pub fn client_version(&self) -> u16

Returns the version identifier specified in the ClientHello, or 0 if no ClientHello was observed in the handshake.

§Remarks

This method returns the message protocol version identifier sent in the ClientHello message, not the record protocol version. This value may also differ from the negotiated handshake version, such as in the case of TLS 1.3.

source

pub fn client_random(&self) -> String

Returns the hex-encoded client random, or "" if no ClientHello was observed in the handshake.

source

pub fn client_ciphers(&self) -> Vec<String>

Returns the list of cipher suite names supported by the client.

See Transport Layer Security (TLS) Parameters for a list of TLS cipher suites.

source

pub fn client_compression_algs(&self) -> Vec<u8>

Returns the list of compression method identifiers supported by the client.

source

pub fn client_alpn_protocols(&self) -> &[String]

Returns the list of ALPN protocol names supported by the client.

source

pub fn client_signature_algs(&self) -> Vec<String>

Returns the list of signature algorithm names supported by the client.

See Transport Layer Security (TLS) Parameters for a list of TLS signature algorithms.

source

pub fn client_extensions(&self) -> Vec<String>

Returns the list of extension names sent by the client.

See Transport Layer Security (TLS) Extensions for a list of TLS extensions.

source

pub fn sni(&self) -> &str

Returns the name of the server the client is trying to connect to.

§Remarks

This method returns the first server name in the server name list.

source

pub fn server_version(&self) -> u16

Returns the version identifier specified in the ServerHello, or 0 if no ServerHello was observed in the handshake.

§Remarks

This method returns the message protocol version identifier sent in the ServerHello message, not the record protocol version. This value may also differ from the negotiated handshake version, such as in the case of TLS 1.3.

source

pub fn server_random(&self) -> String

Returns the hex-encoded server random, or "" if no ServerHello was observed in the handshake.

source

pub fn cipher(&self) -> String

Returns the cipher suite name chosen by the server, or "" if no ServerHello was observed in the handshake.

source

pub fn cipher_suite(&self) -> Option<&'static TlsCipherSuite>

Returns the cipher suite chosen by the server, or None if no ServerHello was observed in the handshake.

source

pub fn compression_alg(&self) -> u8

Returns the compression method identifier chosen by the server, or 0 if no ServerHello was observed in the handshake.

source

pub fn server_extensions(&self) -> Vec<String>

Returns the list of extension names sent by the server.

See Transport Layer Security (TLS) Extensions for a list of TLS extensions.

source

pub fn version(&self) -> u16

Returns the negotiated TLS handshake version identifier, or 0 if none was identified.

§Remarks

Retina supports parsing SSL 3.0 up to TLS 1.3. This method returns the negotiated handshake version identifier, even if it does not correspond to a major TLS version (e.g., a draft or bespoke version number).

source

pub fn ja3_str(&self) -> String

Returns the client JA3 string, or "" if no ClientHello was observed.

§Remarks

The JA3 string is defined as the concatenation of: TLSVersion,Ciphers,Extensions,EllipticCurves,EllipticCurvePointFormats. See salesforce/ja3 for more details.

source

pub fn ja3s_str(&self) -> String

Returns the server JA3S string, or "" if no ServerHello was observed.

§Remarks

The JA3S string is defined as the concatenation of: TLSVersion,Cipher,Extensions. See salesforce/ja3 for more details.

source

pub fn ja3_hash(&self) -> String

Returns the JA3 fingerprint.

source

pub fn ja3s_hash(&self) -> String

Returns the JA3S fingerprint.

Trait Implementations§

source§

impl Clone for Tls

source§

fn clone(&self) -> Tls

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Tls

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Tls

source§

fn default() -> Tls

Returns the “default value” for a type. Read more
source§

impl Serialize for Tls

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl Freeze for Tls

§

impl RefUnwindSafe for Tls

§

impl Send for Tls

§

impl Sync for Tls

§

impl Unpin for Tls

§

impl UnwindSafe for Tls

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.