Support ECDSA and EdDSA certificates and private keys via x509 0.12.0 and mirage-crypto-ec (#428 by @hannesm) Breaking changes:
in #414 by @hannesm
Mirage_crypto_rng_lwt.initialize () >>= fun () ->in #405 by @hannesm
close callback of Lwt_io.make whether the underlying file descriptor has been closed already. (reported and discussed by @hcarty in #395, merged #397){Tls_lwt.Unix|Tls_mirage}.reneg ~drop:bool drops data of earlier epochfix hs_can_handle_appdata (#315): Initially we allowed application data always after the first handshake.
Turns out, between CCS and Finished there is new crypto_context in place which has not yet been authenticated -- bad idea to accept application data at that point (beginning of 2015 in OCaml TLS).
The fix was to only allow application data in Established state (and block in Tls_lwt/Tls_mirage when the user requested renegotiation) (December 2015 in OCaml-TLS).
Renegotiation was also turned off by default when we introduced resumption (mid October 2015): both features together (without mitigating via session hash) allow the triple handshake.
It turns out, the server side can happily accept application data from the other side when it just sent a HelloRequest (and waits for the ClientHello; same is true for the client side, waiting for the ServerHello in renegotiation case might be interleaved with application data) to let the client initiate a new handshake. By this commit, OCaml-TLS allows application data then.
In the end, it is a pretty academic thing anyways, since nobody uses renegotiation with OCaml-TLS in the field.
session_cache : SessionID.t -> epoch_data option and cached_session : epoch_data optionEngine.handshake_in_progress no longer existHex_fingerprint / Fingerprint authenticators no longer existHex_key_fingerprint / Key_fingerprint (#301)more specific alerts:
Fingerprints and Hex_fingerprints constructor for checking fingerprints of certificates instead of trusting trust anchors #206 #207