On 24 Jun 2023, at 1:19, Ed Maste wrote:
The branch main has been updated by emaste:

URL: https://cgit.FreeBSD.org/src/commit/?id=b077aed33b7b6aefca7b17ddb250cf521f938613

commit b077aed33b7b6aefca7b17ddb250cf521f938613
Merge: b08ee10c0646 b84c4564effd
Author:     Pierre Pronchery <pie...@freebsdfoundation.org>
AuthorDate: 2023-06-23 22:53:35 +0000
Commit:     Ed Maste <ema...@freebsd.org>
CommitDate: 2023-06-23 22:53:36 +0000

    Merge OpenSSL 3.0.9

Migrate to OpenSSL 3.0 in advance of FreeBSD 14.0. OpenSSL 1.1.1 (the
    version we were previously using) will be EOL as of 2023-09-11.

Most of the base system has already been updated for a seamless switch
    to OpenSSL 3.0.  For many components we've added
`-DOPENSSL_API_COMPAT=0x10100000L` to CFLAGS to specify the API version, which avoids deprecation warnings from OpenSSL 3.0. Changes have also been made to avoid OpenSSL APIs that were already deprecated in OpenSSL 1.1.1. The process of updating to contemporary APIs can continue after
    this merge.

    Additional changes are still required for libarchive and Kerberos-
related libraries or tools; workarounds will immediately follow this commit. Fixes are in progress in the upstream projects and will be
    incorporated when those are next updated.

There are some performance regressions in benchmarks (certain tests in `openssl speed`) and in some OpenSSL consumers in ports (e.g. haproxy).
    Investigation will continue for these.

Netflix's testing showed no functional regression and a rather small,
    albeit statistically significant, increase in CPU consumption with
    OpenSSL 3.0.

    Thanks to ngie@ and des@ for updating base system components, to
antoine@ and bofh@ for ports exp-runs and port fixes/workarounds, and to Netflix and everyone who tested prior to commit or contributed to this
    update in other ways.

    PR:             271615
    PR:             271656 [exp-run]
    Relnotes:       Yes
    Sponsored by:   The FreeBSD Foundation


It looks like we missed adding a file.
Security/opensc doesn’t build any more: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=270076

It fails to find d2i_KeyParams when linking. The opensc code does this:

        #if OPENSSL_VERSION_NUMBER < 0x30000000L
if (!d2i_ECParameters(&ec, &a, (long)len)) util_fatal("cannot parse EC_PARAMS");
                                        EVP_PKEY_assign_EC_KEY(pkey, ec);
        #else
if (!d2i_KeyParams(EVP_PKEY_EC, &pkey, &a, len)) util_fatal("cannot parse EC_PARAMS");
        #endif

d2i_KeyParams() appears to be new on openssl 3. It’s defined in d2i_param.c, which we don’t build. I’ve tested with this patch, and that appears to fix things:

diff --git a/secure/lib/libcrypto/Makefile b/secure/lib/libcrypto/Makefile
        index 28258e796984..ef5652e8c27c 100644
        --- a/secure/lib/libcrypto/Makefile
        +++ b/secure/lib/libcrypto/Makefile
@@ -74,7 +74,7 @@ SRCS+= n_pkey.c nsseq.c p5_pbe.c p5_pbev2.c p5_scrypt.c p8_pkey.c
         SRCS+= t_bitst.c t_pkey.c t_spki.c tasn_dec.c tasn_enc.c tasn_fre.c
SRCS+= tasn_new.c tasn_prn.c tasn_scn.c tasn_typ.c tasn_utl.c x_algor.c SRCS+= x_bignum.c x_info.c x_int64.c x_long.c x_pkey.c x_sig.c x_spki.c
        -SRCS+= x_val.c
        +SRCS+= x_val.c d2i_param.c

         # async
         SRCS+= async.c async_err.c async_posix.c async_wait.c
diff --git a/secure/lib/libcrypto/Version.map b/secure/lib/libcrypto/Version.map
        index 421819324961..74d0b8b3cef1 100644
        --- a/secure/lib/libcrypto/Version.map
        +++ b/secure/lib/libcrypto/Version.map
        @@ -3564,6 +3564,8 @@ OPENSSL_1_1_0 {
                 d2i_IPAddressOrRange;
                 d2i_IPAddressRange;
                 d2i_ISSUING_DIST_POINT;
        +        d2i_KeyParams;
        +        d2i_KeyParams_bio;
                 d2i_NETSCAPE_CERT_SEQUENCE;
                 d2i_NETSCAPE_SPKAC;
                 d2i_NETSCAPE_SPKI;

Best regards,
Kristof

Reply via email to