summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2022-07-13Start documenting our new pet octopus, SSL_CTX_set_security_level(3).Ingo Schwarze
Or should we call it a centipede? Feedback and OK on a previous version from jsing@ and from our chief myriapodologist, tb@.
2022-07-13Cast int64_t to uint64_t before negating.Joel Sing
Avoid undefined behaviour/integer overflow by casting an int64_t to uint64_t before negating. Fixes oss-fuzz #49043 ok tb@
2022-07-13Write documentation for EVP_PKEY_check(3), EVP_PKEY_public_check(3),Ingo Schwarze
EVP_PKEY_param_check(3), and EVP_PKEY_security_bits(3) from scratch. Move the documentation of EVP_PKEY_size(3) and EVP_PKEY_bits(3) to the new manual page EVP_PKEY_size(3). Merge the documentation of the related function pointers from the OpenSSL 1.1.1 branch, which is still under a free license. OK tb@ on the new page EVP_PKEY_size(3).
2022-07-13Simplify computation of max_pub_key = dh->p - 1.Theo Buehler
ok jsing
2022-07-13New manual page written from scratch;Ingo Schwarze
tb@ recently added these functions to libcrypto and also provided feedback on my first draft of this page.
2022-07-13Remove #ifndef around the definition of OPENSSL_TLS_SECURITY_LEVEL.Theo Buehler
We do not intend to make this a compile-time option. Reminded by schwarze who asked about it ok jsing
2022-07-13On May 4 14:19:08 2006 UTC, while fixing a security issue, djm@Ingo Schwarze
provided the new public function DH_check_pub_key(3) in <openssl/dh.h>. Sorry for being a bit tardy in documenting the new function. Then again, OpenSSL doesn't document it either, yet. While here, drop a HISTORY entry about a constant that was renamed in OpenSSL 0.9.5. That's no longer relevant.
2022-07-13Do not make tables static so we can access them from regress.Theo Buehler
2022-07-13Enable BPSW primality test.Theo Buehler
ok jsing
2022-07-13Hook BPSW into BN_is_prime_fasttest_ex()Theo Buehler
ok jsing
2022-07-13Link bn_bpsw.c to buildTheo Buehler
ok jsing
2022-07-13Implement the Baillie-PSW primality testTheo Buehler
It has long been known that pure Miller-Rabin primality tests are insufficient. "Prime and Prejudice: Primality Testing Under Adversarial Conditions" https://eprint.iacr.org/2018/749 points out severe flaws in many widely used libraries. In particular, they exhibited a method to generate 2048-bit composites that bypass the default OpenSSL (and hence LibreSSL) primality test with a probability of 1/16 (!). As a remedy, the authors recommend switching to using BPSW wherever possible. This possibility has always been there, but someone had to sit down and actually implement a properly licensed piece of code. Fortunately, espie suggested to Martin Grenouilloux to do precisely this after asking us whether we would be interested. Of course we were! After a good first implementation from Martin and a lot of back and forth, we came up with the present version. This implementation is ~50% slower than the current default Miller-Rabin test, but that is a small price to pay given the improvements. Thanks to Martin Grenouilloux <martin.grenouilloux () lse ! epita ! fr> for this awesome work, to espie without whom it wouldn't have happened, and to djm for pointing us at this problem a long time back. ok jsing
2022-07-13Link bn_isqrt.c to buildTheo Buehler
ok jsing
2022-07-13Integer square root and perfect square testTheo Buehler
This adds an implementation of the integer square root using a variant of Newton's method with adaptive precision. The implementation is based on a pure Python description of cpython's math.isqrt(). This algorithm is proven to be correct with a tricky but very neat loop invariant: https://github.com/mdickinson/snippets/blob/master/proofs/isqrt/src/isqrt.lean Using this algorithm instead of Newton method, implement Algorithm 1.7.3 (square test) from H. Cohen, "A course in computational algebraic number theory" to detect perfect squares. ok jsing
2022-07-12Unbreak the tree, after the previous commit.Joel Sing
2022-07-12Move BN_lsw() to bn_lcl.h so that other code can use it.Theo Buehler
ok jsing
2022-07-12Remove mkerr.pl remnants from LibreSSLKlemens Nanni
This script is not used at all and files are edited by hand instead. Thus remove misleading comments incl. the obsolete script/config. Feedback OK jsing tb
2021-08-18Import initial code for the SM2 cipherTheo Buehler
This adds the SM2 algorithm defined in the Chinese standards GB/T 32918.1-2016, GB/T 32918.2-2016, GB/T 32918.3-2016, GB/T 32918.4-2016 and GB/T 32918.5-2017. This is an ISC licensed implementation contributed by Ribose.inc, based on the same code that was contributed to OpenSSL by Jack Lloyd. The port to LibreSSL was done by Ronald Tse and Nickolay Olshevsky. Github PR #105 I made quite a few cleanup passes on this, but more is needed, some of which will happen in-tree before this is linked to the build. ok deraadt inoguchi (a long time ago), jsing
2022-07-11Sync cert.pem with certdata.txt from the NSS release branch. OK tb@ bcook@Stuart Henderson
remove (expired): /O=Cybertrust, Inc/CN=Cybertrust Global Root /OU=GlobalSign Root CA - R2/O=GlobalSign/CN=GlobalSign remove: /C=ES/O=Agencia Catalana de Certificacio (NIF Q-0801176-I)/OU=Serveis Publics de Certificacio/OU=Vegeu https://www.catcert.net/verarrel (c)03/OU=Jerarquia Entitats de Certificacio Catalanes/CN=EC-ACC /C=GB/O=Trustis Limited/OU=Trustis FPS Root CA add new root (existing CAs): /C=TW/O=Chunghwa Telecom Co., Ltd./CN=HiPKI Root CA - G1 /C=DE/O=D-Trust GmbH/CN=D-TRUST BR Root CA 1 2020 /C=DE/O=D-Trust GmbH/CN=D-TRUST EV Root CA 1 2020 /C=GR/O=Hellenic Academic and Research Institutions CA/CN=HARICA TLS ECC Root CA 2021 /C=GR/O=Hellenic Academic and Research Institutions CA/CN=HARICA TLS RSA Root CA 2021 /C=US/O=Internet Security Research Group/CN=ISRG Root X2 /C=PL/O=Unizeto Technologies S.A./OU=Certum Certification Authority/CN=Certum Trusted Network CA 2 add (new CAs): /C=TN/O=Agence Nationale de Certification Electronique/CN=TunTrust Root CA /serialNumber=G63287510/C=ES/O=ANF Autoridad de Certificacion/OU=ANF CA Raiz/CN=ANF Secure Server Root CA /C=PL/O=Asseco Data Systems S.A./OU=Certum Certification Authority/CN=Certum EC-384 CA /C=PL/O=Asseco Data Systems S.A./OU=Certum Certification Authority/CN=Certum Trusted Root CA /C=AT/O=e-commerce monitoring GmbH/CN=GLOBALTRUST 2020 /C=CN/O=iTrusChina Co.,Ltd./CN=vTrus ECC Root CA /C=CN/O=iTrusChina Co.,Ltd./CN=vTrus Root CA /C=FI/O=Telia Finland Oyj/CN=Telia Root CA v2 replace with another cert with same CN (SHA1 vs SHA256): /C=ES/CN=Autoridad de Certificacion Firmaprofesional CIF A62634068
2022-07-11fix NULL return adding missing semicolonBrent Cook
ok tb@
2022-07-10Annotate the security callback and the security ex_data as deliberatelyTheo Buehler
not exposed in the public API.
2022-07-10In dsa.h rev. 1.38, tb@ provided DSA_meth_get0_name(3)Ingo Schwarze
and DSA_meth_set1_name(3). Merge the documentation from the OpenSSL 1.1.1 branch, which is still under a free license, significantly tweaked by me.
2022-07-09Make ASN1_{INTEGER,ENUMERATED}_get() return 0 on NULL againTheo Buehler
This is the documented behavior which got lost in the recent rewrite. Mismatch of documentation and reality pointed out by schwarze ok jsing
2022-07-09Document ASN1_INTEGER_get_uint64(3), ASN1_INTEGER_get_int64(3),Ingo Schwarze
ASN1_INTEGER_set_uint64(3), ASN1_INTEGER_set_int64(3), ASN1_ENUMERATED_get_int64(3), and ASN1_ENUMERATED_set_int64(3) recently provided by tb@. Even though Dr. Steven Henson also documented these functions in OpenSSL, the text over there is excessively verbose, repetitive, very badly ordered, and incomplete, so i chose to instead write this patch from scratch, also adding some precision in a few places.
2022-07-07sortTheo Buehler
2022-07-07Sync bs_cbb.c with libssl.Theo Buehler
ok jsing
2022-07-07Make CBB_finish() fail if *out_data is not NULLTheo Buehler
Contrary to CBS_stow(), CBB_finish() will leak, so ensure we fail if *out_data is populated. Discussed with & ok jsing
2022-07-07Initialize hkdf_label to NULL.Theo Buehler
Needed for an upcoming diff adding a NULL check to CBB_finish(). ok jsing
2022-07-07Use a local bits variable to avoid ugly line break due to nested functionTheo Buehler
calls. ok jsing
2022-07-07Bump libtls minor after libcrypto and libssl minor bumpTheo Buehler
2022-07-07Unifdef LIBRESSL_HAS_SECURITY_LEVEL and remove some workaroundsTheo Buehler
that are no longer needed now that libcrypto exposes the necessary security-bits API. ok jsing
2022-07-07Bump minor after symbol additionTheo Buehler
2022-07-07Update Symbols.listTheo Buehler
ok jsing
2022-07-07Expose security level symbols and error codes in the headers.Theo Buehler
ok jsing
2022-07-07bump minor after symbol additionTheo Buehler
2022-07-07Update Symbols.listTheo Buehler
ok jsing
2022-07-07Expose new API in headers.Theo Buehler
These are mostly security-level related, but there are also ASN1_TIME and ASN_INTEGER functions here, as well as some missing accessors. ok jsing
2022-07-05Add missing X509_V_ERR_ strings using the ones from OpenSSL.Theo Buehler
The well-known masters of consistency of course use strings that don't match the names of the errors. ok jsing
2022-07-05Use secop instead of op everywhereTheo Buehler
2022-07-05Pull setting of is_ee out of the function calls to appease scan-buildTheo Buehler
2022-07-04The OpenSSL API is called ASN1_TIME_set_string_X509() (uppercase x)Theo Buehler
2022-07-04Bump to LibreSSL 3.6.0Theo Buehler
2022-07-04Sync with changes in dsa_meth.cTheo Buehler
pointed out by jsing
2022-07-04Prepare to provide DSA_meth_{get0,set1}_name()Theo Buehler
Also follow OpenSSL by making the name non-const to avoid ugly casting. Used by OpenSC's pkcs11-helper, as reported by Fabrice Fontaine in https://github.com/libressl-portable/openbsd/issues/130 ok jsing sthen
2022-07-04Prepare to provide X509_VERIFY_PARAM_get_time()Theo Buehler
ok jsing sthen
2022-07-03Reword a commentTheo Buehler
2022-07-03Unwrap a lineTheo Buehler
2022-07-03Update instructions for using curl's mk-ca-bundle script.Stuart Henderson
2022-07-03Simplify certificate list handling code in legacy server.Joel Sing
A client is required to send an empty list if it does not have a suitable certificate - handle this case up front, rather than going through the normal code path and ending up with an empty certificate list. This matches what we do in the TLSv1.3 stack and will allow for ruther clean up (in addition to making the code more readable). Also tidy up the CBS code and remove some unnecessary length checks. Use 'cert' and 'certs' for certificates, rather than 'x' and 'sk'. ok tb@
2022-07-03Simplify certificate list handling code in legacy client.Joel Sing
Tidy up CBS code and remove some unnecessary length checks. Use 'cert' and 'certs' for certificates, rather than 'x' and 'sk'. ok tb@