[openssl/openssl] 1cdd85: Adds initial dtls 1.3 structs and definitions

"'Matt Caswell' via openssl-commits" <[email protected]>
Newsgroups gmane.comp.encryption.openssl.cvs
Message-ID <openssl/openssl/push/refs/heads/feature/dtls-1.3/[email protected]>
  Branch: refs/heads/feature/dtls-1.3
  Home:   https://github.com/openssl/openssl
  Commit: 1cdd859f69ff329e499d277ed68ed0136b8ed238
      https://github.com/openssl/openssl/commit/1cdd859f69ff329e499d277ed68ed0136b8ed238
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M include/openssl/prov_ssl.h
    M include/openssl/ssl.h.in
    M ssl/d1_lib.c
    M ssl/methods.c
    M ssl/record/methods/recmethod_local.h
    M ssl/record/methods/tls13_meth.c
    M ssl/ssl_local.h

  Log Message:
  -----------
  Adds initial dtls 1.3 structs and definitions

Reviewed-by: Neil Horman <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Richard Levitte <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22259)


  Commit: 2e2acbd3d5dd2b9057cc4a0488f18e6640a2e876
      https://github.com/openssl/openssl/commit/2e2acbd3d5dd2b9057cc4a0488f18e6640a2e876
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/methods.c

  Log Message:
  -----------
  Remove compile guards for dtls1.3 method implementations

Reviewed-by: Neil Horman <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Richard Levitte <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22259)


  Commit: 61b171a3f2ed4633a89df662594a09db30c0b5a5
      https://github.com/openssl/openssl/commit/61b171a3f2ed4633a89df662594a09db30c0b5a5
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M apps/include/opt.h
    M apps/lib/s_cb.c
    M apps/s_client.c
    M apps/s_server.c

  Log Message:
  -----------
  Integrate dtls1.3 in s_client and s_server

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22260)


  Commit: 934393a9d8808b96da3012b436031e5fdce3168e
      https://github.com/openssl/openssl/commit/934393a9d8808b96da3012b436031e5fdce3168e
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M doc/man1/openssl-s_client.pod.in
    M doc/man1/openssl-s_server.pod.in
    M doc/man1/openssl.pod
    M doc/perlvars.pm

  Log Message:
  -----------
  Adds DTLS 1.3 functionality to s_client and s_server documentation.

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22260)


  Commit: 7eff8b3a334b43469e2f517cdf8304a2b140dafe
      https://github.com/openssl/openssl/commit/7eff8b3a334b43469e2f517cdf8304a2b140dafe
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M apps/s_client.c

  Log Message:
  -----------
  Print session ticket for dtls 1.3 as well.

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22260)


  Commit: b85749926bbae534aca0763919b77e0de8474b32
      https://github.com/openssl/openssl/commit/b85749926bbae534aca0763919b77e0de8474b32
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/statem/extensions.c
    M ssl/statem/extensions_clnt.c
    M ssl/statem/extensions_srvr.c

  Log Message:
  -----------
  Support TLS1.3 extensions with DTLS1.3

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22261)


  Commit: b889021f64c96223e2c759057326ae12a7278216
      https://github.com/openssl/openssl/commit/b889021f64c96223e2c759057326ae12a7278216
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/tls13_enc.c

  Log Message:
  -----------
  Use dtls1.3 cryptographic label prefix as dictated by RFC 9147 section 5.9

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22416)


  Commit: b35da589025d08e967050675edfe2426f56d3e81
      https://github.com/openssl/openssl/commit/b35da589025d08e967050675edfe2426f56d3e81
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/tls13_enc.c

  Log Message:
  -----------
  Determine which label prefix to use based on if the connection is dtls

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22416)


  Commit: cb371b8c8f1af86f238fca0f1040a1ca0a2f2111
      https://github.com/openssl/openssl/commit/cb371b8c8f1af86f238fca0f1040a1ca0a2f2111
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/ssl_conf.c
    M ssl/t1_trce.c
    M test/helpers/ssl_test_ctx.c
    M test/ssl_old_test.c

  Log Message:
  -----------
  Adds DTLS1.3 to ssl protocol to text structs

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22273)


  Commit: 75a9bde61d7ab1a763d51d538a60e102fc4a4ee1
      https://github.com/openssl/openssl/commit/75a9bde61d7ab1a763d51d538a60e102fc4a4ee1
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/ssl_lib.c

  Log Message:
  -----------
  Add dtls1.3 to ssl_protocol_to_string()

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22273)


  Commit: cc2ab50bbf7772434103b9fd53b73a3974eba0f3
      https://github.com/openssl/openssl/commit/cc2ab50bbf7772434103b9fd53b73a3974eba0f3
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/ssl_conf.c

  Log Message:
  -----------
  Fix protocol list for cmd_Protocol()

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22273)


  Commit: d448895af5d57f12a8d27a03326917692218dece
      https://github.com/openssl/openssl/commit/d448895af5d57f12a8d27a03326917692218dece
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/statem/statem.c
    M ssl/statem/statem_clnt.c
    M ssl/statem/statem_lib.c
    M ssl/statem/statem_srvr.c

  Log Message:
  -----------
  Update tls state machine logic to support dtls1.3 alongside tls1.3

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22366)

Updated the logic in ssl_cipher_list_to_bytes to take account of the changes
from PR#24161

Reviewed-by: Richard Levitte <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/24226)


  Commit: 9500d423beb79fd4d30be8b4cec676dd42557540
      https://github.com/openssl/openssl/commit/9500d423beb79fd4d30be8b4cec676dd42557540
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/statem/statem_clnt.c
    M ssl/statem/statem_srvr.c

  Log Message:
  -----------
  Fix sending session ids in DTLS-1.3

DTLS 1.3 session id must not be sent by client unless
it has a cached id. And DTLS 1.3 servers must not echo
a session id from a client.

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22366)


  Commit: 755e2e16196bd3710b9d9e8bcda37eaea8a792ab
      https://github.com/openssl/openssl/commit/755e2e16196bd3710b9d9e8bcda37eaea8a792ab
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/ssl_local.h
    M ssl/statem/extensions_srvr.c
    M ssl/statem/statem.c
    M ssl/statem/statem_clnt.c
    M ssl/statem/statem_lib.c
    M ssl/statem/statem_srvr.c

  Log Message:
  -----------
  Do DTLS13 and TLS13 connection version check in one macro

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22366)


  Commit: de8d3807de7b24a16602dad4e0256f8a23e5e66a
      https://github.com/openssl/openssl/commit/de8d3807de7b24a16602dad4e0256f8a23e5e66a
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/statem/statem_srvr.c

  Log Message:
  -----------
  Fix wrong dtls 1 and 1.2 version check

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22366)


  Commit: 0ed4e8d262a526950c35dd762aef540b5dd0c67d
      https://github.com/openssl/openssl/commit/0ed4e8d262a526950c35dd762aef540b5dd0c67d
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M providers/common/capabilities.c
    M ssl/s3_lib.c
    M ssl/statem/extensions.c
    M ssl/statem/extensions_clnt.c
    M ssl/statem/extensions_srvr.c
    M ssl/t1_lib.c

  Log Message:
  -----------
  Support TLS 1.3 kexs and groups with DTLS 1.3

SSL_CONNECTION_IS_VERSION13 macro is used where appropriate.

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22364)


  Commit: eb80f548ef08efd679a0d38225a8960f75f6c6ec
      https://github.com/openssl/openssl/commit/eb80f548ef08efd679a0d38225a8960f75f6c6ec
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M util/perl/TLSProxy/Record.pm
    M util/perl/TLSProxy/ServerHello.pm

  Log Message:
  -----------
  Adds dtls 1.3 support in TLS::Proxy

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/23375)


  Commit: 85b78fb44c1193fd661502bc57cb70745730d0bd
      https://github.com/openssl/openssl/commit/85b78fb44c1193fd661502bc57cb70745730d0bd
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M apps/include/s_apps.h

  Log Message:
  -----------
  Don't allow renegotiation for DTLS 1.3

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22362)


  Commit: ca4d660d302766994b699e399736937b9df69d80
      https://github.com/openssl/openssl/commit/ca4d660d302766994b699e399736937b9df69d80
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/record/rec_layer_d1.c

  Log Message:
  -----------
  Make dtls1.3 changes to dtls1_read_bytes and do_dtls1_write which matches ssl3_read_bytes and ssl3_write_bytes

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22360)


  Commit: e27e56aea97f7348d577f01e9b0a1a709f4b391d
      https://github.com/openssl/openssl/commit/e27e56aea97f7348d577f01e9b0a1a709f4b391d
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/record/methods/dtls_meth.c

  Log Message:
  -----------
  Adds some more changes dtls specific functions to make them more in sync with their tls counterparts.

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22360)


  Commit: ded75f8ef7719cdc72f2423dfeefa27b14c2c155
      https://github.com/openssl/openssl/commit/ded75f8ef7719cdc72f2423dfeefa27b14c2c155
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/statem/statem_dtls.c

  Log Message:
  -----------
  Make similar changes to dtls1_do_write() for dtls1.3 as in ssl3_do_write() for tls1.3

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22360)


  Commit: 26467db6b003c20927ef35ebb4fa2d3973ec8822
      https://github.com/openssl/openssl/commit/26467db6b003c20927ef35ebb4fa2d3973ec8822
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/record/rec_layer_d1.c

  Log Message:
  -----------
  Handle alerts similarly in dtls1_read_bytes() as done in ssl3_read_bytes()

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22360)


  Commit: 5c0461db7566684e0c30371be398a2be64612778
      https://github.com/openssl/openssl/commit/5c0461db7566684e0c30371be398a2be64612778
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/t1_lib.c

  Log Message:
  -----------
  Support TLS1.3 sigalg logic in DTLS1.3

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22380)


  Commit: 114f16cedb685c1bc6f7db90b0146daddfa27235
      https://github.com/openssl/openssl/commit/114f16cedb685c1bc6f7db90b0146daddfa27235
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/statem/statem_dtls.c

  Log Message:
  -----------
  Removes an mtu assertion that fails

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22401)


  Commit: 959a2f7bccfca318ac1e869e8d2b0fd017dc064c
      https://github.com/openssl/openssl/commit/959a2f7bccfca318ac1e869e8d2b0fd017dc064c
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/ssl_sess.c
    M ssl/t1_lib.c
    M ssl/t1_trce.c

  Log Message:
  -----------
  Update session id and ticket logic for dtls13

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22936)


  Commit: 60b771d789da3c59ae8286b77b26da96cd9d6750
      https://github.com/openssl/openssl/commit/60b771d789da3c59ae8286b77b26da96cd9d6750
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/ssl_txt.c

  Log Message:
  -----------
  Fix session print for dtls1.3

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22936)


  Commit: 85d3ff50fd7bc880f225bb74ac4c4a20c3c71812
      https://github.com/openssl/openssl/commit/85d3ff50fd7bc880f225bb74ac4c4a20c3c71812
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/record/methods/tls_common.c
    M ssl/record/methods/tlsany_meth.c

  Log Message:
  -----------
  tls_post_encryption_processing_default() and tls_validate_record_header()

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22376)


  Commit: 257990f2e56f8c3b5dd6b0a033e17a87d87b2e21
      https://github.com/openssl/openssl/commit/257990f2e56f8c3b5dd6b0a033e17a87d87b2e21
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/ssl_lib.c

  Log Message:
  -----------
  Fix ssl_lib functions for dtls 1.3

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22378)


  Commit: 4f6b66723ea9f9462a78e448654c08f9d12b4ed7
      https://github.com/openssl/openssl/commit/4f6b66723ea9f9462a78e448654c08f9d12b4ed7
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/s3_lib.c
    M ssl/statem/statem_lib.c

  Log Message:
  -----------
  Sanity tests of inputs to ssl_version_cmp

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/24293)


  Commit: 9840c41001dd8115ea0699a2df67d5908e27b8b3
      https://github.com/openssl/openssl/commit/9840c41001dd8115ea0699a2df67d5908e27b8b3
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/statem/statem_lib.c
    M ssl/t1_lib.c

  Log Message:
  -----------
  Fix sanity tests for ssl_version_cmp for dtls 1.3 branch

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/24293)


  Commit: ef622d31020cd7e4d3d0bfbad1ece9c131c320c1
      https://github.com/openssl/openssl/commit/ef622d31020cd7e4d3d0bfbad1ece9c131c320c1
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M include/openssl/dtls1.h
    M ssl/ssl_local.h
    M ssl/statem/statem_clnt.c
    M ssl/statem/statem_lib.c

  Log Message:
  -----------
  Update dtls max version

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22275)


  Commit: 0257e6e9519254f115be2c80c2c749ffcf4fbab6
      https://github.com/openssl/openssl/commit/0257e6e9519254f115be2c80c2c749ffcf4fbab6
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/statem/statem_clnt.c

  Log Message:
  -----------
  Remove obsolete TODO and guards for post handshake authentication in DTLS 1.3

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22275)


  Commit: 10313fa22c334ac66cf59319cd2f87a0e15677d9
      https://github.com/openssl/openssl/commit/10313fa22c334ac66cf59319cd2f87a0e15677d9
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/ssl_lib.c
    M test/ssl_ctx_test.c

  Log Message:
  -----------
  Update DTLS version tests

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22275)


  Commit: 8e89c73c19b52c9ebbd8bb29ee57035ef2065540
      https://github.com/openssl/openssl/commit/8e89c73c19b52c9ebbd8bb29ee57035ef2065540
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/statem/statem_lib.c

  Log Message:
  -----------
  Fix version check to avoid unsupported protocol error in ssl_choose_server_version()

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22275)


  Commit: e3912df19083ad6ae86505fbcfd55c1a328bd627
      https://github.com/openssl/openssl/commit/e3912df19083ad6ae86505fbcfd55c1a328bd627
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/statem/extensions_clnt.c

  Log Message:
  -----------
  Fix renegotiation check that was added in https://github.com/openssl/openssl/pull/24161

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22275)


  Commit: 7d2787c9d82c95169c2eb588e96b0a3d437e554e
      https://github.com/openssl/openssl/commit/7d2787c9d82c95169c2eb588e96b0a3d437e554e
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M fuzz/dtlsclient.c
    M test/dtls_mtu_test.c
    M test/dtlstest.c
    M test/ssl-tests/29-dtls-sctp-label-bug.cnf
    M test/ssl-tests/29-dtls-sctp-label-bug.cnf.in

  Log Message:
  -----------
  Run some failing tests with DTLS1.2

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22275)


  Commit: 805003c8343de4f903baa85e4647cfb534e32eef
      https://github.com/openssl/openssl/commit/805003c8343de4f903baa85e4647cfb534e32eef
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/ssl-tests/07-dtls-protocol-version.cnf
    M test/ssl-tests/11-dtls_resumption.cnf
    M test/ssl-tests/protocol_version.pm

  Log Message:
  -----------
  Fix test_ssl_new tests

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22275)


  Commit: 5e1aae2c30f5fc783b7e6ac7faa9d4211fbee4f3
      https://github.com/openssl/openssl/commit/5e1aae2c30f5fc783b7e6ac7faa9d4211fbee4f3
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/statem/extensions.c
    M ssl/statem/extensions_clnt.c
    M ssl/statem/extensions_srvr.c

  Log Message:
  -----------
  Check that both tls1.3 and dtls1.3 is disabled before removing code from compilation path.

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22275)


  Commit: 58d4c249e855a8a03be9db65dffb6cae71385efb
      https://github.com/openssl/openssl/commit/58d4c249e855a8a03be9db65dffb6cae71385efb
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/ssl_local.h
    M ssl/statem/statem_clnt.c
    M ssl/statem/statem_lib.c
    M ssl/statem/statem_srvr.c

  Log Message:
  -----------
  Disable middlebox for dtls

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22275)


  Commit: fed4e9affbffe7e200b0e1148aa893e2e6beca2b
      https://github.com/openssl/openssl/commit/fed4e9affbffe7e200b0e1148aa893e2e6beca2b
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/tls13_enc.c
    M test/tls13secretstest.c

  Log Message:
  -----------
  Clear old messages from queues in order to avoid leaks of record layer objects.

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22275)


  Commit: f89fa59ca487d6d823ded5d04b7372a376169ff1
      https://github.com/openssl/openssl/commit/f89fa59ca487d6d823ded5d04b7372a376169ff1
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/t1_trce.c

  Log Message:
  -----------
  Correct traces for certificates in dtls13

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22935)


  Commit: 9293922c4b277b27c7be09e9c14b129bbbf9df4d
      https://github.com/openssl/openssl/commit/9293922c4b277b27c7be09e9c14b129bbbf9df4d
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M doc/man1/openssl-s_client.pod.in
    M doc/man3/SSL_CIPHER_get_name.pod
    M doc/man3/SSL_CONF_cmd.pod
    M doc/man3/SSL_CTX_set0_CA_list.pod
    M doc/man3/SSL_CTX_set1_sigalgs.pod
    M doc/man3/SSL_CTX_set_min_proto_version.pod
    M doc/man3/SSL_CTX_set_num_tickets.pod
    M doc/man3/SSL_CTX_set_options.pod
    M doc/man3/SSL_check_chain.pod
    M doc/man3/SSL_export_keying_material.pod
    M doc/man3/SSL_get_shared_sigalgs.pod
    M doc/man3/SSL_get_version.pod

  Log Message:
  -----------
  Update documentation for DTLS1.3

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22363)


  Commit: be6820ef3c07e5f49840de16f1ff00f7959e5e88
      https://github.com/openssl/openssl/commit/be6820ef3c07e5f49840de16f1ff00f7959e5e88
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M doc/man3/SSL_CONF_cmd.pod

  Log Message:
  -----------
  Updates SSL_CONF_cmd.pod to be explicit when features are for both TLS and DTLS

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22363)


  Commit: e15f139073266bfde0ee90c7ffb25e4ca05d341d
      https://github.com/openssl/openssl/commit/e15f139073266bfde0ee90c7ffb25e4ca05d341d
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/ssl_local.h

  Log Message:
  -----------
  Fix description of version field of ssl connection struct

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22937)


  Commit: aef9d62f838ce8540fa49ec2ab32750db340c9e9
      https://github.com/openssl/openssl/commit/aef9d62f838ce8540fa49ec2ab32750db340c9e9
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/statem/statem_srvr.c

  Log Message:
  -----------
  Continue processing cookieless client hellos for dtls1.3

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/22400)


  Commit: 6038520c43707359d2fa202560644898265c5a9a
      https://github.com/openssl/openssl/commit/6038520c43707359d2fa202560644898265c5a9a
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/ssl-tests/02-protocol-version.cnf
    M test/ssl-tests/07-dtls-protocol-version.cnf
    M test/ssl-tests/10-resumption.cnf
    M test/ssl-tests/protocol_version.pm

  Log Message:
  -----------
  Adds DTLSv1.3 to protocol_version.pm for additional protocol version tests.

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/23242)


  Commit: cd6af904b4aa07388a7c471a88e1cfd92ca369b2
      https://github.com/openssl/openssl/commit/cd6af904b4aa07388a7c471a88e1cfd92ca369b2
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/dtlstest.c
    M test/sslapitest.c

  Log Message:
  -----------
  Run test_cookie() test with DTLS 1.3

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/24425)


  Commit: 9a1c268adb2afb4dcadf060553ecd8bc985ecc66
      https://github.com/openssl/openssl/commit/9a1c268adb2afb4dcadf060553ecd8bc985ecc66
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    A doc/designs/dtlsv1_3/dtlsv1_3-main.md

  Log Message:
  -----------
  Add design document for DTLS 1.3 implementation

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/23041)


  Commit: 558036d7b098cbd2f3deec21d73c96f17100d47b
      https://github.com/openssl/openssl/commit/558036d7b098cbd2f3deec21d73c96f17100d47b
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M apps/s_client.c
    M apps/s_server.c
    M ssl/record/methods/tls_common.c
    M ssl/ssl_cert.c
    M ssl/ssl_ciph.c
    M ssl/ssl_lib.c
    M ssl/ssl_local.h
    M ssl/statem/extensions.c
    M ssl/statem/extensions_clnt.c
    M ssl/statem/extensions_srvr.c
    M ssl/statem/statem_clnt.c
    M ssl/statem/statem_lib.c
    M ssl/t1_lib.c
    M test/sslapitest.c

  Log Message:
  -----------
  Refactor code and fix a couple of missing DTLSv1.3 checks.

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/24345)


  Commit: 4a7b6dbf6bc170e3227841e305a6753f1b0e8b6c
      https://github.com/openssl/openssl/commit/4a7b6dbf6bc170e3227841e305a6753f1b0e8b6c
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/record/methods/dtls_meth.c
    M ssl/statem/statem_dtls.c

  Log Message:
  -----------
  Re-enable mtu assertion which previously failed for DTLS 1.3

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/24524)


  Commit: dfc896b6ce2f0a1d9a0795392b20b8979f889200
      https://github.com/openssl/openssl/commit/dfc896b6ce2f0a1d9a0795392b20b8979f889200
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M crypto/packet.c
    M include/internal/common.h
    M include/internal/packet.h
    M ssl/statem/extensions.c
    M ssl/statem/extensions_clnt.c
    M ssl/statem/statem_dtls.c
    M ssl/statem/statem_lib.c
    M test/dtls_mtu_test.c
    M test/ssl-tests/29-dtls-sctp-label-bug.cnf.in

  Log Message:
  -----------
  Place start of ClientHello correctly when calculating binder for DTLS 1.3

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/24426)


  Commit: 0e9e2aa587d5a6bae90b7022205e2a524f79fb3a
      https://github.com/openssl/openssl/commit/0e9e2aa587d5a6bae90b7022205e2a524f79fb3a
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/statem/statem_dtls.c

  Log Message:
  -----------
  Use WPACKET in dtls1_do_write()

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/24426)


  Commit: 07bb83241154c9a3a80106f58ff88a2a05d7d609
      https://github.com/openssl/openssl/commit/07bb83241154c9a3a80106f58ff88a2a05d7d609
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M fuzz/dtlsclient.c
    M ssl/d1_lib.c
    M ssl/ssl_local.h
    M ssl/statem/extensions_clnt.c
    M ssl/statem/statem_clnt.c
    M ssl/statem/statem_lib.c
    M test/dtlstest.c

  Log Message:
  -----------
  Fix an assertion failure which happens when a DTLS 1.3 client receives a HelloVerifyRequest.

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Viktor Dukhovni <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/24509)


  Commit: 0224540f83e6395c0b4fc9d3b61a50f2ab2c7311
      https://github.com/openssl/openssl/commit/0224540f83e6395c0b4fc9d3b61a50f2ab2c7311
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M Configure
    M test/recipes/70-test_tls13alerts.t
    M util/perl/TLSProxy/Message.pm
    M util/perl/TLSProxy/Proxy.pm
    M util/perl/TLSProxy/Record.pm
    M util/perl/TLSProxy/ServerKeyExchange.pm

  Log Message:
  -----------
  Run 70-test_tls13alerts.t with dtls

