=================================================================== RCS file: /cvsrepo/anoncvs/cvs/www/69.html,v retrieving revision 1.37 retrieving revision 1.38 diff -u -r1.37 -r1.38 --- www/69.html 2021/04/14 21:11:50 1.37 +++ www/69.html 2021/04/15 14:06:07 1.38 @@ -1118,54 +1118,425 @@
  • API and Documentation Enhancements
  • Compatibility Changes
  • Testing and Proactive Security
  • Internal Improvements +
  • Further cleanup of the DTLS record handling. -
  • Portable Improvements - +
  • Continue the replacement of the TLSv1.2 record layer by + reimplementing the read side of the TLSv1.2 record handling. +
  • Replace DTLSv1_enc_data() with TLSv1_1_enc_data(). + +
  • Merge d1_{clnt,srvr}.c into ssl_{clnt,srvr}.c. + +
  • Add const to ssl_ciphers and tls1[23]_sigalgs* to push them into + .data.rel.ro and .rodata, respectively. + +
  • Add a const qualifier to srtp_known_profiles. + +
  • Simplify TLS method by removing the client and server specific + methods internally. + +
  • Avoid casting away const in ssl_ctx_make_profiles(). + +
  • Avoid explicitly conditioning an assert on DTLS1_VERSION to make + the assert work for newer DTLS versions. + +
  • Merge SSL_ENC_METHOD into SSL_METHOD_INTERNAL. + +
  • Add a flag to mark DTLS methods as DTLS to have an easy way to + recognize DTLS methods that avoids inspecting the version number. + +
  • Mark a few more internal static tables const. + +
  • Switch finish{,_peer}_md_len from an int to a size_t. + +
  • Use EVP_MD_MAX_MD_SIZE instead of 2 * EVP_MD_MAX_MD_SIZE as size + for cert_verify_md[], finish_md[] and peer_finish_md[]. The factor 2 + was a historical artefact. + +
  • Free struct members in tls13_record_layer_free() in their natural + order for reviewability. + +
  • Use consistent names in tls13_{client,server}_finished_{recv,send}(). + +
  • Add tls13_secret_{init,cleanup}() and use them throughout the + TLSv1.3 code base. + +
  • Move the read MAC key into the TLSv1.2 record layer. + +
  • Make tls12_record_layer_free() NULL safe. + +
  • Split the record protection from the TLSv1.2 record layer. + +
  • Clean up sequence number handling in the new TLSv1.2 record layer. + +
  • Clean up sequence number handling in DTLS. + +
  • Clean up dtls1_reset_seq_numbers(). + +
  • Factor out code for explicit IV length, block size and MAC length + from tls12_record_layer_open_record_protected_cipher(). + +
  • Provide record layer overhead for DTLS. + +
  • Provide functions to determine if TLSv1.2 record protection is + engaged. + +
  • Add code to handle change of cipher state in the new TLSv1.2 record + layer. + +
  • Mop up now unused dtls1_build_sequence_numbers() function. + +
  • Allow setting a keypair on a tls context without specifying the + private key, and fake it internally in libtls. This removes the + need for privsep engines like relayd to use bogus keys. + +
  • Skip the private key check for fake private keys. + +
  • Move the private key setup from tls_configure_ssl_keypair() to a + helper function with proper error checking. + +
  • Change the internal tls_configure_ssl_keypair() function to + return -1 instead of 1 on failure. + +
  • Move sequence numbers into the new TLSv1.2 record layer. + +
  • Move AEAD handling into the new TLSv1.2 record layer. + +
  • Factor out legacy stack version checks. + +
  • Correct handshake MAC/PRF for various TLSv1.2 cipher suites which + were originally added with the default handshake MAC and PRF rather + than the SHA256 handshake MAC and PRF. + +
  • Absorb ssl3_get_algorithm2() into ssl_get_handshake_evp_md(). + +
  • Use dtls1_record_retrieve_buffered_record() to load buffered + application data. + +
  • Enforce read ahead with DTLS. + +
  • Remove bogus DTLS checks that disabled ECC and OCSP. + +
  • Clean up and simplify dtls1_get_cipher(). + +
  • Group HelloVerifyRequest decoding and add missing check for trailing + data. + +
  • Revise HelloVerifyRequest handling for DTLSv1.2. + +
  • Handle DTLS1_2_VERSION in various places. + +
  • Rename the "truncated" label into "decode_err" and the "f_err" + label into "fatal_err". + +
  • Factor out and change some of the legacy client version code. + +
  • Simplify version checks in the TLSv1.3 client. Ensure that the + server announced TLSv1.3 and nothing higher and check that the + legacy_version is set to TLSv1.2 as required by RFC 8446. + +
  • Only use TLS versions internally rather than both TLS and DTLS + versions since the latter are the one's complement of the human + readable version numbers, which means that newer versions decrease + in value. + +
  • Identify DTLS based on the version major value. + +
  • Move handling of cipher/hash based cipher suites into the new record + layer. + +
  • Add tls12_record_protection_unused() and call it from CCS functions. + +
  • Move key/IV length checks closer to usage sites. Also add explicit + checks against EVP_CIPHER_{iv,key}_length(). + +
  • Replace two handrolled tls12_record_protection_engaged(). + +
  • Improve internal version handling: add handshake fields for our + minimum version, our maximum version and the TLS version negotiated + during the handshake. Convert most of the internal code to use these + version fields. + +
  • Guard against future internal use of TLS1_get_{client,}_version() + macros. + +
  • Remove the internal ssl_downgrade_max_version() function which is no + longer needed. + +
  • Add support for DTLSv1.2 version handling. + +
  • Remove no longer needed read ahead workarounds in the s_client and + s_server. + +
  • Split TLSv1.3 record protection from record layer. + +
  • Move the TLSv1.3 handshake struct inside the shared handshake + struct. + +
  • Fully initialize rrec in tls12_record_layer_open_record_protected() + to avoid confusing some static analyzers. + +
  • Use tls_set_errorx() on OCSP_basic_verify() failure since the latter + does not set errno. + +
  • Convert openssl(1) x509 to new option handling and do the usual + clean up that goes along with it. + +
  • Add SSL_HANDSHAKE_TLS12 for TLSv1.2 specific handshake data. + +
  • Rename new_cipher to cipher to align naming with keyblock or other + parts of the handshake data. + +
  • Move the TLSv1.2 record number increment into the new record layer. + +
  • Move finished and peer finished into the handshake struct. + +
  • Remove pointless assignment in SSL_get0_alpn_selected(). + +
  • Add some error checking to openssl(1) x509. + +
  • Bug Fixes