Skip to content

Releases: mirleft/ocaml-tls

0.9.2

24 Aug 19:35
Compare
Choose a tag to compare

0.9.2 (2018-08-24)

  • compatibility with ppx_sexp_conv >v0.11.0 (#381), required for 4.07.0
  • support ALPN (#378, @bobbypriambodo)

0.9.1

26 Feb 12:48
Compare
Choose a tag to compare

0.9.1 (2018-02-26)

  • Tls_lwt: use Tls.Config instead of Config directly to avoid polluting imported
    names (#376, @rgrinberg)

0.9.0

23 Dec 12:44
Compare
Choose a tag to compare

0.9.0 (2017-12-23)

  • renegotiation semantics (#375)
    allow acceptable_ca, authenticator, and own_cert to be updated (Config.with_x)
    semantics of reneg is blocking
    {Tls_lwt.Unix|Tls_mirage}.reneg ~drop:bool drops data of earlier epoch
  • implement acceptable_ca (#332, @reynir)
  • fix client renegotiation with ExtendedMasterSecret (#373, broken since 0.7.0)
  • Config.client can get ~peer_name (#373)
  • Asn.Time.t is Ptime.t now (asn1-combinators.0.2.0, x509.0.6.0, #372)
  • cleanups (#360, #363, #369, @rgrinberg)
  • remove 3DES CBC SHA from default ciphers (#359)

0.8.0

01 Feb 01:06
Compare
Choose a tag to compare

0.8.0 (2017-02-01)

Beyond camlp4

21 Mar 12:04
Compare
Choose a tag to compare
  • remove camlp4 dependency (use cstruct ppx and sexplib ppx instead)

  • sort client extensions, there are servers which dislike an extension without
    data at the end, thus try to send extensions with data at the end (#319)

  • initial GCM support (#310)

  • fix 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.

  • during verification of a digitally signed: checked that the used hash
    algorithm is one of the configured ones (#313)

  • unify return type of handshake and change cipher spec handler (#314)

  • separate client and server extensions (#317)

  • type equality (no longer generative error type), use result (#318)

  • removed Printer (was barely useful)

resuming normal operations

04 Dec 23:51
Compare
Choose a tag to compare
  • session resumption (via session ID) support (#283)
    Config contains session_cache : SessionID.t -> epoch_data option
    and cached_session : epoch_data option
  • session hash and extended master secret (RFC 7627) support (#287)

semantic changes

  • disable renegotiation by default (#300)
  • stack blocks (both Mirage and Lwt) while renegotiating (#304)
  • Engine.handshake_in_progress no longer exist
  • Hex_fingerprint /Fingerprint authenticators no longer exist
  • Mirage X509 does no longer prefix keys and trust anchors with "tls/" in the path

minor fixes

  • fix concurrent read/write in tls_mirage (#303)
  • expose own_random and peer_random in epoch_data (@cfcs, #297)
  • public key pinning (X509_lwt) via Hex_key_fingerprint /Key_fingerprint (#301)
  • certificate chain and peer certificate are exposed via epoch_data (new path-building X.509 interface)

sanity and fixes

02 Jul 13:35
Compare
Choose a tag to compare

from CHANGES:

  • API: dropped 'perfect' from forward secrecy in Config.Ciphers:
    fs instead of pfs, fs_of instead of pfs_of
  • API: type epoch_data moved from Engine to Core
  • removed Cstruct_s now that cstruct (since 1.6.0) provides
    s-expression marshalling
  • require at least 1024 bit DH group, use FFDHE 2048 bit DH group
    by default instead of oakley2 (logjam)
  • more specific alerts:
    • UNRECOGNIZED_NAME: if hostname in SNI does not match
    • UNSUPPORTED_EXTENSION: if server hello has an extension not present in
      client hello
    • ILLEGAL_PARAMETER: if a parse error occured
  • encrypt outgoing alerts
  • fix off-by-one in handling empty TLS records: if a record is less than 5
    bytes, treat as a fragment. exactly 5 bytes might already be a valid
    application data frame

temporarily stable

02 May 20:53
Compare
Choose a tag to compare
  • updates to extension enum (contributed by Dave Garrett #264)
  • removed entropy feeding (done by nocrypto) #265
  • Tls_lwt file descriptor lifecycle: not eagerly close file descriptors #266

solar eclipse - special edition release

19 Mar 16:20
Compare
Choose a tag to compare
  • client authentication (both client and server side)
  • server side SNI configuration (see sni.md)
  • SCSV server-side downgrade prevention (contributed by Gabriel de Perthuis @g2p #5)
  • remove RC4 ciphers from default config #8
  • support for AEAD ciphers, currently CCM #191
  • proper bounds checking of handshake fragments #255
  • disable application data between CCS and Finished #237
  • remove secure renegotiation configuration option #256
  • expose epoch in mirage interface, implement 2.3.0 API (error_message)
  • error reporting (type failure in engine.mli) #246
  • hook into Lwt event loop to feed RNG #254

A New Dawn - After Solstice

22 Dec 08:24
Compare
Choose a tag to compare
  • X509_lwt provides Fingerprints and Hex_fingerprints constructor for checking fingerprints of certificates instead of trusting trust anchors
  • client configuration requires an authenticator
  • server certificate must be at least Config.min_rsa_key_size bits
  • expose epoch via lwt interface
  • mirage-2.2.0 compatibility
  • cleanups of mirage interface
  • nocrypto-0.3.0 compatibility