Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 05 Jul 2023 23:56:42 +0200
From:      Kristof Provost <kp@FreeBSD.org>
To:        Ed Maste <emaste@FreeBSD.org>
Cc:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org, Mark Johnston <markj@freebsd.org>
Subject:   Re: git: b077aed33b7b - main - Merge OpenSSL 3.0.9
Message-ID:  <4FF6DBAE-F9FC-4D20-81C9-B0E0130DF06E@FreeBSD.org>
In-Reply-To: <202306232319.35NNJsPv044302@gitrepo.freebsd.org>
References:  <202306232319.35NNJsPv044302@gitrepo.freebsd.org>

index | next in thread | previous in thread | raw e-mail

[-- Attachment #1 --]
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 <pierre@freebsdfoundation.org>
> AuthorDate: 2023-06-23 22:53:35 +0000
> Commit:     Ed Maste <emaste@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
[-- Attachment #2 --]
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8">
</head>
<body><div style="font-family: sans-serif;"><div class="markdown" style="white-space: normal;">
<p dir="auto">On 24 Jun 2023, at 1:19, Ed Maste wrote:</p>
</div><div class="plaintext" style="white-space: normal;"><blockquote style="margin: 0 0 5px; padding-left: 5px; border-left: 2px solid #136BCE; color: #136BCE;"><p dir="auto">The branch main has been updated by emaste:</p>
<p dir="auto">URL: <a href="https://cgit.FreeBSD.org/src/commit/?id=b077aed33b7b6aefca7b17ddb250cf521f938613">https://cgit.FreeBSD.org/src/commit/?id=b077aed33b7b6aefca7b17ddb250cf521f938613</a></p>;
<p dir="auto">commit b077aed33b7b6aefca7b17ddb250cf521f938613
<br>
Merge: b08ee10c0646 b84c4564effd
<br>
Author:     Pierre Pronchery &lt;pierre@freebsdfoundation.org&gt;
<br>
AuthorDate: 2023-06-23 22:53:35 +0000
<br>
Commit:     Ed Maste &lt;emaste@FreeBSD.org&gt;
<br>
CommitDate: 2023-06-23 22:53:36 +0000</p>
<p dir="auto">    Merge OpenSSL 3.0.9</p>
<p dir="auto">    Migrate to OpenSSL 3.0 in advance of FreeBSD 14.0.  OpenSSL 1.1.1 (the
<br>
    version we were previously using) will be EOL as of 2023-09-11.</p>
<p dir="auto">    Most of the base system has already been updated for a seamless switch
<br>
    to OpenSSL 3.0.  For many components we've added
<br>
    `-DOPENSSL_API_COMPAT=0x10100000L` to CFLAGS to specify the API version,
<br>
    which avoids deprecation warnings from OpenSSL 3.0.  Changes have also
<br>
    been made to avoid OpenSSL APIs that were already deprecated in OpenSSL
<br>
    1.1.1.  The process of updating to contemporary APIs can continue after
<br>
    this merge.</p>
<p dir="auto">    Additional changes are still required for libarchive and Kerberos-
<br>
    related libraries or tools; workarounds will immediately follow this
<br>
    commit.  Fixes are in progress in the upstream projects and will be
<br>
    incorporated when those are next updated.</p>
<p dir="auto">    There are some performance regressions in benchmarks (certain tests in
<br>
    `openssl speed`) and in some OpenSSL consumers in ports (e.g.  haproxy).
<br>
    Investigation will continue for these.</p>
<p dir="auto">    Netflix's testing showed no functional regression and a rather small,
<br>
    albeit statistically significant, increase in CPU consumption with
<br>
    OpenSSL 3.0.</p>
<p dir="auto">    Thanks to ngie@ and des@ for updating base system components, to
<br>
    antoine@ and bofh@ for ports exp-runs and port fixes/workarounds, and to
<br>
    Netflix and everyone who tested prior to commit or contributed to this
<br>
    update in other ways.</p>
<p dir="auto">    PR:             271615
<br>
    PR:             271656 [exp-run]
<br>
    Relnotes:       Yes
<br>
    Sponsored by:   The FreeBSD Foundation</p>
<br></blockquote></div>
<div class="markdown" style="white-space: normal;">
<p dir="auto">It looks like we missed adding a file.<br>
Security/opensc doesn’t build any more: <a href="https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=270076">https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=270076</a></p>;
<p dir="auto">It fails to find d2i_KeyParams when linking. The opensc code does this:</p>
<pre style="margin-left: 15px; margin-right: 15px; padding: 5px; border: thin solid gray; overflow-x: auto; max-width: 90vw; background-color: #E4E4E4;"><code style="padding: 0 0.25em; background-color: #E4E4E4;">#if OPENSSL_VERSION_NUMBER &lt; 0x30000000L
                                if (!d2i_ECParameters(&amp;ec, &amp;a, (long)len))
                                        util_fatal(&quot;cannot parse EC_PARAMS&quot;);
                                EVP_PKEY_assign_EC_KEY(pkey, ec);
#else
                                if (!d2i_KeyParams(EVP_PKEY_EC, &amp;pkey, &amp;a, len))
                                        util_fatal(&quot;cannot parse EC_PARAMS&quot;);
#endif
</code></pre>
<p dir="auto">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:</p>
<pre style="margin-left: 15px; margin-right: 15px; padding: 5px; border: thin solid gray; overflow-x: auto; max-width: 90vw; background-color: #E4E4E4;"><code style="padding: 0 0.25em; background-color: #E4E4E4;">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;
</code></pre>
<p dir="auto">Best regards,<br>
Kristof</p>

</div>
</div>
</body>

</html>
help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4FF6DBAE-F9FC-4D20-81C9-B0E0130DF06E>