public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/nss] rawhide: Revert changes on top of nss-3.127.0
@ 2026-08-27 17:26 
  0 siblings, 0 replies; only message in thread
From:  @ 2026-08-27 17:26 UTC (permalink / raw)
  To: git-commits

            A new commit has been pushed.

            Repo   : rpms/nss
            Branch : rawhide
            Commit : 71dc233ac9ac9760137170667f8cb4dbd9a8eb56
            Author : Krenželok František <fkrenzel@redhat.com>
            Date   : 2026-08-26T15:35:43+02:00
            Stats  : +20/-2205 in 16 file(s)
            URL    : https://src.fedoraproject.org/rpms/nss/c/71dc233ac9ac9760137170667f8cb4dbd9a8eb56?branch=rawhide

            Log:
            Revert changes on top of nss-3.127.0

Reverts commits 5536897, 18d0ce9, a41856c, 96c6bcd, ee18cf1,
33ba32d, 0ce38c5, 73f7c7a, d7d7509.

---
diff --git a/nss-3.101-extend-db-dump-time.patch b/nss-3.101-extend-db-dump-time.patch
deleted file mode 100644
index 88a608b..0000000
--- a/nss-3.101-extend-db-dump-time.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ./tests/dbtests/dbtests.sh.extend ./tests/dbtests/dbtests.sh
---- ./tests/dbtests/dbtests.sh.extend	2023-11-15 13:17:50.651020458 -0800
-+++ ./tests/dbtests/dbtests.sh	2023-11-15 13:18:57.091608850 -0800
-@@ -366,7 +366,7 @@ dbtest_main()
-       RARRAY=($dtime)
-       TIMEARRAY=(${RARRAY[1]//./ })
-       echo "${TIMEARRAY[0]} seconds"
--      test ${TIMEARRAY[0]} -lt 5
-+      test ${TIMEARRAY[0]} -lt ${NSS_DB_DUMP_TIME-5}
-       ret=$?
-       html_msg ${ret} 0 "certutil dump keys with explicit default trust flags"
-     fi

diff --git a/nss-3.112-disable-md5.patch b/nss-3.112-disable-md5.patch
deleted file mode 100644
index f52f3f3..0000000
--- a/nss-3.112-disable-md5.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-diff -up ./lib/pk11wrap/pk11pars.c.no_md ./lib/pk11wrap/pk11pars.c
---- ./lib/pk11wrap/pk11pars.c.no_md	2024-06-11 12:41:35.054654990 -0700
-+++ ./lib/pk11wrap/pk11pars.c	2024-06-11 12:46:25.347979894 -0700
-@@ -329,14 +329,11 @@ static const oidValDef curveOptList[] =
- static const oidValDef hashOptList[] = {
-     /* Hashes */
-     { CIPHER_NAME("MD2"), SEC_OID_MD2,
--      NSS_USE_ALG_IN_SSL_KX | NSS_USE_ALG_IN_SIGNATURE | NSS_USE_ALG_IN_SMIME |
--          NSS_USE_ALG_IN_PKCS12 },
-+      NSS_USE_ALG_IN_SMIME_LEGACY | NSS_USE_ALG_IN_PKCS12_DECRYPT },
-     { CIPHER_NAME("MD4"), SEC_OID_MD4,
--      NSS_USE_ALG_IN_SSL_KX | NSS_USE_ALG_IN_SIGNATURE | NSS_USE_ALG_IN_SMIME |
--          NSS_USE_ALG_IN_PKCS12 },
-+      NSS_USE_ALG_IN_SMIME_LEGACY | NSS_USE_ALG_IN_PKCS12_DECRYPT },
-     { CIPHER_NAME("MD5"), SEC_OID_MD5,
--      NSS_USE_ALG_IN_SSL_KX | NSS_USE_ALG_IN_SIGNATURE | NSS_USE_ALG_IN_SMIME |
--          NSS_USE_ALG_IN_PKCS12 },
-+      NSS_USE_ALG_IN_SMIME_LEGACY | NSS_USE_ALG_IN_PKCS12_DECRYPT },
-     { CIPHER_NAME("SHA1"), SEC_OID_SHA1,
-       NSS_USE_ALG_IN_SSL_KX | NSS_USE_ALG_IN_SIGNATURE | NSS_USE_ALG_IN_SMIME |
-           NSS_USE_ALG_IN_PKCS12 },
-diff -up ./lib/util/secoid.c.no_md ./lib/util/secoid.c
-diff -r 699541a7793b lib/util/secoid.c
---- a/lib/util/secoid.c	Tue Jun 16 23:03:22 2020 +0000
-+++ b/lib/util/secoid.c	Thu Jun 25 14:33:09 2020 +0200
-@@ -2042,6 +2042,19 @@
-             int i;
- 
-             for (i = 1; i < SEC_OID_TOTAL; i++) {
-+                switch (i) {
-+                case SEC_OID_MD2:
-+                case SEC_OID_MD4:
-+                case SEC_OID_MD5:
-+                case SEC_OID_PKCS1_MD2_WITH_RSA_ENCRYPTION:
-+                case SEC_OID_PKCS1_MD4_WITH_RSA_ENCRYPTION:
-+                case SEC_OID_PKCS1_MD5_WITH_RSA_ENCRYPTION:
-+                case SEC_OID_PKCS5_PBE_WITH_MD2_AND_DES_CBC:
-+                case SEC_OID_PKCS5_PBE_WITH_MD5_AND_DES_CBC:
-+                    continue;
-+                default:
-+                    break;
-+                }
-                 if (oids[i].desc && strstr(arg, oids[i].desc)) {
-                     xOids[i].notPolicyFlags = notEnable |
-                                               (xOids[i].notPolicyFlags & ~(DEF_FLAGS));
-diff -up ./tests/tools/pkcs12policy.txt.disable_md5 ./tests/tools/pkcs12policy.txt
---- ./tests/tools/pkcs12policy.txt.disable_md5	2025-05-23 06:07:49.000000000 -0700
-+++ ./tests/tools/pkcs12policy.txt	2025-06-21 13:46:53.055812187 -0700
-@@ -95,21 +95,12 @@
-   0 17 allow_all disallow=rc2 PKCS_#12_V2_PBE_With_SHA-1_And_128_Bit_RC4 PKCS_#12_V2_PBE_With_SHA-1_And_128_Bit_RC2_CBC SHA-1  disallow rc2 (read), RC4 and RC2
- # integrity policy check the various has based controls.
- #  NOTE: md4, md2, and md5 are turned off by policy by default for encrypting
--# (decrypting is fine). To be enabled, you must allow=all or allow=mdX on the
-+# (decrypting is fine). To be enabled, you must allow=mdX/pkcs12 on the
- # encryption side. These tests purposefully tests that the default fails to encrypt
- # but succeeds when decrypting.
-  27  x allow=tls allow=tls PKCS_#12_V2_PBE_With_SHA-1_And_128_Bit_RC2_CBC PKCS_#5_Password_Based_Encryption_with_MD2_and_DES-CBC SHA-256 Use default policy with multiple hashes
--  0  0 allow=all allow=tls PKCS_#12_V2_PBE_With_SHA-1_And_128_Bit_RC2_CBC PKCS_#5_Password_Based_Encryption_with_MD2_and_DES-CBC SHA-256 Allow all encrypt, use default decrypt with multiple hashes
--  0  0 allow=all allow=all PKCS_#12_V2_PBE_With_SHA-1_And_128_Bit_RC2_CBC PKCS_#5_Password_Based_Encryption_with_MD2_and_DES-CBC SHA-256 Allow all with multiple hashes
-- 28  x disallow=sha1_allow=md2 allow=all PKCS_#12_V2_PBE_With_SHA-1_And_128_Bit_RC2_CBC PKCS_#5_Password_Based_Encryption_with_MD2_and_DES-CBC SHA-256 Disallow sha1 on write
-  27  x disallow=md2 allow=all PKCS_#12_V2_PBE_With_SHA-1_And_128_Bit_RC2_CBC PKCS_#5_Password_Based_Encryption_with_MD2_and_DES-CBC SHA-256 Disallow md2 on write
-- 29  x disallow=sha256_allow=md2 allow=all PKCS_#12_V2_PBE_With_SHA-1_And_128_Bit_RC2_CBC PKCS_#5_Password_Based_Encryption_with_MD2_and_DES-CBC SHA-256 Disallow sha256 on write
--  0 19 allow=all disallow=sha1 PKCS_#12_V2_PBE_With_SHA-1_And_128_Bit_RC2_CBC PKCS_#5_Password_Based_Encryption_with_MD2_and_DES-CBC SHA-256 Disallow sha1 on read
--  0 17 allow=all disallow=md2 PKCS_#12_V2_PBE_With_SHA-1_And_128_Bit_RC2_CBC PKCS_#5_Password_Based_Encryption_with_MD2_and_DES-CBC SHA-256 Disallow md2 on read
--  0 17 allow=all disallow=sha256 PKCS_#12_V2_PBE_With_SHA-1_And_128_Bit_RC2_CBC PKCS_#5_Password_Based_Encryption_with_MD2_and_DES-CBC SHA-256 Disallow sha256 on read
--  0  0 allow=all disallow=md2/pkcs12-encrypt PKCS_#12_V2_PBE_With_SHA-1_And_128_Bit_RC2_CBC PKCS_#5_Password_Based_Encryption_with_MD2_and_DES-CBC SHA-256 Disallow md2 on read
--  0  0 allow=all disallow=sha1/pkcs12-encrypt PKCS_#12_V2_PBE_With_SHA-1_And_128_Bit_RC2_CBC PKCS_#5_Password_Based_Encryption_with_MD2_and_DES-CBC SHA-256 Disallow sha1 on read
--  0  0 allow=all disallow=sha256/pkcs12-encrypt PKCS_#12_V2_PBE_With_SHA-1_And_128_Bit_RC2_CBC PKCS_#5_Password_Based_Encryption_with_MD2_and_DES-CBC SHA-256 Disallow sha256 on read
-+ 27  x disallow=sha256_allow=md2 allow=all PKCS_#12_V2_PBE_With_SHA-1_And_128_Bit_RC2_CBC PKCS_#5_Password_Based_Encryption_with_MD2_and_DES-CBC SHA-256 Disallow sha256 on write
-   0  0 allow=all allow=all AES-128-CBC AES-128-CBC HMAC_SHA-256 Allow all with hmac
-  29  x disallow=hmac-sha256 allow=all AES-128-CBC AES-128-CBC HMAC_SHA-256 Disallow hmac on write
-   0 17 allow=all disallow=hmac-sha256 AES-128-CBC AES-128-CBC HMAC_SHA-256 Disallow hmac on read

diff --git a/nss-3.118-ml-dsa-test-call-site.patch b/nss-3.118-ml-dsa-test-call-site.patch
deleted file mode 100644
index 5143956..0000000
--- a/nss-3.118-ml-dsa-test-call-site.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/tests/tools/tools.sh
-+++ b/tests/tools/tools.sh
-@@ -664,7 +664,8 @@
-   tools_p12_export_with_invalid_ciphers
-   tools_p12_import_old_files
-   tools_p12_import_pbmac1_samples
-   tools_p12_import_ed25519_private_key
-+  tools_p12_ml_dsa_import
-   tools_p12_ml_kem_import
-   if using_sql; then
-     tools_p12_import_rsa_pss_private_key

diff --git a/nss-3.118-ml-dsa-test-for-sign-verify-pkcs12.patch b/nss-3.118-ml-dsa-test-for-sign-verify-pkcs12.patch
index e4307fd..a1c5c40 100644
--- a/nss-3.118-ml-dsa-test-for-sign-verify-pkcs12.patch
+++ b/nss-3.118-ml-dsa-test-for-sign-verify-pkcs12.patch
@@ -236,35 +236,29 @@ diff --git a/cmd/certutil/keystuff.c b/cmd/certutil/keystuff.c
 diff --git a/cmd/pk11importtest/pk11importtest.c b/cmd/pk11importtest/pk11importtest.c
 --- a/cmd/pk11importtest/pk11importtest.c
 +++ b/cmd/pk11importtest/pk11importtest.c
-@@ -217,8 +217,9 @@
+@@ -217,6 +217,7 @@
      opt_NoDSA,
      opt_NoDH,
      opt_NoEC,
 +    opt_NoMLDSA,
      opt_NoMLKEM,
-     opt_NoED,
-     opt_NoECMont,
  };
-
-@@ -231,8 +232,9 @@
+ 
+@@ -231,6 +232,7 @@
      { /* opt_NoDSA            */ 'D', PR_FALSE, 0, PR_FALSE },
      { /* opt_NoDH             */ 'h', PR_FALSE, 0, PR_FALSE },
      { /* opt_NoEC             */ 'e', PR_FALSE, 0, PR_FALSE },
 +    { /* opt_NoMLDSA          */ 'm', PR_FALSE, 0, PR_FALSE },
      { /* opt_NoMLKEM          */ 'K', PR_FALSE, 0, PR_FALSE },
-     { /* opt_NoED             */ 'w', PR_FALSE, 0, PR_FALSE },
-     { /* opt_NoECMont         */ 'g', PR_FALSE, 0, PR_FALSE },
  };
-
-@@ -247,8 +249,10 @@
+ 
+@@ -247,6 +249,8 @@
      PRBool doDSA = PR_TRUE;
      PRBool doDH = PR_FALSE; /* NSS currently can't export wrapped DH keys */
      PRBool doEC = PR_TRUE;
 +    PRBool doMLDSA = PR_FALSE;
 +    CK_ML_DSA_PARAMETER_SET_TYPE mldsaParamSet = CKP_ML_DSA_44;
      PRBool doMLKEM = PR_TRUE;
-     PRBool doED = PR_TRUE;
-     PRBool doECMont = PR_TRUE;
      PRBool noPub = PR_FALSE;
      PQGParams *pqgParams = NULL;
 @@ -305,6 +309,9 @@
@@ -420,7 +414,7 @@ diff --git a/tests/cert/cert.sh b/tests/cert/cert.sh
 diff --git a/tests/tools/tools.sh b/tests/tools/tools.sh
 --- a/tests/tools/tools.sh
 +++ b/tests/tools/tools.sh
-@@ -128,7 +128,16 @@
+@@ -128,6 +128,15 @@
    cp ${QADIR}/tools/pbmac1-invalid-bad-salt.p12 ${TOOLSDIR}/data
    cp ${QADIR}/tools/pbmac1-invalid-no-length.p12 ${TOOLSDIR}/data
    cp ${QADIR}/tools/corrupted_cert_bag.p12 ${TOOLSDIR}/data
@@ -433,14 +427,13 @@ diff --git a/tests/tools/tools.sh b/tests/tools/tools.sh
 +  cp ${QADIR}/tools/openssl-ml-dsa-44.p12 ${TOOLSDIR}/data
 +  cp ${QADIR}/tools/openssl-ml-dsa-65.p12 ${TOOLSDIR}/data
 +  cp ${QADIR}/tools/openssl-ml-dsa-87.p12 ${TOOLSDIR}/data
-   cp ${QADIR}/tools/openssl-ed25519.p12 ${TOOLSDIR}/data
    cp ${QADIR}/tools/openssl-ml-kem-768-seed.p12 ${TOOLSDIR}/data
    cp ${QADIR}/tools/openssl-ml-kem-768-priv.p12 ${TOOLSDIR}/data
    cp ${QADIR}/tools/openssl-ml-kem-768-both.p12 ${TOOLSDIR}/data
 @@ -536,6 +545,33 @@
    return $ret
  }