Reviewed-by: Viktor Dukhovni <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/24525)


  Commit: 85986f75f8f0c3dc77c1a7386f1b491efb47c8b3
      https://github.com/openssl/openssl/commit/85986f75f8f0c3dc77c1a7386f1b491efb47c8b3
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/recipes/70-test_tls13cookie.t

  Log Message:
  -----------
  Run 70-test_tls13cookie.t with dtls

Reviewed-by: Viktor Dukhovni <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/24525)


  Commit: 57ac96466d2e763fcecd0446c5119ff88ff8eefc
      https://github.com/openssl/openssl/commit/57ac96466d2e763fcecd0446c5119ff88ff8eefc
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/recipes/70-test_tls13hrr.t

  Log Message:
  -----------
  Run 70-test_tls13hrr.t with dtls

Reviewed-by: Viktor Dukhovni <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/24525)


  Commit: 65532867a52997400927203196ffa5a1596d80f7
      https://github.com/openssl/openssl/commit/65532867a52997400927203196ffa5a1596d80f7
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/recipes/70-test_tls13psk.t

  Log Message:
  -----------
  Add support for running 70-test_tls13psk.t with dtls

Has to be currently disabled because it fails.

Reviewed-by: Viktor Dukhovni <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/24525)


  Commit: fa3d2435dc68efd7bf1928f5555aed16054195af
      https://github.com/openssl/openssl/commit/fa3d2435dc68efd7bf1928f5555aed16054195af
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/recipes/70-test_tls13messages.t

  Log Message:
  -----------
  Run 70-test_tls13messages.t with dtls

Reviewed-by: Viktor Dukhovni <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/24525)


  Commit: d77d1c0901a64d5c9c51e9e8aa97c078ae46189c
      https://github.com/openssl/openssl/commit/d77d1c0901a64d5c9c51e9e8aa97c078ae46189c
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/recipes/70-test_tls13kexmodes.t

  Log Message:
  -----------
  Run 70-test_tls13kexmodes.t with dtls

It is currently unsupported because of missing support in TLSProxy.

Reviewed-by: Viktor Dukhovni <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/24525)


  Commit: e0e4ea56cc4c62adabd1f495ca9764315ebb8e71
      https://github.com/openssl/openssl/commit/e0e4ea56cc4c62adabd1f495ca9764315ebb8e71
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/recipes/70-test_tls13alerts.t
    M test/recipes/70-test_tls13certcomp.t
    M test/recipes/70-test_tls13cookie.t
    M test/recipes/70-test_tls13hrr.t
    M test/recipes/70-test_tls13psk.t

  Log Message:
  -----------
  Run 70-test_tls13certcomp.t with dtls

Reviewed-by: Viktor Dukhovni <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/24525)


  Commit: 882749abd966393292d9fe9454a2018d9fcd4eb2
      https://github.com/openssl/openssl/commit/882749abd966393292d9fe9454a2018d9fcd4eb2
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/statem/statem_clnt.c
    M ssl/statem/statem_srvr.c
    M test/dtls_mtu_test.c

  Log Message:
  -----------
  Fix SCTP todo

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Viktor Dukhovni <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/24605)


  Commit: a5bc5656e1942588e236a6319809aaa5f37f4a96
      https://github.com/openssl/openssl/commit/a5bc5656e1942588e236a6319809aaa5f37f4a96
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/d1_lib.c
    M ssl/record/rec_layer_d1.c
    M ssl/ssl_local.h
    M ssl/statem/statem_dtls.c
    M util/indent.pro

  Log Message:
  -----------
  Refactor handshake msg header parsing etc.

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/24607)


  Commit: 6482503accae4fbfcd8297d07b9bdc33b37f53ba
      https://github.com/openssl/openssl/commit/6482503accae4fbfcd8297d07b9bdc33b37f53ba
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M doc/designs/dtlsv1_3/dtlsv1_3-main.md
    M ssl/record/rec_layer_d1.c
    M ssl/tls13_enc.c
    A test/recipes/70-test_dtls13epoch.t
    M test/recipes/70-test_tls13alerts.t
    M test/tls13secretstest.c

  Log Message:
  -----------
  Update epochs when changing key and cipher state for dtls 1.3

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/23229)


  Commit: e737f1a48e94f2e1e96140785110c9e706da3a40
      https://github.com/openssl/openssl/commit/e737f1a48e94f2e1e96140785110c9e706da3a40
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/s3_lib.c
    M ssl/ssl_local.h
    M ssl/statem/statem_lib.c
    M ssl/statem/statem_srvr.c
    M test/recipes/70-test_tls13downgrade.t
    M util/perl/TLSProxy/Certificate.pm
    M util/perl/TLSProxy/CertificateRequest.pm
    M util/perl/TLSProxy/CertificateVerify.pm
    M util/perl/TLSProxy/ClientHello.pm
    M util/perl/TLSProxy/EncryptedExtensions.pm
    M util/perl/TLSProxy/HelloVerifyRequest.pm
    M util/perl/TLSProxy/Message.pm
    M util/perl/TLSProxy/NewSessionTicket.pm
    M util/perl/TLSProxy/ServerHello.pm
    M util/perl/TLSProxy/ServerKeyExchange.pm

  Log Message:
  -----------
  Support dtls 1.3 downgrade mechanism

Reviewed-by: Viktor Dukhovni <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/23320)


  Commit: d3a56bef66238af5f51328f07b5012a475b1ff3a
      https://github.com/openssl/openssl/commit/d3a56bef66238af5f51328f07b5012a475b1ff3a
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M include/internal/recordmethod.h
    M include/openssl/dtls1.h
    M ssl/d1_lib.c
    M ssl/quic/quic_tls.c
    M ssl/record/methods/dtls_meth.c
    M ssl/record/methods/ktls_meth.c
    M ssl/record/methods/recmethod_local.h
    M ssl/record/methods/tls13_meth.c
    M ssl/record/methods/tls1_meth.c
    M ssl/record/methods/tls_common.c
    M ssl/record/methods/tlsany_meth.c
    M ssl/record/rec_layer_s3.c
    M ssl/record/record.h
    M ssl/s3_lib.c
    M ssl/ssl_ciph.c
    M ssl/ssl_local.h
    M ssl/ssl_txt.c
    M ssl/statem/statem_clnt.c
    M ssl/t1_enc.c
    M ssl/tls13_enc.c
    M test/tls13encryptiontest.c
    M test/tls13secretstest.c

  Log Message:
  -----------
  DTLS 1.3 record number encryption

Reviewed-by: Viktor Dukhovni <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/23511)


  Commit: 4b5daf0e6bb7e0d2796c4d003fe574c2171d71c4
      https://github.com/openssl/openssl/commit/4b5daf0e6bb7e0d2796c4d003fe574c2171d71c4
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M doc/designs/dtlsv1_3/dtlsv1_3-main.md
    M ssl/ech/ech_internal.c
    M ssl/s3_enc.c
    M ssl/ssl_local.h
    M ssl/statem/extensions_srvr.c
    M ssl/statem/statem_clnt.c
    M ssl/statem/statem_dtls.c
    M ssl/statem/statem_lib.c
    M ssl/statem/statem_local.h

  Log Message:
  -----------
  Fix DTLS 1.3 handshake transcript hash

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/26035)


  Commit: 04dce4df68c063240cb305ccdbf07d1ab3860875
      https://github.com/openssl/openssl/commit/04dce4df68c063240cb305ccdbf07d1ab3860875
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/pqueue.c
    M ssl/record/methods/dtls_meth.c
    M ssl/record/methods/recmethod_local.h
    M ssl/ssl_local.h

  Log Message:
  -----------
  Avoid mallocing unprocessed_rcds and processed_rcds in dtls record layer

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/26211)


  Commit: 8f403a5058c84a0e1caf086f2dd731474210c694
      https://github.com/openssl/openssl/commit/8f403a5058c84a0e1caf086f2dd731474210c694
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/record/rec_layer_s3.c
    M ssl/statem/statem_clnt.c

  Log Message:
  -----------
  Check result of set_protocol_version() and use the version passed as argument

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/26226)


  Commit: 97a03db8fa712b20d54789e4574d235a5d156433
      https://github.com/openssl/openssl/commit/97a03db8fa712b20d54789e4574d235a5d156433
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/tls13_enc.c

  Log Message:
  -----------
  Sequence number cipher context is NULL for TLS connections

