<pre style='margin:0'>
Clemens Lang (neverpanic) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/616b34af4873a5ced6108d019e32a0c30f4f1ff8">https://github.com/macports/macports-ports/commit/616b34af4873a5ced6108d019e32a0c30f4f1ff8</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 616b34af4873a5ced6108d019e32a0c30f4f1ff8
</span>Author: Clemens Lang <cal@macports.org>
AuthorDate: Tue Oct 22 18:41:53 2024 +0200

<span style='display:block; white-space:pre;color:#404040;'>    openssl3: Update to 3.4.0
</span>---
 devel/openssl3/Portfile                            |  27 +--
 .../8e008cb8b23ec7dc75c45a66eeed09c815b11cd2.patch | 201 ---------------------
 devel/openssl3/files/patch-mkinstallvars.diff      |  77 --------
 devel/openssl3/files/patch-use-timegm.diff         |   6 +-
 4 files changed, 17 insertions(+), 294 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/openssl3/Portfile b/devel/openssl3/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 338fbfdce15..a5e8385a069 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/openssl3/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/openssl3/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -12,14 +12,14 @@ legacysupport.newest_darwin_requires_legacy 8
</span> set major_v         3
 # For former rollback to 3.1.x release where needed. Must now stay.
 epoch               1
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup        openssl openssl ${major_v}.3.2 openssl-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        openssl openssl ${major_v}.4.0 openssl-
</span> name                openssl3
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision            1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            0
</span> 
 github.tarball_from releases
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums           rmd160  a904b3c3c9fcb9ab9248bfc0225003fa610d382f \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  2e8a40b01979afe8be0bbfb3de5dc1c6709fedb46d6c89c10da114ab5fc3d281 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    size    18076531
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  d300c74dce877d7099bd59fa82d8f0691f13cc97 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  e15dda82fe2fe8139dc2ac21a36d4ca01d5313c75f99f46c4e8a27709b7294bf \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    18320899
</span> 
 # Please revbump these ports when updating the openssl3 version/revision
 #  - freeradius (#43461)
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -49,7 +49,6 @@ distname            openssl-${version}
</span> # Make it explicitly obsolete for now
 #
 if {${os.platform} eq "darwin" && ${os.major} < 18} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span>     subport ${name}-devel {
         PortGroup           obsolete 1.0
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -57,10 +56,15 @@ if {${os.platform} eq "darwin" && ${os.major} < 18} {
</span>     }
 }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://trac.macports.org/ticket/70684
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://github.com/openssl/openssl/pull/25367
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# remove this patch in the next release
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-patchfiles-append  patch-mkinstallvars.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Doesn't build on Snow Leopard with the system compiler, see
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/macports/macports-ports/pull/26250#issuecomment-2437709579.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${os.platform} eq "darwin" && ${os.major} < 18} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {${configure.build_arch} in {"x86_64" "i386"}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_build-append port:clang-11-bootstrap
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.cc ${prefix}/libexec/clang-11-bootstrap/bin/clang
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.cxx ${prefix}/libexec/clang-11-bootstrap/bin/clang++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span> 
 # Use timegm() in crypto/asn1/a_time.c
 # Fixes build on 10.4, and is generally preferable, anyway
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -80,9 +84,6 @@ patchfiles-append  patch-mkinstallvars.diff
</span> #
 patchfiles-append   patch-use-timegm.diff
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Fix CVE-2024-9143
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-patchfiles-append   8e008cb8b23ec7dc75c45a66eeed09c815b11cd2.patch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> if {${os.platform} eq "darwin" && ${os.major} < 11} {
     # Having the stdlib set to libc++ on 10.6 causes a dependency on a
     # macports-clang compiler to be added, which would be a dep cycle.
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/openssl3/files/8e008cb8b23ec7dc75c45a66eeed09c815b11cd2.patch b/devel/openssl3/files/8e008cb8b23ec7dc75c45a66eeed09c815b11cd2.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 037d5917695..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/openssl3/files/8e008cb8b23ec7dc75c45a66eeed09c815b11cd2.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,201 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From 8e008cb8b23ec7dc75c45a66eeed09c815b11cd2 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Viktor Dukhovni <viktor@openssl.org>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Thu, 19 Sep 2024 01:02:40 +1000
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] Harden BN_GF2m_poly2arr against misuse.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-The BN_GF2m_poly2arr() function converts characteristic-2 field
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(GF_{2^m}) Galois polynomials from a representation as a BIGNUM bitmask,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-to a compact array with just the exponents of the non-zero terms.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-These polynomials are then used in BN_GF2m_mod_arr() to perform modular
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-reduction.  A precondition of calling BN_GF2m_mod_arr() is that the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-polynomial must have a non-zero constant term (i.e. the array has `0` as
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-its final element).
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Internally, callers of BN_GF2m_poly2arr() did not verify that
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-precondition, and binary EC curve parameters with an invalid polynomial
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-could lead to out of bounds memory reads and writes in BN_GF2m_mod_arr().
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-The precondition is always true for polynomials that arise from the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-standard form of EC parameters for characteristic-two fields (X9.62).
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-See the "Finite Field Identification" section of:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    https://www.itu.int/ITU-T/formal-language/itu-t/x/x894/2018-cor1/ANSI-X9-62.html
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-The OpenSSL GF(2^m) code supports only the trinomial and pentanomial
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-basis X9.62 forms.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-This commit updates BN_GF2m_poly2arr() to return `0` (failure) when
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-the constant term is zero (i.e. the input bitmask BIGNUM is not odd).
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Additionally, the return value is made unambiguous when there is not
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-enough space to also pad the array with a final `-1` sentinel value.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-The return value is now always the number of elements (including the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-final `-1`) that would be filled when the output array is sufficiently
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-large.  Previously the same count was returned both when the array has
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-just enough room for the final `-1` and when it had only enough space
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-for non-sentinel values.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Finally, BN_GF2m_poly2arr() is updated to reject polynomials whose
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-degree exceeds `OPENSSL_ECC_MAX_FIELD_BITS`, this guards against
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-CPU exhausition attacks via excessively large inputs.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-The above issues do not arise in processing X.509 certificates.  These
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-generally have EC keys from "named curves", and RFC5840 (Section 2.1.1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-disallows explicit EC parameters.  The TLS code in OpenSSL enforces this
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-constraint only after the certificate is decoded, but, even if explicit
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-parameters are specified, they are in X9.62 form, which cannot represent
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-problem values as noted above.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Initially reported as oss-fuzz issue 71623.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-A closely related issue was earlier reported in
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-<https://github.com/openssl/openssl/issues/19826>.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Severity: Low, CVE-2024-9143
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Matt Caswell <matt@openssl.org>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Paul Dale <ppzgs1@gmail.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Tomas Mraz <tomas@openssl.org>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(Merged from https://github.com/openssl/openssl/pull/25639)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Upstream-Status: Backport [https://github.com/openssl/openssl/commit/8e008cb8b23ec7dc75c45a66eeed09c815b11cd2]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- crypto/bn/bn_gf2m.c     | 28 +++++++++++++++-------
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- test/ec_internal_test.c | 51 +++++++++++++++++++++++++++++++++++++++++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 2 files changed, 71 insertions(+), 8 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/crypto/bn/bn_gf2m.c b/crypto/bn/bn_gf2m.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 444c5ca7a3..ae7e9d751c 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./crypto/bn/bn_gf2m.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./crypto/bn/bn_gf2m.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -15,6 +15,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "bn_local.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifndef OPENSSL_NO_EC2M
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# include <openssl/ec.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  * Maximum number of iterations before BN_GF2m_mod_solve_quad_arr should
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1130,16 +1131,26 @@ int BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  * Convert the bit-string representation of a polynomial ( \sum_{i=0}^n a_i *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  * x^i) into an array of integers corresponding to the bits with non-zero
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- * coefficient.  Array is terminated with -1. Up to max elements of the array
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- * will be filled.  Return value is total number of array elements that would
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- * be filled if array was large enough.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ * coefficient.  The array is intended to be suitable for use with
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ * `BN_GF2m_mod_arr()`, and so the constant term of the polynomial must not be
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ * zero.  This translates to a requirement that the input BIGNUM `a` is odd.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ * Given sufficient room, the array is terminated with -1.  Up to max elements
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ * of the array will be filled.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ * The return value is total number of array elements that would be filled if
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ * array was large enough, including the terminating `-1`.  It is `0` when `a`
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ * is not odd or the constant term is zero contrary to requirement.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ * The return value is also `0` when the leading exponent exceeds
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ * `OPENSSL_ECC_MAX_FIELD_BITS`, this guards against CPU exhaustion attacks,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int BN_GF2m_poly2arr(const BIGNUM *a, int p[], int max)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     int i, j, k = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     BN_ULONG mask;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    if (BN_is_zero(a))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (!BN_is_odd(a))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     for (i = a->top - 1; i >= 0; i--) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1157,12 +1168,13 @@ int BN_GF2m_poly2arr(const BIGNUM *a, int p[], int max)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    if (k < max) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (k > 0 && p[0] > OPENSSL_ECC_MAX_FIELD_BITS)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (k < max)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         p[k] = -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        k++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    return k;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return k + 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/test/ec_internal_test.c b/test/ec_internal_test.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index e5bbd3632c..0268142ae7 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./test/ec_internal_test.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./test/ec_internal_test.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -156,6 +156,56 @@ static int field_tests_ecp_mont(void)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifndef OPENSSL_NO_EC2M
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+/* Test that decoding of invalid GF2m field parameters fails. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static int ec2m_field_sanity(void)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    int ret = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    BN_CTX *ctx = BN_CTX_new();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    BIGNUM *p, *a, *b;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    EC_GROUP *group1 = NULL, *group2 = NULL, *group3 = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    TEST_info("Testing GF2m hardening\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    BN_CTX_start(ctx);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    p = BN_CTX_get(ctx);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    a = BN_CTX_get(ctx);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (!TEST_ptr(b = BN_CTX_get(ctx))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        || !TEST_true(BN_one(a))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        || !TEST_true(BN_one(b)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        goto out;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    /* Even pentanomial value should be rejected */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (!TEST_true(BN_set_word(p, 0xf2)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        goto out;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (!TEST_ptr_null(group1 = EC_GROUP_new_curve_GF2m(p, a, b, ctx)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        TEST_error("Zero constant term accepted in GF2m polynomial");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    /* Odd hexanomial should also be rejected */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (!TEST_true(BN_set_word(p, 0xf3)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        goto out;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (!TEST_ptr_null(group2 = EC_GROUP_new_curve_GF2m(p, a, b, ctx)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        TEST_error("Hexanomial accepted as GF2m polynomial");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    /* Excessive polynomial degree should also be rejected */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (!TEST_true(BN_set_word(p, 0x71))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        || !TEST_true(BN_set_bit(p, OPENSSL_ECC_MAX_FIELD_BITS + 1)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        goto out;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (!TEST_ptr_null(group3 = EC_GROUP_new_curve_GF2m(p, a, b, ctx)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        TEST_error("GF2m polynomial degree > %d accepted",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                   OPENSSL_ECC_MAX_FIELD_BITS);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    ret = group1 == NULL && group2 == NULL && group3 == NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ out:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    EC_GROUP_free(group1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    EC_GROUP_free(group2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    EC_GROUP_free(group3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    BN_CTX_end(ctx);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    BN_CTX_free(ctx);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return ret;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /* test EC_GF2m_simple_method directly */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static int field_tests_ec2_simple(void)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -506,6 +556,7 @@ int setup_tests(void)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     ADD_TEST(field_tests_ecp_simple);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     ADD_TEST(field_tests_ecp_mont);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifndef OPENSSL_NO_EC2M
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    ADD_TEST(ec2m_field_sanity);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     ADD_TEST(field_tests_ec2_simple);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     ADD_ALL_TESTS(field_tests_default, crv_len);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-2.47.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/openssl3/files/patch-mkinstallvars.diff b/devel/openssl3/files/patch-mkinstallvars.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0a74de18400..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/openssl3/files/patch-mkinstallvars.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,77 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From 40c8ebe5d2781339709554d166adb006aa495ec8 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Richard Levitte <levitte@openssl.org>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Tue, 3 Sep 2024 19:16:05 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] util/mkinstallvars.pl: replace List::Util::pairs with out own
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Unfortunately, List::Util::pairs didn't appear in perl core modules
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-before 5.19.3, and our minimum requirement is 5.10.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Fortunately, we already have a replacement implementation, and can
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-re-apply it in this script.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Fixes #25366
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Neil Horman <nhorman@openssl.org>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Tomas Mraz <tomas@openssl.org>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(Merged from https://github.com/openssl/openssl/pull/25367)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit 210dc9a50dfd99caa1cf7c3d2fa42850124b1bbc)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- util/mkinstallvars.pl
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ util/mkinstallvars.pl
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -10,8 +10,14 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # form, or passed as variable assignments on the command line.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # The result is a Perl module creating the package OpenSSL::safe::installdata.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+use 5.10.0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+use strict;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+use warnings;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+use Carp;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- use File::Spec;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--use List::Util qw(pairs);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#use List::Util qw(pairs);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+sub _pairs (@);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # These are expected to be set up as absolute directories
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- my @absolutes = qw(PREFIX libdir);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -19,9 +25,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # as subdirectories to PREFIX or LIBDIR.  The order of the pairs is important,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # since the LIBDIR subdirectories depend on the calculation of LIBDIR from
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # PREFIX.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--my @subdirs = pairs (PREFIX => [ qw(BINDIR LIBDIR INCLUDEDIR APPLINKDIR) ],
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                     LIBDIR => [ qw(ENGINESDIR MODULESDIR PKGCONFIGDIR
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                    CMAKECONFIGDIR) ]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+my @subdirs = _pairs (PREFIX => [ qw(BINDIR LIBDIR INCLUDEDIR APPLINKDIR) ],
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                      LIBDIR => [ qw(ENGINESDIR MODULESDIR PKGCONFIGDIR
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                     CMAKECONFIGDIR) ]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # For completeness, other expected variables
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- my @others = qw(VERSION LDLIBS);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -151,3 +157,26 @@ package OpenSSL::safe::installdata;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- _____
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+######## Helpers
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# _pairs LIST
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# This operates on an even-sized list, and returns a list of "ARRAY"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# references, each containing two items from the given LIST.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# It is a quick cheap reimplementation of List::Util::pairs(), a function
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# we cannot use, because it only appeared in perl v5.19.3, and we claim to
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# support perl versions all the way back to v5.10.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+sub _pairs (@) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    croak "Odd number of arguments" if @_ & 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    my @pairlist = ();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    while (@_) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        my $x = [ shift, shift ];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        push @pairlist, $x;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return @pairlist;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/openssl3/files/patch-use-timegm.diff b/devel/openssl3/files/patch-use-timegm.diff
</span><span style='display:block; white-space:pre;color:#808080;'>index 2b4897f6bd2..759da938f8f 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/openssl3/files/patch-use-timegm.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/openssl3/files/patch-use-timegm.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,6 +1,6 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- crypto/asn1/a_time.c.orig      2024-06-04 05:53:04.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ crypto/asn1/a_time.c   2024-06-13 14:47:19.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -599,7 +599,7 @@ int ASN1_TIME_compare(const ASN1_TIME *a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- test/testutil/helper.c.orig    2024-10-22 18:36:51
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ test/testutil/helper.c 2024-10-22 18:37:24
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -19,7 +19,7 @@
</span>  # define timezone _timezone
  #endif
  
</pre><pre style='margin:0'>

</pre>