#
ae0a2582 |
| 23-Jul-2024 |
jsing <jsing@openbsd.org> |
Remove get_cipher from SSL_METHOD.
Inline the get_cipher implementation (including the special handling for DTLS) in ssl_cipher_collect_ciphers() (the only consumer), remove the get_cipher member of
Remove get_cipher from SSL_METHOD.
Inline the get_cipher implementation (including the special handling for DTLS) in ssl_cipher_collect_ciphers() (the only consumer), remove the get_cipher member of SSL_METHOD and mop up dtls1_get_cipher().
ssl3_get_cipher() has always had a strange property of being a reverse index, which is relied on by the cipher list ordering code, since it currently assumes that high cipher suite values are preferable. Rather than complicating ssl3_get_cipher() (and regress), change the iteration order in ssl_cipher_collect_ciphers() to match what it requires. Lastly, rename ssl3_get_cipher() to be more descriptive.
ok tb@
show more ...
|
#
f4fe6251 |
| 22-Jul-2024 |
jsing <jsing@openbsd.org> |
Use cipher suite values instead of IDs.
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
Use cipher suite values instead of IDs.
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@
show more ...
|
#
1a5be6e3 |
| 19-Jul-2024 |
jsing <jsing@openbsd.org> |
Move client ciphers from SSL_SESSION to SSL_HANDSHAKE.
SSL_SESSION has a 'ciphers' member which contains a list of ciphers that were advertised by the client. Move this from SSL_SESSION to SSL_HANDS
Move client ciphers from SSL_SESSION to SSL_HANDSHAKE.
SSL_SESSION has a 'ciphers' member which contains a list of ciphers that were advertised by the client. Move this from SSL_SESSION to SSL_HANDSHAKE and rename it to match reality.
ok tb@
show more ...
|
#
eb67a850 |
| 16-Jul-2024 |
jsing <jsing@openbsd.org> |
Clean up SSL_HANDSHAKE_MAC_DEFAULT.
The handshake MAC needs to be upgraded when TLSv1.0 and TLSv1.1 ciphersuites are used with TLSv1.2. Since we no longer support TLSv1.0 and TLSv1.1, we can simply
Clean up SSL_HANDSHAKE_MAC_DEFAULT.
The handshake MAC needs to be upgraded when TLSv1.0 and TLSv1.1 ciphersuites are used with TLSv1.2. Since we no longer support TLSv1.0 and TLSv1.1, we can simply upgrade the handshake MAC in the ciphersuite table and remove the various defines/macros/code that existed to handle the upgrade.
ok tb@
show more ...
|
#
2bfbbd8b |
| 15-Jul-2024 |
jsing <jsing@openbsd.org> |
Mop up TLS1_PRF* defines.
These have not been used for a long time, however SSL_CIPHER was not opaque at the time, hence they had to stick around. Now that SSL_CIPHER is opaque we can simply mop the
Mop up TLS1_PRF* defines.
These have not been used for a long time, however SSL_CIPHER was not opaque at the time, hence they had to stick around. Now that SSL_CIPHER is opaque we can simply mop them up.
ok tb@
show more ...
|
#
cfaab7d7 |
| 10-May-2024 |
tb <tb@openbsd.org> |
Remove fixed nonce length information from algorithm2
This information has been part of tls12_key_block_generate() for a while now. It remained in this table because at that point SSL_CIPHER was sti
Remove fixed nonce length information from algorithm2
This information has been part of tls12_key_block_generate() for a while now. It remained in this table because at that point SSL_CIPHER was still public. Nothing can access algorithm2 anymore from the outside, so this is dead weight.
ok jsing
show more ...
|
#
170946b3 |
| 02-Mar-2024 |
tb <tb@openbsd.org> |
Make {SSL3,TLS}_CT_* internal
And here goes a bunch of unused macros that just had to be in two headers so they could get out of sync. Three of these constants are used in a single function...
ok j
Make {SSL3,TLS}_CT_* internal
And here goes a bunch of unused macros that just had to be in two headers so they could get out of sync. Three of these constants are used in a single function...
ok jsing
show more ...
|
#
20a14f12 |
| 02-Mar-2024 |
tb <tb@openbsd.org> |
Export SSL_get_{peer_,}signature_type_nid()
Also move the prototypes to the correct header.
Oversight reported by Frank Lichtenheld, thanks! Fixes https://github.com/libressl/openbsd/issues/147
ok
Export SSL_get_{peer_,}signature_type_nid()
Also move the prototypes to the correct header.
Oversight reported by Frank Lichtenheld, thanks! Fixes https://github.com/libressl/openbsd/issues/147
ok jsing
show more ...
|
#
689a9b7e |
| 03-Feb-2024 |
beck <beck@openbsd.org> |
Remove GOST and STREEBOG support from libssl.
This version of GOST is old and not anywhere close to compliant with modern GOST standards. It is also very intrusive in libssl and makes a mess everywh
Remove GOST and STREEBOG support from libssl.
This version of GOST is old and not anywhere close to compliant with modern GOST standards. It is also very intrusive in libssl and makes a mess everywhere. Efforts to entice a suitably minded anyone to care about it have been unsuccessful.
At this point it is probably best to remove this, and if someone ever showed up who truly needed a working version, it should be a clean implementation from scratch, and have it use something closer to the typical API in libcrypto so it would integrate less painfully here.
This removes it from libssl in preparation for it's removal from libcrypto with a future major bump
ok tb@
show more ...
|
#
e0c6c588 |
| 29-Nov-2023 |
tb <tb@openbsd.org> |
Convert ssl3_cipher_by_id() to bsearch()
This was previously the only user of OBJ_bsearch_ssl_cipher_id(), which in turn is the one remaining user of OBJ_bsearch_() outside of libcrypto. OBJ_bsearch
Convert ssl3_cipher_by_id() to bsearch()
This was previously the only user of OBJ_bsearch_ssl_cipher_id(), which in turn is the one remaining user of OBJ_bsearch_() outside of libcrypto. OBJ_bsearch_() is OpenSSL's idiosyncratic reimplementation of ANSI C89's bsearch(). Since this used to be hidden behind macro insanity, the result was three inscrutable layers of comparison functions.
It is much simpler and cleaner to use the standard API. Move all the code to s3_lib.c, since it's ony used there.
In a few further diffs, OBJ_bsearch_() will be removed from libcrypto. Unfortunately, we'll need to keep OBJ_bsearch_ex(), because it is exposed via sk_find_ex(), which is exposed by M2Crypto...
ok jsing
show more ...
|
#
9f01a767 |
| 29-Nov-2023 |
tb <tb@openbsd.org> |
Use a long for id in ssl3_get_cipher_by_id()
While the cipher id is effectively a 32-bit value, someone decided that it should be represented by a long in various internal structs, whose mameber is
Use a long for id in ssl3_get_cipher_by_id()
While the cipher id is effectively a 32-bit value, someone decided that it should be represented by a long in various internal structs, whose mameber is passed as id. So use a long because of this and also to make an upcoming diff simpler.
ok jsing
show more ...
|
#
71e04849 |
| 08-Jul-2023 |
beck <beck@openbsd.org> |
Hide all public symbols in libssl
With the guentherizer 9000
ok tb@
|
#
521ba2f2 |
| 02-Jul-2023 |
beck <beck@openbsd.org> |
Disable TLS 1.0 and TLS 1.1 in libssl
Their time has long since past, and they should not be used. This change restricts ssl to versions 1.2 and 1.3, and changes the regression tests to understand w
Disable TLS 1.0 and TLS 1.1 in libssl
Their time has long since past, and they should not be used. This change restricts ssl to versions 1.2 and 1.3, and changes the regression tests to understand we no longer speak the legacy protocols.
For the moment the magical "golden" byte for byte comparison tests of raw handshake values are disabled util jsing fixes them.
ok jsing@ tb@
show more ...
|
#
57f93a0c |
| 26-May-2023 |
tb <tb@openbsd.org> |
Move verified_chain from SSL to SSL_HANDSHAKE
This is a better version of the fix for the missing pointer invalidation but a bit larger, so errata got the minimal fix.
tested by jcs ok jsing
|
#
b488fe3a |
| 16-May-2023 |
jcs <jcs@openbsd.org> |
add missing pointer invalidation
ok tb
|
#
c9675a23 |
| 26-Nov-2022 |
tb <tb@openbsd.org> |
Make internal header file names consistent
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 *_l
Make internal header file names consistent
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 <ssl_locl.h> was fixed manually.
discussed with jsing, no objection bcook
show more ...
|
#
ee4250f6 |
| 11-Nov-2022 |
jsing <jsing@openbsd.org> |
Convert the legacy TLS stack to tls_content.
This converts the legacy TLS stack to tls_content - records are now opened into a tls_content structure, rather than being written back into the same buf
Convert the legacy TLS stack to tls_content.
This converts the legacy TLS stack to tls_content - records are now opened into a tls_content structure, rather than being written back into the same buffer that the sealed record was read into.
This will allow for further clean up of the legacy record layer.
ok tb@
show more ...
|
#
b1a5c5c8 |
| 10-Nov-2022 |
jsing <jsing@openbsd.org> |
Use tls_buffer for alert and handshake fragments in the legacy stack.
This avoids a bunch of pointer munging and a handrolled memmove.
ok tb@
|
#
6f7f653b |
| 02-Oct-2022 |
jsing <jsing@openbsd.org> |
Get rid of SSL_CTX_INTERNAL and SSL_INTERNAL.
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.
P
Get rid of SSL_CTX_INTERNAL and SSL_INTERNAL.
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@
show more ...
|
#
35351aa0 |
| 21-Aug-2022 |
jsing <jsing@openbsd.org> |
Wire up SSL_QUIC_METHOD callbacks to the record layer callbacks for QUIC.
ok tb@
|
#
e1a22fe8 |
| 17-Aug-2022 |
tb <tb@openbsd.org> |
Implement the SSL_CTRL_GET_SHARED_GROUP control
This implements SSL_get_shared_{curve,group}() in a bug-compatible fashion with OpenSSL.
This is your average OpenSSL-style overloaded parameter API
Implement the SSL_CTRL_GET_SHARED_GROUP control
This implements SSL_get_shared_{curve,group}() in a bug-compatible fashion with OpenSSL.
This is your average OpenSSL-style overloaded parameter API where n >= 0 means "return the n-th shared group's NID" (as if anyone possibly ever cared about the case n > 0) and n == -1 means "return the number of shared groups". There is also an undocumented case n == -2 for Suite B profile support which falls back to n == 0 in case Suite B profile support is disabled, so n == -2 is the same as n == 0 in LibreSSL.
The API also returns 0 for error, which is indistinguishable from a count of 0 shared groups but coincides with NID_undef. Contrary to claims in the documentation, the API doesn't actually return -1 for clients, rather it returns 0.
Obviously this entire exercise is pretty useless, but since somebody exposed it because they could and someone else used it because they could we need to provide it.
ok jsing
show more ...
|
#
ad618767 |
| 17-Aug-2022 |
jsing <jsing@openbsd.org> |
Deduplicate peer certificate chain processing code.
Rather than reimplement this in each TLS client and server, deduplicate it into a single function. Furthermore, rather than dealing with the API h
Deduplicate peer certificate chain processing code.
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@
show more ...
|
#
1fd41f50 |
| 02-Jul-2022 |
tb <tb@openbsd.org> |
Stop using ssl{_ctx,}_security() outside of ssl_seclevel.c
The API is ugly and we can easily abstract it away. The SSL_SECOP_* stuff is now confined into ssl_seclevel.c and the rest of the library c
Stop using ssl{_ctx,}_security() outside of ssl_seclevel.c
The API is ugly and we can easily abstract it away. The SSL_SECOP_* stuff is now confined into ssl_seclevel.c and the rest of the library can make use of the more straightforward wrappers, which makes it a lot easier on the eyes.
ok beck jsing
show more ...
|
#
c5270c5d |
| 02-Jul-2022 |
tb <tb@openbsd.org> |
Rename uses 'curve' to 'group' and rework tls1 group API.
This reworks various tls1_ curve APIs to indicate success via a boolean return value and move the output to an out parameter. This makes the
Rename uses 'curve' to 'group' and rework tls1 group API.
This reworks various tls1_ curve APIs to indicate success via a boolean return value and move the output to an out parameter. This makes the caller code easier and more consistent.
Based on a suggestion by jsing
ok jsing
show more ...
|
#
dc2a950b |
| 29-Jun-2022 |
tb <tb@openbsd.org> |
Make ssl_cert_add{0,1}_chain_cert() take ssl/ctx
ok beck jsing
|