Module type
Class type

Low-level API

Unix API

It is the responsibility of the client to handle error conditions. The underlying file descriptors are not closed.

type t

Abstract type of a session

val server_of_fd : ?trace:tracer -> Tls.Config.server -> Lwt_unix.file_descr -> t Lwt.t

server_of_fd ?tracer server fd is t, after server-side TLS handshake of fd using server configuration.

val client_of_fd : ?trace:tracer -> Tls.Config.client -> host:string -> Lwt_unix.file_descr -> t Lwt.t

client_of_fd ?tracer client ~host fd is t, after client-side TLS handshake of fd using client configuration and host.

val accept : ?trace:tracer -> Tls.Config.server -> Lwt_unix.file_descr -> (t * Lwt_unix.sockaddr) Lwt.t

accept ?tracer server fd is t, sockaddr, after accepting a client on fd and upgrading to a TLS connection.

val connect : ?trace:tracer -> Tls.Config.client -> (string * int) -> t Lwt.t

connect ?tracer client (host, port) is t, after successful connection to host on port and TLS upgrade.

Common stream operations

val read : t -> Cstruct.t -> int Lwt.t

read t buffer is length, the number of bytes read into buffer.

val write : t -> Cstruct.t -> unit Lwt.t

write t buffer writes the buffer to the session.

val writev : t -> Cstruct.t list -> unit Lwt.t

writev t buffers writes the buffers to the session.

val read_bytes : t -> Lwt_bytes.t -> int -> int -> int Lwt.t

read_bytes t bytes offset len is read_bytes, the amount of bytes read.

val write_bytes : t -> Lwt_bytes.t -> int -> int -> unit Lwt.t

write_bytes t bytes offset length writes length bytes of bytes starting at offset to the session.

val close_tls : t -> unit Lwt.t

close t closes the TLS session by sending a close notify to the peer.

val close : t -> unit Lwt.t

close t closes the TLS session and the underlying file descriptor.

val reneg : t -> unit Lwt.t

reneg t renegotiates the keys of the session.

val epoch : t -> [ `Ok of Tls.Core.epoch_data | `Error ]

epoch t returns epoch, which contains information of the active session.