#
1.17 |
|
10-Apr-2024 |
beck |
Hide deprecated functions in ec.h
use LCRYPTO_UNUSED and remove the LIBRESSL_INTERNAL guard
ok tb@
|
Revision tags: OPENBSD_7_4_BASE OPENBSD_7_5_BASE
|
#
1.16 |
|
07-Jul-2023 |
beck |
Unbreak the namespace build after a broken mk.conf and tool misfire had me aliasing symbols not in the headers I was procesing.
This unbreaks the namespace build so it will pass again
ok tb@
|
#
1.15 |
|
07-Jul-2023 |
beck |
Hide symbols in hkdf, evp, err, ecdsa, and ec
(part 2 of commit)
ok jsing@
|
#
1.14 |
|
04-May-2023 |
tb |
Use size_t instead of int in EC_POINT_point2oct()
An int would be perfectly sufficient for this, but then again there would be fewer traps.
ok jsing
|
#
1.13 |
|
01-May-2023 |
tb |
stray whitespace
|
#
1.12 |
|
25-Apr-2023 |
tb |
GF2m bites the dust. It won't be missed.
|
#
1.11 |
|
11-Apr-2023 |
jsing |
Handle BN_CTX at the EC API boundary.
The EC API allows callers to optionally pass in a BN_CTX, which means that any code needing a BN_CTX has to check if one was provided, allocate one if not, then free it again. Rather than doing this dance throughout the EC code, handle the BN_CTX existance at the EC API boundary. This means that lower level implementation code can simply assume that the BN_CTX is available.
ok tb@
|
Revision tags: OPENBSD_7_3_BASE
|
#
1.10 |
|
08-Mar-2023 |
jsing |
Remove EC_FLAGS_DEFAULT_OCT.
The EC code has an amazing array of function pointer hooks, such that a method can hook into almost any operation... and then there is the EC_FLAGS_DEFAULT_OCT flag, which adds a bunch of complex code and #ifdef so you can avoid setting three of those function pointers!
Remove EC_FLAGS_DEFAULT_OCT, the now unused flags field from EC_METHOD, along with the various code that was wrapped in EC_FLAGS_DEFAULT_OCT, setting the three function pointers that need to be set in each of the EC_METHODs.
ok beck@ tb@
|
#
1.9 |
|
26-Nov-2022 |
tb |
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
|
Revision tags: OPENBSD_7_0_BASE OPENBSD_7_1_BASE OPENBSD_7_2_BASE
|
#
1.8 |
|
20-Apr-2021 |
tb |
Compare pointer against NULL and fix a KNF issue.
ok jsing
|
#
1.7 |
|
20-Apr-2021 |
tb |
Prepare to provide EC_POINT_set_compressed_coordinates
ok jsing
|
Revision tags: OPENBSD_6_9_BASE
|
#
1.6 |
|
04-Dec-2020 |
tb |
Move point-on-curve check to set_affine_coordinates
Bad API design makes it possible to set an EC_KEY public key to a point not on the curve. As a consequence, it was possible to have bogus ECDSA signatures validated. In practice, all software uses either EC_POINT_oct2point*() to unmarshal public keys or issues a call to EC_KEY_check_key() after setting it. This way, a point on curve check is performed and the problem is mitigated.
In OpenSSL commit 1e2012b7ff4a5f12273446b281775faa5c8a1858, Emilia Kasper moved the point-on-curve check from EC_POINT_oct2point to EC_POINT_set_affine_coordinates_*, which results in more checking. In addition to this commit, we also check in the currently unused codepath of a user set callback for setting compressed coordinates, just in case this will be used at some point in the future.
The documentation of EC_KEY_check_key() is very vague on what it checks and when checks are needed. It could certainly be improved a lot. It's also strange that EC_KEY_set_key() performs no checks, while EC_KEY_set_public_key_affine_coordinates() implicitly calls EC_KEY_check_key().
It's a mess.
Issue found and reported by Guido Vranken who also tested an earlier version of this fix.
ok jsing
|
Revision tags: OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE OPENBSD_6_8_BASE
|
#
1.5 |
|
29-Jan-2017 |
beck |
Send the function codes from the error functions to the bit bucket, as was done earlier in libssl. Thanks inoguchi@ for noticing libssl had more reacharounds into this. ok jsing@ inoguchi@
|
#
1.4 |
|
10-Jul-2014 |
jsing |
Explicitly include <openssl/opensslconf.h> in every file that references an OPENSSL_NO_* define. This avoids relying on something else pulling it in for us, plus it fixes several cases where the #ifndef OPENSSL_NO_XYZ is never going to do anything, since OPENSSL_NO_XYZ will never defined, due to the fact that opensslconf.h has not been included.
This also includes some miscellaneous sorting/tidying of headers.
|
#
1.3 |
|
12-Jun-2014 |
deraadt |
tags as requested by miod and tedu
|
#
1.2 |
|
06-May-2014 |
tedu |
knf approximation
|
#
1.1 |
|
13-Oct-2012 |
djm |
branches: 1.1.1; Initial revision
|
#
1.16 |
|
07-Jul-2023 |
beck |
Unbreak the namespace build after a broken mk.conf and tool misfire had me aliasing symbols not in the headers I was procesing.
This unbreaks the namespace build so it will pass again
ok tb@
|
#
1.15 |
|
07-Jul-2023 |
beck |
Hide symbols in hkdf, evp, err, ecdsa, and ec
(part 2 of commit)
ok jsing@
|
#
1.14 |
|
04-May-2023 |
tb |
Use size_t instead of int in EC_POINT_point2oct()
An int would be perfectly sufficient for this, but then again there would be fewer traps.
ok jsing
|
#
1.13 |
|
01-May-2023 |
tb |
stray whitespace
|
#
1.12 |
|
25-Apr-2023 |
tb |
GF2m bites the dust. It won't be missed.
|
#
1.11 |
|
11-Apr-2023 |
jsing |
Handle BN_CTX at the EC API boundary.
The EC API allows callers to optionally pass in a BN_CTX, which means that any code needing a BN_CTX has to check if one was provided, allocate one if not, then free it again. Rather than doing this dance throughout the EC code, handle the BN_CTX existance at the EC API boundary. This means that lower level implementation code can simply assume that the BN_CTX is available.
ok tb@
|
Revision tags: OPENBSD_7_3_BASE
|
#
1.10 |
|
08-Mar-2023 |
jsing |
Remove EC_FLAGS_DEFAULT_OCT.
The EC code has an amazing array of function pointer hooks, such that a method can hook into almost any operation... and then there is the EC_FLAGS_DEFAULT_OCT flag, which adds a bunch of complex code and #ifdef so you can avoid setting three of those function pointers!
Remove EC_FLAGS_DEFAULT_OCT, the now unused flags field from EC_METHOD, along with the various code that was wrapped in EC_FLAGS_DEFAULT_OCT, setting the three function pointers that need to be set in each of the EC_METHODs.
ok beck@ tb@
|
#
1.9 |
|
26-Nov-2022 |
tb |
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
|
Revision tags: OPENBSD_7_0_BASE OPENBSD_7_1_BASE OPENBSD_7_2_BASE
|
#
1.8 |
|
20-Apr-2021 |
tb |
Compare pointer against NULL and fix a KNF issue.
ok jsing
|
#
1.7 |
|
20-Apr-2021 |
tb |
Prepare to provide EC_POINT_set_compressed_coordinates
ok jsing
|
Revision tags: OPENBSD_6_9_BASE
|
#
1.6 |
|
04-Dec-2020 |
tb |
Move point-on-curve check to set_affine_coordinates
Bad API design makes it possible to set an EC_KEY public key to a point not on the curve. As a consequence, it was possible to have bogus ECDSA signatures validated. In practice, all software uses either EC_POINT_oct2point*() to unmarshal public keys or issues a call to EC_KEY_check_key() after setting it. This way, a point on curve check is performed and the problem is mitigated.
In OpenSSL commit 1e2012b7ff4a5f12273446b281775faa5c8a1858, Emilia Kasper moved the point-on-curve check from EC_POINT_oct2point to EC_POINT_set_affine_coordinates_*, which results in more checking. In addition to this commit, we also check in the currently unused codepath of a user set callback for setting compressed coordinates, just in case this will be used at some point in the future.
The documentation of EC_KEY_check_key() is very vague on what it checks and when checks are needed. It could certainly be improved a lot. It's also strange that EC_KEY_set_key() performs no checks, while EC_KEY_set_public_key_affine_coordinates() implicitly calls EC_KEY_check_key().
It's a mess.
Issue found and reported by Guido Vranken who also tested an earlier version of this fix.
ok jsing
|
Revision tags: OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE OPENBSD_6_8_BASE
|
#
1.5 |
|
29-Jan-2017 |
beck |
Send the function codes from the error functions to the bit bucket, as was done earlier in libssl. Thanks inoguchi@ for noticing libssl had more reacharounds into this. ok jsing@ inoguchi@
|
#
1.4 |
|
10-Jul-2014 |
jsing |
Explicitly include <openssl/opensslconf.h> in every file that references an OPENSSL_NO_* define. This avoids relying on something else pulling it in for us, plus it fixes several cases where the #ifndef OPENSSL_NO_XYZ is never going to do anything, since OPENSSL_NO_XYZ will never defined, due to the fact that opensslconf.h has not been included.
This also includes some miscellaneous sorting/tidying of headers.
|
#
1.3 |
|
12-Jun-2014 |
deraadt |
tags as requested by miod and tedu
|
#
1.2 |
|
06-May-2014 |
tedu |
knf approximation
|
#
1.1 |
|
13-Oct-2012 |
djm |
branches: 1.1.1; Initial revision
|
#
1.14 |
|
04-May-2023 |
tb |
Use size_t instead of int in EC_POINT_point2oct()
An int would be perfectly sufficient for this, but then again there would be fewer traps.
ok jsing
|
#
1.13 |
|
01-May-2023 |
tb |
stray whitespace
|
#
1.12 |
|
25-Apr-2023 |
tb |
GF2m bites the dust. It won't be missed.
|
#
1.11 |
|
11-Apr-2023 |
jsing |
Handle BN_CTX at the EC API boundary.
The EC API allows callers to optionally pass in a BN_CTX, which means that any code needing a BN_CTX has to check if one was provided, allocate one if not, then free it again. Rather than doing this dance throughout the EC code, handle the BN_CTX existance at the EC API boundary. This means that lower level implementation code can simply assume that the BN_CTX is available.
ok tb@
|
Revision tags: OPENBSD_7_3_BASE
|
#
1.10 |
|
08-Mar-2023 |
jsing |
Remove EC_FLAGS_DEFAULT_OCT.
The EC code has an amazing array of function pointer hooks, such that a method can hook into almost any operation... and then there is the EC_FLAGS_DEFAULT_OCT flag, which adds a bunch of complex code and #ifdef so you can avoid setting three of those function pointers!
Remove EC_FLAGS_DEFAULT_OCT, the now unused flags field from EC_METHOD, along with the various code that was wrapped in EC_FLAGS_DEFAULT_OCT, setting the three function pointers that need to be set in each of the EC_METHODs.
ok beck@ tb@
|
#
1.9 |
|
26-Nov-2022 |
tb |
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
|
Revision tags: OPENBSD_7_0_BASE OPENBSD_7_1_BASE OPENBSD_7_2_BASE
|
#
1.8 |
|
20-Apr-2021 |
tb |
Compare pointer against NULL and fix a KNF issue.
ok jsing
|
#
1.7 |
|
20-Apr-2021 |
tb |
Prepare to provide EC_POINT_set_compressed_coordinates
ok jsing
|
Revision tags: OPENBSD_6_9_BASE
|
#
1.6 |
|
04-Dec-2020 |
tb |
Move point-on-curve check to set_affine_coordinates
Bad API design makes it possible to set an EC_KEY public key to a point not on the curve. As a consequence, it was possible to have bogus ECDSA signatures validated. In practice, all software uses either EC_POINT_oct2point*() to unmarshal public keys or issues a call to EC_KEY_check_key() after setting it. This way, a point on curve check is performed and the problem is mitigated.
In OpenSSL commit 1e2012b7ff4a5f12273446b281775faa5c8a1858, Emilia Kasper moved the point-on-curve check from EC_POINT_oct2point to EC_POINT_set_affine_coordinates_*, which results in more checking. In addition to this commit, we also check in the currently unused codepath of a user set callback for setting compressed coordinates, just in case this will be used at some point in the future.
The documentation of EC_KEY_check_key() is very vague on what it checks and when checks are needed. It could certainly be improved a lot. It's also strange that EC_KEY_set_key() performs no checks, while EC_KEY_set_public_key_affine_coordinates() implicitly calls EC_KEY_check_key().
It's a mess.
Issue found and reported by Guido Vranken who also tested an earlier version of this fix.
ok jsing
|
Revision tags: OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE OPENBSD_6_8_BASE
|
#
1.5 |
|
29-Jan-2017 |
beck |
Send the function codes from the error functions to the bit bucket, as was done earlier in libssl. Thanks inoguchi@ for noticing libssl had more reacharounds into this. ok jsing@ inoguchi@
|
#
1.4 |
|
10-Jul-2014 |
jsing |
Explicitly include <openssl/opensslconf.h> in every file that references an OPENSSL_NO_* define. This avoids relying on something else pulling it in for us, plus it fixes several cases where the #ifndef OPENSSL_NO_XYZ is never going to do anything, since OPENSSL_NO_XYZ will never defined, due to the fact that opensslconf.h has not been included.
This also includes some miscellaneous sorting/tidying of headers.
|
#
1.3 |
|
12-Jun-2014 |
deraadt |
tags as requested by miod and tedu
|
#
1.2 |
|
06-May-2014 |
tedu |
knf approximation
|
#
1.1 |
|
13-Oct-2012 |
djm |
branches: 1.1.1; Initial revision
|
#
1.13 |
|
01-May-2023 |
tb |
stray whitespace
|
#
1.12 |
|
25-Apr-2023 |
tb |
GF2m bites the dust. It won't be missed.
|
#
1.11 |
|
11-Apr-2023 |
jsing |
Handle BN_CTX at the EC API boundary.
The EC API allows callers to optionally pass in a BN_CTX, which means that any code needing a BN_CTX has to check if one was provided, allocate one if not, then free it again. Rather than doing this dance throughout the EC code, handle the BN_CTX existance at the EC API boundary. This means that lower level implementation code can simply assume that the BN_CTX is available.
ok tb@
|
Revision tags: OPENBSD_7_3_BASE
|
#
1.10 |
|
08-Mar-2023 |
jsing |
Remove EC_FLAGS_DEFAULT_OCT.
The EC code has an amazing array of function pointer hooks, such that a method can hook into almost any operation... and then there is the EC_FLAGS_DEFAULT_OCT flag, which adds a bunch of complex code and #ifdef so you can avoid setting three of those function pointers!
Remove EC_FLAGS_DEFAULT_OCT, the now unused flags field from EC_METHOD, along with the various code that was wrapped in EC_FLAGS_DEFAULT_OCT, setting the three function pointers that need to be set in each of the EC_METHODs.
ok beck@ tb@
|
#
1.9 |
|
26-Nov-2022 |
tb |
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
|
Revision tags: OPENBSD_7_0_BASE OPENBSD_7_1_BASE OPENBSD_7_2_BASE
|
#
1.8 |
|
20-Apr-2021 |
tb |
Compare pointer against NULL and fix a KNF issue.
ok jsing
|
#
1.7 |
|
20-Apr-2021 |
tb |
Prepare to provide EC_POINT_set_compressed_coordinates
ok jsing
|
Revision tags: OPENBSD_6_9_BASE
|
#
1.6 |
|
04-Dec-2020 |
tb |
Move point-on-curve check to set_affine_coordinates
Bad API design makes it possible to set an EC_KEY public key to a point not on the curve. As a consequence, it was possible to have bogus ECDSA signatures validated. In practice, all software uses either EC_POINT_oct2point*() to unmarshal public keys or issues a call to EC_KEY_check_key() after setting it. This way, a point on curve check is performed and the problem is mitigated.
In OpenSSL commit 1e2012b7ff4a5f12273446b281775faa5c8a1858, Emilia Kasper moved the point-on-curve check from EC_POINT_oct2point to EC_POINT_set_affine_coordinates_*, which results in more checking. In addition to this commit, we also check in the currently unused codepath of a user set callback for setting compressed coordinates, just in case this will be used at some point in the future.
The documentation of EC_KEY_check_key() is very vague on what it checks and when checks are needed. It could certainly be improved a lot. It's also strange that EC_KEY_set_key() performs no checks, while EC_KEY_set_public_key_affine_coordinates() implicitly calls EC_KEY_check_key().
It's a mess.
Issue found and reported by Guido Vranken who also tested an earlier version of this fix.
ok jsing
|
Revision tags: OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE OPENBSD_6_8_BASE
|
#
1.5 |
|
29-Jan-2017 |
beck |
Send the function codes from the error functions to the bit bucket, as was done earlier in libssl. Thanks inoguchi@ for noticing libssl had more reacharounds into this. ok jsing@ inoguchi@
|
#
1.4 |
|
10-Jul-2014 |
jsing |
Explicitly include <openssl/opensslconf.h> in every file that references an OPENSSL_NO_* define. This avoids relying on something else pulling it in for us, plus it fixes several cases where the #ifndef OPENSSL_NO_XYZ is never going to do anything, since OPENSSL_NO_XYZ will never defined, due to the fact that opensslconf.h has not been included.
This also includes some miscellaneous sorting/tidying of headers.
|
#
1.3 |
|
12-Jun-2014 |
deraadt |
tags as requested by miod and tedu
|
#
1.2 |
|
06-May-2014 |
tedu |
knf approximation
|
#
1.1 |
|
13-Oct-2012 |
djm |
branches: 1.1.1; Initial revision
|
#
1.12 |
|
25-Apr-2023 |
tb |
GF2m bites the dust. It won't be missed.
|
#
1.11 |
|
11-Apr-2023 |
jsing |
Handle BN_CTX at the EC API boundary.
The EC API allows callers to optionally pass in a BN_CTX, which means that any code needing a BN_CTX has to check if one was provided, allocate one if not, then free it again. Rather than doing this dance throughout the EC code, handle the BN_CTX existance at the EC API boundary. This means that lower level implementation code can simply assume that the BN_CTX is available.
ok tb@
|
Revision tags: OPENBSD_7_3_BASE
|
#
1.10 |
|
08-Mar-2023 |
jsing |
Remove EC_FLAGS_DEFAULT_OCT.
The EC code has an amazing array of function pointer hooks, such that a method can hook into almost any operation... and then there is the EC_FLAGS_DEFAULT_OCT flag, which adds a bunch of complex code and #ifdef so you can avoid setting three of those function pointers!
Remove EC_FLAGS_DEFAULT_OCT, the now unused flags field from EC_METHOD, along with the various code that was wrapped in EC_FLAGS_DEFAULT_OCT, setting the three function pointers that need to be set in each of the EC_METHODs.
ok beck@ tb@
|
#
1.9 |
|
26-Nov-2022 |
tb |
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
|
Revision tags: OPENBSD_7_0_BASE OPENBSD_7_1_BASE OPENBSD_7_2_BASE
|
#
1.8 |
|
20-Apr-2021 |
tb |
Compare pointer against NULL and fix a KNF issue.
ok jsing
|
#
1.7 |
|
20-Apr-2021 |
tb |
Prepare to provide EC_POINT_set_compressed_coordinates
ok jsing
|
Revision tags: OPENBSD_6_9_BASE
|
#
1.6 |
|
04-Dec-2020 |
tb |
Move point-on-curve check to set_affine_coordinates
Bad API design makes it possible to set an EC_KEY public key to a point not on the curve. As a consequence, it was possible to have bogus ECDSA signatures validated. In practice, all software uses either EC_POINT_oct2point*() to unmarshal public keys or issues a call to EC_KEY_check_key() after setting it. This way, a point on curve check is performed and the problem is mitigated.
In OpenSSL commit 1e2012b7ff4a5f12273446b281775faa5c8a1858, Emilia Kasper moved the point-on-curve check from EC_POINT_oct2point to EC_POINT_set_affine_coordinates_*, which results in more checking. In addition to this commit, we also check in the currently unused codepath of a user set callback for setting compressed coordinates, just in case this will be used at some point in the future.
The documentation of EC_KEY_check_key() is very vague on what it checks and when checks are needed. It could certainly be improved a lot. It's also strange that EC_KEY_set_key() performs no checks, while EC_KEY_set_public_key_affine_coordinates() implicitly calls EC_KEY_check_key().
It's a mess.
Issue found and reported by Guido Vranken who also tested an earlier version of this fix.
ok jsing
|
Revision tags: OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE OPENBSD_6_8_BASE
|
#
1.5 |
|
29-Jan-2017 |
beck |
Send the function codes from the error functions to the bit bucket, as was done earlier in libssl. Thanks inoguchi@ for noticing libssl had more reacharounds into this. ok jsing@ inoguchi@
|
#
1.4 |
|
10-Jul-2014 |
jsing |
Explicitly include <openssl/opensslconf.h> in every file that references an OPENSSL_NO_* define. This avoids relying on something else pulling it in for us, plus it fixes several cases where the #ifndef OPENSSL_NO_XYZ is never going to do anything, since OPENSSL_NO_XYZ will never defined, due to the fact that opensslconf.h has not been included.
This also includes some miscellaneous sorting/tidying of headers.
|
#
1.3 |
|
12-Jun-2014 |
deraadt |
tags as requested by miod and tedu
|
#
1.2 |
|
06-May-2014 |
tedu |
knf approximation
|
#
1.1 |
|
13-Oct-2012 |
djm |
branches: 1.1.1; Initial revision
|
#
1.11 |
|
11-Apr-2023 |
jsing |
Handle BN_CTX at the EC API boundary.
The EC API allows callers to optionally pass in a BN_CTX, which means that any code needing a BN_CTX has to check if one was provided, allocate one if not, then free it again. Rather than doing this dance throughout the EC code, handle the BN_CTX existance at the EC API boundary. This means that lower level implementation code can simply assume that the BN_CTX is available.
ok tb@
|
Revision tags: OPENBSD_7_3_BASE
|
#
1.10 |
|
08-Mar-2023 |
jsing |
Remove EC_FLAGS_DEFAULT_OCT.
The EC code has an amazing array of function pointer hooks, such that a method can hook into almost any operation... and then there is the EC_FLAGS_DEFAULT_OCT flag, which adds a bunch of complex code and #ifdef so you can avoid setting three of those function pointers!
Remove EC_FLAGS_DEFAULT_OCT, the now unused flags field from EC_METHOD, along with the various code that was wrapped in EC_FLAGS_DEFAULT_OCT, setting the three function pointers that need to be set in each of the EC_METHODs.
ok beck@ tb@
|
#
1.9 |
|
26-Nov-2022 |
tb |
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
|
Revision tags: OPENBSD_7_0_BASE OPENBSD_7_1_BASE OPENBSD_7_2_BASE
|
#
1.8 |
|
20-Apr-2021 |
tb |
Compare pointer against NULL and fix a KNF issue.
ok jsing
|
#
1.7 |
|
20-Apr-2021 |
tb |
Prepare to provide EC_POINT_set_compressed_coordinates
ok jsing
|
Revision tags: OPENBSD_6_9_BASE
|
#
1.6 |
|
04-Dec-2020 |
tb |
Move point-on-curve check to set_affine_coordinates
Bad API design makes it possible to set an EC_KEY public key to a point not on the curve. As a consequence, it was possible to have bogus ECDSA signatures validated. In practice, all software uses either EC_POINT_oct2point*() to unmarshal public keys or issues a call to EC_KEY_check_key() after setting it. This way, a point on curve check is performed and the problem is mitigated.
In OpenSSL commit 1e2012b7ff4a5f12273446b281775faa5c8a1858, Emilia Kasper moved the point-on-curve check from EC_POINT_oct2point to EC_POINT_set_affine_coordinates_*, which results in more checking. In addition to this commit, we also check in the currently unused codepath of a user set callback for setting compressed coordinates, just in case this will be used at some point in the future.
The documentation of EC_KEY_check_key() is very vague on what it checks and when checks are needed. It could certainly be improved a lot. It's also strange that EC_KEY_set_key() performs no checks, while EC_KEY_set_public_key_affine_coordinates() implicitly calls EC_KEY_check_key().
It's a mess.
Issue found and reported by Guido Vranken who also tested an earlier version of this fix.
ok jsing
|
Revision tags: OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE OPENBSD_6_8_BASE
|
#
1.5 |
|
29-Jan-2017 |
beck |
Send the function codes from the error functions to the bit bucket, as was done earlier in libssl. Thanks inoguchi@ for noticing libssl had more reacharounds into this. ok jsing@ inoguchi@
|
#
1.4 |
|
10-Jul-2014 |
jsing |
Explicitly include <openssl/opensslconf.h> in every file that references an OPENSSL_NO_* define. This avoids relying on something else pulling it in for us, plus it fixes several cases where the #ifndef OPENSSL_NO_XYZ is never going to do anything, since OPENSSL_NO_XYZ will never defined, due to the fact that opensslconf.h has not been included.
This also includes some miscellaneous sorting/tidying of headers.
|
#
1.3 |
|
12-Jun-2014 |
deraadt |
tags as requested by miod and tedu
|
#
1.2 |
|
06-May-2014 |
tedu |
knf approximation
|
#
1.1 |
|
13-Oct-2012 |
djm |
branches: 1.1.1; Initial revision
|
#
1.10 |
|
08-Mar-2023 |
jsing |
Remove EC_FLAGS_DEFAULT_OCT.
The EC code has an amazing array of function pointer hooks, such that a method can hook into almost any operation... and then there is the EC_FLAGS_DEFAULT_OCT flag, which adds a bunch of complex code and #ifdef so you can avoid setting three of those function pointers!
Remove EC_FLAGS_DEFAULT_OCT, the now unused flags field from EC_METHOD, along with the various code that was wrapped in EC_FLAGS_DEFAULT_OCT, setting the three function pointers that need to be set in each of the EC_METHODs.
ok beck@ tb@
|
#
1.9 |
|
26-Nov-2022 |
tb |
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
|
Revision tags: OPENBSD_7_0_BASE OPENBSD_7_1_BASE OPENBSD_7_2_BASE
|
#
1.8 |
|
20-Apr-2021 |
tb |
Compare pointer against NULL and fix a KNF issue.
ok jsing
|
#
1.7 |
|
20-Apr-2021 |
tb |
Prepare to provide EC_POINT_set_compressed_coordinates
ok jsing
|
Revision tags: OPENBSD_6_9_BASE
|
#
1.6 |
|
04-Dec-2020 |
tb |
Move point-on-curve check to set_affine_coordinates
Bad API design makes it possible to set an EC_KEY public key to a point not on the curve. As a consequence, it was possible to have bogus ECDSA signatures validated. In practice, all software uses either EC_POINT_oct2point*() to unmarshal public keys or issues a call to EC_KEY_check_key() after setting it. This way, a point on curve check is performed and the problem is mitigated.
In OpenSSL commit 1e2012b7ff4a5f12273446b281775faa5c8a1858, Emilia Kasper moved the point-on-curve check from EC_POINT_oct2point to EC_POINT_set_affine_coordinates_*, which results in more checking. In addition to this commit, we also check in the currently unused codepath of a user set callback for setting compressed coordinates, just in case this will be used at some point in the future.
The documentation of EC_KEY_check_key() is very vague on what it checks and when checks are needed. It could certainly be improved a lot. It's also strange that EC_KEY_set_key() performs no checks, while EC_KEY_set_public_key_affine_coordinates() implicitly calls EC_KEY_check_key().
It's a mess.
Issue found and reported by Guido Vranken who also tested an earlier version of this fix.
ok jsing
|
Revision tags: OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE OPENBSD_6_8_BASE
|
#
1.5 |
|
29-Jan-2017 |
beck |
Send the function codes from the error functions to the bit bucket, as was done earlier in libssl. Thanks inoguchi@ for noticing libssl had more reacharounds into this. ok jsing@ inoguchi@
|
#
1.4 |
|
10-Jul-2014 |
jsing |
Explicitly include <openssl/opensslconf.h> in every file that references an OPENSSL_NO_* define. This avoids relying on something else pulling it in for us, plus it fixes several cases where the #ifndef OPENSSL_NO_XYZ is never going to do anything, since OPENSSL_NO_XYZ will never defined, due to the fact that opensslconf.h has not been included.
This also includes some miscellaneous sorting/tidying of headers.
|
#
1.3 |
|
12-Jun-2014 |
deraadt |
tags as requested by miod and tedu
|
#
1.2 |
|
06-May-2014 |
tedu |
knf approximation
|
#
1.1 |
|
13-Oct-2012 |
djm |
branches: 1.1.1; Initial revision
|
#
1.9 |
|
26-Nov-2022 |
tb |
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
|
Revision tags: OPENBSD_7_0_BASE OPENBSD_7_1_BASE OPENBSD_7_2_BASE
|
#
1.8 |
|
20-Apr-2021 |
tb |
Compare pointer against NULL and fix a KNF issue.
ok jsing
|
#
1.7 |
|
20-Apr-2021 |
tb |
Prepare to provide EC_POINT_set_compressed_coordinates
ok jsing
|
Revision tags: OPENBSD_6_9_BASE
|
#
1.6 |
|
04-Dec-2020 |
tb |
Move point-on-curve check to set_affine_coordinates
Bad API design makes it possible to set an EC_KEY public key to a point not on the curve. As a consequence, it was possible to have bogus ECDSA signatures validated. In practice, all software uses either EC_POINT_oct2point*() to unmarshal public keys or issues a call to EC_KEY_check_key() after setting it. This way, a point on curve check is performed and the problem is mitigated.
In OpenSSL commit 1e2012b7ff4a5f12273446b281775faa5c8a1858, Emilia Kasper moved the point-on-curve check from EC_POINT_oct2point to EC_POINT_set_affine_coordinates_*, which results in more checking. In addition to this commit, we also check in the currently unused codepath of a user set callback for setting compressed coordinates, just in case this will be used at some point in the future.
The documentation of EC_KEY_check_key() is very vague on what it checks and when checks are needed. It could certainly be improved a lot. It's also strange that EC_KEY_set_key() performs no checks, while EC_KEY_set_public_key_affine_coordinates() implicitly calls EC_KEY_check_key().
It's a mess.
Issue found and reported by Guido Vranken who also tested an earlier version of this fix.
ok jsing
|
Revision tags: OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE OPENBSD_6_8_BASE
|
#
1.5 |
|
29-Jan-2017 |
beck |
Send the function codes from the error functions to the bit bucket, as was done earlier in libssl. Thanks inoguchi@ for noticing libssl had more reacharounds into this. ok jsing@ inoguchi@
|
#
1.4 |
|
10-Jul-2014 |
jsing |
Explicitly include <openssl/opensslconf.h> in every file that references an OPENSSL_NO_* define. This avoids relying on something else pulling it in for us, plus it fixes several cases where the #ifndef OPENSSL_NO_XYZ is never going to do anything, since OPENSSL_NO_XYZ will never defined, due to the fact that opensslconf.h has not been included.
This also includes some miscellaneous sorting/tidying of headers.
|
#
1.3 |
|
12-Jun-2014 |
deraadt |
tags as requested by miod and tedu
|
#
1.2 |
|
06-May-2014 |
tedu |
knf approximation
|
#
1.1 |
|
13-Oct-2012 |
djm |
branches: 1.1.1; Initial revision
|
#
1.8 |
|
20-Apr-2021 |
tb |
Compare pointer against NULL and fix a KNF issue.
ok jsing
|
#
1.7 |
|
20-Apr-2021 |
tb |
Prepare to provide EC_POINT_set_compressed_coordinates
ok jsing
|
Revision tags: OPENBSD_6_9_BASE
|
#
1.6 |
|
04-Dec-2020 |
tb |
Move point-on-curve check to set_affine_coordinates
Bad API design makes it possible to set an EC_KEY public key to a point not on the curve. As a consequence, it was possible to have bogus ECDSA signatures validated. In practice, all software uses either EC_POINT_oct2point*() to unmarshal public keys or issues a call to EC_KEY_check_key() after setting it. This way, a point on curve check is performed and the problem is mitigated.
In OpenSSL commit 1e2012b7ff4a5f12273446b281775faa5c8a1858, Emilia Kasper moved the point-on-curve check from EC_POINT_oct2point to EC_POINT_set_affine_coordinates_*, which results in more checking. In addition to this commit, we also check in the currently unused codepath of a user set callback for setting compressed coordinates, just in case this will be used at some point in the future.
The documentation of EC_KEY_check_key() is very vague on what it checks and when checks are needed. It could certainly be improved a lot. It's also strange that EC_KEY_set_key() performs no checks, while EC_KEY_set_public_key_affine_coordinates() implicitly calls EC_KEY_check_key().
It's a mess.
Issue found and reported by Guido Vranken who also tested an earlier version of this fix.
ok jsing
|
Revision tags: OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE OPENBSD_6_8_BASE
|
#
1.5 |
|
29-Jan-2017 |
beck |
Send the function codes from the error functions to the bit bucket, as was done earlier in libssl. Thanks inoguchi@ for noticing libssl had more reacharounds into this. ok jsing@ inoguchi@
|
#
1.4 |
|
10-Jul-2014 |
jsing |
Explicitly include <openssl/opensslconf.h> in every file that references an OPENSSL_NO_* define. This avoids relying on something else pulling it in for us, plus it fixes several cases where the #ifndef OPENSSL_NO_XYZ is never going to do anything, since OPENSSL_NO_XYZ will never defined, due to the fact that opensslconf.h has not been included.
This also includes some miscellaneous sorting/tidying of headers.
|
#
1.3 |
|
12-Jun-2014 |
deraadt |
tags as requested by miod and tedu
|
#
1.2 |
|
06-May-2014 |
tedu |
knf approximation
|
#
1.1 |
|
13-Oct-2012 |
djm |
branches: 1.1.1; Initial revision
|
#
1.6 |
|
04-Dec-2020 |
tb |
Move point-on-curve check to set_affine_coordinates
Bad API design makes it possible to set an EC_KEY public key to a point not on the curve. As a consequence, it was possible to have bogus ECDSA signatures validated. In practice, all software uses either EC_POINT_oct2point*() to unmarshal public keys or issues a call to EC_KEY_check_key() after setting it. This way, a point on curve check is performed and the problem is mitigated.
In OpenSSL commit 1e2012b7ff4a5f12273446b281775faa5c8a1858, Emilia Kasper moved the point-on-curve check from EC_POINT_oct2point to EC_POINT_set_affine_coordinates_*, which results in more checking. In addition to this commit, we also check in the currently unused codepath of a user set callback for setting compressed coordinates, just in case this will be used at some point in the future.
The documentation of EC_KEY_check_key() is very vague on what it checks and when checks are needed. It could certainly be improved a lot. It's also strange that EC_KEY_set_key() performs no checks, while EC_KEY_set_public_key_affine_coordinates() implicitly calls EC_KEY_check_key().
It's a mess.
Issue found and reported by Guido Vranken who also tested an earlier version of this fix.
ok jsing
|
Revision tags: OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE OPENBSD_6_8_BASE
|
#
1.5 |
|
29-Jan-2017 |
beck |
Send the function codes from the error functions to the bit bucket, as was done earlier in libssl. Thanks inoguchi@ for noticing libssl had more reacharounds into this. ok jsing@ inoguchi@
|
#
1.4 |
|
10-Jul-2014 |
jsing |
Explicitly include <openssl/opensslconf.h> in every file that references an OPENSSL_NO_* define. This avoids relying on something else pulling it in for us, plus it fixes several cases where the #ifndef OPENSSL_NO_XYZ is never going to do anything, since OPENSSL_NO_XYZ will never defined, due to the fact that opensslconf.h has not been included.
This also includes some miscellaneous sorting/tidying of headers.
|
#
1.3 |
|
12-Jun-2014 |
deraadt |
tags as requested by miod and tedu
|
#
1.2 |
|
06-May-2014 |
tedu |
knf approximation
|
#
1.1 |
|
13-Oct-2012 |
djm |
branches: 1.1.1; Initial revision
|
Revision tags: OPENBSD_6_1_BASE OPENBSD_6_2_BASE
|
#
1.5 |
|
29-Jan-2017 |
beck |
Send the function codes from the error functions to the bit bucket, as was done earlier in libssl. Thanks inoguchi@ for noticing libssl had more reacharounds into this. ok jsing@ inoguchi@
|
#
1.4 |
|
10-Jul-2014 |
jsing |
Explicitly include <openssl/opensslconf.h> in every file that references an OPENSSL_NO_* define. This avoids relying on something else pulling it in for us, plus it fixes several cases where the #ifndef OPENSSL_NO_XYZ is never going to do anything, since OPENSSL_NO_XYZ will never defined, due to the fact that opensslconf.h has not been included.
This also includes some miscellaneous sorting/tidying of headers.
|
#
1.3 |
|
12-Jun-2014 |
deraadt |
tags as requested by miod and tedu
|
#
1.2 |
|
06-May-2014 |
tedu |
knf approximation
|
#
1.1 |
|
13-Oct-2012 |
djm |
branches: 1.1.1; Initial revision
|