Fix memory sanitizer report of use of uninitialized variable: be explicit
that sequence number cipher context is NULL for TLS connections when
calling ssl_set_new_record_layer().

Reviewed-by: Paul Dale <[email protected]>
Reviewed-by: Hugo Landau <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/26401)


  Commit: 9dc8f2facc080d1013d5db8fc73ea2961ba32057
      https://github.com/openssl/openssl/commit/9dc8f2facc080d1013d5db8fc73ea2961ba32057
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M include/openssl/prov_ssl.h
    M ssl/ech/ech_internal.c
    M ssl/record/rec_layer_s3.c
    M ssl/s3_enc.c
    M ssl/ssl_local.h
    M ssl/statem/statem_clnt.c
    M ssl/statem/statem_dtls.c
    M ssl/statem/statem_lib.c

  Log Message:
  -----------
  This change fixes an issue where a DTLS 1.3 would calculate a wrong transcript hash.

A wrong transcript hash was calculated when the client received a HRR which caused interop failures with WolfSSL. This change also refactors the internal calls to ssl3_finish_mac() that no longer requires the "incl_hdr" argument.

Reviewed-by: Viktor Dukhovni <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/26465)


  Commit: b78e8811678b1d896be753699b47baacb249e156
      https://github.com/openssl/openssl/commit/b78e8811678b1d896be753699b47baacb249e156
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/d1_lib.c
    M ssl/record/rec_layer_s3.c
    M ssl/ssl_local.h
    M ssl/statem/statem_dtls.c

  Log Message:
  -----------
  Reduce the number of mallocs in dtls1_new() by allocating message queues together with the d1 struct.

Reviewed-by: Viktor Dukhovni <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/26150)


  Commit: 00b9b5b7935ccec47910166de2cd06fc062af525
      https://github.com/openssl/openssl/commit/00b9b5b7935ccec47910166de2cd06fc062af525
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/recipes/70-test_dtls13epoch.t
    M test/recipes/70-test_tls13alerts.t
    M test/recipes/70-test_tls13certcomp.t
    M test/recipes/70-test_tls13hrr.t
    M test/recipes/70-test_tls13messages.t
    M util/perl/TLSProxy/Message.pm

  Log Message:
  -----------
  TLSProxy: Handle partial messages with DTLS

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/26532)


  Commit: 86fe152fea4eb4075cdbe285421b692694211318
      https://github.com/openssl/openssl/commit/86fe152fea4eb4075cdbe285421b692694211318
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M util/perl/TLSProxy/Proxy.pm

  Log Message:
  -----------
  Adds a workaround for false negative test results with TLSProxy

The server is not able to shut down correctly
when the client sends an alert in epoch 0 and the
server has sent its Finished message.
As a workaround we accept a bad exit code for a failing
DTLS test run.

Fixes #26915

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/26922)


  Commit: 6835aaa1b723737b47da2fcbacbd1c16e4aa114b
      https://github.com/openssl/openssl/commit/6835aaa1b723737b47da2fcbacbd1c16e4aa114b
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M doc/designs/dtlsv1_3/dtlsv1_3-main.md
    M doc/man3/SSL_get_version.pod
    M include/openssl/dtls1.h
    M ssl/d1_lib.c
    M ssl/record/methods/dtls_meth.c
    M ssl/record/methods/recmethod_local.h
    M ssl/record/methods/tls13_meth.c
    M ssl/record/methods/tls1_meth.c
    M ssl/record/methods/tls_common.c
    M test/helpers/ssltestlib.c
    M util/perl/TLSProxy/Record.pm

  Log Message:
  -----------
  Support DTLS 1.3 Unified Headers

Also set correct AAD for DTLS 1.3 message de-/encryption.

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/25668)


  Commit: 51222f2fbceb921ac52085424a620775a5f2b13d
      https://github.com/openssl/openssl/commit/51222f2fbceb921ac52085424a620775a5f2b13d
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/dtls_mtu_test.c

  Log Message:
  -----------
  test_server_mtu_larger_than_max_fragment_length() should be run for DTLS 1.3

Previously it was forced to run on DTLS 1.2>. But the underlying issue was fixed on master and it works now that the feature branch has been rebased on top of a more recent master.

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/26574)


  Commit: 1f9410173ceeb428dbcfe3f25946cb47f0a49d66
      https://github.com/openssl/openssl/commit/1f9410173ceeb428dbcfe3f25946cb47f0a49d66
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/sslapitest.c
    M test/tls-provider.c

  Log Message:
  -----------
  Duplicate TLS 1.3 sslapitests for DTLS 1.3

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/26912)


  Commit: fdc04a442db04d4221099fe4eee271e68f58a4a4
      https://github.com/openssl/openssl/commit/fdc04a442db04d4221099fe4eee271e68f58a4a4
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/statem/statem_lib.c

  Log Message:
  -----------
  Revert changes to ssl_version_cmp() to avoid calling assert on non-sane inputs

The function can be called with arbitrary inputs.

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/28000)


  Commit: dfc08337fc1cd029e9f0e6090c3dbabd56b52385
      https://github.com/openssl/openssl/commit/dfc08337fc1cd029e9f0e6090c3dbabd56b52385
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M apps/lib/s_cb.c
    M doc/designs/dtlsv1_3/dtlsv1_3-main.md
    M include/internal/packet.h
    M include/internal/recordmethod.h
    M include/internal/statem.h
    M include/openssl/ssl.h.in
    M include/openssl/ssl3.h
    M ssl/d1_lib.c
    M ssl/pqueue.c
    M ssl/quic/quic_tls.c
    M ssl/record/methods/dtls_meth.c
    M ssl/record/methods/ktls_meth.c
    M ssl/record/methods/recmethod_local.h
    M ssl/record/methods/tls13_meth.c
    M ssl/record/methods/tls1_meth.c
    M ssl/record/methods/tls_common.c
    M ssl/record/methods/tls_multib.c
    M ssl/record/rec_layer_d1.c
    M ssl/record/record.h
    M ssl/ssl_local.h
    M ssl/ssl_stat.c
    M ssl/statem/statem.c
    M ssl/statem/statem_clnt.c
    M ssl/statem/statem_dtls.c
    M ssl/statem/statem_local.h
    M ssl/statem/statem_srvr.c
    M ssl/tls13_enc.c
    A test/recipes/70-test_dtls13ack.t
    M test/recipes/70-test_sslcbcpadding.t
    M test/recipes/70-test_sslrecords.t
    M test/recipes/70-test_tls13hrr.t
    M test/sslapitest.c
    M test/tls13encryptiontest.c
    M test/tls13secretstest.c
    M util/perl/TLSProxy/Message.pm
    M util/perl/TLSProxy/Proxy.pm
    M util/perl/TLSProxy/Record.pm
    A util/perl/TLSProxy/RecordNumber.pm

  Log Message:
  -----------
  Adds DTLS 1.3 ACK message functionality

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/25119)


  Commit: f99fc4c9aea41a9e6f9b4bc5fa98b9db683e703d
      https://github.com/openssl/openssl/commit/f99fc4c9aea41a9e6f9b4bc5fa98b9db683e703d
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/d1_lib.c
    M ssl/record/rec_layer_d1.c
    M ssl/tls13_enc.c

  Log Message:
  -----------
  Fixes an issue were dropped records sent from server was not retransmitted.

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/25119)


  Commit: 372bcba199765092cca6f7672078639e39e36da9
      https://github.com/openssl/openssl/commit/372bcba199765092cca6f7672078639e39e36da9
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/record/methods/tls_multib.c

  Log Message:
  -----------
  Minor style changes and check sequence for wraparound

We check the TLS sequence number for wraparound elsewhere,
this adds the check to TLS multiblock writes as well.

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/25119)


  Commit: 290f6c274b9d52ad12ef5d92a89b2f951b95f5d6
      https://github.com/openssl/openssl/commit/290f6c274b9d52ad12ef5d92a89b2f951b95f5d6
  Author: Tomas Mraz <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/recipes/70-test_dtls13ack.t
    M test/recipes/70-test_dtls13epoch.t
    M test/recipes/70-test_sslrecords.t

  Log Message:
  -----------
  Use non-PQC key share for DTLS-1.3 TLSProxy tests

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/28455)


  Commit: 433d51d8e44e4a53805b9539f6372da1b4472417
      https://github.com/openssl/openssl/commit/433d51d8e44e4a53805b9539f6372da1b4472417
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M apps/s_client.c
    M apps/s_server.c
    M ssl/ssl_cert.c
    M ssl/statem/statem_clnt.c

  Log Message:
  -----------
  Support OSCP responses for DTLS 1.3

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/28455)


  Commit: 5346368873c6fe51d5758995ca9e50f1fb366c0d
      https://github.com/openssl/openssl/commit/5346368873c6fe51d5758995ca9e50f1fb366c0d
  Author: Tomas Mraz <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M providers/common/capabilities.c

  Log Message:
  -----------
  sigalg_constants_list: Add DTLS1_3_VERSION to applicable sigalgs

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/28455)


  Commit: 1ec727199740f64b26b1a6199182e5f6925b0bd0
      https://github.com/openssl/openssl/commit/1ec727199740f64b26b1a6199182e5f6925b0bd0
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/statem/extensions_srvr.c
    M ssl/statem/statem_lib.c
    M ssl/t1_lib.c
    M ssl/t1_trce.c
    M test/tls-provider.c
    M util/perl/TLSProxy/Record.pm

  Log Message:
  -----------
  TLS-1.3 specific sigalgs should be supported in DTLS-1.3

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/28455)


  Commit: 1254f4cc1cffb11322463e6a4d5748efba585249
      https://github.com/openssl/openssl/commit/1254f4cc1cffb11322463e6a4d5748efba585249
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/recipes/70-test_sslrecords.t
    M test/recipes/70-test_tls13downgrade.t
    M test/recipes/70-test_tls13messages.t

  Log Message:
  -----------
  Fixes of tests for DTLS-1.3

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/28455)


  Commit: 89d1978565f7561de862084be4a0c94ef48ac106
      https://github.com/openssl/openssl/commit/89d1978565f7561de862084be4a0c94ef48ac106
  Author: Tomas Mraz <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/dtlstest.c
    M test/recipes/70-test_tls13certcomp.t
    M test/recipes/70-test_tls13cookie.t
    M test/recipes/70-test_tls13downgrade.t
    M test/recipes/70-test_tls13hrr.t
    M test/recipes/70-test_tls13messages.t

  Log Message:
  -----------
  DTLS1.3: Disable tests that currently fail

With added TODO(DTLSv1.3) comments

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/28455)


  Commit: 7788c937b6c844beff9b19d211aa43af257d770e
      https://github.com/openssl/openssl/commit/7788c937b6c844beff9b19d211aa43af257d770e
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/p_ossltest.c
    M test/recipes/70-test_dtls13ack.t

  Log Message:
  -----------
  Adds AES-128-ECB to ossltest provider to be able to reenable DTLS 1.3 ACK tests.

Reviewed-by: Neil Horman <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/28926)


  Commit: bfb101e72785ca87275c83bad78fbd736664064a
      https://github.com/openssl/openssl/commit/bfb101e72785ca87275c83bad78fbd736664064a
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/d1_lib.c
    M test/dtls_mtu_test.c

  Log Message:
  -----------
  Fixes the DTLS MTU test

When calling DTLS_get_data_mtu the function was not taking
into account the extra byte after the data which contains
the content type.

Fixes: https://github.com/openssl/project/issues/1668

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/29081)


  Commit: 2fe6f255cb72db80d73e38cf56232c03a4f9398b
      https://github.com/openssl/openssl/commit/2fe6f255cb72db80d73e38cf56232c03a4f9398b
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M include/internal/recordmethod.h
    M ssl/d1_msg.c
    M ssl/quic/quic_tls.c
    M ssl/record/methods/dtls_meth.c
    M ssl/record/methods/ktls_meth.c
    M ssl/record/methods/recmethod_local.h
    M ssl/record/methods/tls13_meth.c
    M ssl/record/methods/tls_common.c
    M ssl/record/rec_layer_d1.c
    M ssl/record/rec_layer_s3.c
    M ssl/record/record.h
    M ssl/statem/extensions.c
    M ssl/statem/statem_clnt.c
    M ssl/statem/statem_dtls.c
    M ssl/statem/statem_srvr.c
    M test/helpers/ssltestlib.c
    M test/sslapitest.c

  Log Message:
  -----------
  Fixing comment out tests for DTLS1.3 in sslapitest

Several tests where commented out for the behavior of DTLS1.3 is
different then TLS1.3. The main difference is around the ACK
message. This means some tests needed to be massaged to for
the peer to ACK to a certain message.

This PR does not remove all TODO's for DTLS1.3. Currently there
are two TODOs. One around padding for messages less than 16
bytes and one for authentication and integrity only messages.

Also this PR still has a lot of memory leaks. Looking into it
it has to deal with how new record layers are allocated for
new epochs. Because record layers are also stored in a list of
messages sent in case they need to be resent it wasn't a simple
fix. I feel like the memory leaks should be tackled in a
separate PR.

Fixes: https://github.com/openssl/project/issues/1667

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/29067)


  Commit: 75a5053a2258484a3bc75042a32576488f0e4388
      https://github.com/openssl/openssl/commit/75a5053a2258484a3bc75042a32576488f0e4388
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M include/openssl/ssl3.h
    M ssl/statem/statem_clnt.c
    M ssl/tls13_enc.c
    M test/recipes/70-test_dtls13ack.t
    M test/recipes/70-test_tls13certcomp.t
    M util/perl/TLSProxy/Message.pm
    M util/perl/TLSProxy/Proxy.pm
    M util/perl/TLSProxy/Record.pm

  Log Message:
  -----------
  Updating the DTLS Proxy ACK test to wait for the New Session ACK

Updated the DTLS 1.3 ACK tests that use the proxy to wait until
the ACK for the New Session Ticket is recieved.

Also updated some proxy tests now that the sessionfile can be
used and the DTLS1.3 client will shut down properly. This happens
because the Proxy sends a Close Notify Alert.

Also resolving a DTLS Proxy issue where the Proxy was not
taking into account the second fragment for a record and the
Handshake/Record Header.

