<feed xmlns='http://www.w3.org/2005/Atom'>
<title>openbsd/src/lib/libssl/tls13_client.c, branch OPENBSD_7_9</title>
<subtitle>A mirror of https://github.com/libressl/openbsd.git
</subtitle>
<id>https://git.lua4.win/openbsd/atom?h=OPENBSD_7_9</id>
<link rel='self' href='https://git.lua4.win/openbsd/atom?h=OPENBSD_7_9'/>
<link rel='alternate' type='text/html' href='https://git.lua4.win/openbsd/'/>
<updated>2025-12-04T21:16:17+00:00</updated>
<entry>
<title>Hook up X25519MKLEM768 to the TLS 1.3 handshake</title>
<updated>2025-12-04T21:16:17+00:00</updated>
<author>
<name>beck</name>
<email></email>
</author>
<published>2025-12-04T21:16:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/openbsd/commit/?id=dccd1f43a0c2de3852d9515f57353d756629c97a'/>
<id>urn:sha1:dccd1f43a0c2de3852d9515f57353d756629c97a</id>
<content type='text'>
This does the following:

1) Adds a second key share prediction to the TLS 1.3 handshake.
   We only add one as we are unlikely to want to send more than
   one PQ one, and one classical one and are unlikely to waste
   bytes on a second PQ algorithm (anything that wants something
   else that we support can HRR to get it)

2) Adds X25519MLKEM768 (4588) to our list of supported groups.
   We add this to our preferred client and server key shares for TLS 1.3
   and we now have a separate list for TLS 1.2 which does not do this,
   cleaning up the old "full list" from the comments.

3) Updates the golden magic numbers in the regression tests to allow
   for the above two things changing the handshake, so the regress
   tests pass.

With this you can successfully hybrid PQ with servers and clients
that support it.

ok tb@ kenjiro@
</content>
</entry>
<entry>
<title>Add a MLKEM768_X25519 hybrid key share.</title>
<updated>2025-12-04T21:03:42+00:00</updated>
<author>
<name>beck</name>
<email></email>
</author>
<published>2025-12-04T21:03:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/openbsd/commit/?id=f8fcf556caab3fb1fb9d9b496d2724345c90a3eb'/>
<id>urn:sha1:f8fcf556caab3fb1fb9d9b496d2724345c90a3eb</id>
<content type='text'>
This implements the currently in use MLKEM768_X25519 hybrid
key share as outlined in

https://datatracker.ietf.org/doc/draft-ietf-tls-ecdhe-mlkem/

This commit does not yet wire this up to anything, that is done
in follow on changes.

ok tb@ jsing@ kenjiro@
</content>
</entry>
<entry>
<title>Use cipher suite values instead of IDs.</title>
<updated>2024-07-22T14:47:15+00:00</updated>
<author>
<name>jsing</name>
<email></email>
</author>
<published>2024-07-22T14:47:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/openbsd/commit/?id=bad64c687dbea7670efcb08ff393fe641d0e673d'/>
<id>urn:sha1:bad64c687dbea7670efcb08ff393fe641d0e673d</id>
<content type='text'>
OpenSSL has had the concept of cipher IDs, which were a way of working
around overlapping cipher suite values between SSLv2 and SSLv3. Given
that we no longer have to deal with this issue, replace the use of IDs
with cipher suite values. In particular, this means that we can stop
mapping back and forth between the two, simplifying things considerably.

While here, remove the 'valid' member of the SSL_CIPHER. The ssl3_ciphers[]
table is no longer mutable, meaning that ciphers cannot be disabled at
runtime (and we have `#if 0' if we want to do it at compile time).

Clean up the comments and add/update RFC references for cipher suites.

ok tb@
</content>
</entry>
<entry>
<title>Remove cipher from SSL_SESSION.</title>
<updated>2024-07-20T04:04:23+00:00</updated>
<author>
<name>jsing</name>
<email></email>
</author>
<published>2024-07-20T04:04:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/openbsd/commit/?id=026ea65c83ed46dcfd89ada1f6250daa4fcc01b3'/>
<id>urn:sha1:026ea65c83ed46dcfd89ada1f6250daa4fcc01b3</id>
<content type='text'>
For a long time SSL_SESSION has had both a cipher ID and a pointer to
an SSL_CIPHER (and not both are guaranteed to be populated). There is also
a pointer to an SSL_CIPHER in the SSL_HANDSHAKE that denotes the cipher
being used for this connection. Some code has been using the cipher from
SSL_SESSION and some code has been using the cipher from SSL_HANDSHAKE.

Remove cipher from SSL_SESSION and use the version in SSL_HANDSHAKE
everywhere. If resuming from a session then we need to use the SSL_SESSION
cipher ID to set the SSL_HANDSHAKE cipher. And we still need to ensure that
we update the cipher ID in the SSL_SESSION whenever the SSL_HANDSHAKE
cipher changes (this only occurs in a few places).

ok tb@
</content>
</entry>
<entry>
<title>Convert EVP_Digest{Sign,Verify}* to one-shot for TLSv1.3</title>
<updated>2023-06-10T15:34:36+00:00</updated>
<author>
<name>tb</name>
<email></email>
</author>
<published>2023-06-10T15:34:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/openbsd/commit/?id=c6775209edf6efcc569187bf0a3962ec2cb890a7'/>
<id>urn:sha1:c6775209edf6efcc569187bf0a3962ec2cb890a7</id>
<content type='text'>
Using one-shot EVP_DigestSign() and EVP_DigestVerify() is slightly shorter
and is needed for Ed25519 support.

ok jsing
</content>
</entry>
<entry>
<title>Make internal header file names consistent</title>
<updated>2022-11-26T16:08:57+00:00</updated>
<author>
<name>tb</name>
<email></email>
</author>
<published>2022-11-26T16:08:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/openbsd/commit/?id=81d98bf600a381a625eb11b39a725b08c0ba547f'/>
<id>urn:sha1:81d98bf600a381a625eb11b39a725b08c0ba547f</id>
<content type='text'>
Libcrypto currently has a mess of *_lcl.h, *_locl.h, and *_local.h names
used for internal headers. Move all these headers we inherited from
OpenSSL to *_local.h, reserving the name *_internal.h for our own code.
Similarly, move dtls_locl.h and ssl_locl.h to dtls_local and ssl_local.h.
constant_time_locl.h is moved to constant_time.h since it's special.

Adjust all .c files in libcrypto, libssl and regress.

The diff is mechanical with the exception of tls13_quic.c, where
#include &lt;ssl_locl.h&gt; was fixed manually.

discussed with jsing,
no objection bcook
</content>
</entry>
<entry>
<title>Get rid of SSL_CTX_INTERNAL and SSL_INTERNAL.</title>
<updated>2022-10-02T16:36:42+00:00</updated>
<author>
<name>jsing</name>
<email></email>
</author>
<published>2022-10-02T16:36:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/openbsd/commit/?id=efde998d3821e41e124a4bfcdf103e506055fc52'/>
<id>urn:sha1:efde998d3821e41e124a4bfcdf103e506055fc52</id>
<content type='text'>
These are no longer necessary due to SSL_CTX and SSL now being fully
opaque. Merge SSL_CTX_INTERNAL back into SSL_CTX and SSL_INTERNAL back
into SSL.

Prompted by tb@
</content>
</entry>
<entry>
<title>Only permit CCS messages if requesting middlebox compatibility mode.</title>
<updated>2022-09-11T14:33:07+00:00</updated>
<author>
<name>jsing</name>
<email></email>
</author>
<published>2022-09-11T14:33:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/openbsd/commit/?id=0ce983d909a52ac43f5a552e4fd367d06492b96f'/>
<id>urn:sha1:0ce983d909a52ac43f5a552e4fd367d06492b96f</id>
<content type='text'>
Currently the TLSv1.3 client always permits the server to send CCS
messages. Be more strict and only permit this if the client is actually
requesitng middlebox compatibility mode.

ok tb@
</content>
</entry>
<entry>
<title>Deduplicate peer certificate chain processing code.</title>
<updated>2022-08-17T07:39:19+00:00</updated>
<author>
<name>jsing</name>
<email></email>
</author>
<published>2022-08-17T07:39:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/openbsd/commit/?id=5f133a78eec6f3a2549c066b9a561d6350d6e07a'/>
<id>urn:sha1:5f133a78eec6f3a2549c066b9a561d6350d6e07a</id>
<content type='text'>
Rather than reimplement this in each TLS client and server, deduplicate it
into a single function. Furthermore, rather than dealing with the API
hazard that is SSL_get_peer_cert_chain() in this code, simply produce two
chains - one that has the leaf and one that does not.
SSL_get_peer_cert_chain() can then return the appropriate one.

This also moves the peer cert chain from the SSL_SESSION to the
SSL_HANDSHAKE, which makes more sense since it is not available on
resumption.

ok tb@
</content>
</entry>
<entry>
<title>Provide QUIC encryption levels.</title>
<updated>2022-07-24T14:16:29+00:00</updated>
<author>
<name>jsing</name>
<email></email>
</author>
<published>2022-07-24T14:16:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/openbsd/commit/?id=8e1be2bf4fabd0e39f3d547284095e5c4610e056'/>
<id>urn:sha1:8e1be2bf4fabd0e39f3d547284095e5c4610e056</id>
<content type='text'>
QUIC wants to know what "encryption level" handshake messages should be
sent at. Provide an ssl_encryption_level_t enum (via BoringSSL) that
defines these (of course quictls decided to make this an
OSSL_ENCRYPTION_LEVEL typedef, so provide that as well).

Wire these through to tls13_record_layer_set_{read,write}_traffic_key() so
that they can be used in upcoming commits.

ok tb@
</content>
</entry>
</feed>
