Tls_mirage.MakeTLS module given a flow
type error = [ | `Tls_alert of Tls.Packet.alert_type| `Tls_failure of Tls.Engine.failure| `Read of F.error| `Write of F.write_error ]possible errors: incoming alert, processing failure, or a problem in the underlying flow.
The type for write errors.
we provide the FLOW interface
include Mirage_flow.S
with type error := error
and type write_error := write_errorval pp_error : error Fmt.tval pp_write_error : write_error Fmt.tval write : flow -> Cstruct.t -> (unit, write_error) Stdlib.result Lwt.tval writev : flow -> Cstruct.t list -> (unit, write_error) Stdlib.result Lwt.tval shutdown : flow -> [ `read | `read_write | `write ] -> unit Lwt.tval close : flow -> unit Lwt.tval underlying : flow -> F.flowunderlying t returns the underlying flow. This is useful to extract information such as src and dst of that flow.
val reneg :
?authenticator:X509.Authenticator.t ->
?acceptable_cas:X509.Distinguished_name.t list ->
?cert:Tls.Config.own_cert ->
?drop:bool ->
flow ->
(unit, [ write_error | `Msg of string ]) Stdlib.result Lwt.treneg ~authenticator ~acceptable_cas ~cert ~drop t renegotiates the session, and blocks until the renegotiation finished. Optionally, a new authenticator and acceptable_cas can be used. The own certificate can be adjusted by cert. If drop is true (the default), application data received before the renegotiation finished is dropped.
val key_update :
?request:bool ->
flow ->
(unit, [ write_error | `Msg of string ]) Stdlib.result Lwt.tkey_update ~request t updates the traffic key and requests a traffic key update from the peer if request is provided and true (the default). This is only supported in TLS 1.3.
val client_of_flow :
Tls.Config.client ->
?host:[ `host ] Domain_name.t ->
F.flow ->
(flow, write_error) Stdlib.result Lwt.tclient_of_flow client ~host flow upgrades the existing connection to TLS using the client configuration, using host as peer name.
val server_of_flow :
Tls.Config.server ->
F.flow ->
(flow, write_error) Stdlib.result Lwt.tserver_of_flow server flow upgrades the flow to a TLS connection using the server configuration.
val epoch : flow -> (Tls.Core.epoch_data, unit) Stdlib.resultepoch flow extracts information of the established session.