Fixes: openssl/project#1669

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/29221)


  Commit: 91bdd595811c0ebfb850d8472d7f8e919cf49377
      https://github.com/openssl/openssl/commit/91bdd595811c0ebfb850d8472d7f8e919cf49377
  Author: Frederik Wedel-Heinen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/dtlstest.c

  Log Message:
  -----------
  Run test cases that were previously skipped for DTLS 1.3.

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
MergeDate: Wed Jan  7 09:11:11 2026
(Merged from https://github.com/openssl/openssl/pull/29501)


  Commit: 415dce5785f36695458e9f93a5a552d6774a3fae
      https://github.com/openssl/openssl/commit/415dce5785f36695458e9f93a5a552d6774a3fae
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/record/methods/dtls_meth.c
    M ssl/record/methods/tls13_meth.c
    M ssl/record/methods/tls_common.c
    M ssl/ssl_ciph.c
    M ssl/tls13_enc.c
    M test/sslapitest.c

  Log Message:
  -----------
  Addressing last commented out SSLAPITests for DTLS1.3

The Authentication and Integrity only ciphers and when DTLS1.3
payload padding have been enabled with this change.

The tls13_add_record_padding function was updated to make sure
there is always 16 bytes of encrypted data.

If authentication and integrity only cipher is used the code
was updated to not call Sequence Number encrypt.

Fixes: openssl/project#1700
Fixes: openssl/project#1702

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
MergeDate: Thu Jan  8 10:01:39 2026
(Merged from https://github.com/openssl/openssl/pull/29448)


  Commit: c6939d5dfd9b2615ef4534f9ede9edc2fa4874ae
      https://github.com/openssl/openssl/commit/c6939d5dfd9b2615ef4534f9ede9edc2fa4874ae
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M include/internal/recordmethod.h
    M ssl/quic/quic_tls.c
    M ssl/record/methods/dtls_meth.c
    M ssl/record/methods/ktls_meth.c
    M ssl/record/methods/tls_common.c
    M ssl/record/rec_layer_d1.c
    M ssl/ssl_local.h
    M ssl/statem/statem_clnt.c
    M ssl/statem/statem_srvr.c

  Log Message:
  -----------
  DTLS1.3 omits the Client sending the end of early data record.

Updated the state machine to not send the end of early data
record. Also updated the dtls get more records to handle the
scenario when in Epoch 1 we receive the client's Finish
message in Epoch 2.

Fixes: openssl/project#1701

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/29449)


  Commit: 1a1e1e71b1cda31f497dd5d875c36b37116cd011
      https://github.com/openssl/openssl/commit/1a1e1e71b1cda31f497dd5d875c36b37116cd011
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/recipes/70-test_tls13kexmodes.t

  Log Message:
  -----------
  Enabling the TLSKexMode tests for DTLS1.3

The KEX Mode tests were disabled. The reason being is with PQ
algorithms DTLS1.3 will fragment the packet. The fragmented
client hello's two fragmented packets will be combined into
something larger than the MTU size. Thus, the server never
read the client hello. The client continuously sent out a new
client hello thus hanging the tests.

Fixes: openssl/project#1789

Reviewed-by: Paul Dale <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/29592)


  Commit: f969a2f37f1338bf24b4d10f448a2a25b1abb861
      https://github.com/openssl/openssl/commit/f969a2f37f1338bf24b4d10f448a2a25b1abb861
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/recipes/70-test_tls13cookie.t

  Log Message:
  -----------
  DTLS 1.3 Enable Cookie tests

Enabling the DTLS1.3 Cookie tests.

Fixes: openssl/project#1787

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/29609)


  Commit: bf3ea264ae8c7ba82bcb70930714484ce4ccfac7
      https://github.com/openssl/openssl/commit/bf3ea264ae8c7ba82bcb70930714484ce4ccfac7
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/recipes/70-test_tls13downgrade.t

  Log Message:
  -----------
  DTLS 1.3 Enabling Downgrade tests

Enabling the downgrade tests for DTLS 1.3.

Fixes: openssl/project#1788

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/29610)


  Commit: 0891033cac9317cac1b2d5595d120dd0d93c72ed
      https://github.com/openssl/openssl/commit/0891033cac9317cac1b2d5595d120dd0d93c72ed
  Author: Timothy Copeland <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/statem/extensions_clnt.c

  Log Message:
  -----------
  ssl/statem/extensions_clnt.c: Use proper TLS alert for semantic errs

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Paul Dale <[email protected]>
Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
MergeDate: Wed Jan 21 16:46:28 2026
(Merged from https://github.com/openssl/openssl/pull/29469)


  Commit: eda854233e6b8fc7dbb50feb83ff77021127b0fd
      https://github.com/openssl/openssl/commit/eda854233e6b8fc7dbb50feb83ff77021127b0fd
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/recipes/70-test_tls13psk.t

  Log Message:
  -----------
  The PSK tests were disabled cause of a Proxy issue, but that has
been resolved. They were failing now because of a PQ issue and
the TLS Proxy. In a nutshell the TLS Proxy doesn't handle
repacking correctly for fragmented packets.

Fixes: openssl/project/#1791

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
MergeDate: Thu Jan 22 10:08:46 2026
(Merged from https://github.com/openssl/openssl/pull/29606)


  Commit: 7b2ee316ab6275bc93ea9c40f85dcfe869b4eb79
      https://github.com/openssl/openssl/commit/7b2ee316ab6275bc93ea9c40f85dcfe869b4eb79
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/statem/statem_lib.c
    M test/recipes/80-test_ssl_new.t
    M test/ssl-tests/29-dtls-sctp-label-bug.cnf
    M test/ssl-tests/29-dtls-sctp-label-bug.cnf.in
    M test/ssl-tests/protocol_version.pm
    M test/ssl_test.c

  Log Message:
  -----------
  Update SCTP support fot DTLS1.3

There is a draft RFC for DTLS1.3 over SCTP. This PR does not
address that draft RFC. Instead what it does is force DTLS
connections over SCTP to downgrade to DTLS1.2.

Fixes: openssl/project#1793

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Paul Dale <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
MergeDate: Tue Mar  3 14:16:12 2026
(Merged from https://github.com/openssl/openssl/pull/30167)


  Commit: 7a36e7469133e5cb1d5607cd9dea1297b00bbc19
      https://github.com/openssl/openssl/commit/7a36e7469133e5cb1d5607cd9dea1297b00bbc19
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/recipes/70-test_sslrecords.t

  Log Message:
  -----------
  70-test_sslrecords.t: Fix for the flakiness in the test with DTLS-1.3

A new DTLS test came over in the recent rebase and it
is a flaky test. It was not properly modified to
work with DTLS 1.3.

Fixes: openssl/project#1807

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
MergeDate: Wed Mar  4 17:30:29 2026
(Merged from https://github.com/openssl/openssl/pull/29745)


  Commit: 8ad9a9158cfdb956724e5944e964e97d04c29a8d
      https://github.com/openssl/openssl/commit/8ad9a9158cfdb956724e5944e964e97d04c29a8d
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M util/perl/TLSProxy/Proxy.pm

  Log Message:
  -----------
  DTLS 1.3 ACK test cleanup

The DTLS1.3 ACK test is flaky. Usually when you run it the client
sends the "test" data before processing the Server's
NewSessionTicket. Though in scenarios when the client process the
NewSessionTicket and send the ACK for it before sending the "test"
data we will end up exiting the test before seeing the second
NewSessionTicket and the corresponding ACK.

I updated the code to check for the two NewSessionTicket ACKs to
wait for two unique NewSessionTicket ACK messages. I believe
what was happening is the one ACK message was being counted
twice thus breaking the test.

Fixes: openssl/project#1806

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Neil Horman <[email protected]>
MergeDate: Tue Mar 10 18:34:18 2026
(Merged from https://github.com/openssl/openssl/pull/29626)


  Commit: 191aa4848b0a38221c7e56d80b84fed2f0c5d2c2
      https://github.com/openssl/openssl/commit/191aa4848b0a38221c7e56d80b84fed2f0c5d2c2
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/recipes/70-test_tls13messages.t
    M util/perl/TLSProxy/Message.pm
    M util/perl/TLSProxy/Proxy.pm

  Log Message:
  -----------
  Enabling the DTLS 1.3 Message tests

There were a couple of problems with the test. First the Proxy
needed to reOpen the UDP socket after the client closes it.
Without this traffic will not flow through the proxy.
The second issue is around sending the Sever socket an alert
message. Since we are DTLS1.3 closing the socket doesn't
notify the server to close the connection. Thus this is
done by sending an Alert message via the Proxy.

Fixes: openssl/project#1790

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
MergeDate: Mon Mar 16 10:59:52 2026
(Merged from https://github.com/openssl/openssl/pull/29961)


  Commit: 5ed2f87d18a1b46d2c9b445f5631ead767ef45f4
      https://github.com/openssl/openssl/commit/5ed2f87d18a1b46d2c9b445f5631ead767ef45f4
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/record/rec_layer_d1.c
    M ssl/record/rec_layer_s3.c
    M ssl/s3_lib.c
    M ssl/ssl_lib.c
    M ssl/statem/statem_clnt.c
    M test/recipes/80-test_ssl_new.t
    M test/ssl-tests/11-dtls_resumption.cnf
    M test/ssl-tests/protocol_version.pm

  Log Message:
  -----------
  DTLS 1.3 Enable Resumption Tests

Enable teh DTLS resumption tests for DTLS1.3.

Fixes: openssl/project#1794

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
MergeDate: Mon Mar 16 11:07:16 2026
(Merged from https://github.com/openssl/openssl/pull/30258)


  Commit: eb173bbe6e2cb513a733bb487057e71a8e0d5b54
      https://github.com/openssl/openssl/commit/eb173bbe6e2cb513a733bb487057e71a8e0d5b54
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/record/methods/dtls_meth.c

  Log Message:
  -----------
  DTLS 1.3 remove unecessary TODO

There was a TODO to convert rl->sequence to 64 bit integer.
Though you still needed it in byte format for the encryption
and decryption of the sequence number. Thus you were just moving
the complexity. The TODO has been removed.

Fixes: openssl/project#1784

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Eugene Syromiatnikov <[email protected]>
Reviewed-by: Paul Dale <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
MergeDate: Mon Mar 16 11:13:57 2026
(Merged from https://github.com/openssl/openssl/pull/30352)


  Commit: cefd164319d6d4c3ffd32a8e2b18f152764d4752
      https://github.com/openssl/openssl/commit/cefd164319d6d4c3ffd32a8e2b18f152764d4752
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M doc/designs/quic-design/record-layer.md
    M include/internal/recordmethod.h
    M ssl/d1_lib.c
    M ssl/quic/quic_tls.c
    M ssl/record/methods/dtls_meth.c
    M ssl/record/methods/ktls_meth.c
    M ssl/record/methods/recmethod_local.h
    M ssl/record/methods/tls_common.c
    M ssl/record/rec_layer_d1.c
    M ssl/record/rec_layer_s3.c
    M ssl/record/record.h
    M ssl/ssl_local.h
    M ssl/t1_enc.c
    M ssl/tls13_enc.c
    M test/tls13secretstest.c

  Log Message:
  -----------
  DTLS 1.3 Update Epoch to a 64 bit counter and don't allow wrapping

This is based off a prior PR that was closed. The epoch was updated
for a 64 bit counter. A 16 bit epoch is kept when we read the
epoch from the wire in store it in the record layer.

Fixes: openssl/project#1796

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Paul Dale <[email protected]>
Reviewed-by: Eugene Syromiatnikov <[email protected]>
MergeDate: Thu Mar 19 17:30:18 2026
(Merged from https://github.com/openssl/openssl/pull/30394)


  Commit: 08ba7fc02f32256fa8474a1545ca9482b192fe05
      https://github.com/openssl/openssl/commit/08ba7fc02f32256fa8474a1545ca9482b192fe05
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/d1_lib.c
    M ssl/ssl_lib.c
    M ssl/ssl_local.h
    M util/perl/TLSProxy/Proxy.pm

  Log Message:
  -----------
  DTLS 1.3 remove the last TODO in Proxy.pm and Clean up Double Free

When removing the last todo in proxy it encountered a double free.
The changes are to address that double free.

Fixes: openssl/project#1795

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
MergeDate: Wed Apr  8 10:04:10 2026
(Merged from https://github.com/openssl/openssl/pull/30415)


  Commit: bf5b798311a26adf966e2f85a01f29f485a92f13
      https://github.com/openssl/openssl/commit/bf5b798311a26adf966e2f85a01f29f485a92f13
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/record/methods/dtls_meth.c

  Log Message:
  -----------
  DTLS 1.3 Epoch bits that don't match are from a prior epoch

When receiving a unified header if the epoch lower bytes do
not match we assumed it was from a future epoch. The RFC
says we should assume it is from a prior epoch.

Updating the code to match the RFC. For early data (epoch 1)
we still need to increment the epoch if it is a handshake
message in epoch 2.

Fixes: openssl/project#1912

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
MergeDate: Wed Apr  8 10:06:29 2026
(Merged from https://github.com/openssl/openssl/pull/30570)


  Commit: d15c21ef86430c45d88634c59895504f985c7fa0
      https://github.com/openssl/openssl/commit/d15c21ef86430c45d88634c59895504f985c7fa0
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M doc/man3/DTLSv1_listen.pod
    M ssl/ssl_lib.c
    M test/build.info
    M test/dtlsv1listentest.c
    M test/recipes/80-test_dtlsv1listen.t
    M test/sslapitest.c

  Log Message:
  -----------
  DTLS 1.3 Enable SSL_Stateless and enable DTLSv1Listen Tests

Updated SSL_stateless to keep the sequence nunber
for DTLS 1.3. Without this information the client would be
sending Seq numbers that it thinks is correct and the server
will not process it since it is looking for sequence zero.

Update DTLSv1ListenTest.c to test a client that supports DTLS1.2
and DTLS1.3. It will use a Hello Verify Request.

Added a test that will fail when a client that only supports
DTLS1.3 uses DTLSv1_listen. Instead the user should use
SSL_statless.

Fixes: openssl/project#1829

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
MergeDate: Thu Apr 16 16:59:25 2026
(Merged from https://github.com/openssl/openssl/pull/30558)


  Commit: ab872ae8faa26bcc8438496a1354ad5ad4a1d564
      https://github.com/openssl/openssl/commit/ab872ae8faa26bcc8438496a1354ad5ad4a1d564
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/record/methods/dtls_meth.c
    M ssl/record/methods/recmethod_local.h
    M ssl/record/rec_layer_d1.c
    M ssl/ssl_lib.c
    M ssl/ssl_local.h
    M ssl/statem/statem.c
    M ssl/statem/statem_clnt.c
    M ssl/statem/statem_srvr.c
    M test/dtlstest.c
    M test/helpers/ssltestlib.c
    M test/helpers/ssltestlib.h
    M test/recipes/70-test_tls13alerts.t
    M test/recipes/70-test_tls13hrr.t

  Log Message:
  -----------
  Addressing how DTLS 1.3 handles Read Record Layer transitions.

Currently the state machine moves the read record layer to the
next epoch base off of state events. The problem with this is
when either the client or the server sent out a record during
the handshake that causes an alert. If the state machine moved
either the client or server to the next epoch it will not
be able to handle that alert message. This approach delays
moving the read record layer to the next epoch until we
actually receive a record in that epoch. This allows us
to process the alert messages.

Fixes: openssl/project#1786
Fixes: openssl/project#1785

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Frederik Wedel-Heinen <[email protected]>
MergeDate: Thu Apr 16 17:22:48 2026
(Merged from https://github.com/openssl/openssl/pull/29946)


  Commit: e0e99446e9d2f04b14272bc0bcbae321bfac24f2
      https://github.com/openssl/openssl/commit/e0e99446e9d2f04b14272bc0bcbae321bfac24f2
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/record/methods/dtls_meth.c

  Log Message:
  -----------
  DTLS 1.3 Fixing issue on DTLS Branch

The last two commits didn't have a merge conflict, but they also
didn't play nice together. This PR fixes the tests.

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Frederik Wedel-Heinen <[email protected]>
MergeDate: Mon Apr 27 06:18:02 2026
(Merged from https://github.com/openssl/openssl/pull/30905)


  Commit: 34204328f8992f83948c0d16e465ba4a899782b8
      https://github.com/openssl/openssl/commit/34204328f8992f83948c0d16e465ba4a899782b8
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M include/internal/recordmethod.h
    M ssl/d1_lib.c
    M ssl/quic/quic_tls.c
    M ssl/record/methods/dtls_meth.c
    M ssl/record/methods/ktls_meth.c
    M ssl/record/methods/recmethod_local.h
    M ssl/record/methods/tls13_meth.c
    M ssl/record/methods/tls1_meth.c
    M ssl/record/methods/tls_common.c
    M ssl/record/methods/tlsany_meth.c
    M ssl/record/rec_layer_s3.c
    M ssl/record/record.h
    M ssl/ssl_ciph.c
    M ssl/ssl_local.h
    M ssl/ssl_txt.c
    M ssl/statem/statem_clnt.c
    M ssl/t1_enc.c
    M ssl/tls13_enc.c
    M test/build.info
    A test/dtls13_internal_test.c
    A test/recipes/60-test_dtls13_internal.t
    M test/tls13encryptiontest.c
    M test/tls13secretstest.c

  Log Message:
  -----------
  DTLS 1.3 Interop Issue with NSS using ChaCha20

When using ChaCha20 for DTLS1.3 the encrypted sequence
number was never being decrypted properly. Instead it
was always a larger number.

Updated the dlts_crypt_sequence_number to match the RFC.

Fixes: openssl/project#1929

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
MergeDate: Thu Apr 30 09:55:50 2026
(Merged from https://github.com/openssl/openssl/pull/30807)


  Commit: 23ede490ad7866388f6e9e6bc82f7255cb2a16a0
      https://github.com/openssl/openssl/commit/23ede490ad7866388f6e9e6bc82f7255cb2a16a0
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/record/rec_layer_d1.c
    M test/dtlstest.c
    M test/recipes/70-test_tls13alerts.t

  Log Message:
  -----------
  DTLS 1.3 Buffer App Data received before ACK

For DTLS 1.3 App Data may arrive before an expected ack
message. We will now buffer it and process it after we
process the ACK and end in_init.

Fixes: openssl/project#1908

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
MergeDate: Mon May  4 15:18:37 2026
(Merged from https://github.com/openssl/openssl/pull/30998)


  Commit: aae89d2ab7ea9ac4af4fe03e018ba401b39aca08
      https://github.com/openssl/openssl/commit/aae89d2ab7ea9ac4af4fe03e018ba401b39aca08
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/dtlstest.c

  Log Message:
  -----------
  DTLS 1.3 Fixing No Integrity Ciphers CI

The only integrity Ciphers CI is currently broken for dtlstest

These ciphers are needed so we have an unencrypted sequence
number so we can swap records around.

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Eugene Syromiatnikov <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
MergeDate: Mon May  4 15:20:46 2026
(Merged from https://github.com/openssl/openssl/pull/31034)


  Commit: ddd5f8912ba362aa89705e1e759cd35b78330bbc
      https://github.com/openssl/openssl/commit/ddd5f8912ba362aa89705e1e759cd35b78330bbc
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/recipes/70-test_dtls13ack.t
    M test/recipes/70-test_dtls13epoch.t

  Log Message:
  -----------
  DTLS 1.3 Fixing test SKIPs not in code block

Fixing up two tests that are not putting skip's in a SKIP
block. These were identified by a FreeBSD image.

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Frederik Wedel-Heinen <[email protected]>
MergeDate: Thu May  7 12:27:29 2026
(Merged from https://github.com/openssl/openssl/pull/31089)


  Commit: 87bd5a18ccd566c872538ff955e4d138db2c0f23
      https://github.com/openssl/openssl/commit/87bd5a18ccd566c872538ff955e4d138db2c0f23
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M .codespellrc
    M doc/build.info
    M doc/designs/dtlsv1_3/dtlsv1_3-main.md
    A doc/man7/ossl-guide-dtlsv13.pod

  Log Message:
  -----------
  Update the DTLS 1.3 documentation to match the final implementation

Added an ossl-guid-dtlsv13 file to describe OpenSSL's DTLSv1.3
implementation.

Fixes: openssl/project#1831
Fixes: openssl/project#1830

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
MergeDate: Thu May 21 08:50:49 2026
(Merged from https://github.com/openssl/openssl/pull/31032)


  Commit: eb644166cdaaa69716e6096a2da31f979a0befd0
      https://github.com/openssl/openssl/commit/eb644166cdaaa69716e6096a2da31f979a0befd0
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M .gitignore
    M demos/build.info
    A demos/dtlsecho/A-SSL-Docs.txt
    A demos/dtlsecho/README.md
    A demos/dtlsecho/build.info
    A demos/dtlsecho/cert.pem
    A demos/dtlsecho/key.pem
    A demos/dtlsecho/main.c
    M ssl/record/rec_layer_d1.c
    M ssl/statem/statem.c
    M test/dtlstest.c

  Log Message:
  -----------
  DTLS 1.3 Demo and Bug Fix

Added a DTLS 1.3 demo based off of the SSL echo demo. The client
takes input from the user and sends it to the server. The server
echos that input back.

There was a bug if the server retransmitted New Session tickets
cause it didn't receive the ACK for the first set of New Session
tickets. The changes outside of the demo application are to fix
that bug.

Fixes: openssl/project#1943

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
MergeDate: Wed May 27 08:02:57 2026
(Merged from https://github.com/openssl/openssl/pull/31042)


  Commit: 28a7f07e7f4c2554a57c9644afd5881ed0f8b602
      https://github.com/openssl/openssl/commit/28a7f07e7f4c2554a57c9644afd5881ed0f8b602
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M crypto/bio/bf_buff.c
    M crypto/bio/bio_sock.c
    M crypto/thread/build.info
    M doc/man3/BIO_socket_wait.pod
    M doc/man3/DTLSv1_listen.pod
    M doc/man3/SSL_new_listener.pod
    M doc/man3/SSL_set_bio.pod
    A include/internal/dgram_conn_lookup.h
    A include/internal/dgram_demux.h
    A include/internal/dtls_record_rx.h
    M include/internal/quic_channel.h
    M include/internal/quic_demux.h
    M include/internal/quic_predef.h
    M include/internal/recordmethod.h
    M include/internal/ssl_unwrap.h
    M include/openssl/bio.h.in
    M include/openssl/ssl.h.in
    M ssl/build.info
    M ssl/d1_lib.c
    A ssl/dgram_demux.c
    A ssl/dtls_conn_lookup.c
    A ssl/dtls_record_rx.c
    M ssl/quic/quic_demux.c
    M ssl/quic/quic_tls.c
    M ssl/record/methods/dtls_meth.c
    M ssl/record/methods/ktls_meth.c
    M ssl/record/methods/recmethod_local.h
    M ssl/record/methods/tls_common.c
    M ssl/record/rec_layer_d1.c
    M ssl/record/rec_layer_s3.c
    M ssl/record/record.h
    M ssl/rio/build.info
    M ssl/rio/poll_immediate.c
    M ssl/ssl_lib.c
    M ssl/ssl_local.h
    M ssl/statem/extensions_srvr.c
    M ssl/statem/statem_srvr.c
    M test/build.info
    A test/dtls_multithread_test.c
    A test/dtlsssllistenertest.c
    M test/dtlsv1listentest.c
    A test/recipes/80-test_dtls_multithread.t
    A test/recipes/80-test_dtlsssllistener.t
    M test/tls13encryptiontest.c
    M util/libcrypto.num
    M util/libssl.num
    M util/other.syms

  Log Message:
  -----------
  DTLS 1.3 Limit DTLSv1_listen to DTLS1.2 and add SSL Listener for DTLS

DTLSv1_listen will not support DTLSv1.3. Instead its max version is
DTLSv1.2

Adding DTLS SSL Listener that utilizes a similar DEMUX approach as
QUIC and passes traffic through the URXE structure.

This will establish full connection and an application can ask for
a ready SSL connection. The DTLS SSL listener also supports HVR
and HRR cookie validation.

Fixes: openssl/project#1946

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
MergeDate: Mon Jul  6 09:29:09 2026
(Merged from https://github.com/openssl/openssl/pull/31137)


  Commit: 26ac9678a5be570b6c60783cf0184b2919125754
      https://github.com/openssl/openssl/commit/26ac9678a5be570b6c60783cf0184b2919125754
  Author: Matt Caswell <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/recipes/70-test_sslrecords.t
    M test/recipes/70-test_tls13cookie.t
    M test/recipes/70-test_tls13downgrade.t
    M test/recipes/70-test_tls13messages.t
    M test/recipes/70-test_tls13psk.t

  Log Message:
  -----------
  Skip failing DTLS 1.3 TLSProxy tests pending investigation

Several DTLS 1.3 test cases driven through TLSProxy currently fail or
hang. To keep the tree buildable and testable while the DTLS 1.3 work
is under review, skip the affected sub-tests (or whole DTLS runs) with
TODO(DTLS1.3) markers. These are to be addressed in a follow-up.

Skipped for DTLS:
- 70-test_tls13psk.t: "Remove sig algs", "Too many PSKs" and
  "Bad PSK with no handshake fallback"
- 70-test_tls13cookie.t: the DTLS run
- 70-test_sslrecords.t: "Empty app data in DTLS"
- 70-test_tls13downgrade.t: the DTLS run
- 70-test_tls13messages.t: the DTLS run

Also skipped in 70-test_tls13messages.t: "HelloRequest rejected in
TLSv1.3" and "HelloRequest ignored in (D)TLSv1.2". These fail for TLS
as well as DTLS, so the failure is not proxy-specific and needs
separate investigation.

Assisted-by: Claude Code:claude-opus-4-8

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
MergeDate: Mon Jul 13 14:24:27 2026
(Merged from https://github.com/openssl/openssl/pull/31896)


  Commit: 7ad49537c2b02df4945a3fcffae2d723857db381
      https://github.com/openssl/openssl/commit/7ad49537c2b02df4945a3fcffae2d723857db381
  Author: Matt Caswell <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/record/rec_layer_s3.c

  Log Message:
  -----------
  Restore DTLS listener peer-address propagation to new record layers

Listener-created DTLS connections could not complete a handshake: the
peer address was applied to the initial plaintext record layers by
SSL_set1_initial_peer_addr(), but the write record layer recreated when
encryption is enabled started with no peer, so tls_retry_write_records()
fell back from BIO_sendmmsg() to BIO_write() on the shared listener BIO
and the bytes went nowhere.

This adaptation was lost when the branch was rebased: the change was
originally written when the new_record_layer record method callback took
a peer argument, whereas current record layers set the peer via the
separate set1_peer callback. Re-apply the peer to every DTLS record
layer as it is created in ssl_set_new_record_layer(), mirroring the
existing use_urxe handling.

Fixes test_dtlsssllistener and test_dtls_multithread.

Assisted-by: Claude Code:claude-opus-4-8

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
MergeDate: Mon Jul 13 14:24:18 2026
(Merged from https://github.com/openssl/openssl/pull/31896)


  Commit: d0f6af36bf459ac3df3288727624d6c3f452a7dd
      https://github.com/openssl/openssl/commit/d0f6af36bf459ac3df3288727624d6c3f452a7dd
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M crypto/bio/bio_sock.c
    M demos/dtlsecho/main.c
    M demos/sslecho/main.c
    M ssl/record/rec_layer_s3.c
    M ssl/statem/statem_dtls.c
    M ssl/statem/statem_lib.c
    M test/dtlsssllistenertest.c
    M test/recipes/70-test_sslrecords.t
    M test/recipes/70-test_tls13certcomp.t
    M test/recipes/70-test_tls13cookie.t
    M test/recipes/70-test_tls13downgrade.t
    M test/recipes/70-test_tls13kexmodes.t
    M test/recipes/70-test_tls13messages.t
    M test/recipes/70-test_tls13psk.t
    M util/perl/TLSProxy/Proxy.pm

  Log Message:
  -----------
  DTLS 1.3 Fix CI failures

Need to fix a deprecated API in dtlsecho. Also updated the sslecho
usage information since it is no longer correct.

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
MergeDate: Thu Jul 16 07:29:15 2026
(Merged from https://github.com/openssl/openssl/pull/31935)


  Commit: 21fa03f7526739bb96c5c88b6eefd7c57d7ba839
      https://github.com/openssl/openssl/commit/21fa03f7526739bb96c5c88b6eefd7c57d7ba839
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M doc/man3/DTLSv1_listen.pod
    M ssl/ssl_lib.c
    M test/sslapitest.c

  Log Message:
  -----------
  DTLS 1.3 Remove SSL_stateless support

DTLSv1.3 suppport was added into SSL_stateless, but it
doesn't work properly. The reason why it doesn't work
properly is that it doesn't handle concurrent DTLS
sessions being established at the same time.
If you want something that allows DTLS 1.3 connections
being establish at the same time use DTLS SSL Listener.

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
MergeDate: Wed Jul 22 15:55:14 2026
(Merged from https://github.com/openssl/openssl/pull/31364)


  Commit: 6712b57e27e95cf7455754185fdcf3fe3878be24
      https://github.com/openssl/openssl/commit/6712b57e27e95cf7455754185fdcf3fe3878be24
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/statem/statem_lib.c
    M test/recipes/70-test_dtls13epoch.t

  Log Message:
  -----------
  DTLS 1.3 Don't reset the handshake seq number after connection finish

In DTLS 1.3 the handshake sequence number is not reset to 0 after the
connection is establish. This means New Session tickets will not
send out with a handshake seq of 0. Instead it will pick up where it
left off.

Fixes: openssl/project#2008
Assisted-by: Claude:claude-opus-4-7

Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Paul Dale <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
MergeDate: Mon Jul 27 12:20:10 2026
(Merged from https://github.com/openssl/openssl/pull/31978)


  Commit: 619eb69146daf023333828f5a180ed3bd11846f3
      https://github.com/openssl/openssl/commit/619eb69146daf023333828f5a180ed3bd11846f3
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M crypto/bio/bf_buff.c
    M crypto/bio/bio_local.h
    M doc/man3/BIO_f_buffer.pod
    M doc/man3/BIO_sendmmsg.pod
    M ssl/record/methods/tls_common.c
    M ssl/statem/statem.c
    M test/dtlsssllistenertest.c

  Log Message:
  -----------
  DTLS 1.3 SSL Listener does not currently buffer handshake messages

Now when a buffer BIO is created for the initial DTLS handshake
from an SSL listener messages are now buffered until a flush
is called.

Fixes: openssl/project#1982
Assisted-by: Claude:claude-opus-4-7

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Jakub Zelenka <[email protected]>
MergeDate: Tue Aug 11 14:41:07 2026
(Merged from https://github.com/openssl/openssl/pull/31979)


  Commit: c218f482d799c357b34383e1c43d51a22d9ffebe
      https://github.com/openssl/openssl/commit/c218f482d799c357b34383e1c43d51a22d9ffebe
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M doc/man3/SSL_CTX_set_new_pending_conn_cb.pod
    M doc/man3/SSL_get_value_uint.pod
    M doc/man3/SSL_new_listener.pod
    M include/internal/dgram_conn_lookup.h
    M include/openssl/ssl.h.in
    M ssl/d1_lib.c
    M ssl/dgram_demux.c
    M ssl/dtls_conn_lookup.c
    M ssl/ssl_lib.c
    M ssl/ssl_local.h
    M test/dtlsssllistenertest.c
    M util/libssl.num
    M util/other.syms

  Log Message:
  -----------
  DTLS 1.3 SSL Listener CAP pending connections

To prevent resource exhaustion we have to cap the number
of pending connections. The default is 256 pending connections
but there are APIs to configure the max number of pending
connections.

Fixes: openssl/project#1983
Fixes: openssl/project#2035
Assisted-by: Claude:claude-opus-4-7

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Jakub Zelenka <[email protected]>
MergeDate: Tue Aug 11 14:50:11 2026
(Merged from https://github.com/openssl/openssl/pull/31980)


  Commit: d2f675d471dd3ba24ae8dbc986ca2c6fb8d58195
      https://github.com/openssl/openssl/commit/d2f675d471dd3ba24ae8dbc986ca2c6fb8d58195
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M CHANGES.md
    M NEWS.md

  Log Message:
  -----------
  DTLS 1.3 Update CHANGES.md

Updating the CHANGES.md for all the changes added via the DTLS1.3
feature branch.

Fixes: openssl/project#2039
Assisted-by: Claude:claude-opus-4-8

Reviewed-by: Matt Caswell <[email protected]>
Reviewed-by: Frederik Wedel-Heinen <[email protected]>
MergeDate: Tue Aug 11 14:52:30 2026
(Merged from https://github.com/openssl/openssl/pull/32182)


  Commit: fca2b5c2dae067d2c0e4acf2cd04d505bcfdd43d
      https://github.com/openssl/openssl/commit/fca2b5c2dae067d2c0e4acf2cd04d505bcfdd43d
  Author: Jakub Zelenka <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M util/perl/TLSProxy/Proxy.pm

  Log Message:
  -----------
  test: let the kernel pick the DTLS client port in TLSProxy

For DTLS, TLSProxy picked a random port for s_client to -bind to,
probing it for availability first.  This was racy in two ways: the
probe socket was TCP while s_client binds UDP (the two port spaces
are independent, so a UDP socket held by a parallel test job was
invisible to the probe), and even a UDP probe would leave a window
between closing the probe socket and s_client binding the port.
With many tests now running under the DTLS proxy in parallel CI
jobs this caused intermittent BIO_bind EADDRINUSE failures.

Instead, drop -bind and the port probing entirely.  The kernel
assigns s_client's source port atomically on first send, and the
proxy, whose UDP socket is now left unconnected, learns the
client's address from the datagrams it receives, in the same way
any regular UDP server does.

Assisted-by: Claude:claude-fable-5
Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Merge-date: Thu Aug 13 13:42:29 2026
Merged-from: https://github.com/openssl/openssl/pull/32312


  Commit: 50ac39953b489e56cd9ff2272bf3b2292149c97a
      https://github.com/openssl/openssl/commit/50ac39953b489e56cd9ff2272bf3b2292149c97a
  Author: Matt Caswell <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/d1_lib.c
    M test/dtlsssllistenertest.c

  Log Message:
  -----------
  DTLS 1.3 Signal the listener notifier on accept queue push

The listener's notifier was signalled when the demux routed a datagram into a
connection's receive queue, but not when dtls_listener_drive_pending() moved
a completed connection onto the accept queue - even though the latter is
precisely the readiness event a thread waiting in SSL_poll() for
SSL_POLL_EVENT_IC is waiting for.

Usually the injection signal covers for this. Every connection reaching the
accept queue got there because a datagram was demuxed into its receive queue,
so the waiter is woken by that, ticks the listener during its own readout,
and finds the connection. The exception is the window in which the injection
and the queue push straddle a waiter registering, since signalling only
happens if there is a waiter at the time:

  1. Accept thread A polls the listener for SSL_POLL_EVENT_IC. Its readout
     ticks the listener, finds nothing, and it decides to block. It is not a
     registered waiter yet.
  2. Worker thread B polls one of its own connections, which also ticks the
     listener. The pump reads a client's final ClientHello and injects it into
     that pending connection's queue. There are no waiters, so nothing is
     signalled.
  3. A enters the blocking section. Its re-check runs without ticking, so it
     sees only the accept queue, still empty, and blocks.
  4. B's tick reaches dtls_listener_drive_pending(), which completes the
     connection against the buffered ClientHello and pushes it onto the accept
     queue.

With no signal at step 4, A sleeps on while a validated connection sits ready
to be accepted, until an unrelated datagram makes the socket readable again.
B consumed the only one in flight and the client is now waiting on the server,
so on a quiet listener that means waiting for the client to retransmit its
handshake.

Factor the signalling out of dtls_listener_packet_handler() into a helper and
call it from both places. Both call sites already hold the listener mutex,
which the helper requires.

Assisted-by: Claude Code:claude-opus-5
Reviewed-by: Ryan Hooper <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
Merge-date: Fri Aug 14 15:45:34 2026
Merged-from: https://github.com/openssl/openssl/pull/32239


  Commit: e32762c64ef655284dc06325a9a37ca241a36508
      https://github.com/openssl/openssl/commit/e32762c64ef655284dc06325a9a37ca241a36508
  Author: Matt Caswell <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/rio/poll_immediate.c
    M test/dtlsssllistenertest.c

  Log Message:
  -----------
  DTLS 1.3 Enter a blocking section when polling a DTLS listener

A DTLS listener added only the network socket to the poll set. Three things
followed from that. The notifier was not in the poll set, so a thread blocked
in SSL_poll() on the listener could not be woken by it. The thread never
called ossl_dtls_listener_enter_blocking_section(), so cur_blocking_waiters
stayed at zero - and since signalling is conditional on there being a waiter,
no other thread even attempted to signal. And there was no re-check after
registering, so readiness arising between the readout deciding nothing was
ready and the wait actually starting was lost.

Polling the socket alone is not sufficient, though not because a wakeup can
be missed outright. poll() reports whatever is currently sitting in the
socket buffer and returns immediately if there is any, so a thread cannot
miss a datagram just by being outside poll() when it arrives. What it can
miss is a datagram another thread has already taken. With several threads
polling the one shared socket that happens constantly: an arriving datagram
wakes all of them, only one gets it, and the rest find nothing. Any of them
can be the one that takes it, because SSL_read() on a connection pumps the
demux and SSL_poll() on a connection ticks the whole listener.

  1. Accept thread A polls the listener for SSL_POLL_EVENT_IC. Its readout
     ticks the listener, finds nothing, and it decides to block.
  2. A client's final ClientHello lands on the shared socket.
  3. Worker thread B, polling one of its own connections, ticks the listener
     and is the one that takes the datagram. Its tick completes the pending
     connection and pushes it onto the accept queue. Signalling is attempted,
     but A never registered as a waiter, so nothing is signalled.
  4. A reaches its poll, watching the socket alone. B drained it, so it is
     empty. A sleeps with a validated connection sitting on the accept queue,
     and nothing can wake it until an unrelated datagram arrives or its
     deadline expires.

A's readout, back at step 1, would have found that connection had it run
after step 3 rather than before it.

Add the notifier FD to the poll set and bracket the wait with the enter/leave
blocking section calls, mirroring what the listener-based connection path
already does. As there, re-check readiness once inside the section, since it
is only from that point that a readiness event is guaranteed to make the
notifier readable, and abort blocking if the listener became ready in the
meantime. The re-check removes the dependency on that ordering; the notifier
covers anything arising after it.

Note that the signal raised when a connection is pushed onto the accept queue
is itself conditional on a registered waiter, so it does nothing for a thread
polling the listener until that thread registers here. The two changes are
complementary and neither is sufficient alone.

Assisted-by: Claude Code:claude-opus-5
Reviewed-by: Ryan Hooper <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
Merge-date: Fri Aug 14 15:45:35 2026
Merged-from: https://github.com/openssl/openssl/pull/32239


  Commit: b9895bec7e2d77f6867a5ed8000f5af9c4afb085
      https://github.com/openssl/openssl/commit/b9895bec7e2d77f6867a5ed8000f5af9c4afb085
  Author: Matt Caswell <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/d1_lib.c
    M ssl/rio/poll_immediate.c
    M test/dtlsssllistenertest.c

  Log Message:
  -----------
  DTLS 1.3 Honour the DTLS retransmit timer in SSL_poll

When SSL_poll() decides to block it computes a wakeup deadline from the
per-object event timeout, so that timer driven work is not delayed by the
wait. This was done for QUIC objects but not for DTLS connections, whose
timeout is the handshake retransmission timer.

The consequence was that a poll with no user timeout would sleep until a
datagram arrived, straight through the point at which the connection should
have retransmitted. If the peer had itself lost the message we were waiting
for, neither side would make progress.

Fold SSL_get_event_timeout() into the deadline for DTLS connections as the
QUIC branch already does. It reports the DTLS timer already, so no new
plumbing is needed there.

Waking at the deadline is only useful if something then services the timer.
Unlike the QUIC case, where the readout ticks the reactor and that handles
timeouts, the DTLS readout only pumped the listener's demux. Nothing
retransmitted, and because an expired timer reports zero time remaining the
recomputed deadline would be "now" on every subsequent wait, turning the
sleep into a spin. Call SSL_handle_events() from the readout as well, which
is what a caller polling without SSL_POLL_FLAG_NO_HANDLE_EVENTS is asking
for, and which for a DTLS connection services that timer.

Both of those are the calls the documentation asks new code to use:
DTLSv1_get_timeout(3) and DTLSv1_handle_timeout(3) each record that
SSL_get_event_timeout(3) and SSL_handle_events(3) respectively supersede all
of their use cases. The test asserts its precondition through
SSL_get_event_timeout() for the same reason, which has the side benefit of
using the same call SSL_poll() uses to compute the deadline being tested.

Assisted-by: Claude Code:claude-opus-5
Reviewed-by: Ryan Hooper <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
Merge-date: Fri Aug 14 15:45:37 2026
Merged-from: https://github.com/openssl/openssl/pull/32239


  Commit: 3b1b2317c1558989312fa41712edc68765248f13
      https://github.com/openssl/openssl/commit/3b1b2317c1558989312fa41712edc68765248f13
  Author: Matt Caswell <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/d1_lib.c
    M test/dtlsssllistenertest.c

  Log Message:
  -----------
  Stop the DTLS timer when the retransmit budget is exhausted

dtls1_handle_timeout() fails the connection with SSLfatal() once
dtls1_check_timeout_num() reports that DTLS1_TMO_ALERT_COUNT unanswered
retransmissions have been sent. It returns at that point without reaching
dtls1_start_timer(), so next_timeout is left holding a time in the past.

Nothing re-arms or clears it afterwards, the connection being finished, so
every later dtls1_get_timeout() computes a negative remaining time, clamps it
to zero and reports the timeout as due immediately. A caller which waits on
that timeout therefore never waits at all. The documented
DTLSv1_get_timeout() plus select() loop turns into a busy loop on any
connection which has given up retransmitting, consuming a core until the
application gives up on the connection itself.

Stop the timer instead. dtls1_stop_timer() zeroes next_timeout, which
dtls1_get_timeout() already reports as "no timer running", so callers see no
pending timeout and wait on whatever other deadline they have.

The test drives this without waiting by forcing a retransmission timeout of
1ms, which is below the 15ms floor at which dtls1_get_timeout() treats a
timer as already expired. The server therefore retransmits on every read
attempt and exhausts its budget inside SSL_accept().

Assisted-by: Claude Code:claude-opus-5
Reviewed-by: Ryan Hooper <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
Merge-date: Fri Aug 14 15:45:40 2026
Merged-from: https://github.com/openssl/openssl/pull/32239


  Commit: cd3c34d896f4fef171952d05834d2b173d0208b9
      https://github.com/openssl/openssl/commit/cd3c34d896f4fef171952d05834d2b173d0208b9
  Author: Matt Caswell <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/rio/poll_builder.c

  Log Message:
  -----------
  Wait consistently across platforms when there is nothing to poll

poll_translate_ssl_dtls_conn() adds no file descriptor to the poll set when
the connection's BIO cannot supply one, which is the case for the memory and
datagram-pair BIOs the test suite is built on. Unlike the QUIC and DTLS
listener paths it does not report that as an error, and rightly so: a DTLS
connection with no pollable BIO has no readiness to wait for, but it still
has a retransmission deadline to wake for, so a wait with nothing to watch is
meaningful.

The resulting empty descriptor set was then handed to the operating system,
where the behaviour differs. poll() treats it as a plain sleep, so this
worked on Unix. Windows' select() rejects a call with no descriptors, so
ossl_rio_poll_builder_poll() returned failure and SSL_poll() failed with it.

Sleep out the deadline explicitly rather than relying on the platform. With
no descriptors and no deadline nothing could ever provide a wakeup, so that
combination is reported as a failure instead of sleeping for ever.

This has no test of its own: on any platform whose poll() already sleeps, the
behaviour before and after is identical, so only the Windows CI builds
distinguish them.

Assisted-by: Claude Code:claude-opus-5
Reviewed-by: Ryan Hooper <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
Merge-date: Fri Aug 14 15:45:41 2026
Merged-from: https://github.com/openssl/openssl/pull/32239


  Commit: f4c38effd0c928b91c20b46a83fb026491dd8663
      https://github.com/openssl/openssl/commit/f4c38effd0c928b91c20b46a83fb026491dd8663
  Author: Matt Caswell <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/d1_lib.c
    M ssl/rio/poll_immediate.c
    M ssl/ssl_local.h
    M test/dtls_multithread_test.c

  Log Message:
  -----------
  DTLS 1.3 Wait rather than spin in the blocking accept path

SSL_accept_connection() looped calling ossl_dtls_tick() with nothing in
between, so it only avoided spinning if the application supplied a
blocking network BIO and each tick slept inside BIO_recvmmsg().

A listener cannot require that. It demultiplexes one socket to many
connections and ossl_dgram_demux_pump() holds the demux lock across the
receive, so a thread blocked in accept stalls reads on every established
connection until a datagram for any peer arrives. QUIC takes the
opposite approach, keeping the socket non-blocking and waiting for
readiness instead.

Do the same: set the listener's network BIO non-blocking and wait
between ticks via ossl_dtls_block_until_ready(), which reuses
SSL_poll()'s blocking machinery. It reads nothing out, so the caller
re-tests its own condition and waits again if the wakeup was not for it.

Assisted-by: Claude Code:claude-opus-5
Reviewed-by: Ryan Hooper <[email protected]>
Reviewed-by: Jakub Zelenka <[email protected]>
Merge-date: Mon Aug 17 08:29:51 2026
Merged-from: https://github.com/openssl/openssl/pull/32324


  Commit: c13f5c60a97039af44a6f2dbeefa0d4b3b7cbefc
      https://github.com/openssl/openssl/commit/c13f5c60a97039af44a6f2dbeefa0d4b3b7cbefc
  Author: Matt Caswell <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/dtlsssllistenertest.c

  Log Message:
  -----------
  DTLS 1.3 Name the accept flag in the no-BIO test comments

Both tests describe themselves in terms of "blocking mode" and
"non-blocking behaviour", when what they actually vary is the
SSL_ACCEPT_CONNECTION_NO_BLOCK flag. That reads as though they concern a
mode on the object, which invites confusion with
SSL_set_blocking_mode(). Name the flag, and say what each case is really
asserting.

Comment only, no functional change.

Assisted-by: Claude Code:claude-opus-5
Reviewed-by: Ryan Hooper <[email protected]>
Reviewed-by: Jakub Zelenka <[email protected]>
Merge-date: Mon Aug 17 08:29:53 2026
Merged-from: https://github.com/openssl/openssl/pull/32324


  Commit: 4f2d54a23ac94fb8c27d017d40f0d0253eb1ee79
      https://github.com/openssl/openssl/commit/4f2d54a23ac94fb8c27d017d40f0d0253eb1ee79
  Author: Matt Caswell <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M doc/man3/SSL_new_listener.pod
    M doc/man3/SSL_set_bio.pod
    M doc/man3/SSL_set_blocking_mode.pod
    M ssl/d1_lib.c
    M ssl/ssl_lib.c
    M ssl/ssl_local.h
    M test/dtlsssllistenertest.c

  Log Message:
  -----------
  DTLS 1.3 Support SSL_set_blocking_mode() on a DTLS listener

A DTLS listener cannot take its blocking behaviour from its network BIO
the way an ordinary DTLS object does. It demultiplexes one socket to
many connections, so a read for one of them must not be allowed to
block and stall the others, and the connections it hands out have no BIO
of their own to configure - they read from a queue the listener fills.
Blocking was therefore unavailable to them, SSL_set_blocking_mode()
being QUIC only.

Extend it to a DTLS listener and to the connections created from one,
with the same semantics QUIC has. Blocking is the default, a connection
follows its listener unless given a setting of its own, and asking for
blocking fails where it cannot be delivered, which for a listener means
a network BIO with no poll descriptor to wait on.
SSL_accept_connection() waits only where the caller did not pass
SSL_ACCEPT_CONNECTION_NO_BLOCK and the listener is in blocking mode,
matching what QUIC does with the same flag.

Only the accept path acts on the mode so far; reads and writes follow.

Note that this does not extend to a DTLS object which did not come from
a listener. Such an object has its own BIO and already offers both modes
through it, so unlike QUIC - where the socket is always nonblocking and
nothing works without emulation - there is nothing missing to provide.

While documenting the above, correct the existing description of which
QUIC objects these functions apply to. It said connection objects only,
but they have always been accepted for QUIC stream and listener objects
too.

Assisted-by: Claude Code:claude-opus-5
Reviewed-by: Ryan Hooper <[email protected]>
Reviewed-by: Jakub Zelenka <[email protected]>
Merge-date: Mon Aug 17 08:29:54 2026
Merged-from: https://github.com/openssl/openssl/pull/32324


  Commit: fc83d478a47285248468449916980863fef1bc59
      https://github.com/openssl/openssl/commit/fc83d478a47285248468449916980863fef1bc59
  Author: Matt Caswell <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/d1_lib.c
    M ssl/ssl_lib.c
    M ssl/ssl_local.h
    M test/dtlsssllistenertest.c

  Log Message:
  -----------
  DTLS 1.3 Keep listener driven connections out of blocking mode

A DTLS listener drives the handshakes of connections which have not been
accepted yet from inside its own tick: dtls_listener_drive_pending()
calls SSL_accept() on each of them. Those connections inherit the
listener's blocking mode, so once a listener connection is able to block
waiting for a datagram, that SSL_accept() can block too - and it must
not, because the listener is the only thing which will ever deliver the
datagram it is waiting for. Nothing else runs while the tick is inside
that call, so the wait cannot end.

Add force_nonblocking to DTLS1_STATE, set around the SSL_accept() that
dtls_listener_drive_pending() performs, and consulted by
ossl_dtls_desires_blocking(). Ownership of a connection passes to the
application when SSL_accept_connection() returns it, and by then the
flag is clear, so an application which asked for blocking still gets it.

The flag has to survive SSL_clear(), which memsets d1. SSL_clear() can
run inside the very SSL_accept() the listener is driving:
drive_single_connection() sets TLS1_FLAGS_STATELESS to suppress it, but
only where cookie validation is enabled. Losing the flag there is not
merely a missed optimisation - the connection blocks inside the tick,
poll_translate_ssl_dtls_conn() ticks the listener again from another
thread, drive_pending re-enters and collects the same connection twice,
and registering it a second time trips the old == NULL assertion in the
connection lookup. In a release build that appears later as a
use-after-free rather than as anything to do with blocking mode.

Nothing blocks in a read yet, so this commit changes no behaviour on its
own. It lands first so that the commit which adds blocking reads cannot
deadlock at any point in the series.

Assisted-by: Claude Code:claude-opus-5
Reviewed-by: Ryan Hooper <[email protected]>
Reviewed-by: Jakub Zelenka <[email protected]>
Merge-date: Mon Aug 17 08:29:56 2026
Merged-from: https://github.com/openssl/openssl/pull/32324


  Commit: 8985f7e206fb7c531460e67fc8986a5ce57fdbbf
      https://github.com/openssl/openssl/commit/8985f7e206fb7c531460e67fc8986a5ce57fdbbf
  Author: Matt Caswell <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/d1_lib.c
    M ssl/record/rec_layer_s3.c
    M ssl/ssl_local.h
    M test/dtls_multithread_test.c
    M test/dtlsssllistenertest.c

  Log Message:
  -----------
  DTLS 1.3 Support blocking reads on listener connections

A connection created by a DTLS listener has no BIO of its own. The
listener owns the socket and demultiplexes datagrams into a per
connection queue, so there is nothing for a read to block in, and every
read on an empty queue reported WANT_READ however the connection was
configured. SSL_set_blocking_mode() therefore had no effect on reads.

Wait in the record layer instead, where a blocking BIO would have. When
rlayer_dtls_get_urxe_packet() finds the queue empty and the connection is
in blocking mode, ossl_dtls_conn_wait_for_datagram() waits for one to
arrive. The state machine above is untouched, so SSL_read(), SSL_peek(),
SSL_do_handshake() and SSL_accept() all become blocking together, which
is what an application moving from a plain DTLS object expects.

The wait loops, because the socket is shared: a wakeup may be for a
datagram belonging to a different connection, in which case our queue is
still empty and there is nothing to return. It also handles events after
each wakeup, since while a thread is in here nothing else services the
connection, and the retransmission timer has to keep running - the poll
translation folds the event timeout into the deadline so the wait ends in
time for it.

Existing tests drive both ends of a connection from a single thread,
which cannot work if the server side blocks, so create_dtls_listener() in
dtlsssllistenertest.c now turns blocking mode off for its callers, with
create_dtls_listener_unconfigured() for the one test which has to observe
the default. test_dtls_multithread opts out for the same reason.

The new test_dtls_blocking_read has the client stay silent for a while
after its handshake, so the server thread is already parked in
SSL_read_ex() when the write finally comes. Its second iteration
handshakes in non-blocking mode and switches to blocking only for the
read, which pins the read path on its own: in the first iteration the
handshake is what fails without this change, and the read is never
reached.

Assisted-by: Claude Code:claude-opus-5
Reviewed-by: Ryan Hooper <[email protected]>
Reviewed-by: Jakub Zelenka <[email protected]>
Merge-date: Mon Aug 17 08:29:57 2026
Merged-from: https://github.com/openssl/openssl/pull/32324


  Commit: 2a6302cc60eb82b571c4d480c57e4ed05bdff58f
      https://github.com/openssl/openssl/commit/2a6302cc60eb82b571c4d480c57e4ed05bdff58f
  Author: Matt Caswell <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M doc/man3/SSL_set_blocking_mode.pod
    M ssl/d1_lib.c
    M ssl/record/methods/recmethod_local.h
    M ssl/record/methods/tls_common.c
    M ssl/record/rec_layer_s3.c
    M ssl/record/record.h
    M ssl/rio/poll_immediate.c
    M ssl/ssl_local.h
    M test/dtlsssllistenertest.c

  Log Message:
  -----------
  DTLS 1.3 Support blocking writes on listener connections

A listener connection writes through the listener's socket, which is
shared with every other connection and is always non-blocking. When a
send cannot be completed the DTLS record layer discards the datagram and
reports that the write should be retried - a fair default for an
unreliable transport, but not what an application which asked for
blocking writes expects, since it gets neither the data sent nor a call
which waited.

Add an rlayer callback, OSSL_FUNC_RLAYER_BLOCK_FOR_WRITE, which the
record layer calls instead of reporting a retry. For a listener
connection in blocking mode it waits for the socket to become writable
and returns 1, and tls_retry_write_records() goes round its loop again to
repeat the same send: nothing has been consumed at that point, so the
retry is a genuine second attempt rather than a resend.

Only the BIO_sendmmsg() branch is hooked. That is the one listener
connections take, because their peer address is set, and the BIO_write()
branch below it belongs to connections which have a BIO of their own to
block in. A NULL callback leaves both paths exactly as they were, so TLS
and standalone DTLS are untouched.

The wait itself is one wait per call, not a loop: the caller retries the
send and comes back here if it still cannot proceed, so a wakeup which
turns out not to have left room in the socket buffer costs another
attempt rather than a lost datagram.

A loopback socket's send buffer does not fill, so the test supplies the
transient failure with a filter BIO in front of the listener's write BIO
which rejects one send with a non-fatal error. Its ctrl forwards
everything to the socket underneath, the poll descriptors included, since
those are what the wait itself needs. The client is then read to confirm
the datagram really was sent rather than merely reported as sent.

Assisted-by: Claude Code:claude-opus-5
Reviewed-by: Ryan Hooper <[email protected]>
Reviewed-by: Jakub Zelenka <[email protected]>
Merge-date: Mon Aug 17 08:29:59 2026
Merged-from: https://github.com/openssl/openssl/pull/32324


  Commit: 42fb610f8d9fbd393d6ea14caa8d19ceb2abef99
      https://github.com/openssl/openssl/commit/42fb610f8d9fbd393d6ea14caa8d19ceb2abef99
  Author: Mounir IDRASSI <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/statem/statem_dtls.c
    M test/recipes/70-test_tls13messages.t

  Log Message:
  -----------
  Reject HelloRequest in TLS and DTLS 1.3

TLS and DTLS 1.3 reserve handshake message type 0, but legacy
client-side HelloRequest skip paths could consume such messages before
the state machines rejected them.

Keep the skip paths only for connections that cannot use TLS or DTLS
1.3. Add TLSProxy coverage for TLS and DTLS 1.3 rejection, and for the
preserved TLS and DTLS 1.2 legacy behavior. The DTLS test insertion
also adjusts record sequencing so the injected HelloRequest is a valid
standalone server record.

Reviewed-by: Andrew Dinh <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
Merge-date: Mon Aug 17 08:32:42 2026
Merged-from: https://github.com/openssl/openssl/pull/31637


  Commit: 9e8baabd9e9810cde4064ed2f255173dbe83e855
      https://github.com/openssl/openssl/commit/9e8baabd9e9810cde4064ed2f255173dbe83e855
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/build.info
    A ssl/d1_transcript.c
    M ssl/s3_enc.c
    M ssl/ssl_local.h
    M ssl/tls13_enc.c
    M test/build.info
    M test/tls13secretstest.c

  Log Message:
  -----------
  Fix DTLS 1.3 early data transcript hash stripping

When the client installs early write keys, negotiated_version is not
yet set to DTLS1_3_VERSION, so the RFC 9147 §5.2 stripping of
msg_seq, fragment_offset, and fragment_length was skipped in
tls13_change_cipher_state. Fix by conditioning on
SSL_CONNECTION_IS_DTLS() alone.

Fixes: openssl/project#2043
Reviewed-by: Frederik Wedel-Heinen <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
Merge-date: Mon Aug 17 08:34:23 2026
Merged-from: https://github.com/openssl/openssl/pull/32276


  Commit: 98d1dd7ec03e49fe09e6f7f526fc7c9fb80fc17d
      https://github.com/openssl/openssl/commit/98d1dd7ec03e49fe09e6f7f526fc7c9fb80fc17d
  Author: Matt Caswell <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/dtls_multithread_test.c

  Log Message:
  -----------
  Skip the common test options in dtls_multithread_test

setup_tests() read its two positional arguments without first calling
test_skip_common_options(), so the option cursor was never advanced from
the test's point of view and test_get_argument(0) returned the option
itself. Passing -test or -iter therefore left the certificate path set to
the literal string "-test", and the run failed on that:

    error:80000002:system library:file_ctrl:No such file or directory:
        ...:calling fopen(-test, r)

The option was not being ignored: the framework parses it in
process_shared_options() and the selected sub-test really does run. Only
the positional arguments were shifted, which is what made the failure
look unrelated to the option.

Also declare the usage string, so -help describes the two arguments the
test needs rather than showing none.

Assisted-by: Claude Code:claude-opus-5
Reviewed-by: Ryan Hooper <[email protected]>
Reviewed-by: Jakub Zelenka <[email protected]>
Merge-date: Mon Aug 17 08:36:26 2026
Merged-from: https://github.com/openssl/openssl/pull/32331


  Commit: 655bf7ecccc5833719dae99b8b6035bd7877023a
      https://github.com/openssl/openssl/commit/655bf7ecccc5833719dae99b8b6035bd7877023a
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M demos/build.info
    M demos/dtlsecho/main.c
    A demos/dtlslistenerecho/README.md
    A demos/dtlslistenerecho/build.info
    A demos/dtlslistenerecho/cert.pem
    A demos/dtlslistenerecho/key.pem
    A demos/dtlslistenerecho/main.c
    M doc/man7/ossl-guide-dtlsv13.pod

  Log Message:
  -----------
  DTLS 1.3 SSL Listener Demo

Demo utilizing the SSL Listener for DTLS. It runs in multiple
threads that will echo what a client sends.

Currently up to 10 clients can make a connection. A client can
close the connection by sending kill. If a client sends
killall the server will close all the connections and free
up all the resources being used.

Fixes: openssl/project#1957
Assisted-by: Claude:claude-opus-4-7
Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Jakub Zelenka <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
Merge-date: Thu Aug 20 09:50:36 2026
Merged-from: https://github.com/openssl/openssl/pull/31983


  Commit: 32683c3d3763aef08731f918cb23ef152136df34
      https://github.com/openssl/openssl/commit/32683c3d3763aef08731f918cb23ef152136df34
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M demos/dtlslistenerecho/README.md
    M demos/dtlslistenerecho/main.c
    M doc/man7/ossl-guide-dtlsv13.pod

  Log Message:
  -----------
  DTLS 1.3 Set the listener demo to non-blocking mode

A DTLS listener, and the connections it accepts, now default to
blocking mode. The dtlslistenerecho demo drives the listener and its
connections with SSL_poll() and uses SSL_ACCEPT_CONNECTION_NO_BLOCK,
so call SSL_set_blocking_mode() on the listener to put it back into
non-blocking mode. The accepted connections inherit that mode.

Also update the DTLS 1.3 guide (ossl-guide-dtlsv13) to mention
SSL_set_blocking_mode() and SSL_get_blocking_mode() for DTLS
listeners and to note that a listener is blocking by default.

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Jakub Zelenka <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
Merge-date: Thu Aug 20 09:50:38 2026
Merged-from: https://github.com/openssl/openssl/pull/31983


  Commit: 617502ee427452f8532e1172009753308939d396
      https://github.com/openssl/openssl/commit/617502ee427452f8532e1172009753308939d396
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M CHANGES.md
    M demos/dtlslistenerecho/main.c
    M doc/man3/DTLSv1_listen.pod
    M doc/man3/SSL_new_listener.pod
    M doc/man7/ossl-guide-dtlsv13.pod
    M include/openssl/ssl.h.in
    M ssl/d1_lib.c
    M test/dtlsssllistenertest.c
    M util/other.syms

  Log Message:
  -----------
  DTLS SSL Listener default address validation

Replace SSL_LISTENER_FLAG_REQUIRE_HVR and SSL_LISTENER_FLAG_REQUIRE_HRR
with a single SSL_LISTENER_FLAG_ADDRESS_VALIDATION, and make address
validation the default. A DTLS listener now validates (HVR for DTLS
1.0/1.2, HRR cookie for DTLS 1.3) unless SSL_LISTENER_FLAG_NO_VALIDATE
is set. If both NO_VALIDATE and ADDRESS_VALIDATION are given, the
listener fails safe and validates.

Update the tests, the dtlslistenerecho demo, util/other.syms and the
listener documentation to match.

Assisted-by: Claude:claude-opus-4-8
Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Jakub Zelenka <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
Merge-date: Thu Aug 20 09:50:39 2026
Merged-from: https://github.com/openssl/openssl/pull/31983


  Commit: f6af0fac82c4ca88072ed13c27b3cca3f1f33b4b
      https://github.com/openssl/openssl/commit/f6af0fac82c4ca88072ed13c27b3cca3f1f33b4b
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/build.info
    M test/dtlsssllistenertest.c
    M test/dtlstest.c
    M test/recipes/80-test_dtls_ccs_reorder.t
    M test/recipes/80-test_dtlsv1listen.t
    M test/ssl-tests/18-dtls-renegotiate.cnf.in
    M test/ssl_ctx_test.c

  Log Message:
  -----------
  DTLS 1.3 CI nightly NO DTLS 1.2 Failures Fix

dtlsv1listentest uses DTLSv1_listen(), a DTLS 1.2-only API that crashes
when DTLS 1.2 is disabled. Guard the test in build.info under
!$disabled{dtls1_2} and add a matching recipe skip so the test is neither
compiled nor run when DTLS 1.2 is unavailable.

The dtls_ccs_reorder test file is specific to DTLS 1.0/1.2 CCS reordering,
which does not apply to DTLS 1.3. The recipe only skipped when all DTLS was
disabled, so when both DTLS 1.0 and 1.2 were disabled while DTLS 1.3
remained, the test still ran. Add a recipe skip for when both DTLS 1.0 and
DTLS 1.2 are disabled, matching the build.info condition.

ssl_ctx_test had two test table entries that set DTLS1_2_VERSION as a max
protocol version and expected success. When DTLS 1.2 is disabled that
version is not valid for any protocol, so SSL_CTX_set_max_proto_version()
returns 0. Guard both entries with #ifndef OPENSSL_NO_DTLS1_2.

dtlstest contained a dead #ifdef OPENSSL_NO_DTLS1_2 block inside
test_listen(), which is itself wrapped in #ifndef OPENSSL_NO_DTLS1_2.
The inner ifdef could never be true; remove it.

Assisted-by: Claude:claude-sonnet-4-6
Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
Merge-date: Thu Aug 20 09:55:38 2026
Merged-from: https://github.com/openssl/openssl/pull/32340


  Commit: c31bafb18ab097309232e5ce6dbd9f5ae01aee86
      https://github.com/openssl/openssl/commit/c31bafb18ab097309232e5ce6dbd9f5ae01aee86
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/d1_lib.c
    M ssl/ssl_ciph.c
    M ssl/ssl_local.h
    M test/cipher_overhead_test.c
    M test/dtls_mtu_test.c
    M test/recipes/80-test_dtls_mtu.t

  Log Message:
  -----------
  DTLS 1.3 Fix DTLS_get_data_mtu() and extend MTU test to cover DTLS 1.3

DTLS_get_data_mtu() included the explicit IV overhead from
ssl_cipher_get_overhead() for AES-GCM and CCM ciphers, but DTLS 1.3 uses
implicit IVs so no IV bytes appear on the wire. Fix by subtracting
EVP_GCM_TLS_EXPLICIT_IV_LEN or EVP_CCM_TLS_EXPLICIT_IV_LEN.

Restructure the MTU test to pin DTLS 1.2 in the PSK cipher loop (previously
DTLS 1.3 was silently negotiated instead) and add a DTLS 1.3 loop using
certificate-based auth. Guard TLS_CHACHA20_POLY1305_SHA256 with both
OPENSSL_NO_CHACHA and OPENSSL_NO_POLY1305.

Assisted-by: Claude:claude-sonnet-4-6
Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
Merge-date: Thu Aug 20 09:55:39 2026
Merged-from: https://github.com/openssl/openssl/pull/32340


  Commit: c5f04550401a3daf4ba8d12502cb7db49f00387c
      https://github.com/openssl/openssl/commit/c5f04550401a3daf4ba8d12502cb7db49f00387c
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M .github/workflows/run-checker-daily.yml
    M ssl/statem/statem_lib.c
    M test/dtlsssllistenertest.c
    M test/dtlstest.c
    M test/ssl_ctx_test.c

  Log Message:
  -----------
  DTLS 1.3 Fix no-dtls1_3 build configuration CI failures

Guard the DTLS1_3_VERSION entry in dtls_version_table with
OPENSSL_NO_DTLS1_3 (NULL fallback), matching the pattern used by
tls_version_table for TLS1_3. Add a min_version clamp for DTLS1_3 in
ssl_check_allowed_versions() to fix SSL_CTX_set_min_proto_version()
incorrectly returning failure under no-dtls1_3, caused by DTLS inverted
wire-number ordering making the range check fire after max was clamped to
DTLS1_2. Guard _dtls13 test functions and their ADD_TEST calls in
dtlstest.c. Guard DTLS 1.3-only helpers and tests in
dtlsssllistenertest.c, and move SSL_poll tests outside the DTLS 1.3
guard so they run for any DTLS version. Add no-dtls1_3 to the daily CI
checker matrix.

Assisted-by: Claude:claude-sonnet-4-6
Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
Merge-date: Thu Aug 20 09:55:41 2026
Merged-from: https://github.com/openssl/openssl/pull/32340


  Commit: 51b8666c6d7e9f5d504ffa5e037ec996c9a063ca
      https://github.com/openssl/openssl/commit/51b8666c6d7e9f5d504ffa5e037ec996c9a063ca
  Author: Ryan Hooper <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M util/perl/TLSProxy/Proxy.pm

  Log Message:
  -----------
  DTLS 1.3 Fix TLSProxy DTLS retransmission in valgrind CI

Valgrind slows execution down, causing DTLS retransmission timers to fire
during otherwise normal handshakes. The client retransmits its ClientHello
before the server responds, and TLSProxy recorded the duplicate into
message_list unconditionally. This shifted every subsequent message index
by one, breaking three DTLS 1.3 subtests:

70-test_tls13alerts.t: alert_filter corrupted message_list[1] expecting
the ServerHello, but found the retransmitted ClientHello instead. The
real ServerHello passed through uncorrupted, the handshake succeeded,
and Message->fail() returned false.

70-test_tls13messages.t / 70-test_tls13kexmodes.t: checkhandshake.pm
walks message_list sequentially comparing each .mt to an expected
sequence. The extra ClientHello at position 0 shifted all five
subsequent checks.

Fix by deduplicating message_list in DTLS mode using (sender, msgseq) as
the key. Retransmitted DTLS handshake messages always carry the same
message sequence number as the original, so duplicates are naturally
discarded. HelloRetryRequest is unaffected becasue the retried ClientHello
gets an incremented msgseq. The seen_msgseq hash is reset by clearClient
so there is no state leakage between subtests.

Assisted-by: Claude:claude-sonnet-4-6
Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
Merge-date: Thu Aug 20 09:55:42 2026
Merged-from: https://github.com/openssl/openssl/pull/32340


  Commit: 943ae67500b9f6f5014790d50841513bc89647e1
      https://github.com/openssl/openssl/commit/943ae67500b9f6f5014790d50841513bc89647e1
  Author: Tomas Mraz <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M test/cipher_overhead_test.c

  Log Message:
  -----------
  cipher_overhead_test.c: Init libssl to sort the ciphers

Otherwise ssl3_get_cipher_by_id() cannot work properly.

Reviewed-by: Richard Levitte <[email protected]>
Reviewed-by: Nikola Pajkovsky <[email protected]>
Merge-date: Thu Aug 20 12:59:43 2026
Merged-from: https://github.com/openssl/openssl/pull/32443


  Commit: 9b8397408de2d7d3de8cfbe82fd7d5ac8e0c3507
      https://github.com/openssl/openssl/commit/9b8397408de2d7d3de8cfbe82fd7d5ac8e0c3507
  Author: Matt Caswell <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/statem/extensions_clnt.c

  Log Message:
  -----------
  Make the TLS 1.3 resumption PSK check aware of DTLS 1.3

tls13_check_resumption_psk() tells tls_construct_ctos_early_data()
whether the resumption session can key 0-RTT, but compared the session
version against TLS1_3_VERSION only. A DTLS 1.3 session records
DTLS1_3_VERSION, so the check never matched for DTLS.

The caller then fell back to the external PSK session, which is NULL
when resuming, and took the suppression path: max_early_data was set to
0, early_data_suppressed was set, and the early_data extension was not
sent. SSL_connect() ran an ordinary handshake and returned WANT_READ
with an empty error queue, so SSL_write_early_data() returned 0 with
nothing to indicate why.

Compare against DTLS1_3_VERSION for DTLS, using the version1_3 idiom
the calling function already uses.

The helper is newer than the DTLS 1.3 work: it was factored out of
tls_construct_ctos_early_data() after that function had been made
version aware, so it never picked up the DTLS case.

Fixes the DTLS 1.3 iterations of nine sslapitest early data tests.

Assisted-by: Claude Code:claude-opus-5
Reviewed-by: Ryan Hooper <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
Merge-date: Fri Aug 21 18:10:39 2026
Merged-from: https://github.com/openssl/openssl/pull/32441


  Commit: 4c5e4d558b3b1b8f3361c9781636a7cc3f620329
      https://github.com/openssl/openssl/commit/4c5e4d558b3b1b8f3361c9781636a7cc3f620329
  Author: Matt Caswell <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/d1_lib.c

  Log Message:
  -----------
  Use the SSL_CTX cached HMAC for DTLS listener cookies

dtls_listener_cookie_hmac() fetched an EVP_MAC for "HMAC" on every call.
It runs once per cookie generation and once per verification, so a DTLS
listener paid a provider fetch for every ClientHello it answered.

SSL_CTX already holds a pre-fetched EVP_MAC for exactly this purpose.
SSL_CTX_new() fetches it up front and fails if it cannot, so ctx->hmac
is always usable, and ssl_hmac_init() in ssl/t1_lib.c uses it the same
way. Take the MAC from there instead, which also removes the local
fetch and free.

Assisted-by: Claude Code:claude-opus-5
Reviewed-by: Ryan Hooper <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
Merge-date: Fri Aug 21 18:10:40 2026
Merged-from: https://github.com/openssl/openssl/pull/32441


  Commit: 38eb91841ec6bbd7323c9ddededba6ebcd452b14
      https://github.com/openssl/openssl/commit/38eb91841ec6bbd7323c9ddededba6ebcd452b14
  Author: Matt Caswell <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/rio/poll_immediate.c

  Log Message:
  -----------
  Guard the QUIC poll test hook so no-quic builds compile

poll_translate() calls ossl_quic_poll_translate_test_step_cb, a test
instrumentation hook whose declaration and definition both sit inside
#ifndef OPENSSL_NO_QUIC. On master that is safe, because the whole of
poll_translate() is inside the same guard.

This branch widens that guard to

    #if !defined(OPENSSL_NO_QUIC) || !defined(OPENSSL_NO_DTLS)

so that SSL_poll() works for DTLS, so poll_translate() is now also
compiled when QUIC is disabled. The hook call came along into the wider
region and does not compile there.

Guard the call itself. Configurations that disable QUIC, directly or by
cascade from no-tls1_3 or no-tls, then build again.

Assisted-by: Claude Code:claude-opus-5
Reviewed-by: Ryan Hooper <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
Merge-date: Fri Aug 21 18:10:41 2026
Merged-from: https://github.com/openssl/openssl/pull/32441


  Commit: d856fead5452ec85d49e01b230cfa9b45e3a3c2c
      https://github.com/openssl/openssl/commit/d856fead5452ec85d49e01b230cfa9b45e3a3c2c
  Author: Matt Caswell <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ssl/dtls_conn_lookup.c

  Log Message:
  -----------
  Reformat a foreach member call for the new ForEachMacros list

ossl_dgram_conn_lookup_foreach() calls a struct member named foreach.
clang-format has a built-in ForEachMacros list which contains foreach,
and it formats anything on that list like a control statement, with a
space before the parenthesis. The space was therefore correct when this
code was written, and check-style accepted it.

Master has since set ForEachMacros explicitly, to name the OSSL_RBT_*
macros. Setting the option replaces the built-in list rather than adding
to it, so foreach is no longer on it and is now formatted as an ordinary
function call, with no space. That turned an already compliant line into
a check-style failure without the line itself changing.

git rebase does not run the pre-commit hooks over the commits it
replays, so nothing reformatted this on the way past.

Assisted-by: Claude Code:claude-opus-5
Reviewed-by: Ryan Hooper <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
Merge-date: Fri Aug 21 18:10:42 2026
Merged-from: https://github.com/openssl/openssl/pull/32441


Compare: https://github.com/openssl/openssl/compare/df08859d63c4...d856fead5452

To unsubscribe from these emails, change your notification settings at https://github.com/openssl/openssl/settings/notifications

-- 
You received this message because you are subscribed to the Google Groups "openssl-commits" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To view this discussion visit https://groups.google.com/a/openssl.org/d/msgid/openssl-commits/openssl/openssl/push/refs/heads/feature/dtls-1.3/df0885-d856fe%40github.com.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.