-
+ 
 +tools_p12_ml_dsa_import()
 +{
 +  echo "$SCRIPTNAME: Testing ml-dsa compatibility with pkcs12 --------------"
@@ -471,3 +464,11 @@ diff --git a/tests/tools/tools.sh b/tests/tools/tools.sh
  tools_p12_ml_kem_import()
  {
    echo "$SCRIPTNAME: Testing ml-kem compatibility with pkcs12 --------------"
+@@ -616,6 +652,7 @@
+   tools_p12_export_with_invalid_ciphers
+   tools_p12_import_old_files
+   tools_p12_import_pbmac1_samples
++    tools_p12_ml_dsa_import
+   tools_p12_ml_kem_import
+   if using_sql; then
+     tools_p12_import_rsa_pss_private_key

diff --git a/nss-3.124-add-ml-kem-key-size-mech-info.patch b/nss-3.124-add-ml-kem-key-size-mech-info.patch
deleted file mode 100644
index f80b695..0000000
--- a/nss-3.124-add-ml-kem-key-size-mech-info.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-# HG changeset patch
-# User Robert Relyea <rrelyea@redhat.com>
-# Date 1781030209 25200
-#      Tue Jun 09 11:36:49 2026 -0700
-# Branch NSS_3_124_BRANCH
-# Node ID 9d51dda84f46517faa8b9cf6abe4311e1ae3e2ac
-# Parent  2a7bb3310ced138c06a588fc47b9f98e3f9faa68
-nss-3.124-add-ml-kem-key-size-mech-info.patch
-
-diff --git a/lib/softoken/pkcs11.c b/lib/softoken/pkcs11.c
---- a/lib/softoken/pkcs11.c
-+++ b/lib/softoken/pkcs11.c
-@@ -35,16 +35,17 @@
- #include "secoid.h"
- #include "sftkdb.h"
- #include "utilpars.h"
- #include "ec.h"
- #include "secasn1.h"
- #include "secerr.h"
- #include "lgglue.h"
- #include "kem.h"
-+#include "kyber.h"
- 
- PRBool parentForkedAfterC_Initialize;
- 
- #ifndef NO_FORK_CHECK
- 
- PRBool sftkForkCheckDisabled;
- 
- #if defined(CHECK_FORK_PTHREAD) || defined(CHECK_FORK_MIXED)
-@@ -676,23 +677,23 @@ static const struct mechanismList mechan
-     { CKM_IKE1_PRF_DERIVE, { 8, 64, CKF_DERIVE }, PR_TRUE },
-     { CKM_IKE1_EXTENDED_DERIVE, { 8, 255 * 64, CKF_DERIVE }, PR_TRUE },
-     { CKM_NSS_IKE_PRF_PLUS_DERIVE, { 8, 255 * 64, CKF_DERIVE }, PR_TRUE },
-     { CKM_NSS_IKE_PRF_DERIVE, { 8, 64, CKF_DERIVE }, PR_TRUE },
-     { CKM_NSS_IKE1_PRF_DERIVE, { 8, 64, CKF_DERIVE }, PR_TRUE },
-     { CKM_NSS_IKE1_APP_B_PRF_DERIVE, { 8, 255 * 64, CKF_DERIVE }, PR_TRUE },
- /* -------------------- Kyber Operations ----------------------- */
- #ifndef NSS_DISABLE_KYBER
--    { CKM_NSS_KYBER_KEY_PAIR_GEN, { 0, 0, CKF_GENERATE_KEY_PAIR }, PR_TRUE },
--    { CKM_NSS_KYBER, { 0, 0, CKF_KEM }, PR_TRUE },
-+    { CKM_NSS_KYBER_KEY_PAIR_GEN, { KYBER768_PUBLIC_KEY_BYTES, KYBER768_PUBLIC_KEY_BYTES, CKF_GENERATE_KEY_PAIR }, PR_TRUE },
-+    { CKM_NSS_KYBER, { KYBER768_PUBLIC_KEY_BYTES, KYBER768_PUBLIC_KEY_BYTES, CKF_KEM }, PR_TRUE },
- #endif
--    { CKM_NSS_ML_KEM_KEY_PAIR_GEN, { 0, 0, CKF_GENERATE_KEY_PAIR }, PR_TRUE },
--    { CKM_NSS_ML_KEM, { 0, 0, CKF_KEM }, PR_TRUE },
--    { CKM_ML_KEM_KEY_PAIR_GEN, { 0, 0, CKF_GENERATE_KEY_PAIR }, PR_TRUE },
--    { CKM_ML_KEM, { 0, 0, CKF_KEM }, PR_TRUE },
-+    { CKM_NSS_ML_KEM_KEY_PAIR_GEN, { KYBER768_PUBLIC_KEY_BYTES, MLKEM1024_PUBLIC_KEY_BYTES, CKF_GENERATE_KEY_PAIR }, PR_TRUE },
-+    { CKM_NSS_ML_KEM, { KYBER768_PUBLIC_KEY_BYTES, MLKEM1024_PUBLIC_KEY_BYTES, CKF_KEM }, PR_TRUE },
-+    { CKM_ML_KEM_KEY_PAIR_GEN, { KYBER768_PUBLIC_KEY_BYTES, MLKEM1024_PUBLIC_KEY_BYTES, CKF_GENERATE_KEY_PAIR }, PR_TRUE },
-+    { CKM_ML_KEM, { KYBER768_PUBLIC_KEY_BYTES, MLKEM1024_PUBLIC_KEY_BYTES, CKF_KEM }, PR_TRUE },
-     /* don't advertize ML_DSA support until we have it working in freebl */
-     { CKM_ML_DSA_KEY_PAIR_GEN, { ML_DSA_44_PUBLICKEY_LEN, ML_DSA_87_PUBLICKEY_LEN, CKF_GENERATE }, PR_TRUE },
-     { CKM_ML_DSA, { ML_DSA_44_PUBLICKEY_LEN, ML_DSA_87_PUBLICKEY_LEN, CKF_SN_VR }, PR_TRUE },
- };
- static const CK_ULONG mechanismCount = sizeof(mechanisms) / sizeof(mechanisms[0]);
- 
- /* sigh global so fipstokn can read it */
- PRBool nsc_init = PR_FALSE;

diff --git a/nss-3.124-allow-hash-override-pss.patch b/nss-3.124-allow-hash-override-pss.patch
deleted file mode 100644
index 9e5443a..0000000
--- a/nss-3.124-allow-hash-override-pss.patch
+++ /dev/null
@@ -1,489 +0,0 @@
-# HG changeset patch
-# User Robert Relyea <rrelyea@redhat.com>
-# Date 1781635239 25200
-#      Tue Jun 16 11:40:39 2026 -0700
-# Branch NSS_3_124_BRANCH
-# Node ID c85110e0f7ba48ef44c9b535a9c3bccf78f8416d
-# Parent  4b0e3f33a2e76a77e36b435eb3cc1eb06f14249d
-nss-3.124-allow-hash-override-pss.patch
-
-diff --git a/cmd/certutil/certutil.c b/cmd/certutil/certutil.c
---- a/cmd/certutil/certutil.c
-+++ b/cmd/certutil/certutil.c
-@@ -228,16 +228,20 @@ CertReq(SECKEYPrivateKey *privk, SECKEYP
-         return SECFailure;
-     }
- 
-     /* Change cert type to RSA-PSS, if desired. */
-     if (pssCertificate) {
-         /* force a PSS signature. We can do a PSS signature with an
-          * RSA key, this will force us to generate a PSS signature */
-         signAlgTag = SEC_OID_PKCS1_RSA_PSS_SIGNATURE;
-+        /* we are reusing an algorithm id, prevent the assert when we try
-+         * to set the parameters of that algorithm id */
-+        spki->algorithm.parameters.data = NULL;
-+        spki->algorithm.parameters.len = 0;
-         /* override the SPKI algorithm id. */
-         rv = SEC_CreateSignatureAlgorithmID(arena, &spki->algorithm,
-                                             signAlgTag, hashAlgTag,
-                                             NULL, NULL, pubk);
-         if (rv != SECSuccess) {
-             PORT_FreeArena(arena, PR_FALSE);
-             SECKEY_DestroySubjectPublicKeyInfo(spki);
-             SECU_PrintError(progName, "unable to set algorithm ID");
-diff --git a/gtests/cryptohi_gtest/cryptohi_unittest.cc b/gtests/cryptohi_gtest/cryptohi_unittest.cc
---- a/gtests/cryptohi_gtest/cryptohi_unittest.cc
-+++ b/gtests/cryptohi_gtest/cryptohi_unittest.cc
-@@ -105,17 +105,17 @@ class SignParamsTestF : public ::testing
-     SECItem *saltLengthItem =
-         SEC_ASN1EncodeInteger(arena_.get(), &params->saltLength, saltLength);
-     ASSERT_EQ(&params->saltLength, saltLengthItem);
-   }
- 
-   void CheckHashAlg(SECKEYRSAPSSParams *params, SECOidTag hashAlgTag) {
-     // If hash algorithm is SHA-1, it must be omitted in the parameters
-     if (hashAlgTag == SEC_OID_SHA1) {
--      EXPECT_EQ(nullptr, params->hashAlg);
-+      EXPECT_EQ(nullptr, params->hashAlg) << "oid==" << SECOID_FindOIDTagDescription(SECOID_GetAlgorithmTag(params->hashAlg));
-     } else {
-       EXPECT_NE(nullptr, params->hashAlg);
-       EXPECT_EQ(hashAlgTag, SECOID_GetAlgorithmTag(params->hashAlg));
-     }
-   }
- 
-   void CheckMaskAlg(SECKEYRSAPSSParams *params, SECOidTag hashAlgTag) {
-     SECStatus rv;
-@@ -225,22 +225,16 @@ TEST_P(SignParamsTest, CreateRsaPss) {
-   } else {
-     srcParams = NULL;
-   }
- 
-   SECItem *params = SEC_CreateSignatureAlgorithmParameters(
-       arena_.get(), nullptr, SEC_OID_PKCS1_RSA_PSS_SIGNATURE, hashAlg,
-       srcParams, privk_.get());
- 
--  if (hashAlg != SEC_OID_UNKNOWN && srcHashAlg != SEC_OID_UNKNOWN &&
--      hashAlg != srcHashAlg) {
--    EXPECT_EQ(nullptr, params);
--    return;
--  }
--
-   EXPECT_NE(nullptr, params);
- 
-   SECKEYRSAPSSParams pssParams;
-   PORT_Memset(&pssParams, 0, sizeof(pssParams));
-   SECStatus rv =
-       SEC_QuickDERDecodeItem(arena_.get(), &pssParams,
-                              SEC_ASN1_GET(SECKEY_RSAPSSParamsTemplate), params);
-   ASSERT_EQ(SECSuccess, rv);
-@@ -294,83 +288,100 @@ TEST_P(SignParamsTest, CreateRsaPssWithE
- 
- TEST_P(SignParamsTest, CreateRsaPssWithInvalidHashAlg) {
-   SECOidTag srcHashAlg = std::get<1>(GetParam());
- 
-   SECItem *srcParams;
-   if (srcHashAlg != SEC_OID_UNKNOWN) {
-     SECKEYRSAPSSParams pssParams;
-     ASSERT_NO_FATAL_FAILURE(
--        CreatePssParams(&pssParams, srcHashAlg, srcHashAlg));
-+        CreatePssParams(&pssParams, SEC_OID_MD5, SEC_OID_MD5));
-     srcParams = SEC_ASN1EncodeItem(arena_.get(), nullptr, &pssParams,
-                                    SEC_ASN1_GET(SECKEY_RSAPSSParamsTemplate));
-     ASSERT_NE(nullptr, srcParams);
-   } else {
-     srcParams = NULL;
-   }
- 
-   SECItem *params = SEC_CreateSignatureAlgorithmParameters(
--      arena_.get(), nullptr, SEC_OID_PKCS1_RSA_PSS_SIGNATURE, SEC_OID_MD5,
-+      arena_.get(), nullptr, SEC_OID_PKCS1_RSA_PSS_SIGNATURE, srcHashAlg,
-       srcParams, privk_.get());
- 
--  EXPECT_EQ(nullptr, params);
-+  /* override invalid hash with valid hash */
-+  EXPECT_NE(nullptr, params);
-+  /* assert params ->hashAlg != SEC_OID_MD5 */
- }
- 
- TEST_P(SignParamsSourceTest, CreateRsaPssWithInvalidHashAlg) {
-   SECOidTag hashAlg = GetParam();
- 
-   SECItem *srcParams;
-   SECKEYRSAPSSParams pssParams;
-   ASSERT_NO_FATAL_FAILURE(
--      CreatePssParams(&pssParams, SEC_OID_MD5, SEC_OID_MD5));
-+      CreatePssParams(&pssParams, hashAlg, hashAlg));
-   srcParams = SEC_ASN1EncodeItem(arena_.get(), nullptr, &pssParams,
-                                  SEC_ASN1_GET(SECKEY_RSAPSSParamsTemplate));
-   ASSERT_NE(nullptr, srcParams);
- 
-   SECItem *params = SEC_CreateSignatureAlgorithmParameters(
--      arena_.get(), nullptr, SEC_OID_PKCS1_RSA_PSS_SIGNATURE, hashAlg,
-+      arena_.get(), nullptr, SEC_OID_PKCS1_RSA_PSS_SIGNATURE, SEC_OID_MD4,
-       srcParams, privk_.get());
- 
-   EXPECT_EQ(nullptr, params);
- }
- 
- TEST_P(SignParamsSourceTest, CreateRsaPssWithInvalidSaltLength) {
-   SECOidTag hashAlg = GetParam();
- 
-   SECItem *srcParams;
-   SECKEYRSAPSSParams pssParams;
-   ASSERT_NO_FATAL_FAILURE(
--      CreatePssParams(&pssParams, SEC_OID_SHA512, SEC_OID_SHA512, 100));
-+      CreatePssParams(&pssParams, SEC_OID_SHA512, SEC_OID_SHA512, 110));
-   srcParams = SEC_ASN1EncodeItem(arena_.get(), nullptr, &pssParams,
-                                  SEC_ASN1_GET(SECKEY_RSAPSSParamsTemplate));
-   ASSERT_NE(nullptr, srcParams);
- 
-   SECItem *params = SEC_CreateSignatureAlgorithmParameters(
-       arena_.get(), nullptr, SEC_OID_PKCS1_RSA_PSS_SIGNATURE, hashAlg,
-       srcParams, privk_.get());
- 
-   EXPECT_EQ(nullptr, params);
- }
- 
- TEST_P(SignParamsSourceTest, CreateRsaPssWithHashMismatch) {
-   SECOidTag hashAlg = GetParam();
- 
-   SECItem *srcParams;
-   SECKEYRSAPSSParams pssParams;
-+  if ((hashAlg ==  SEC_OID_UNKNOWN) || (hashAlg == SEC_OID_SHA512)) {
-+    hashAlg = SEC_OID_SHA1;
-+  }
-   ASSERT_NO_FATAL_FAILURE(
--      CreatePssParams(&pssParams, SEC_OID_SHA256, SEC_OID_SHA512));
-+      CreatePssParams(&pssParams, hashAlg, SEC_OID_SHA512));
-   srcParams = SEC_ASN1EncodeItem(arena_.get(), nullptr, &pssParams,
-                                  SEC_ASN1_GET(SECKEY_RSAPSSParamsTemplate));
-   ASSERT_NE(nullptr, srcParams);
- 
-   SECItem *params = SEC_CreateSignatureAlgorithmParameters(
--      arena_.get(), nullptr, SEC_OID_PKCS1_RSA_PSS_SIGNATURE, hashAlg,
-+      arena_.get(), nullptr, SEC_OID_PKCS1_RSA_PSS_SIGNATURE, SEC_OID_UNKNOWN,
-       srcParams, privk_.get());
- 
--  EXPECT_EQ(nullptr, params);
-+  EXPECT_NE(nullptr, params);
-+
-+  PORT_Memset(&pssParams, 0, sizeof(pssParams));
-+  SECStatus rv =
-+      SEC_QuickDERDecodeItem(arena_.get(), &pssParams,
-+                             SEC_ASN1_GET(SECKEY_RSAPSSParamsTemplate), params);
-+  ASSERT_EQ(SECSuccess, rv);
-+  ASSERT_NO_FATAL_FAILURE(CheckHashAlg(&pssParams, hashAlg));
-+  ASSERT_NO_FATAL_FAILURE(CheckMaskAlg(&pssParams, hashAlg));
-+  ASSERT_NO_FATAL_FAILURE(CheckSaltLength(&pssParams, hashAlg));
-+
-+  // The default trailer field (1) must be omitted
-+  EXPECT_EQ(nullptr, pssParams.trailerField.data);
- }
- 
- INSTANTIATE_TEST_SUITE_P(
-     SignParamsTestCases, SignParamsTest,
-     ::testing::Combine(::testing::Values(SEC_OID_UNKNOWN, SEC_OID_SHA1,
-                                          SEC_OID_SHA224, SEC_OID_SHA256,
-                                          SEC_OID_SHA384, SEC_OID_SHA512),
-                        ::testing::Values(SEC_OID_UNKNOWN, SEC_OID_SHA1,
-diff --git a/lib/cryptohi/seckey.c b/lib/cryptohi/seckey.c
---- a/lib/cryptohi/seckey.c
-+++ b/lib/cryptohi/seckey.c
-@@ -2876,21 +2876,23 @@ sec_DecodeRSAPSSParams(PLArenaPool *aren
-     SECKEYRSAPSSParams pssParams;
-     SECOidTag hashAlg;
-     SECOidTag maskHashAlg;
-     unsigned long saltLength;
-     unsigned long trailerField;
-     SECStatus rv;
- 
-     PORT_Memset(&pssParams, 0, sizeof(pssParams));
--    rv = SEC_QuickDERDecodeItem(arena, &pssParams,
--                                SECKEY_RSAPSSParamsTemplate,
--                                params);
--    if (rv != SECSuccess) {
--        return rv;
-+    if (params && (params->len != 0)) {
-+        rv = SEC_QuickDERDecodeItem(arena, &pssParams,
-+                                    SECKEY_RSAPSSParamsTemplate,
-+                                    params);
-+        if (rv != SECSuccess) {
-+            return rv;
-+        }
-     }
- 
-     if (pssParams.hashAlg) {
-         hashAlg = SECOID_GetAlgorithmTag(pssParams.hashAlg);
-     } else {
-         hashAlg = SEC_OID_SHA1; /* default, SHA-1 */
-     }
- 
-diff --git a/lib/cryptohi/secsign.c b/lib/cryptohi/secsign.c
---- a/lib/cryptohi/secsign.c
-+++ b/lib/cryptohi/secsign.c
-@@ -814,16 +814,18 @@ sec_CreateRSAPSSParameters(PLArenaPool *
-                            SECOidTag hashAlgTag,
-                            const SECItem *params,
-                            int modBytes)
- {
-     SECKEYRSAPSSParams pssParams;
-     int hashLength;
-     unsigned long saltLength;
-     PRBool defaultSHA1 = PR_FALSE;
-+    PRBool overWriteHash = PR_TRUE;
-+    PRBool overWriteMask = PR_TRUE;
-     SECStatus rv;
- 
-     PORT_Memset(&pssParams, 0, sizeof(pssParams));
- 
-     if (params && params->data) {
-         /* The parameters field should either be empty or contain
-          * valid RSA-PSS parameters */
-         PORT_Assert(!(params->len == 2 &&
-@@ -831,16 +833,18 @@ sec_CreateRSAPSSParameters(PLArenaPool *
-                       params->data[1] == 0));
-         rv = SEC_QuickDERDecodeItem(arena, &pssParams,
-                                     SECKEY_RSAPSSParamsTemplate,
-                                     params);
-         if (rv != SECSuccess) {
-             return NULL;
-         }
-         defaultSHA1 = PR_TRUE;
-+        overWriteHash = PR_FALSE;
-+        overWriteMask = PR_FALSE;
-     }
- 
-     if (pssParams.trailerField.data) {
-         unsigned long trailerField;
- 
-         rv = SEC_ASN1DecodeInteger((SECItem *)&pssParams.trailerField,
-                                    &trailerField);
-         if (rv != SECSuccess) {
-@@ -851,19 +855,21 @@ sec_CreateRSAPSSParameters(PLArenaPool *
-             return NULL;
-         }
-     }
- 
-     /* Determine the hash algorithm to use, based on hashAlgTag and
-      * pssParams.hashAlg; there are 6  cases.
-      *  case:
-      *  1) We have params and params.hashAlg and we have a specified hashAlgTag,
--     *  make sure that hashAlgTag specified by the appication matches.
-+     *  make sure that hashAlgTag specified by the appication matches, othersize we
-+     *  overwrite params.hashAlg with hashAlgTag.
-      *  2) We have params, but no params.hashAlg and we have a specified
--     *  hashAlg, make sure the hashAlgTag matches SEC_OID_SHA1.
-+     *  hashAlg, make sure the hashAlgTag matches SEC_OID_SHA1, otherwise we
-+     *  overwrite params.hashAlg with hashAlgTag..
-      *  3) we did not specify any parameters but we did specified
-      *  a hashAlgTag. Use the specified hash algtag.
-      *  4) We have params and params.hashAlg and we did not specify a
-      *  hashAlgTag, use the hashAlg from the parameter.
-      *  5) We have params, but no params.hashAlg and we did not specify a
-      *  hashAlgTag, use the SEC_OID_SHA1
-      *  6) We did not specify any parameters, nor did we specify a
-      *  hashAlgTag, use the key size to select an appropriate hashAlg.
-@@ -873,36 +879,42 @@ sec_CreateRSAPSSParameters(PLArenaPool *
- 
-         if (pssParams.hashAlg) {
-             tag = SECOID_GetAlgorithmTag(pssParams.hashAlg);
-         } else if (defaultSHA1) {
-             tag = SEC_OID_SHA1;
-         }
- 
-         if (tag != SEC_OID_UNKNOWN && tag != hashAlgTag) {
--            PORT_SetError(SEC_ERROR_INVALID_ARGS);
--            return NULL;
-+            overWriteHash = PR_TRUE;
-         }
-     } else if (hashAlgTag == SEC_OID_UNKNOWN) {
-         if (pssParams.hashAlg) {
-             hashAlgTag = SECOID_GetAlgorithmTag(pssParams.hashAlg);
-         } else if (defaultSHA1) {
-             hashAlgTag = SEC_OID_SHA1;
-         } else {
-             /* Find a suitable hash algorithm based on the NIST recommendation */
-             if (modBytes <= 384) { /* 128, in NIST 800-57, Part 1 */
-                 hashAlgTag = SEC_OID_SHA256;
-             } else if (modBytes <= 960) { /* 192, NIST 800-57, Part 1 */
-                 hashAlgTag = SEC_OID_SHA384;
-             } else {
-                 hashAlgTag = SEC_OID_SHA512;
-             }
-+            overWriteHash = PR_TRUE;
-         }
-     }
- 
-+    /* handle the case where the params invalidly encoded SEC_OID_SHA1. This
-+     * will force the correct encoding */
-+    if ((hashAlgTag == SEC_OID_SHA1) && pssParams.hashAlg) {
-+        overWriteHash = PR_TRUE;
-+    }
-+
-     /* explicitly restrict hashAlg to SHA2 variants */
-     if (hashAlgTag != SEC_OID_SHA1 && hashAlgTag != SEC_OID_SHA224 &&
-         hashAlgTag != SEC_OID_SHA256 && hashAlgTag != SEC_OID_SHA384 &&
-         hashAlgTag != SEC_OID_SHA512) {
-         PORT_SetError(SEC_ERROR_INVALID_ALGORITHM);
-         return NULL;
-     }
- 
-@@ -927,23 +939,24 @@ sec_CreateRSAPSSParameters(PLArenaPool *
-                                     &pssParams.maskAlg->parameters);
-         if (rv != SECSuccess) {
-             return NULL;
-         }
- 
-         /* Following the recommendation in RFC 4055, assume the hash
-          * algorithm identical to pssParam.hashAlg */
-         if (SECOID_GetAlgorithmTag(&maskHashAlg) != hashAlgTag) {
--            PORT_SetError(SEC_ERROR_INVALID_ALGORITHM);
--            return NULL;
-+            overWriteMask = PR_TRUE;
-+        }
-+        if (hashAlgTag == SEC_OID_SHA1) {
-+            overWriteMask = PR_TRUE;
-         }
-     } else if (defaultSHA1) {
-         if (hashAlgTag != SEC_OID_SHA1) {
--            PORT_SetError(SEC_ERROR_INVALID_ALGORITHM);
--            return NULL;
-+            overWriteMask = PR_TRUE;
-         }
-     }
- 
-     hashLength = HASH_ResultLenByOidTag(hashAlgTag);
- 
-     if (modBytes < hashLength + 2) {
-         PORT_SetError(SEC_ERROR_INVALID_ARGS);
-         return NULL;
-@@ -961,42 +974,38 @@ sec_CreateRSAPSSParameters(PLArenaPool *
-             PORT_SetError(SEC_ERROR_INVALID_ARGS);
-             return NULL;
-         }
-     } else if (defaultSHA1) {
-         saltLength = 20;
-     }
- 
-     /* Fill in the parameters */
--    if (pssParams.hashAlg) {
-+    if (overWriteHash) {
-         if (hashAlgTag == SEC_OID_SHA1) {
-             /* Omit hashAlg if the the algorithm is SHA-1 (default) */
-             pssParams.hashAlg = NULL;
--        }
--    } else {
--        if (hashAlgTag != SEC_OID_SHA1) {
-+        } else {
-             pssParams.hashAlg = PORT_ArenaZAlloc(arena, sizeof(SECAlgorithmID));
-             if (!pssParams.hashAlg) {
-                 return NULL;
-             }
-             rv = SECOID_SetAlgorithmID(arena, pssParams.hashAlg, hashAlgTag,
-                                        NULL);
-             if (rv != SECSuccess) {
-                 return NULL;
-             }
-         }
-     }
- 
--    if (pssParams.maskAlg) {
-+    if (overWriteMask) {
-         if (hashAlgTag == SEC_OID_SHA1) {
-             /* Omit maskAlg if the the algorithm is SHA-1 (default) */
-             pssParams.maskAlg = NULL;
--        }
--    } else {
--        if (hashAlgTag != SEC_OID_SHA1) {
-+        } else {
-             SECItem *hashAlgItem;
- 
-             PORT_Assert(pssParams.hashAlg != NULL);
- 
-             hashAlgItem = SEC_ASN1EncodeItem(arena, NULL, pssParams.hashAlg,
-                                              SEC_ASN1_GET(SECOID_AlgorithmIDTemplate));
-             if (!hashAlgItem) {
-                 return NULL;
-@@ -1086,17 +1095,16 @@ SEC_CreateSignatureAlgorithmParameters(P
-                                        const SECItem *params,
-                                        const SECKEYPrivateKey *key)
- {
-     PORT_SetError(0);
-     switch (signAlgTag) {
-         case SEC_OID_PKCS1_RSA_PSS_SIGNATURE:
-             return SEC_CreateRSAPSSParameters(arena, result,
-                                               hashAlgTag, params, key, NULL);
--
-         default:
-             if (params == NULL)
-                 return NULL;
-             if (result == NULL)
-                 result = SECITEM_AllocItem(arena, NULL, 0);
-             if (result == NULL) {
-                 return NULL;
-             }
-@@ -1112,16 +1120,19 @@ SEC_CreateVerifyAlgorithmParameters(PLAr
-                                     SECOidTag signAlgTag,
-                                     SECOidTag hashAlgTag,
-                                     const SECItem *params,
-                                     const SECKEYPublicKey *key)
- {
-     PORT_SetError(0);
-     switch (signAlgTag) {
-         case SEC_OID_PKCS1_RSA_PSS_SIGNATURE:
-+            if ((hashAlgTag == SEC_OID_UNKNOWN) && ((params == NULL) || (params->len == 0))){
-+                return NULL;
-+            }
-             return SEC_CreateRSAPSSParameters(arena, result,
-                                               hashAlgTag, params, NULL, key);
- 
-         default:
-             if (params == NULL)
-                 return NULL;
-             if (result == NULL)
-                 result = SECITEM_AllocItem(arena, NULL, 0);
-diff --git a/tests/cert/cert.sh b/tests/cert/cert.sh
---- a/tests/cert/cert.sh
-+++ b/tests/cert/cert.sh
-@@ -2234,20 +2234,18 @@ EOF
-   # Signature: RSA-PSS (with conflicting hash algorithm)
-   CERTNAME="TestUser-rsa-pss7"
- 
-   CU_ACTION="Generate Cert Request for $CERTNAME"
-   CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US"
-   certu -R -d "${PROFILEDIR}" -f "${R_PWFILE}" -z "${R_NOISE_FILE}" --pss -o req  2>&1
- 
-   CU_ACTION="Sign ${CERTNAME}'s Request"
--  RETEXPECTED=255
-   certu -C -c "TestCA-rsa-pss" --pss-sign -Z SHA512 -m "${CERTSERIAL}" -v 60 -d "${P_R_CADIR}" \
-         -i req -o "${CERTNAME}.cert" -f "${R_PWFILE}" "$1" 2>&1
--  RETEXPECTED=0
- 
-   CERTSERIAL=`expr $CERTSERIAL + 1`
- 
-   # Subject certificate: RSA-PSS
-   # Issuer certificate: RSA-PSS
-   # Signature: RSA-PSS (with compatible hash algorithm)
-   CERTNAME="TestUser-rsa-pss8"
- 
-@@ -2345,20 +2343,18 @@ EOF
-   # Signature: RSA-PSS (with conflicting hash algorithm, default parameters)
-   CERTNAME="TestUser-rsa-pss11"
- 
-   CU_ACTION="Generate Cert Request for $CERTNAME"
-   CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US"
-   certu -R -d "${PROFILEDIR}" -f "${R_PWFILE}" -z "${R_NOISE_FILE}" --pss -o req  2>&1
- 
-   CU_ACTION="Sign ${CERTNAME}'s Request"
--  RETEXPECTED=255
-   certu -C -c "TestCA-rsa-pss-sha1" --pss-sign -Z SHA256 -m "${CERTSERIAL}" -v 60 -d "${P_R_CADIR}" \
-         -i req -o "${CERTNAME}.cert" -f "${R_PWFILE}" "$1" 2>&1
--  RETEXPECTED=0
- }
- 
- cert_test_orphan_key_delete()
- {
-   CU_ACTION="Create orphan key in serverdir"
-   certu -G -k ec -q nistp256 -f "${R_PWFILE}" -z ${R_NOISE_FILE} -d ${PROFILEDIR}
-   # Let's get the key ID of the first orphan key.
-   # The output of certutil -K (list keys) isn't well formatted.

diff --git a/nss-3.124-annocheck.fix.patch b/nss-3.124-annocheck.fix.patch
deleted file mode 100644
index 64ae590..0000000
--- a/nss-3.124-annocheck.fix.patch
+++ /dev/null
@@ -1,170 +0,0 @@
-# HG changeset patch
-# User Robert Relyea <rrelyea@redhat.com>
-# Date 1780440795 25200
-#      Tue Jun 02 15:53:15 2026 -0700
-# Branch NSS_3_124_BRANCH
-# Node ID b1208e88ea45bdc57d04ae64e6614eec7072bd7f
-# Parent  7b631ae5c0693bdb28e9ee9a4171eee2d3d62d0a
-nss-3.124-annocheck.fix.patch
-
-diff --git a/lib/freebl/arcfour-amd64-gas.s b/lib/freebl/arcfour-amd64-gas.s
---- a/lib/freebl/arcfour-amd64-gas.s
-+++ b/lib/freebl/arcfour-amd64-gas.s
-@@ -1,11 +1,35 @@
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-+#
-+# none of the functions are used as a target of an indirect call, so
-+# it's safe to set IBT. If we ever need to put these at the end of a
-+# function table pointer, then we should and ENDBR64 instructions as the
-+# first instruction of each function. */
-+# reference names are in /usr/include/elf.h
-+        .section        .note.gnu.property,"a"
-+        .align 8
-+        .long    1f - 0f # note_gnu_name_end - note_gnu_name
-+        .long    4f - 1f # note_gnu_descriptor_end -note_gnu_descriptor
-+        .long    5 # GNU_PROPERTY_TYPE_0
-+0: #note_gnu_name
-+        .string  "GNU"
-+1: #note_gnu_end
-+   #note_gnu_descriptor
-+        .align 8
-+        .long    0xc0000002 # GNU_PROPERTY_X86_FEATURE_1_AND
-+        .long    3f - 2f #note_gnu_flags_end - note_gnu_flags
-+2: #note_gnu_flags
-+        .long    0x3    # GNU_PROPERTY_X86_FEATURE_1_IBT = 1 |
-+                        # GNU_PROPERTY_X86_FEATURE_1_SHSTK = 2
-+3: #note_gnu_flags_end
-+        .align 8
-+4: #note_gnu_descriptor_end
- 
- # ** ARCFOUR implementation optimized for AMD64.
- # **
- # ** The throughput achieved by this code is about 320 MBytes/sec, on
- # ** a 1.8 GHz AMD Opteron (rev C0) processor.
- 
- .text
- .align 16
-diff --git a/lib/freebl/intel-aes.S b/lib/freebl/intel-aes.S
---- a/lib/freebl/intel-aes.S
-+++ b/lib/freebl/intel-aes.S
-@@ -1,12 +1,34 @@
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
--
-+/* none of the functions are used as a target of an indirect call, so
-+ * it's safe to set IBT. If we ever need to put these at the end of a
-+ * function table pointer, then we should and ENDBR64 instructions as the
-+ * first instruction of each function. */
-+# reference names are in /usr/include/elf.h
-+	.section	.note.gnu.property,"a"
-+	.align 8
-+	.long	 1f - 0f # note_gnu_name_end - note_gnu_name
-+	.long	 4f - 1f # note_gnu_descriptor_end -note_gnu_descriptor
-+	.long	 5 # GNU_PROPERTY_TYPE_0
-+0: #note_gnu_name
-+	.string	 "GNU"
-+1: #note_gnu_end
-+   #note_gnu_descriptor
-+	.align 8
-+	.long	 0xc0000002 # GNU_PROPERTY_X86_FEATURE_1_AND
-+	.long	 3f - 2f #note_gnu_flags_end - note_gnu_flags
-+2: #note_gnu_flags
-+	.long	 0x3    # GNU_PROPERTY_X86_FEATURE_1_IBT = 1 |
-+                        # GNU_PROPERTY_X86_FEATURE_1_SHSTK = 2
-+3: #note_gnu_flags_end
-+	.align 8
-+4: #note_gnu_descriptor_end
- 	.text
- 
- #define IV_OFFSET 256
- 
- /*
-  * Warning: the length values used in this module are "unsigned int"
-  * in C, which is 32-bit.  When they're passed in registers, use only
-  * the low 32 bits, because the top half is unspecified.
-diff --git a/lib/freebl/intel-gcm.S b/lib/freebl/intel-gcm.S
---- a/lib/freebl/intel-gcm.S
-+++ b/lib/freebl/intel-gcm.S
-@@ -1,14 +1,38 @@
- # LICENSE:                                                                  
- # This submission to NSS is to be made available under the terms of the
- # Mozilla Public License, v. 2.0. You can obtain one at http:         
- # //mozilla.org/MPL/2.0/. 
- ################################################################################
- # Copyright(c) 2012, Intel Corp.
-+/* none of the functions are used as a target of an indirect call, so
-+ * it's safe to set IBT. If we ever need to put these at the end of a
-+ * function table pointer, then we should and ENDBR64 instructions as the
-+ * first instruction of each function. */
-+# reference names are in /usr/include/elf.h
-+        .section        .note.gnu.property,"a"
-+        .align 8
-+        .long    1f - 0f # note_gnu_name_end - note_gnu_name
-+        .long    4f - 1f # note_gnu_descriptor_end -note_gnu_descriptor
-+        .long    5 # GNU_PROPERTY_TYPE_0
-+0: #note_gnu_name
-+        .string  "GNU"
-+1: #note_gnu_end
-+   #note_gnu_descriptor
-+        .align 8
-+        .long    0xc0000002 # GNU_PROPERTY_X86_FEATURE_1_AND
-+        .long    3f - 2f #note_gnu_flags_end - note_gnu_flags
-+2: #note_gnu_flags
-+        .long    0x3    # GNU_PROPERTY_X86_FEATURE_1_IBT = 1 |
-+                        # GNU_PROPERTY_X86_FEATURE_1_SHSTK = 2
-+3: #note_gnu_flags_end
-+        .align 8
-+4: #note_gnu_descriptor_end
-+        .text
- 
- #if defined(DARWIN)
- # define cdecl(s) _##s
- #else
- # define cdecl(s) s
- #endif
- 
- #ifndef DARWIN
-diff --git a/lib/freebl/mpi/mpi_amd64_common.S b/lib/freebl/mpi/mpi_amd64_common.S
---- a/lib/freebl/mpi/mpi_amd64_common.S
-+++ b/lib/freebl/mpi/mpi_amd64_common.S
-@@ -398,12 +398,37 @@ s_mpv_mul_add_vec64:
- 
- .L27:
- 	movq	%r9, %rax
- 	ret
- 
- #ifndef DARWIN
- .size s_mpv_mul_add_vec64, .-s_mpv_mul_add_vec64
- 
-+# Magic indicating IBT is allowed.
-+# none of the functions are used as a target of an indirect call, so
-+# it's safe to set IBT. If we ever need to put these at the end of a
-+# function table pointer, then we should and ENDBR64 instructions as the
-+# first instruction of each function.
-+# reference names are in /usr/include/elf.h
-+        .section        .note.gnu.property,"a"
-+        .align 8
-+        .long    1f - 0f # note_gnu_name_end - note_gnu_name
-+        .long    4f - 1f # note_gnu_descriptor_end -note_gnu_descriptor
-+        .long    5 # GNU_PROPERTY_TYPE_0
-+0: #note_gnu_name
-+        .string  "GNU"
-+1: #note_gnu_end
-+   #note_gnu_descriptor
-+        .align 8
-+        .long    0xc0000002 # GNU_PROPERTY_X86_FEATURE_1_AND
-+        .long    3f - 2f #note_gnu_flags_end - note_gnu_flags
-+2: #note_gnu_flags
-+        .long    0x3    # GNU_PROPERTY_X86_FEATURE_1_IBT = 1 |
-+                        # GNU_PROPERTY_X86_FEATURE_1_SHSTK = 2
-+3: #note_gnu_flags_end
-+        .align 8
-+4: #note_gnu_descriptor_end
-+
- # Magic indicating no need for an executable stack
- .section .note.GNU-stack, "", @progbits
- .previous
- #endif

diff --git a/nss-3.124-fips-key-import-fix.patch b/nss-3.124-fips-key-import-fix.patch
deleted file mode 100644
index 346daa5..0000000
--- a/nss-3.124-fips-key-import-fix.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-diff --git a/lib/pk11wrap/pk11skey.c b/lib/pk11wrap/pk11skey.c
---- a/lib/pk11wrap/pk11skey.c
-+++ b/lib/pk11wrap/pk11skey.c
-@@ -436,11 +436,11 @@
- }
- 
- static PK11SymKey *
- pk11_ImportSymKeyWithTempl(PK11SlotInfo *slot, CK_MECHANISM_TYPE type,
-                            PK11Origin origin, PRBool isToken, CK_ATTRIBUTE *keyTemplate,
--                           unsigned int templateCount, SECItem *key, void *wincx)
-+                           unsigned int templateCount, SECItem *key, PRBool force, void *wincx)
- {
-     PK11SymKey *symKey;
-     SECStatus rv;
- 
-     symKey = pk11_CreateSymKey(slot, type, !isToken, PR_TRUE, wincx);
-@@ -461,16 +461,65 @@
-     symKey->origin = origin;
- 
-     /* import the keys */
-     rv = PK11_CreateNewObject(slot, symKey->session, keyTemplate,
-                               templateCount, isToken, &symKey->objectID);
--    if (rv != SECSuccess) {
-+    if (rv == SECSuccess) {
-+        return symKey;
-+    }
-+    /* we failed to create the key, if force isn't set, we just fail now */
-+    if (!force) {
-+        PK11_FreeSymKey(symKey);
-+        return NULL;
-+    }
-+    /* if force is set, we are simulating an unwrap, probably from another token, we
-+     * are probably here because we are trying to import into a FIPS token. Normally
-+     * we would want this to fail, but the application got here because they are using
-+     * unwrap, which is the correct way to  do this, so try to import the key into
-+     * the FIPS token my hand */
-+    /* first generate a seed key */
-+    PK11SymKey *seedKey = PK11_KeyGen(slot, CKM_SHA256_HMAC, NULL, 256, wincx);
-+
-+    if (seedKey == NULL) {
-         PK11_FreeSymKey(symKey);
-         return NULL;
-     }
- 
--    return symKey;
-+    /* now append our key data to the seed key and truncate the seed key */
-+    CK_KEY_DERIVATION_STRING_DATA params = { 0 };
-+    CK_MECHANISM mechanism = { 0, NULL, 0 };
-+    params.pData = key->data;
-+    params.ulLen = key->len;
-+    mechanism.mechanism = CKM_CONCATENATE_DATA_AND_BASE;
-+    mechanism.pParameter = &params;
-+    mechanism.ulParameterLen = sizeof(params);
-+
-+    /* derive removed the CKA_VALUE_LEN before it called us, but now we need
-+     * it back. We know there is space in the template because derive leaves
-+     * space for the CKA_VALUE_LEN attribute. Any other callers that set force
-+     * should also make sure there is space for the CKA_VALUE_LEN */
-+    CK_ULONG valueLen; /* Don't define this in the 'if' statement, because it
-+                        * would go out of scope before we use it */
-+    if (!pk11_FindAttrInTemplate(keyTemplate, templateCount, CKA_VALUE_LEN)) {
-+        valueLen = (CK_ULONG)key->len;
-+        keyTemplate[templateCount].type = CKA_VALUE_LEN;
-+        keyTemplate[templateCount].pValue = (void *)&valueLen;
-+        keyTemplate[templateCount].ulValueLen = sizeof(valueLen);
-+        templateCount++;
-+    }
-+
-+    CK_RV crv = PK11_GETTAB(slot)->C_DeriveKey(symKey->session, &mechanism,
-+                                               seedKey->objectID, keyTemplate,
-+                                               templateCount,
-+                                               &symKey->objectID);
-+    PK11_FreeSymKey(seedKey);
-+    if (crv == CKR_OK) {
-+        return symKey;
-+    }
-+
-+    PK11_FreeSymKey(symKey);
-+    return NULL;
- }
- 
- /*
-  * turn key bits into an appropriate key object
-  */
-@@ -504,11 +553,11 @@
-     templateCount = attrs - keyTemplate;
-     PR_ASSERT(templateCount + 1 <= sizeof(keyTemplate) / sizeof(CK_ATTRIBUTE));
- 
-     keyType = PK11_GetKeyType(type, key->len);
-     symKey = pk11_ImportSymKeyWithTempl(slot, type, origin, PR_FALSE,
--                                        keyTemplate, templateCount, key, wincx);
-+                                        keyTemplate, templateCount, key, PR_FALSE, wincx);
-     return symKey;
- }
- /* Import a PKCS #11 data object and return it as a key. This key is
-  * only useful in a limited number of mechanisms, such as HKDF. */
- PK11SymKey *
-@@ -583,11 +632,11 @@
-     templateCount = attrs - keyTemplate;
-     PR_ASSERT(templateCount + 1 <= sizeof(keyTemplate) / sizeof(CK_ATTRIBUTE));
- 
-     keyType = PK11_GetKeyType(type, key->len);
-     symKey = pk11_ImportSymKeyWithTempl(slot, type, origin, isPerm,
--                                        keyTemplate, templateCount, key, wincx);
-+                                        keyTemplate, templateCount, key, PR_FALSE, wincx);
-     if (symKey && isPerm) {
-         symKey->owner = PR_FALSE;
-     }
-     return symKey;
- }
-@@ -2667,11 +2716,11 @@
-     outKey.type = siBuffer;
- 
-     if (PK11_DoesMechanism(slot, target)) {
-         symKey = pk11_ImportSymKeyWithTempl(slot, target, PK11_OriginUnwrap,
-                                             isPerm, keyTemplate,
--                                            templateCount, &outKey, wincx);
-+                                            templateCount, &outKey, PR_TRUE, wincx);
-     } else {
-         slot = PK11_GetBestSlot(target, wincx);
-         if (slot == NULL) {
-             PORT_SetError(SEC_ERROR_NO_MODULE);
-             PORT_Free(outKey.data);
-@@ -2679,11 +2728,11 @@
-                 *crvp = CKR_DEVICE_ERROR;
-             return NULL;
-         }
-         symKey = pk11_ImportSymKeyWithTempl(slot, target, PK11_OriginUnwrap,
-                                             isPerm, keyTemplate,
--                                            templateCount, &outKey, wincx);
-+                                            templateCount, &outKey, PR_TRUE, wincx);
-         PK11_FreeSlot(slot);
-     }
-     PORT_Free(outKey.data);
- 
-     if (crvp)
-

diff --git a/nss-3.124-fix-ed-key-storage.patch b/nss-3.124-fix-ed-key-storage.patch
deleted file mode 100644
index 77517fc..0000000
--- a/nss-3.124-fix-ed-key-storage.patch
+++ /dev/null
@@ -1,627 +0,0 @@
-diff --git a/cmd/lib/secutil.c b/cmd/lib/secutil.c
---- a/cmd/lib/secutil.c
-+++ b/cmd/lib/secutil.c
-@@ -1603,10 +1603,18 @@
- 
-             case ecKey:
-                 secu_PrintECPublicKey(out, pk, "EC Public Key", level + 1);
-                 break;
- 
-+            case ecMontKey:
-+                secu_PrintECPublicKey(out, pk, "EC Montgomery Public Key", level + 1);
-+                break;
-+
-+            case edKey:
-+                secu_PrintECPublicKey(out, pk, "EC Edwards Public Key", level + 1);
-+                break;
-+
-             case mldsaKey:
-                 SECU_PrintMLDSAPublicKey(out, pk, "ML-DSA Public Key", level + 1);
-                 break;
- 
-             case kyberKey:
-diff --git a/cmd/pk11importtest/pk11importtest.c b/cmd/pk11importtest/pk11importtest.c
---- a/cmd/pk11importtest/pk11importtest.c
-+++ b/cmd/pk11importtest/pk11importtest.c
-@@ -191,10 +191,12 @@
-     " -r                    skip rsa test",
-     " -D                    skip dsa test",
-     " -h                    skip dh test",
-     " -e                    skip ec test",
-     " -K                    skip mk-kem test",
-+    " -w                    skip ed test",
-+    " -g                    skip ec montgomery test",
- };
- static int nUsageInfo = sizeof(usageInfo) / sizeof(char *);
- 
- static void
- Usage(char *progName, FILE *outFile)
-@@ -216,10 +218,12 @@
-     opt_NoRSA,
-     opt_NoDSA,
-     opt_NoDH,
-     opt_NoEC,
-     opt_NoMLKEM,
-+    opt_NoED,
-+    opt_NoECMont,
- };
- 
- static secuCommandFlag options[] = {
-     { /* opt_CertDir          */ 'd', PR_TRUE, 0, PR_FALSE },
-     { /* opt_KeySize          */ 'k', PR_TRUE, 0, PR_FALSE },
-@@ -230,10 +234,12 @@
-     { /* opt_NoRSA            */ 'r', PR_FALSE, 0, PR_FALSE },
-     { /* opt_NoDSA            */ 'D', PR_FALSE, 0, PR_FALSE },
-     { /* opt_NoDH             */ 'h', PR_FALSE, 0, PR_FALSE },
-     { /* opt_NoEC             */ 'e', PR_FALSE, 0, PR_FALSE },
-     { /* opt_NoMLKEM          */ 'K', PR_FALSE, 0, PR_FALSE },
-+    { /* opt_NoED             */ 'w', PR_FALSE, 0, PR_FALSE },
-+    { /* opt_NoECMont         */ 'g', PR_FALSE, 0, PR_FALSE },
- };
- 
- int
- main(int argc, char **argv)
- {
-@@ -246,10 +252,12 @@
-     PRBool doRSA = PR_TRUE;
-     PRBool doDSA = PR_TRUE;
-     PRBool doDH = PR_FALSE; /* NSS currently can't export wrapped DH keys */
-     PRBool doEC = PR_TRUE;
-     PRBool doMLKEM = PR_TRUE;
-+    PRBool doED = PR_TRUE;
-+    PRBool doECMont = PR_TRUE;
-     PRBool noPub = PR_FALSE;
-     PQGParams *pqgParams = NULL;
-     int keySize;
- 
-     args.numCommands = 0;
-@@ -410,10 +418,55 @@
-             fprintf(stderr, "MLKEM Import Failed!\n");
-             failed = PR_TRUE;
-         }
-     }
- 
-+    if (doED) {
-+        SECKEYECParams ecParams;
-+        SECOidData *curve = SECOID_FindOIDByTag(SEC_OID_ED25519);
-+        ecParams.data = PORT_Alloc(curve->oid.len + 2);
-+        if (ecParams.data == NULL) {
-+            rv = SECFailure;
-+            goto ed_failed;
-+        }
-+        ecParams.data[0] = SEC_ASN1_OBJECT_ID;
-+        ecParams.data[1] = (unsigned char)curve->oid.len;
-+        PORT_Memcpy(&ecParams.data[2], curve->oid.data, curve->oid.len);
-+        ecParams.len = curve->oid.len + 2;
-+        rv = handleEncryptedPrivateImportTest(progName, slot, "EDDSA",
-+                                              CKM_EC_EDWARDS_KEY_PAIR_GEN,
-+                                              noPub, &ecParams, &pwArgs);
-+        PORT_Free(ecParams.data);
-+    ed_failed:
-+        if (rv != SECSuccess) {
-+            fprintf(stderr, "EDDSA Import Failed!\n");
-+            failed = PR_TRUE;
-+        }
-+    }
-+    if (doECMont) {
-+        SECKEYECParams ecParams;
-+        SECOidData *curve = SECOID_FindOIDByTag(SEC_OID_X25519);
-+        ecParams.data = PORT_Alloc(curve->oid.len + 2);
-+        if (ecParams.data == NULL) {
-+            rv = SECFailure;
-+            goto ecmont_failed;
-+        }
-+        ecParams.data[0] = SEC_ASN1_OBJECT_ID;
-+        ecParams.data[1] = (unsigned char)curve->oid.len;
-+        PORT_Memcpy(&ecParams.data[2], curve->oid.data, curve->oid.len);
-+        ecParams.len = curve->oid.len + 2;
-+        rv = handleEncryptedPrivateImportTest(progName, slot, "EC Mont",
-+                                              CKM_EC_MONTGOMERY_KEY_PAIR_GEN,
-+                                              noPub, &ecParams, &pwArgs);
-+        PORT_Free(ecParams.data);
-+    ecmont_failed:
-+        if (rv != SECSuccess) {
-+            fprintf(stderr, "EC Montgomery Import Failed!\n");
-+            failed = PR_TRUE;
-+        }
-+    }
-+
-     if (pqgParams) {
-         PK11_PQG_DestroyParams(pqgParams);
-     }
- 
-     if (slot) {
-diff --git a/lib/softoken/lowkey.c b/lib/softoken/lowkey.c
---- a/lib/softoken/lowkey.c
-+++ b/lib/softoken/lowkey.c
-@@ -43,10 +43,15 @@
-     { SEC_ASN1_OCTET_STRING,
-       offsetof(NSSLOWKEYPrivateKeyInfo, privateKey) },
-     { SEC_ASN1_OPTIONAL | SEC_ASN1_CONSTRUCTED | SEC_ASN1_CONTEXT_SPECIFIC | 0,
-       offsetof(NSSLOWKEYPrivateKeyInfo, attributes),
-       nsslowkey_SetOfAttributeTemplate },
-+    { SEC_ASN1_OPTIONAL | SEC_ASN1_CONSTRUCTED |
-+          SEC_ASN1_EXPLICIT | SEC_ASN1_CONTEXT_SPECIFIC |
-+          SEC_ASN1_XTRN | 1,
-+      offsetof(NSSLOWKEYPrivateKeyInfo, publicKey),
-+      SEC_ASN1_SUB(SEC_BitStringTemplate) },
-     { 0 }
- };
- 
- const SEC_ASN1Template nsslowkey_SubjectPublicKeyInfoTemplate[] = {
-     { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(NSSLOWKEYSubjectPublicKeyInfo) },
-@@ -399,10 +404,12 @@
-                 if (rv == SECSuccess)
-                     return pubk;
-             }
-             break;
-         case NSSLOWKEYECKey:
-+        case NSSLOWKEYECEdwardsKey:
-+        case NSSLOWKEYECMontgomeryKey:
-             pubk = (NSSLOWKEYPublicKey *)PORT_ArenaZAlloc(arena,
-                                                           sizeof(NSSLOWKEYPublicKey));
-             if (pubk != NULL) {
-                 SECStatus rv;
- 
-@@ -631,10 +638,12 @@
-                                   &(privKey->u.dh.base));
-             if (rv != SECSuccess)
-                 break;
-             break;
-         case NSSLOWKEYECKey:
-+        case NSSLOWKEYECEdwardsKey:
-+        case NSSLOWKEYECMontgomeryKey:
-             rv = SECITEM_CopyItem(poolp, &(returnKey->u.ec.version),
-                                   &(privKey->u.ec.version));
-             if (rv != SECSuccess)
-                 break;
-             rv = SECITEM_CopyItem(poolp, &(returnKey->u.ec.publicValue),
-diff --git a/lib/softoken/lowkeyti.h b/lib/softoken/lowkeyti.h
---- a/lib/softoken/lowkeyti.h
-+++ b/lib/softoken/lowkeyti.h
-@@ -48,10 +48,11 @@
-     PLArenaPool *arena;
-     SECItem version;
-     SECAlgorithmID algorithm;
-     SECItem privateKey;
-     NSSLOWKEYAttribute **attributes;
-+    SECItem publicKey;
- };
- typedef struct NSSLOWKEYPrivateKeyInfoStr NSSLOWKEYPrivateKeyInfo;
- #define NSSLOWKEY_PRIVATE_KEY_INFO_VERSION 0 /* what we *create* */
- 
- struct NSSLOWKEYSubjectPublicKeyInfoStr {
-@@ -65,12 +66,14 @@
-     NSSLOWKEYNullKey = 0,
-     NSSLOWKEYRSAKey = 1,
-     NSSLOWKEYDSAKey = 2,
-     NSSLOWKEYDHKey = 4,
-     NSSLOWKEYECKey = 5,
--    NSSLOWKEYMLDSAKey = 6,
--    NSSLOWKEYMLKEMKey = 7,
-+    NSSLOWKEYECEdwardsKey = 6,
-+    NSSLOWKEYECMontgomeryKey = 7,
-+    NSSLOWKEYMLDSAKey = 8,
-+    NSSLOWKEYMLKEMKey = 9,
- } NSSLOWKEYType;
- 
- /* ML KEM low structures packages a key with it's parameters.
-  * The ML KEM freebl didn't define these because all the functions
-  * take raw keys and param separately */
-diff --git a/lib/softoken/pkcs11.c b/lib/softoken/pkcs11.c
---- a/lib/softoken/pkcs11.c
-+++ b/lib/softoken/pkcs11.c
-@@ -2223,13 +2223,18 @@
-                 break;
-             crv = sftk_Attribute2SSecItem(arena, &pubKey->u.dh.publicValue,
-                                           object, CKA_VALUE);
-             break;
-         case CKK_EC_EDWARDS:
-+            pubKey->keyType = NSSLOWKEYECEdwardsKey;
-+            goto ec_continue;
-         case CKK_EC_MONTGOMERY:
-+            pubKey->keyType = NSSLOWKEYECMontgomeryKey;
-+            goto ec_continue;
-         case CKK_EC:
-             pubKey->keyType = NSSLOWKEYECKey;
-+        ec_continue:
-             crv = sftk_Attribute2SSecItem(arena,
-                                           &pubKey->u.ec.ecParams.DEREncoding,
-                                           object, CKA_EC_PARAMS);
-             if (crv != CKR_OK)
-                 break;
-@@ -2451,13 +2456,18 @@
-             itemTemplateCount++;
-             /* privKey was zero'd so public value is already set to NULL, 0
-              * if we don't set it explicitly */
-             break;
-         case CKK_EC_EDWARDS:
-+            privKey->keyType = NSSLOWKEYECEdwardsKey;
-+            goto ec_continue;
-         case CKK_EC_MONTGOMERY:
-+            privKey->keyType = NSSLOWKEYECMontgomeryKey;
-+            goto ec_continue;
-         case CKK_EC:
-             privKey->keyType = NSSLOWKEYECKey;
-+        ec_continue:
-             crv = sftk_Attribute2SSecItem(arena,
-                                           &privKey->u.ec.ecParams.DEREncoding,
-                                           object, CKA_EC_PARAMS);
-             if (crv != CKR_OK)
-                 break;
-@@ -2514,10 +2524,11 @@
-         case CKK_NSS_KYBER:
- #endif
-         case CKK_NSS_ML_KEM:
-         case CKK_ML_KEM:
-             privKey->keyType = NSSLOWKEYMLKEMKey;
-+
-             crv = sftk_GetULongAttribute(object, CKA_PARAMETER_SET,
-                                          &paramSet);
-             if (crv != CKR_OK) {
-                 crv = sftk_GetULongAttribute(object, CKA_NSS_PARAMETER_SET,
-                                              &paramSet);
-diff --git a/lib/softoken/pkcs11c.c b/lib/softoken/pkcs11c.c
---- a/lib/softoken/pkcs11c.c
-+++ b/lib/softoken/pkcs11c.c
-@@ -6465,12 +6465,10 @@
-              * the private key */
-             seed.data = seedData;
-             seed.len = sizeof(seedData);
-             rv = RNG_GenerateGlobalRandomBytes(seed.data, seed.len);
-             if (rv != SECSuccess) {
--                fprintf(stderr, "Generate bytes failed nbytes=%d err=%d\n",
--                        seed.len, PORT_GetError());
-                 crv = sftk_MapCryptError(PORT_GetError());
-                 goto kyber_done;
-             }
- 
-             KyberParams kyberParams = sftk_kyber_PK11ParamToInternal(genParamSet);
-@@ -6482,12 +6480,10 @@
-                 crv = CKR_HOST_MEMORY;
-                 goto kyber_done;
-             }
-             rv = Kyber_NewKey(kyberParams, &seed, &privKey, &pubKey);
-             if (rv != SECSuccess) {
--                fprintf(stderr, "Generate Kyber_NewKey failed nbytes=%d err=%d\n",
--                        seed.len, PORT_GetError());
-                 crv = sftk_MapCryptError(PORT_GetError());
-                 goto kyber_done;
-             }
- 
-             crv = sftk_AddAttributeType(publicKey, CKA_VALUE, sftk_item_expand(&pubKey));
-@@ -6902,10 +6898,11 @@
-             param = SEC_ASN1EncodeItem(NULL, NULL, &(lk->u.dsa.params),
-                                        nsslowkey_PQGParamsTemplate);
-             algorithm = SEC_OID_ANSIX9_DSA_SIGNATURE;
-             break;
-         case NSSLOWKEYECKey:
-+            algorithm = SEC_OID_ANSIX962_EC_PUBLIC_KEY;
-             prepare_low_ec_priv_key_for_asn1(lk);
-             /* Public value is encoded as a bit string so adjust length
-              * to be in bits before ASN encoding and readjust
-              * immediately after.
-              *
-@@ -6926,12 +6923,30 @@
-             SEC_PRINT("sftk_PackagePrivateKey()", "PrivateKey", lk->keyType,
-                       fordebug);
- #endif
- 
-             param = SECITEM_DupItem(&lk->u.ec.ecParams.DEREncoding);
--
--            algorithm = SEC_OID_ANSIX962_EC_PUBLIC_KEY;
-+            break;
-+        /* X25519, ED25519, X448, and ED448 encode the private key
-+         * as just and int. The public key and Curve come from the
-+         * generaly key structure */
-+        case NSSLOWKEYECEdwardsKey:
-+            algorithm = SEC_OID_ED25519;
-+            goto ec_continue;
-+        case NSSLOWKEYECMontgomeryKey:
-+            algorithm = SEC_OID_X25519;
-+        ec_continue:
-+            prepare_low_ec_priv_key_for_asn1(lk);
-+            /* if we have a public key, copy it to pki public key */
-+            if (lk->u.ec.publicValue.len) {
-+                pki->publicKey = lk->u.ec.publicValue;
-+                pki->publicKey.len <<= 3;
-+            }
-+            dummy = SEC_ASN1EncodeItem(arena, &pki->privateKey,
-+                                       &lk->u.ec.privateValue,
-+                                       SEC_ASN1_GET(SEC_OctetStringTemplate));
-+            param = NULL;
-             break;
-         case NSSLOWKEYMLKEMKey: {
-             SECItem seed = { siBuffer, NULL, 0 };
-             SECItem rawKey = { siBuffer, NULL, 0 };
-             dummy = NULL;
-@@ -7258,10 +7273,12 @@
-     PLArenaPool *arena;
-     NSSLOWKEYPrivateKey *lpk = NULL;
-     NSSLOWKEYPrivateKeyInfo *pki = NULL;
-     CK_RV crv = CKR_KEY_TYPE_INCONSISTENT;
-     CK_ULONG paramSet = 0;
-+    const SECOidData *oidData = NULL;
-+    SECOidTag pkiAlg = SEC_OID_UNKNOWN;
- 
-     arena = PORT_NewArena(2048);
-     if (!arena) {
-         return SECFailure;
-     }
-@@ -7283,11 +7300,12 @@
-     if (lpk == NULL) {
-         goto loser;
-     }
-     lpk->arena = arena;
- 
--    switch (SECOID_GetAlgorithmTag(&pki->algorithm)) {
-+    pkiAlg = SECOID_GetAlgorithmTag(&pki->algorithm);
-+    switch (pkiAlg) {
-         case SEC_OID_PKCS1_RSA_ENCRYPTION:
-         case SEC_OID_PKCS1_RSA_PSS_SIGNATURE:
-             keyTemplate = nsslowkey_RSAPrivateKeyTemplate;
-             paramTemplate = NULL;
-             paramDest = NULL;
-@@ -7309,10 +7327,46 @@
-             paramDest = &(lpk->u.ec.ecParams.DEREncoding);
-             lpk->keyType = NSSLOWKEYECKey;
-             prepare_low_ec_priv_key_for_asn1(lpk);
-             prepare_low_ecparams_for_asn1(&lpk->u.ec.ecParams);
-             break;
-+        case SEC_OID_X25519:
-+            lpk->keyType = NSSLOWKEYECMontgomeryKey;
-+            goto ecx_continue;
-+        case SEC_OID_ED25519:
-+            lpk->keyType = NSSLOWKEYECEdwardsKey;
-+        ecx_continue:
-+            /* we decode the whole key here rather than do the normal
-+             * later decode step */
-+            keyTemplate = NULL;
-+            paramTemplate = NULL;
-+            paramDest = NULL;
-+            oidData = SECOID_FindOIDByTag(pkiAlg);
-+            if (oidData == NULL) {
-+                goto loser;
-+            }
-+            /* CURVE is provided by the tag, not encoded in the parameters
-+             * for the x25519, x448, ed25519 and ed448 keys */
-+            if (SEC_ASN1EncodeItem(arena, &(lpk->u.ec.ecParams.DEREncoding),
-+                                   &oidData->oid,
-+                                   SEC_ASN1_GET(SEC_ObjectIDTemplate)) == NULL) {
-+                goto loser;
-+            }
-+            prepare_low_ec_priv_key_for_asn1(lpk);
-+            /* private key is a simple octet string, just decode it now */
-+            rv = SEC_QuickDERDecodeItem(arena, &(lpk->u.ec.privateValue),
-+                                        SEC_ASN1_GET(SEC_OctetStringTemplate),
-+                                        &(pki->privateKey));
-+            if (rv != SECSuccess) {
-+                goto loser;
-+            }
-+            if (pki->publicKey.len) {
-+                lpk->u.ec.publicValue = pki->publicKey;
-+                /* convert length in bits to length in bytes */
-+                lpk->u.ec.publicValue.len >>= 3;
-+            }
-+            break;
-         case SEC_OID_ML_KEM_768:
-             paramSet = CKP_ML_KEM_768;
-             goto mlkem_next;
-         case SEC_OID_ML_KEM_1024:
-             paramSet = CKP_ML_KEM_1024;
-@@ -7344,30 +7398,31 @@
-                 case SEC_ASN1_CONSTRUCTED | SEC_ASN1_SEQUENCE:
-                     keyTemplate = nsslowkey_PQBothSeedAndPrivateKeyTemplate;
-                     break;
-                 default:
-                     keyTemplate = NULL;
--                    break;
-+                    PORT_SetError(SEC_ERROR_BAD_KEY);
-+                    goto loser;
-             }
- 
-             paramTemplate = NULL;
-             paramDest = NULL;
-             /* genpq encodes ocect, not integer, so no need to prep it */
-             break;
-         default:
-             keyTemplate = NULL;
-             paramTemplate = NULL;
-             paramDest = NULL;
--            break;
--    }
--
--    if (!keyTemplate) {
--        goto loser;
-+            PORT_SetError(SEC_ERROR_BAD_KEY);
-+            goto loser;
-     }
- 
-     /* decode the private key and any algorithm parameters */
--    rv = SEC_QuickDERDecodeItem(arena, lpk, keyTemplate, &pki->privateKey);
-+    rv = SECSuccess;
-+    if (keyTemplate) {
-+        rv = SEC_QuickDERDecodeItem(arena, lpk, keyTemplate, &pki->privateKey);
-+    }
- 
-     if (lpk->keyType == NSSLOWKEYECKey) {
-         /* convert length in bits to length in bytes */
-         lpk->u.ec.publicValue.len >>= 3;
-         rv = SECITEM_CopyItem(arena,
-@@ -7560,13 +7615,19 @@
-             template = dhTemplate;
-             templateCount = sizeof(dhTemplate) / sizeof(CK_ATTRIBUTE);
-             keyType = CKK_DH;
-             break;
- #endif
--        /* what about fortezza??? */
-+        case NSSLOWKEYECEdwardsKey:
-+            keyType = CKK_EC_EDWARDS;
-+            goto ec_import_continue;
-+        case NSSLOWKEYECMontgomeryKey:
-+            keyType = CKK_EC_MONTGOMERY;
-+            goto ec_import_continue;
-         case NSSLOWKEYECKey:
-             keyType = CKK_EC;
-+        ec_import_continue:
-             /* if we weren't passed the CKA_NSS_DB, get it
-              * from the public key */
-             if (!sftk_hasAttribute(key, CKA_NSS_DB)) {
-                 if (lpk->u.ec.publicValue.len == 0) {
-                     crv = CKR_KEY_TYPE_INCONSISTENT;
-diff --git a/lib/softoken/pkcs11u.c b/lib/softoken/pkcs11u.c
---- a/lib/softoken/pkcs11u.c
-+++ b/lib/softoken/pkcs11u.c
-@@ -1642,10 +1642,12 @@
-         case CKK_DH:
-             crv = stfk_CopyTokenAttributes(destObject, src_to, dhPrivKeyAttrs,
-                                            dhPrivKeyAttrsCount);
-             break;
-         case CKK_EC:
-+        case CKK_EC_EDWARDS:
-+        case CKK_EC_MONTGOMERY:
-             crv = stfk_CopyTokenAttributes(destObject, src_to, ecPrivKeyAttrs,
-                                            ecPrivKeyAttrsCount);
-             break;
-         default:
-             crv = CKR_DEVICE_ERROR; /* shouldn't happen unless we store more types
-@@ -1706,10 +1708,12 @@
-         case CKK_DH:
-             crv = stfk_CopyTokenAttributes(destObject, src_to, dhPubKeyAttrs,
-                                            dhPubKeyAttrsCount);
-             break;
-         case CKK_EC:
-+        case CKK_EC_EDWARDS:
-+        case CKK_EC_MONTGOMERY:
-             crv = stfk_CopyTokenAttributes(destObject, src_to, ecPubKeyAttrs,
-                                            ecPubKeyAttrsCount);
-             break;
-         default:
-             crv = CKR_DEVICE_ERROR; /* shouldn't happen unless we store more types
-diff --git a/lib/util/secoid.c b/lib/util/secoid.c
---- a/lib/util/secoid.c
-+++ b/lib/util/secoid.c
-@@ -640,14 +640,14 @@
-         a private key, and a signature (for the two EdDSA related OIDs).
-         Additional encoding information is provided below for each of these
-         locations.
- */
- 
--CONST_OID ed25519PublicKey[] = { 0x2B, 0x65, 0x70 };
--CONST_OID ed25519Signature[] = { 0x2B, 0x65, 0x70 };
--
- /*https://www.rfc-editor.org/rfc/rfc8410#section-3*/
-+/* 1.3.101.112 */
-+CONST_OID ed25519[] = { 0x2B, 0x65, 0x70 };
-+/* 1.3.101.110 */
- CONST_OID x25519PublicKey[] = { 0x2b, 0x65, 0x6e };
- 
- /*
-  * ML-DSA OIDs
-  * https://csrc.nist.gov/projects/computer-security-objects-register/algorithm-registration
-@@ -1869,15 +1869,18 @@
-     OD(hmac_sha3_512, SEC_OID_HMAC_SHA3_512, "HMAC SHA3-512", CKM_SHA3_512_HMAC, INVALID_CERT_EXTENSION),
- 
-     ODE(SEC_OID_XYBER768D00,
-         "X25519+Kyber768 key exchange", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION),
- 
--    OD(ed25519Signature, SEC_OID_ED25519_SIGNATURE, "X9.62 EDDSA signature", CKM_EDDSA,
--       INVALID_CERT_EXTENSION),
-+    /* SEC_OID_ED25519_PUBLIC_KEY and SEC_OID_ED25519_SIGNATURE have the same
-+     * values, so we should only have one entry in the table, We can't
-+     * shift the values of the other entries, so just leav a dead spot here */
-+    ODE(SEC_OID_RESERVED_OLD_EDSIG, "Reserved", CKM_INVALID_MECHANISM,
-+        INVALID_CERT_EXTENSION),
- 
--    OD(ed25519PublicKey, SEC_OID_ED25519_PUBLIC_KEY,
--       "X9.62 elliptic edwards curve public key", CKM_EC_EDWARDS_KEY_PAIR_GEN, INVALID_CERT_EXTENSION),
-+    OD(ed25519, SEC_OID_ED25519,
-+       "X9.62 Elliptic Edwards Curve 25519", CKM_EDDSA, INVALID_CERT_EXTENSION),
- 
-     OD(dhSinglePassstdDHsha1kdfscheme, SEC_OID_DHSINGLEPASS_STDDH_SHA1KDF_SCHEME,
-        "Elliptic Curve Diffie-Hellman Single Pass Standard with SHA1 KDF", CKM_ECDH1_DERIVE,
-        INVALID_CERT_EXTENSION),
-     OD(dhSinglePassstdDHsha224kdfscheme, SEC_OID_DHSINGLEPASS_STDDH_SHA224KDF_SCHEME,
-diff --git a/lib/util/secoidt.h b/lib/util/secoidt.h
---- a/lib/util/secoidt.h
-+++ b/lib/util/secoidt.h
-@@ -512,12 +512,12 @@
-     SEC_OID_HMAC_SHA3_384 = 370,
-     SEC_OID_HMAC_SHA3_512 = 371,
- 
-     SEC_OID_XYBER768D00 = 372,
- 
--    SEC_OID_ED25519_SIGNATURE = 373,
--    SEC_OID_ED25519_PUBLIC_KEY = 374,
-+    SEC_OID_RESERVED_OLD_EDSIG = 373,
-+    SEC_OID_ED25519 = 374,
- 
-     SEC_OID_DHSINGLEPASS_STDDH_SHA1KDF_SCHEME = 375,
-     SEC_OID_DHSINGLEPASS_STDDH_SHA224KDF_SCHEME = 376,
-     SEC_OID_DHSINGLEPASS_STDDH_SHA256KDF_SCHEME = 377,
-     SEC_OID_DHSINGLEPASS_STDDH_SHA384KDF_SCHEME = 378,
-@@ -561,10 +561,14 @@
- #define SEC_OID_ML_DSA_65_SIGNATURE SEC_OID_ML_DSA_65
- #define SEC_OID_ML_DSA_65_PUBLIC_KEY SEC_OID_ML_DSA_65
- #define SEC_OID_ML_DSA_87_SIGNATURE SEC_OID_ML_DSA_87
- #define SEC_OID_ML_DSA_87_PUBLIC_KEY SEC_OID_ML_DSA_87
- 
-+/* EDDSA have the same identifiers for public keys and signatures */
-+#define SEC_OID_ED25519_SIGNATURE SEC_OID_ED25519
-+#define SEC_OID_ED25519_PUBLIC_KEY SEC_OID_ED25519
-+
- typedef enum {
-     INVALID_CERT_EXTENSION = 0,
-     UNSUPPORTED_CERT_EXTENSION = 1,
-     SUPPORTED_CERT_EXTENSION = 2
- } SECSupportExtenTag;
-diff --git a/tests/tools/tools.sh b/tests/tools/tools.sh
---- a/tests/tools/tools.sh
-+++ b/tests/tools/tools.sh
-@@ -126,10 +126,11 @@
-   cp ${QADIR}/tools/pbmac1-valid-sha512.p12 ${TOOLSDIR}/data
-   cp ${QADIR}/tools/pbmac1-invalid-bad-iter.p12 ${TOOLSDIR}/data
-   cp ${QADIR}/tools/pbmac1-invalid-bad-salt.p12 ${TOOLSDIR}/data
-   cp ${QADIR}/tools/pbmac1-invalid-no-length.p12 ${TOOLSDIR}/data
-   cp ${QADIR}/tools/corrupted_cert_bag.p12 ${TOOLSDIR}/data
-+  cp ${QADIR}/tools/openssl-ed25519.p12 ${TOOLSDIR}/data
-   cp ${QADIR}/tools/openssl-ml-kem-768-seed.p12 ${TOOLSDIR}/data
-   cp ${QADIR}/tools/openssl-ml-kem-768-priv.p12 ${TOOLSDIR}/data
-   cp ${QADIR}/tools/openssl-ml-kem-768-both.p12 ${TOOLSDIR}/data
-   cp ${QADIR}/tools/openssl-ml-kem-1024-seed.p12 ${TOOLSDIR}/data
-   cp ${QADIR}/tools/openssl-ml-kem-1024-priv.p12 ${TOOLSDIR}/data
-@@ -534,10 +535,21 @@
-   check_tmpfile
- 
-   return $ret
- }
- 
-+tools_p12_import_ed25519_private_key()
-+{
-+  echo "$SCRIPTNAME: Importing ED25519 private key from PKCS#12 file --------------"
-+  ${BINDIR}/pk12util -i ${TOOLSDIR}/data/openssl-ed25519.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W 'test' 2>&1
-+  ret=$?
-+  html_msg $ret 0 "Importing ED25519 private key from PKCS#12 file"
-+  check_tmpfile
-+
-+  return $ret
-+}
-+
- tools_p12_ml_kem_import()
- {
-   echo "$SCRIPTNAME: Testing ml-kem compatibility with pkcs12 --------------"
-   for i in 768 1024
-   do
-@@ -614,10 +626,11 @@
-   fi
-   tools_p12_export_with_none_ciphers
-   tools_p12_export_with_invalid_ciphers
-   tools_p12_import_old_files
-   tools_p12_import_pbmac1_samples
-+  tools_p12_import_ed25519_private_key
-   tools_p12_ml_kem_import
-   if using_sql; then
-     tools_p12_import_rsa_pss_private_key
-     tools_p12_policy
-   fi
-

diff --git a/nss-3.124-fix-pub-key-import-encapsulate.patch b/nss-3.124-fix-pub-key-import-encapsulate.patch
deleted file mode 100644
index 39cccc7..0000000
--- a/nss-3.124-fix-pub-key-import-encapsulate.patch
+++ /dev/null
@@ -1,217 +0,0 @@
-# HG changeset patch
-# User Robert Relyea <rrelyea@redhat.com>
-# Date 1781029720 25200
-#      Tue Jun 09 11:28:40 2026 -0700
-# Branch NSS_3_124_BRANCH
-# Node ID 1e0565f958c9e9ce4713a19eeee3541286133fb6
-# Parent  d9ba1487c7c6821154edd972c88cecba1d458503
-nss-3.124-fix-pub-key-import-encapsulate.patch
-
-diff --git a/lib/pk11wrap/pk11skey.c b/lib/pk11wrap/pk11skey.c
---- a/lib/pk11wrap/pk11skey.c
-+++ b/lib/pk11wrap/pk11skey.c
-@@ -3124,33 +3124,54 @@ SECStatus
- PK11_Encapsulate(SECKEYPublicKey *pubKey, CK_MECHANISM_TYPE target,
-                  PK11AttrFlags attrFlags, CK_FLAGS opFlags,
-                  PK11SymKey **outKey, SECItem **outCiphertext)
- {
-     PORT_Assert(pubKey);
-     PORT_Assert(outKey);
-     PORT_Assert(outCiphertext);
- 
--    PK11SlotInfo *slot = pubKey->pkcs11Slot;
- 
-     PK11SymKey *sharedSecret = NULL;
-     SECItem *ciphertext = NULL;
- 
-     CK_ATTRIBUTE keyTemplate[MAX_TEMPL_ATTRS];
-     unsigned int templateCount;
- 
-+
-     CK_ATTRIBUTE *attrs;
-     CK_BBOOL cktrue = CK_TRUE;
-     CK_BBOOL ckfalse = CK_FALSE;
-     CK_OBJECT_CLASS keyClass = CKO_SECRET_KEY;
-     CK_KEY_TYPE keyType = CKK_GENERIC_SECRET;
-     CK_MECHANISM_TYPE kemType = pk11_mapKemKeyType(pubKey->keyType);
-     CK_MECHANISM mech = { kemType, NULL, 0 };
-     CK_ULONG ciphertextLen = 0;
--    CK_RV crv;
-+    CK_RV crv = CKR_OK;
-+
-+    PK11SlotInfo *slot = pubKey->pkcs11Slot;
-+
-+    if (slot == NULL) {
-+        CK_MECHANISM_TYPE mechs[] = { kemType, target};
-+        CK_ULONG mech_count = PR_ARRAY_SIZE(mechs);
-+        slot = PK11_GetBestSlotMultiple(mechs, mech_count, NULL /*sigh*/);
-+    } else {
-+        /* should we check if the slot can do target and kemtype
-+         * here and move the public key if it can't? */
-+        slot = PK11_ReferenceSlot(slot);
-+    }
-+    if (slot == NULL) {
-+        goto loser; /* error already set */
-+    }
-+
-+    CK_OBJECT_HANDLE id = PK11_ImportPublicKey(slot, pubKey, PR_FALSE);
-+
-+    if (id == CK_INVALID_HANDLE) {
-+        goto loser; /* error already set */
-+    }
- 
-     /* set up the target key template */
-     attrs = keyTemplate;
-     PK11_SETATTRS(attrs, CKA_CLASS, &keyClass, sizeof(keyClass));
-     attrs++;
- 
-     PK11_SETATTRS(attrs, CKA_KEY_TYPE, &keyType, sizeof(keyType));
-     attrs++;
-@@ -3162,30 +3183,30 @@ PK11_Encapsulate(SECKEYPublicKey *pubKey
-     PR_ASSERT(templateCount <= sizeof(keyTemplate) / sizeof(CK_ATTRIBUTE));
- 
-     *outKey = NULL;
-     *outCiphertext = NULL;
- 
-     /* create a struxture for the target key */
-     sharedSecret = pk11_CreateSymKey(slot, target, PR_TRUE, PR_TRUE, NULL);
-     if (sharedSecret == NULL) {
--        PORT_SetError(SEC_ERROR_NO_MEMORY);
--        return SECFailure;
-+        crv = CKR_HOST_MEMORY;
-+        goto loser;
-     }
-     sharedSecret->origin = PK11_OriginDerive;
- 
-     /* this path is KEM mechanism agnostic */
-     if (PK11_CheckPKCS11Version(slot, 3, 2, PR_TRUE) >= 0) {
-         pk11_EnterKeyMonitor(sharedSecret);
-         /* get the length the normal PKCS #11 way. This works no matter
-          * what the KEM is and we don't have to try to guess the KEM length
-          * from the key */
-         crv = PK11_GETTAB(slot)->C_EncapsulateKey(sharedSecret->session,
-                                                   &mech,
--                                                  pubKey->pkcs11ID,
-+                                                  id,
-                                                   keyTemplate,
-                                                   templateCount,
-                                                   NULL,
-                                                   &ciphertextLen,
-                                                   &sharedSecret->objectID);
-         pk11_ExitKeyMonitor(sharedSecret);
-         if ((crv != CKR_OK) && (crv != CKR_BUFFER_TOO_SMALL) &&
-             (crv != CKR_KEY_SIZE_RANGE)) {
-@@ -3197,17 +3218,17 @@ PK11_Encapsulate(SECKEYPublicKey *pubKey
-             goto loser;
-         }
-         pk11_EnterKeyMonitor(sharedSecret);
-         /* Now do the encapsulate */
-         /* NOTE: the PKCS #11 order of the parameters is different from
-          * the vendor interface */
-         crv = PK11_GETTAB(slot)->C_EncapsulateKey(sharedSecret->session,
-                                                   &mech,
--                                                  pubKey->pkcs11ID,
-+                                                  id,
-                                                   keyTemplate,
-                                                   templateCount,
-                                                   ciphertext->data,
-                                                   &ciphertextLen,
-                                                   &sharedSecret->objectID);
-         pk11_ExitKeyMonitor(sharedSecret);
-         if (crv != CKR_OK) {
-             goto loser;
-@@ -3228,21 +3249,21 @@ PK11_Encapsulate(SECKEYPublicKey *pubKey
-         if (crv != CKR_OK) {
-             goto loser;
-         }
-         KEMInterfaceFunctions = (CK_NSS_KEM_FUNCTIONS *)(KEMInterface->pFunctionList);
- 
-         /* the old API expected the parameter set as a parameter, the
-          * pkcs11 v3.2 gets it from the key */
-         kemParameterSet = PK11_ReadULongAttribute(slot,
--                                                  pubKey->pkcs11ID,
-+                                                  id,
-                                                   CKA_NSS_PARAMETER_SET);
-         if (kemParameterSet == CK_UNAVAILABLE_INFORMATION) {
-             kemParameterSet = PK11_ReadULongAttribute(slot,
--                                                      pubKey->pkcs11ID,
-+                                                      id,
-                                                       CKA_PARAMETER_SET);
-             if (kemParameterSet == CK_UNAVAILABLE_INFORMATION) {
-                 crv = CKR_PUBLIC_KEY_INVALID;
-                 goto loser;
-             }
-         }
-         /* The old interface only ever supported KYBER768 and MLKEM768
-          * SOME versions of RHEL has MLKEM1024  support, if we want to
-@@ -3259,39 +3280,48 @@ PK11_Encapsulate(SECKEYPublicKey *pubKey
-         if (ciphertext == NULL) {
-             crv = CKR_HOST_MEMORY;
-             goto loser;
-         }
- 
-         pk11_EnterKeyMonitor(sharedSecret);
-         crv = KEMInterfaceFunctions->C_Encapsulate(sharedSecret->session,
-                                                    &mech,
--                                                   pubKey->pkcs11ID,
-+                                                   id,
-                                                    keyTemplate,
-                                                    templateCount,
-                                                    &sharedSecret->objectID,
-                                                    ciphertext->data,
-                                                    &ciphertextLen);
-         pk11_ExitKeyMonitor(sharedSecret);
-         if (crv != CKR_OK) {
-             goto loser;
-         }
- 
-         PORT_Assert(ciphertextLen == ciphertext->len);
-     }
- 
-+    PK11_FreeSlot(slot);
-+
-     *outKey = sharedSecret;
-     *outCiphertext = ciphertext;
- 
-     return SECSuccess;
- 
- loser:
--    PK11_FreeSymKey(sharedSecret);
-+    if (slot) {
-+        PK11_FreeSlot(slot);
-+    }
-+    if (sharedSecret) {
-+        PK11_FreeSymKey(sharedSecret);
-+    }
-     SECITEM_FreeItem(ciphertext, PR_TRUE);
--    PORT_SetError(PK11_MapError(crv));
-+    if (crv != CKR_OK) {
-+        PORT_SetError(PK11_MapError(crv));
-+    }
-     return SECFailure;
- }
- 
- SECStatus
- PK11_Decapsulate(SECKEYPrivateKey *privKey, const SECItem *ciphertext,
-                  CK_MECHANISM_TYPE target, PK11AttrFlags attrFlags,
-                  CK_FLAGS opFlags, PK11SymKey **outKey)
- {
-@@ -3312,17 +3342,17 @@ PK11_Decapsulate(SECKEYPrivateKey *privK
-     CK_OBJECT_CLASS keyClass = CKO_SECRET_KEY;
-     CK_KEY_TYPE keyType = CKK_GENERIC_SECRET;
-     CK_MECHANISM_TYPE kemType = pk11_mapKemKeyType(privKey->keyType);
-     CK_MECHANISM mech = { kemType, NULL, 0 };
- 
-     CK_RV crv;
- 
-     *outKey = NULL;
--    sharedSecret = pk11_CreateSymKey(slot, target, PR_TRUE, PR_TRUE, NULL);
-+    sharedSecret = pk11_CreateSymKey(slot, target, PR_TRUE, PR_TRUE, privKey->wincx);
-     if (sharedSecret == NULL) {
-         PORT_SetError(SEC_ERROR_NO_MEMORY);
-         return SECFailure;
-     }
-     sharedSecret->origin = PK11_OriginUnwrap;
- 
-     attrs = keyTemplate;
-     PK11_SETATTRS(attrs, CKA_CLASS, &keyClass, sizeof(keyClass));

diff --git a/nss-3.124-ml-kem-alias-fix.patch b/nss-3.124-ml-kem-alias-fix.patch
deleted file mode 100644
index 3b1e1ca..0000000
--- a/nss-3.124-ml-kem-alias-fix.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-# HG changeset patch
-# User Robert Relyea <rrelyea@redhat.com>
-# Date 1780962091 25200
-#      Mon Jun 08 16:41:31 2026 -0700
-# Branch NSS_3_124_BRANCH
-# Node ID 7748a8ddfa510458e76ff41e840f78f5af55795a
-# Parent  5f6c91f6171020eea4ce9eb5bc353370d30c8df0
-nss-3.124-ml-kem-alias-fix.patch
-
-diff --git a/cmd/lib/secutil.c b/cmd/lib/secutil.c
---- a/cmd/lib/secutil.c
-+++ b/cmd/lib/secutil.c
-@@ -4303,16 +4303,18 @@ static const struct SSLNamedGroupString 
- #ifndef NSS_DISABLE_KYBER
-     { NAME_AND_LEN("xyber76800"), ssl_grp_kem_xyber768d00 },
- #endif
-     { NAME_AND_LEN("x25519mlkem768"), ssl_grp_kem_mlkem768x25519 },
-     { NAME_AND_LEN("secp256r1mlkem768"), ssl_grp_kem_secp256r1mlkem768 },
-     { NAME_AND_LEN("secp384r1mlkem1024"), ssl_grp_kem_secp384r1mlkem1024 },
-     // keep for compatibility
-     { NAME_AND_LEN("mlkem768x25519"), ssl_grp_kem_mlkem768x25519 },
-+    { NAME_AND_LEN("mlkem768secp256r1"), ssl_grp_kem_secp256r1mlkem768 },
-+    { NAME_AND_LEN("mlkem1024secp384r1"), ssl_grp_kem_secp384r1mlkem1024 },
- };
- 
- static const size_t sslNamedGroupStringLen = PR_ARRAY_SIZE(sslNamedGroupStringArray);
- 
- static SSLNamedGroup
- groupNameToNamedGroup(char *name)
- {
-     int len = PL_strlen(name);
-diff --git a/lib/pk11wrap/pk11pars.c b/lib/pk11wrap/pk11pars.c
---- a/lib/pk11wrap/pk11pars.c
-+++ b/lib/pk11wrap/pk11pars.c
-@@ -255,16 +255,20 @@ static const oidValDef curveOptList[] = 
-     { CIPHER_NAME("X25519MLKEM768"), SEC_OID_MLKEM768X25519,
-       NSS_USE_ALG_IN_SSL_KX },
-     { CIPHER_NAME("SECP256R1MLKEM768"), SEC_OID_SECP256R1MLKEM768,
-       NSS_USE_ALG_IN_SSL_KX },
-     { CIPHER_NAME("SECP384R1MLKEM1024"), SEC_OID_SECP384R1MLKEM1024,
-       NSS_USE_ALG_IN_SSL_KX },
-     { CIPHER_NAME("MLKEM768X25519"), SEC_OID_MLKEM768X25519,
-       NSS_USE_ALG_IN_SSL_KX },
-+    { CIPHER_NAME("MLKEM768SECP256R1"), SEC_OID_SECP256R1MLKEM768,
-+       NSS_USE_ALG_IN_SSL_KX },
-+    { CIPHER_NAME("MLKEM1024SECP384R1"), SEC_OID_SECP384R1MLKEM1024,
-+       NSS_USE_ALG_IN_SSL_KX },
-     /* ANSI X9.62 named elliptic curves (characteristic two field) */
-     { CIPHER_NAME("C2PNB163V1"), SEC_OID_ANSIX962_EC_C2PNB163V1,
-       NSS_USE_ALG_IN_SSL_KX | NSS_USE_ALG_IN_CERT_SIGNATURE },
-     { CIPHER_NAME("C2PNB163V2"), SEC_OID_ANSIX962_EC_C2PNB163V2,
-       NSS_USE_ALG_IN_SSL_KX | NSS_USE_ALG_IN_CERT_SIGNATURE },
-     { CIPHER_NAME("C2PNB163V3"), SEC_OID_ANSIX962_EC_C2PNB163V3,
-       NSS_USE_ALG_IN_SSL_KX | NSS_USE_ALG_IN_CERT_SIGNATURE },
-     { CIPHER_NAME("C2PNB176V1"), SEC_OID_ANSIX962_EC_C2PNB176V1,
-@@ -467,21 +471,21 @@ static const oidValDef signOptList[] = {
-       NSS_USE_ALG_IN_SSL_KX | NSS_USE_ALG_IN_SIGNATURE },
-     { CIPHER_NAME("RSA-PSS"), SEC_OID_PKCS1_RSA_PSS_SIGNATURE,
-       NSS_USE_ALG_IN_SSL_KX | NSS_USE_ALG_IN_SIGNATURE },
-     { CIPHER_NAME("ECDSA"), SEC_OID_ANSIX962_EC_PUBLIC_KEY,
-       NSS_USE_ALG_IN_SSL_KX | NSS_USE_ALG_IN_SIGNATURE },
-     { CIPHER_NAME("ED25519"), SEC_OID_ED25519_PUBLIC_KEY,
-       NSS_USE_ALG_IN_SIGNATURE },
-     { CIPHER_NAME("ML-DSA-44"), SEC_OID_ML_DSA_44,
--      NSS_USE_ALG_IN_SIGNATURE },
-+      NSS_USE_ALG_IN_SSL_KX | NSS_USE_ALG_IN_SIGNATURE },
-     { CIPHER_NAME("ML-DSA-65"), SEC_OID_ML_DSA_65,
--      NSS_USE_ALG_IN_SIGNATURE },
-+      NSS_USE_ALG_IN_SSL_KX | NSS_USE_ALG_IN_SIGNATURE },
-     { CIPHER_NAME("ML-DSA-87"), SEC_OID_ML_DSA_87,
--      NSS_USE_ALG_IN_SIGNATURE },
-+      NSS_USE_ALG_IN_SSL_KX | NSS_USE_ALG_IN_SIGNATURE },
- };
- 
- typedef struct {
-     const oidValDef *list;
-     PRUint32 entries;
-     const char *description;
-     PRBool allowEmpty;
- } algListsDef;

diff --git a/nss-3.124-ppc_no_init.patch b/nss-3.124-ppc_no_init.patch
deleted file mode 100644
index 036ad62..0000000
--- a/nss-3.124-ppc_no_init.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-# HG changeset patch
-# User Robert Relyea <rrelyea@redhat.com>
-# Date 1780431689 25200
-#      Tue Jun 02 13:21:29 2026 -0700
-# Branch NSS_3_124_BRANCH
-# Node ID c3324d6ea02d9496ced68a4c59f81af9525d89ea
-# Parent  ba35abba131fe9379c69e63c9206d6a2143a3762
-nss-3.90-ppc_no_init.patch
-
-diff --git a/lib/freebl/Makefile b/lib/freebl/Makefile
---- a/lib/freebl/Makefile
-+++ b/lib/freebl/Makefile
-@@ -288,17 +288,17 @@ ifeq ($(CPU_ARCH),arm)
-     DEFINES += -DMP_USE_UINT_DIGIT
-     DEFINES += -DSHA_NO_LONG_LONG # avoid 64-bit arithmetic in SHA512
-     MPI_SRCS += mpi_arm.c
- endif
- ifeq ($(CPU_ARCH),ppc)
-     DEFINES += -DHAVE_PLATFORM_GHASH
-     EXTRA_SRCS += ghash-ppc.c
- ifdef USE_64
--    DEFINES += -DNSS_NO_INIT_SUPPORT
-+#    DEFINES += -DNSS_NO_INIT_SUPPORT
-     PPC_ABI := $(shell $(CC) -dM -E - < /dev/null | awk '$$2 == "_CALL_ELF" {print $$3}')
-     ifeq ($(PPC_ABI),2)
-         ASFILES += sha512-p8.s
-     ifeq ($(OS_TEST),ppc64le)
-         EXTRA_SRCS += chacha20poly1305-ppc.c ppc-gcm-wrap.c
-         ASFILES += chacha20-ppc64le.s ppc-gcm.s
-         DEFINES += -DHAVE_PLATFORM_GCM
-     endif # ppc64le
-diff --git a/lib/softoken/Makefile b/lib/softoken/Makefile
---- a/lib/softoken/Makefile
-+++ b/lib/softoken/Makefile
-@@ -18,23 +18,23 @@ include $(CORE_DEPTH)/coreconf/config.mk
- 
- #######################################################################
- # (3) Include "component" configuration information. (OPTIONAL)       #
- #######################################################################
- 
- ifdef NSS_NO_INIT_SUPPORT
-     DEFINES += -DNSS_NO_INIT_SUPPORT
- endif
--ifeq ($(OS_TARGET),Linux)
--ifeq ($(CPU_ARCH),ppc)
--ifdef USE_64
--    DEFINES += -DNSS_NO_INIT_SUPPORT
--endif # USE_64
--endif # ppc
--endif # Linux
-+#ifeq ($(OS_TARGET),Linux)
-+#ifeq ($(CPU_ARCH),ppc)
-+#ifdef USE_64
-+#    DEFINES += -DNSS_NO_INIT_SUPPORT
-+#endif # USE_64
-+#endif # ppc
-+#endif # Linux
- 
- 
- #######################################################################
- # (4) Include "local" platform-dependent assignments (OPTIONAL).      #
- #######################################################################
- 
- include config.mk
- 

diff --git a/nss-3.124-prefer-all-hybrid.patch b/nss-3.124-prefer-all-hybrid.patch
deleted file mode 100644
index 9a2a987..0000000
--- a/nss-3.124-prefer-all-hybrid.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-# HG changeset patch
-# User Robert Relyea <rrelyea@redhat.com>
-# Date 1780514963 25200
-#      Wed Jun 03 12:29:23 2026 -0700
-# Branch NSS_3_124_BRANCH
-# Node ID 6e7722343bbb64c097f476afff27db4bc0b103c2
-# Parent  c821cfd68f40883d94215accb63869deeeb1d4e6
-nss-3.124-prefer-all-hybrid.patch
-
-diff --git a/gtests/ssl_gtest/ssl_dhe_unittest.cc b/gtests/ssl_gtest/ssl_dhe_unittest.cc
---- a/gtests/ssl_gtest/ssl_dhe_unittest.cc
-+++ b/gtests/ssl_gtest/ssl_dhe_unittest.cc
-@@ -36,17 +36,17 @@ TEST_P(TlsConnectTls13, SharesForBothEcd
-   auto shares_capture =
-       std::make_shared<TlsExtensionCapture>(client_, ssl_tls13_key_share_xtn);
-   std::vector<std::shared_ptr<PacketFilter>> captures = {groups_capture,
-                                                          shares_capture};
-   client_->SetFilter(std::make_shared<ChainedPacketFilter>(captures));
- 
-   Connect();
- 
--  CheckKeys(ssl_kea_ecdh, ssl_auth_rsa_sign);
-+  CheckKeys(GetDefaultKEA(), ssl_auth_rsa_sign);
- 
-   bool ec, dh;
-   auto track_group_type = [&ec, &dh](SSLNamedGroup group) {
-     if ((group & 0xff00U) == 0x100U) {
-       dh = true;
-     } else {
-       ec = true;
-     }
-diff --git a/lib/ssl/sslsock.c b/lib/ssl/sslsock.c
---- a/lib/ssl/sslsock.c
-+++ b/lib/ssl/sslsock.c
-@@ -163,23 +163,23 @@ static const PRUint16 srtpCiphers[] = {
-         ssl_grp_kem_##first##second, size, ssl_kea_ecdh_hybrid,              \
-             SEC_OID_##first_oid##second_oid, assumeSupported                 \
-     }
- 
- const sslNamedGroupDef ssl_named_groups[] = {
-     /* Note that 256 for 25519 and x25519mlkem786 is a lie, but we only use it
-      * for checking bit security and expect 256 bits there (not 255). */
-     HYGROUP(mlkem768, x25519, 256, MLKEM768, X25519, PR_TRUE),
-+    HYGROUP(secp256r1, mlkem768, 256, SECP256R1, MLKEM768, PR_TRUE),
-+    HYGROUP(secp384r1, mlkem1024, 256, SECP384R1, MLKEM1024, PR_TRUE),
-     { ssl_grp_ec_curve25519, 256, ssl_kea_ecdh, SEC_OID_CURVE25519, PR_TRUE },
-     ECGROUP(secp256r1, 256, SECP256R1, PR_TRUE),
-     ECGROUP(secp384r1, 384, SECP384R1, PR_TRUE),
-     ECGROUP(secp521r1, 521, SECP521R1, PR_TRUE),
--    HYGROUP(secp256r1, mlkem768, 256, SECP256R1, MLKEM768, PR_TRUE),
--    HYGROUP(secp384r1, mlkem1024, 256, SECP384R1, MLKEM1024, PR_TRUE),
-     { ssl_grp_kem_mlkem1024, 256, ssl_kea_kem, SEC_OID_ML_KEM_1024, PR_TRUE },
-     { ssl_grp_kem_xyber768d00, 256, ssl_kea_ecdh_hybrid, SEC_OID_XYBER768D00, PR_FALSE },
-     FFGROUP(2048),
-     FFGROUP(3072),
-     FFGROUP(4096),
-     FFGROUP(6144),
-     FFGROUP(8192),
-     ECGROUP(secp192r1, 192, SECP192R1, PR_FALSE),
-     ECGROUP(secp160r2, 160, SECP160R2, PR_FALSE),
-diff --git a/lib/ssl/tls13con.c b/lib/ssl/tls13con.c
---- a/lib/ssl/tls13con.c
-+++ b/lib/ssl/tls13con.c
-@@ -666,20 +666,29 @@ tls13_SetupClientHello(sslSocket *ss, ss
-     if (rv != SECSuccess) {
-         return SECFailure;
-     }
- 
-     /* Select the first enabled group.
-      * TODO(ekr@rtfm.com): be smarter about offering the group
-      * that the other side negotiated if we are resuming. */
-     PORT_Assert(PR_CLIST_IS_EMPTY(&ss->ephemeralKeyPairs));
-+    PRBool has_hybrid = PR_FALSE;
-     for (i = 0; i < SSL_NAMED_GROUP_COUNT; ++i) {
-         if (!ss->namedGroupPreferences[i]) {
-             continue;
-         }
-+        /* only send one hybrid key share no matter how many key
-+         * shares we send */
-+        if (ss->namedGroupPreferences[i]->keaType == ssl_kea_ecdh_hybrid)  {
-+            if (has_hybrid) {
-+                continue; /* already have one skip*/
-+            }
-+            has_hybrid = PR_TRUE;
-+        }
-         rv = tls13_AddKeyShare(ss, ss->namedGroupPreferences[i]);
-         if (rv != SECSuccess) {
-             return SECFailure;
-         }
-         if (++numShares > ss->additionalShares) {
-             break;
-         }
-     }

diff --git a/nss-3.124-tools-test-fix.patch b/nss-3.124-tools-test-fix.patch
deleted file mode 100644
index 046b660..0000000
--- a/nss-3.124-tools-test-fix.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-# HG changeset patch
-# User Robert Relyea <rrelyea@redhat.com>
-# Date 1780589779 25200
-#      Thu Jun 04 09:16:19 2026 -0700
-# Branch NSS_3_124_BRANCH
-# Node ID 5f6c91f6171020eea4ce9eb5bc353370d30c8df0
-# Parent  709702f4bfbee0bed65f6abcd85bc8fc2d14ff55
-nss-3.124-tools-test-fix.patch
-
-diff --git a/tests/tools/tools.sh b/tests/tools/tools.sh
---- a/tests/tools/tools.sh
-+++ b/tests/tools/tools.sh
-@@ -518,17 +518,17 @@ tools_p12_import_old_files()
-   ${BINDIR}/pk12util -i ${TOOLSDIR}/data/PKCS5WithImplicitKDF.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W password 2>&1
-   ret=$?
-   html_msg $ret 0 "Importing PKCS#12 file with and implicit KDF value"
-   check_tmpfile
- 
-   echo "pk12util -I -l corrupted_cert_bag.p12 -W start"
-   ${BINDIR}/pk12util -I -l ${TOOLSDIR}/data/corrupted_cert_bag.p12 -W start 2>&1
-   ret=$?
--  html_msg $ret 17 "Listing a PKCS#12 file with corrupted certificate bag"
-+  html_msg $ret 19 "Listing a PKCS#12 file with corrupted certificate bag"
-   check_tmpfile
- 
- }
- 
- tools_p12_import_rsa_pss_private_key()
- {
-   echo "$SCRIPTNAME: Importing RSA-PSS private key from PKCS#12 file --------------"
-   ${BINDIR}/pk12util -i ${TOOLSDIR}/data/TestRSAPSS.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '' 2>&1

diff --git a/nss-3.90-dh-test-update.patch b/nss-3.90-dh-test-update.patch
deleted file mode 100644
index fcbeae5..0000000
--- a/nss-3.90-dh-test-update.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-diff -up ./lib/freebl/fipsfreebl.c.dh_test ./lib/freebl/fipsfreebl.c
---- ./lib/freebl/fipsfreebl.c.dh_test	2024-01-18 08:34:45.936944401 -0800
-+++ ./lib/freebl/fipsfreebl.c	2024-01-18 09:20:57.555980326 -0800
-@@ -1816,38 +1816,39 @@ freebl_fips_DH_PowerUpSelfTest(void)
- {
-     /* DH Known P (2048-bits) */
-     static const PRUint8 dh_known_P[] = {
--        0xc2, 0x79, 0xbb, 0x76, 0x32, 0x0d, 0x43, 0xfd,
--        0x1b, 0x8c, 0xa2, 0x3c, 0x00, 0xdd, 0x6d, 0xef,
--        0xf8, 0x1a, 0xd9, 0xc1, 0xa2, 0xf5, 0x73, 0x2b,
--        0xdb, 0x1a, 0x3e, 0x84, 0x90, 0xeb, 0xe7, 0x8e,
--        0x5f, 0x5c, 0x6b, 0xb6, 0x61, 0x89, 0xd1, 0x03,
--        0xb0, 0x5f, 0x91, 0xe4, 0xd2, 0x82, 0x90, 0xfc,
--        0x3c, 0x49, 0x69, 0x59, 0xc1, 0x51, 0x6a, 0x85,
--        0x71, 0xe7, 0x5d, 0x72, 0x5a, 0x45, 0xad, 0x01,
--        0x6f, 0x82, 0xae, 0xec, 0x91, 0x08, 0x2e, 0x7c,
--        0x64, 0x93, 0x46, 0x1c, 0x68, 0xef, 0xc2, 0x03,
--        0x28, 0x1d, 0x75, 0x3a, 0xeb, 0x9c, 0x46, 0xf0,
--        0xc9, 0xdb, 0x99, 0x95, 0x13, 0x66, 0x4d, 0xd5,
--        0x1a, 0x78, 0x92, 0x51, 0x89, 0x72, 0x28, 0x7f,
--        0x20, 0x70, 0x41, 0x49, 0xa2, 0x86, 0xe9, 0xf9,
--        0x78, 0x5f, 0x8d, 0x2e, 0x5d, 0xfa, 0xdb, 0x57,
--        0xd4, 0x71, 0xdf, 0x66, 0xe3, 0x9e, 0x88, 0x70,
--        0xa4, 0x21, 0x44, 0x6a, 0xc7, 0xae, 0x30, 0x2c,
--        0x9c, 0x1f, 0x91, 0x57, 0xc8, 0x24, 0x34, 0x2d,
--        0x7a, 0x4a, 0x43, 0xc2, 0x5f, 0xab, 0x64, 0x2e,
--        0xaa, 0x28, 0x32, 0x95, 0x42, 0x7b, 0xa0, 0xcc,
--        0xdf, 0xfd, 0x22, 0xc8, 0x56, 0x84, 0xc1, 0x62,
--        0x15, 0xb2, 0x77, 0x86, 0x81, 0xfc, 0xa5, 0x12,
--        0x3c, 0xca, 0x28, 0x17, 0x8f, 0x03, 0x16, 0x6e,
--        0xb8, 0x24, 0xfa, 0x1b, 0x15, 0x02, 0xfd, 0x8b,
--        0xb6, 0x0a, 0x1a, 0xf7, 0x47, 0x41, 0xc5, 0x2b,
--        0x37, 0x3e, 0xa1, 0xbf, 0x68, 0xda, 0x1c, 0x55,
--        0x44, 0xc3, 0xee, 0xa1, 0x63, 0x07, 0x11, 0x3b,
--        0x5f, 0x00, 0x84, 0xb4, 0xc4, 0xe4, 0xa7, 0x97,
--        0x29, 0xf8, 0xce, 0xab, 0xfc, 0x27, 0x3e, 0x34,
--        0xe4, 0xc7, 0x81, 0x52, 0x32, 0x0e, 0x27, 0x3c,
--        0xa6, 0x70, 0x3f, 0x4a, 0x54, 0xda, 0xdd, 0x60,
--        0x26, 0xb3, 0x6e, 0x45, 0x26, 0x19, 0x41, 0x6f
-+        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-+        0xAD, 0xF8, 0x54, 0x58, 0xA2, 0xBB, 0x4A, 0x9A,
-+        0xAF, 0xDC, 0x56, 0x20, 0x27, 0x3D, 0x3C, 0xF1,
-+        0xD8, 0xB9, 0xC5, 0x83, 0xCE, 0x2D, 0x36, 0x95,
-+        0xA9, 0xE1, 0x36, 0x41, 0x14, 0x64, 0x33, 0xFB,
-+        0xCC, 0x93, 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9,
-+        0x7D, 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8,
-+        0xF6, 0x81, 0xB2, 0x02, 0xAE, 0xC4, 0x61, 0x7A,
-+        0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, 0x65, 0x61,
-+        0x24, 0x33, 0xF5, 0x1F, 0x5F, 0x06, 0x6E, 0xD0,
-+        0x85, 0x63, 0x65, 0x55, 0x3D, 0xED, 0x1A, 0xF3,
-+        0xB5, 0x57, 0x13, 0x5E, 0x7F, 0x57, 0xC9, 0x35,
-+        0x98, 0x4F, 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77,
-+        0xE2, 0xA6, 0x89, 0xDA, 0xF3, 0xEF, 0xE8, 0x72,
-+        0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, 0x35,
-+        0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, 0x79, 0x7A,
-+        0xBC, 0x0A, 0xB1, 0x82, 0xB3, 0x24, 0xFB, 0x61,
-+        0xD1, 0x08, 0xA9, 0x4B, 0xB2, 0xC8, 0xE3, 0xFB,
-+        0xB9, 0x6A, 0xDA, 0xB7, 0x60, 0xD7, 0xF4, 0x68,
-+        0x1D, 0x4F, 0x42, 0xA3, 0xDE, 0x39, 0x4D, 0xF4,
-+        0xAE, 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19,
-+        0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, 0x70,
-+        0x9E, 0x02, 0xFC, 0xE1, 0xCD, 0xF7, 0xE2, 0xEC,
-+        0xC0, 0x34, 0x04, 0xCD, 0x28, 0x34, 0x2F, 0x61,
-+        0x91, 0x72, 0xFE, 0x9C, 0xE9, 0x85, 0x83, 0xFF,
-+        0x8E, 0x4F, 0x12, 0x32, 0xEE, 0xF2, 0x81, 0x83,
-+        0xC3, 0xFE, 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73,
-+        0x3B, 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05,
-+        0xC5, 0x8E, 0xF1, 0x83, 0x7D, 0x16, 0x83, 0xB2,
-+        0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, 0xEF, 0xFA,
-+        0x88, 0x6B, 0x42, 0x38, 0x61, 0x28, 0x5C, 0x97,
-+        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
-+
-     };
- 
-     static const PRUint8 dh_known_Y_1[] = {
-@@ -1893,10 +1894,10 @@ freebl_fips_DH_PowerUpSelfTest(void)
-     };
- 
-     static const PRUint8 dh_known_hash_result[] = {
--        0x93, 0xa2, 0x89, 0x1c, 0x8a, 0xc3, 0x70, 0xbf,
--        0xa7, 0xdf, 0xb6, 0xd7, 0x82, 0xfb, 0x87, 0x81,
--        0x09, 0x47, 0xf3, 0x9f, 0x5a, 0xbf, 0x4f, 0x3f,
--        0x8e, 0x5e, 0x06, 0xca, 0x30, 0xa7, 0xaf, 0x10
-+        0x40, 0xe3, 0x7a, 0x34, 0x83, 0x2d, 0x94, 0x57,
-+        0x99, 0x3d, 0x66, 0xec, 0x54, 0xdf, 0x82, 0x4a,
-+        0x37, 0x0d, 0xf9, 0x01, 0xb3, 0xbc, 0x54, 0xe5,
-+        0x5e, 0x63, 0xd3, 0x46, 0x4e, 0xa3, 0xe2, 0x8a
-     };
- 
-     /* DH variables. */

diff --git a/nss.spec b/nss.spec
index 4f669bb..f6a5343 100644
--- a/nss.spec
+++ b/nss.spec
@@ -82,7 +82,6 @@ BuildRequires:    gawk
 BuildRequires:    psmisc
 BuildRequires:    perl-interpreter
 BuildRequires:    gcc-c++
-BuildRequires:    parallel
 
 Source0:          https://ftp.mozilla.org/pub/security/nss/releases/%{nss_release_tag}/src/%{nss_nspr_archive}.tar.gz
 Source1:          nss-util.pc.in
@@ -130,40 +129,16 @@ Source101:        nspr-config.xml
 Patch4:           iquote.patch
 Patch12:          nss-signtool-format.patch
 Patch13:          nss-dso-ldflags.patch
-
-# Extend db dump timeout to avoid flaky failures on slow builders
-Patch20:          nss-3.101-extend-db-dump-time.patch
-# Update FIPS DH test prime to RFC 7919 FFDHE group
-Patch21:          nss-3.90-dh-test-update.patch
-# Fix tools test expected exit code for corrupted PKCS#12 bag
-Patch22:          nss-3.124-tools-test-fix.patch
-
-# Disallow MD2/MD4/MD5 in FIPS mode for signing and PKCS#12 write
-Patch30:          nss-3.112-disable-md5.patch
-
 # fedora disabled dbm by default
 Patch40:          nss-no-dbm-man-page.patch
-# Disable NSS_NO_INIT_SUPPORT on ppc64le (causes init failures)
-Patch41:          nss-3.124-ppc_no_init.patch
-# Add missing GNU stack / noexecstack annotations to x86 assembly
-Patch42:          nss-3.124-annocheck.fix.patch
 
 # https://issues.redhat.com/browse/FC-1613
 Patch50:          nss-3.110-dissable_test-ssl_policy_pkix_oscp.patch
-# Fix Ed25519/Ed448 key storage and display in secutil/softoken
-Patch51:          nss-3.124-fix-ed-key-storage.patch
-# FIPS-compatible symmetric key import via CKM_CONCATENATE_DATA_AND_BASE
-Patch52:          nss-3.124-fips-key-import-fix.patch
-# Fix PK11_Encapsulate to import the public key before use and handle NULL slot
-Patch53:          nss-3.124-fix-pub-key-import-encapsulate.patch
-# Allow PSS hash algorithm override instead of failing on mismatch
-Patch54:          nss-3.124-allow-hash-override-pss.patch
 
 # ML-DSA support patches that haven't made it to the 3.118.1 release
 Patch60:          nss-3.118-ml-dsa-leancrypto.patch
 Patch61:          nss-3.118-ml-dsa-tls.patch
-# Prefer hybrid (classical + PQC) key exchange groups in TLS 1.3
-Patch62:          nss-3.124-prefer-all-hybrid.patch
+#Patch62:          nss-3.118-prefer-all-hybrid.patch
 
 Patch65:          nss-3.118-ml-dsa-test-for-sign-verify-pkcs12.patch
 Patch66:          nss-3.118-ml-dsa-tls-test.patch
@@ -174,10 +149,6 @@ Patch68:          nss-3.123-fix-mldsa-import-regeneration.patch
 # replay the parent's random stream (mozbz#2056509)
 Patch70:          nss-3.125-drbg-reseed-after-fork.patch
 
-# ML-KEM: populate key size bounds and add MLKEM alias names
-Patch71:          nss-3.124-add-ml-kem-key-size-mech-info.patch
-Patch72:          nss-3.124-ml-kem-alias-fix.patch
-
 Patch100:         nspr-config-pc.patch
 Patch101:         nspr-gcc-atomics.patch
 
@@ -343,9 +314,6 @@ popd
 
 pushd nss
 %autopatch -p1 -M 99
-# GNU patch 2.8 --fuzz=0 cannot apply this one-line call-site addition due to
-# cumulative hunk offset interaction; use sed as a workaround
-sed -i 's/^  tools_p12_import_ed25519_private_key$/&\n  tools_p12_ml_dsa_import/' tests/tools/tools.sh
 popd
 
 tar -xf %{SOURCE30}
@@ -398,8 +366,8 @@ popd
 
 # Build NSS
 #
-# LTO is enabled. Uncomment the line below to disable it if needed.
-#%%global _lto_cflags %%{nil}
+# This package fails its testsuite with LTO.  Disable LTO for now
+#%global _lto_cflags %{nil}
 
 #export FREEBL_NO_DEPEND=1
 
@@ -1318,7 +1286,7 @@ fi
                 https://bugzilla.mozilla.org/show_bug.cgi?id=1836925
 
 * Mon Jun 5 2023 Frantisek Krenzelok <krenzelok.frantisek@gmail.com> - 3.90.0-1
-- Update %%patch syntax
+- Update %patch syntax
 
 * Mon Jun 5 2023 Frantisek Krenzelok <krenzelok.frantisek@gmail.com> - 3.90.0-1
 - Update NSS to 3.90.0
@@ -1327,7 +1295,7 @@ fi
 - combine nss and nspr source togeather
 
 * Fri May 5 2023 Frantisek Krenzelok <krenzelok.frantisek@gmail.com> - 3.89.0-1
-- replace %%{version} with %%{nss_version} as it version can be overiden.
+- replace %{version} with %{nss_version} as it version can be overiden.
 
 * Fri Mar 10 2023 Frantisek Krenzelok <krenzelok.frantisek@gmail.com> - 3.89.0-1
 - Update NSS to 3.89.0

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-08-27 17:26 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-27 17:26 [rpms/nss] rawhide: Revert changes on top of nss-3.127.0 

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox