<feed xmlns='http://www.w3.org/2005/Atom'>
<title>openbsd/src/lib/libssl/s3_lib.c, branch OPENBSD_6_7_BASE</title>
<subtitle>A mirror of https://github.com/libressl/openbsd.git
</subtitle>
<id>https://git.lua4.win/openbsd/atom?h=OPENBSD_6_7_BASE</id>
<link rel='self' href='https://git.lua4.win/openbsd/atom?h=OPENBSD_6_7_BASE'/>
<link rel='alternate' type='text/html' href='https://git.lua4.win/openbsd/'/>
<updated>2020-04-18T14:07:56+00:00</updated>
<entry>
<title>Expose the peer ephemeral public key used for TLSv1.3 key exchange.</title>
<updated>2020-04-18T14:07:56+00:00</updated>
<author>
<name>jsing</name>
<email></email>
</author>
<published>2020-04-18T14:07:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/openbsd/commit/?id=45ae045ccf3a3740b07e9b2ecbbbbb3320d2f36d'/>
<id>urn:sha1:45ae045ccf3a3740b07e9b2ecbbbbb3320d2f36d</id>
<content type='text'>
SSL_get_server_tmp_key() provides the peer ephemeral public key used
for key exchange. In the case of TLSv1.3 this is essentially the peer
public key from the key share used for TLSv1.3 key exchange, hence make it
availaable via SSL_get_server_tmp_key().

ok inoguchi@ tb@
</content>
</entry>
<entry>
<title>Avoid leak for tmp.x25519</title>
<updated>2020-02-16T14:33:04+00:00</updated>
<author>
<name>inoguchi</name>
<email></email>
</author>
<published>2020-02-16T14:33:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/openbsd/commit/?id=fa0b5b94cc25e2b4dd64fd2788b5be80ec542d59'/>
<id>urn:sha1:fa0b5b94cc25e2b4dd64fd2788b5be80ec542d59</id>
<content type='text'>
Changed to use local variable to hold malloc address rather than directly
set to S3I(s)-&gt;tmp.x25519, and set that private_key pointer to
S3I(s)-&gt;tmp.x25519 after all the "goto err;".

Also added freezero for S3I(s)-&gt;tmp.x25519 to ssl3_free() and ssl3_clear().

ok jsing@ tb@
</content>
</entry>
<entry>
<title>Provide struct/functions for handling TLSv1.3 key shares.</title>
<updated>2020-01-30T17:09:23+00:00</updated>
<author>
<name>jsing</name>
<email></email>
</author>
<published>2020-01-30T17:09:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/openbsd/commit/?id=8c4b49ffef3b61d982a273df3cd92b2e017aa065'/>
<id>urn:sha1:8c4b49ffef3b61d982a273df3cd92b2e017aa065</id>
<content type='text'>
Pull out the key share handling code and provide a clean/self contained
interface. This will make it easier to support groups other than X25519.

ok beck@ inoguchi@ tb@
</content>
</entry>
<entry>
<title>Correctly handle TLSv1.3 ciphers suites in ssl3_choose_cipher().</title>
<updated>2020-01-23T10:40:59+00:00</updated>
<author>
<name>jsing</name>
<email></email>
</author>
<published>2020-01-23T10:40:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/openbsd/commit/?id=e923e6a6e5ee7ab0943514d73b7f609470b200a5'/>
<id>urn:sha1:e923e6a6e5ee7ab0943514d73b7f609470b200a5</id>
<content type='text'>
Currently, TLSv1.3 cipher suites are filtered out by the fact that
they have authentication and key exchange algorithms that are not
being set in ssl_set_cert_masks(). Fix this so that ssl3_choose_cipher()
works for TLSv1.3, however we also now need to ensure that we filter out
TLSv1.3 for non-TLSv1.3 and only select TLSv1.3 for TLSv1.3.

ok beck@ tb@
</content>
</entry>
<entry>
<title>Revise SSL_CTX_get_extra_chain_certs() to match OpenSSL behaviour.</title>
<updated>2020-01-02T06:37:13+00:00</updated>
<author>
<name>jsing</name>
<email></email>
</author>
<published>2020-01-02T06:37:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/openbsd/commit/?id=1e40b0f750f6957c62327661ea1b410544e11a30'/>
<id>urn:sha1:1e40b0f750f6957c62327661ea1b410544e11a30</id>
<content type='text'>
In OpenSSL, SSL_CTX_get_extra_chain_certs() really means return extra
certs, unless there are none, in which case return the chain associated
with the certificate. If you really just want the extra certs, including
knowing if there are no extra certs, then you need to call
SSL_CTX_get_extra_chain_certs_only()! And to make this even more
entertaining, these functions are not documented in any OpenSSL release.

Reported by sephiroth-j on github, since the difference in behaviour
apparently breaks OCSP stapling with nginx.

ok beck@ inoguchi@ tb@
</content>
</entry>
<entry>
<title>Use a valid curve when constructing an EC_KEY that looks like X25519.</title>
<updated>2019-10-04T17:21:24+00:00</updated>
<author>
<name>jsing</name>
<email></email>
</author>
<published>2019-10-04T17:21:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/openbsd/commit/?id=4cd703f8ea6ce1ad19febbcab84532f2943d2b6c'/>
<id>urn:sha1:4cd703f8ea6ce1ad19febbcab84532f2943d2b6c</id>
<content type='text'>
The recent EC group cofactor change results in stricter validation,
which causes the EC_GROUP_set_generator() call to fail.

Issue reported and fix tested by rsadowski@

ok tb@
</content>
</entry>
<entry>
<title>Provide SSL chain/cert chain APIs.</title>
<updated>2019-04-04T15:03:21+00:00</updated>
<author>
<name>jsing</name>
<email></email>
</author>
<published>2019-04-04T15:03:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/openbsd/commit/?id=3a7c85d931b2023a54a02c316fd13e9c48298d91'/>
<id>urn:sha1:3a7c85d931b2023a54a02c316fd13e9c48298d91</id>
<content type='text'>
These allow for chains to be managed on a per-certificate basis rather than
as a single "extra certificates" list. Note that "chain" in this context
does not actually include the leaf certificate however, unlike
SSL_CTX_use_certificate_chain_{file,mem}().

Thanks to sthen@ for running this through a bulk ports build.

ok beck@ tb@
</content>
</entry>
<entry>
<title>Defer sigalgs selection until the certificate is known.</title>
<updated>2019-03-25T17:21:18+00:00</updated>
<author>
<name>jsing</name>
<email></email>
</author>
<published>2019-03-25T17:21:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/openbsd/commit/?id=c46928243f6c8aa22e46219e22df33de006a501f'/>
<id>urn:sha1:c46928243f6c8aa22e46219e22df33de006a501f</id>
<content type='text'>
Previously the signature algorithm was selected when the TLS extension was
parsed (or the client received a certificate request), however the actual
certificate to be used is not known at this stage. This leads to various
problems, including the selection of a signature algorithm that cannot be
used with the certificate key size (as found by jeremy@ via ruby regress).

Instead, store the signature algorithms list and only select a signature
algorithm when we're ready to do signature generation.

Joint work with beck@.
</content>
</entry>
<entry>
<title>Rename tls1_handshake_hash*() to tls1_transcript_hash*().</title>
<updated>2019-02-09T15:26:15+00:00</updated>
<author>
<name>jsing</name>
<email></email>
</author>
<published>2019-02-09T15:26:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/openbsd/commit/?id=bf3fc1487ab4d49b366d075e6f48ee4eef2d29a4'/>
<id>urn:sha1:bf3fc1487ab4d49b366d075e6f48ee4eef2d29a4</id>
<content type='text'>
While handshake hash is correct (in as far as it is a hash of handshake
messages), using tls1_transcript_hash*() aligns them with the naming of the
tls1_transcript*() functions. Additionally, the TLSv1.3 specification uses
Transcript-Hash and "transcript hash", which this matches.

ok inoguchi@ tb@
</content>
</entry>
<entry>
<title>Set pointer variables in tls13 handshake to NULL on clear</title>
<updated>2019-01-24T15:50:47+00:00</updated>
<author>
<name>beck</name>
<email></email>
</author>
<published>2019-01-24T15:50:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/openbsd/commit/?id=412284188c2a3c98dca1de88b2b7b416e4930489'/>
<id>urn:sha1:412284188c2a3c98dca1de88b2b7b416e4930489</id>
<content type='text'>
ok jsing@ bcook@
</content>
</entry>
</feed>
