pub trait ClientSessionStore: Send + Sync {
    fn set_kx_hint(&self, server_name: &ServerName, group: NamedGroup);
    fn kx_hint(&self, server_name: &ServerName) -> Option<NamedGroup>;
    fn set_tls12_session(
        &self,
        server_name: &ServerName,
        value: Tls12ClientSessionValue
    ); fn tls12_session(
        &self,
        server_name: &ServerName
    ) -> Option<Tls12ClientSessionValue>; fn remove_tls12_session(&self, server_name: &ServerName); fn insert_tls13_ticket(
        &self,
        server_name: &ServerName,
        value: Tls13ClientSessionValue
    ); fn take_tls13_ticket(
        &self,
        server_name: &ServerName
    ) -> Option<Tls13ClientSessionValue>; }
Expand description

A trait for the ability to store client session data, so that sessions can be resumed in future connections.

Generally all data in this interface should be treated as highly sensitive, containing enough key material to break all security of the corresponding session.

set_, insert_, remove_ and take_ operations are mutating; this isn’t expressed in the type system to allow implementations freedom in how to achieve interior mutability. Mutex is a common choice.

Required Methods

Remember what NamedGroup the given server chose.

This should return the value most recently passed to set_kx_hint for the given server_name.

If None is returned, the caller chooses the first configured group, and an extra round trip might happen if that choice is unsatisfactory to the server.

Remember a TLS1.2 session.

At most one of these can be remembered at a time, per server_name.

Get the most recently saved TLS1.2 session for server_name provided to set_tls12_session.

Remove and forget any saved TLS1.2 session for server_name.

Remember a TLS1.3 ticket that might be retrieved later from take_tls13_ticket, allowing resumption of this session.

This can be called multiple times for a given session, allowing multiple independent tickets to be valid at once. The number of times this is called is controlled by the server, so implementations of this trait should apply a reasonable bound of how many items are stored simultaneously.

Return a TLS1.3 ticket previously provided to add_tls13_ticket.

Implementations of this trait must return each value provided to add_tls13_ticket at most once.

Implementors