Ssl.Runtime_lock call non-allocating function on the C stubs and mark them with [@@noalloc] (#117).Ssl.context (#132)Ssl.native_library_version to query the underlying SSL library verion (#140)Ssl.Error: separate library number from reason code (#139, #142)Ssl.flush isn't successful (#104, #120)Ssl.Runtime_lock module. The functions in this module don't release the OCaml runtime lock. While they don't allow other OCaml threads to run concurrently, they don't perform any copying in the underlying data, leading certain workloads to be faster than their counterparts that release the lock. (#106)Ssl.output_string writes the whole string by retrying the operation with unwritten bytes (#103, #116)ERR_clear_error before the underlying OpenSSL call (#118)Ssl.Error to retrieve OpenSSL errors in a structured way (#119)Ssl.close_notify to perform a one-way shutdown (#63, #96).Add a few verification functions (#71):
add_extra_chain_cert to send additional chain certificates to the peer.add_cert_to_store: to allow verification of the peer certificate CA.set_ip: sets the expected IP address to be verified on an SSL socket.use_certificate_from_string (#71) to read any type of key (rather than just RSA).CAMLparamX and CAMLreturn calls (#90).digest function (#65, #66).client_verify_callback for NO_NAKED_POINTERS mode. A user-provided verification function in C remains an out-of-heap pointer for 4.x for compatibility, but is boxed for OCaml 5.x or 4.x when configured with --disable-naked-pointers. (#83)use_certificate_from_string (#54).get_verify_error_string, get_start_date, get_expiration_date (#57).version (#60).