diff -Nru openssl-3.5.6/apps/enc.c openssl-3.5.7/apps/enc.c
--- openssl-3.5.6/apps/enc.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/apps/enc.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -716,7 +716,7 @@
 
             skey = EVP_SKEY_import(app_get0_libctx(), EVP_SKEYMGMT_get0_name(mgmt),
                 app_get0_propq(), OSSL_SKEYMGMT_SELECT_ALL, params);
-            OSSL_PARAM_free(params);
+            app_params_free(params);
             if (skey == NULL) {
                 BIO_printf(bio_err, "Error creating opaque key object for skeymgmt %s\n",
                     skeymgmt ? skeymgmt : EVP_CIPHER_name(cipher));
diff -Nru openssl-3.5.6/apps/lib/apps.c openssl-3.5.7/apps/lib/apps.c
--- openssl-3.5.6/apps/lib/apps.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/apps/lib/apps.c	2026-06-09 13:54:25.000000000 +0200
@@ -1057,9 +1057,12 @@
                 if (ok)
                     pcert = NULL;
             } else if (pcerts != NULL) {
-                ok = X509_add_cert(*pcerts,
-                    OSSL_STORE_INFO_get1_CERT(info),
-                    X509_ADD_FLAG_DEFAULT);
+                X509 *cert = OSSL_STORE_INFO_get1_CERT(info);
+
+                ok = cert != NULL
+                    && X509_add_cert(*pcerts, cert, X509_ADD_FLAG_DEFAULT);
+                if (!ok)
+                    X509_free(cert);
             }
             ncerts += ok;
             break;
@@ -1069,7 +1072,11 @@
                 if (ok)
                     pcrl = NULL;
             } else if (pcrls != NULL) {
-                ok = sk_X509_CRL_push(*pcrls, OSSL_STORE_INFO_get1_CRL(info));
+                X509_CRL *crl = OSSL_STORE_INFO_get1_CRL(info);
+
+                ok = crl != NULL && sk_X509_CRL_push(*pcrls, crl);
+                if (!ok)
+                    X509_CRL_free(crl);
             }
             ncrls += ok;
             break;
diff -Nru openssl-3.5.6/apps/lib/cmp_mock_srv.c openssl-3.5.7/apps/lib/cmp_mock_srv.c
--- openssl-3.5.6/apps/lib/cmp_mock_srv.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/apps/lib/cmp_mock_srv.c	2026-06-09 13:54:25.000000000 +0200
@@ -345,6 +345,7 @@
             STACK_OF(ASN1_UTF8STRING) *strs;
             ASN1_UTF8STRING *str;
             const char *data;
+            int len;
 
             if (OBJ_obj2nid(obj) == NID_id_it_certProfile) {
                 if (!OSSL_CMP_ITAV_get0_certProfile(itav, &strs))
@@ -359,7 +360,8 @@
                     ERR_raise(ERR_LIB_CMP, ERR_R_PASSED_INVALID_ARGUMENT);
                     return NULL;
                 }
-                if (strcmp(data, "profile1") != 0) {
+                if (((len = ASN1_STRING_length(str)) != (int)sizeof("profile1") - 1)
+                    || memcmp(data, "profile1", len) != 0) {
                     ERR_raise(ERR_LIB_CMP, CMP_R_UNEXPECTED_CERTPROFILE);
                     return NULL;
                 }
diff -Nru openssl-3.5.6/apps/list.c openssl-3.5.7/apps/list.c
--- openssl-3.5.6/apps/list.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/apps/list.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -1490,6 +1490,9 @@
 #ifdef OPENSSL_NO_DSA
     BIO_puts(bio_out, "DSA\n");
 #endif
+#ifdef OPENSSL_NO_SIPHASH
+    BIO_puts(bio_out, "SIPHASH\n");
+#endif
 #if defined(OPENSSL_NO_DTLS)
     BIO_puts(bio_out, "DTLS\n");
 #endif
diff -Nru openssl-3.5.6/apps/s_client.c openssl-3.5.7/apps/s_client.c
--- openssl-3.5.6/apps/s_client.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/apps/s_client.c	2026-06-09 13:54:25.000000000 +0200
@@ -2549,7 +2549,7 @@
                          "xmlns='jabber:%s' to='%s' version='1.0'>",
             starttls_proto == PROTO_XMPP ? "client" : "server",
             protohost ? protohost : host);
-        seen = BIO_read(sbio, mbuf, BUFSIZZ);
+        seen = BIO_read(sbio, mbuf, BUFSIZZ - 1);
         if (seen < 0) {
             BIO_printf(bio_err, "BIO_read failed\n");
             goto end;
@@ -2558,7 +2558,7 @@
         while (!strstr(mbuf, "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'")
             && !strstr(mbuf,
                 "<starttls xmlns=\"urn:ietf:params:xml:ns:xmpp-tls\"")) {
-            seen = BIO_read(sbio, mbuf, BUFSIZZ);
+            seen = BIO_read(sbio, mbuf, BUFSIZZ - 1);
 
             if (seen <= 0)
                 goto shut;
@@ -2567,7 +2567,7 @@
         }
         BIO_printf(sbio,
             "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>");
-        seen = BIO_read(sbio, sbuf, BUFSIZZ);
+        seen = BIO_read(sbio, sbuf, BUFSIZZ - 1);
         if (seen < 0) {
             BIO_printf(bio_err, "BIO_read failed\n");
             goto shut;
@@ -2793,7 +2793,7 @@
                 "Didn't find STARTTLS in server response,"
                 " trying anyway...\n");
         BIO_printf(sbio, "STARTTLS\r\n");
-        mbuf_len = BIO_read(sbio, mbuf, BUFSIZZ);
+        mbuf_len = BIO_read(sbio, mbuf, BUFSIZZ - 1);
         if (mbuf_len < 0) {
             BIO_printf(bio_err, "BIO_read failed\n");
             goto end;
@@ -2834,7 +2834,7 @@
                 "Didn't find STARTTLS in server response,"
                 " trying anyway...\n");
         BIO_printf(sbio, "STARTTLS\r\n");
-        mbuf_len = BIO_read(sbio, mbuf, BUFSIZZ);
+        mbuf_len = BIO_read(sbio, mbuf, BUFSIZZ - 1);
         if (mbuf_len < 0) {
             BIO_printf(bio_err, "BIO_read failed\n");
             goto end;
@@ -3307,7 +3307,7 @@
             if (crlf) {
                 int j, lf_num;
 
-                i = raw_read_stdin(cbuf, BUFSIZZ / 2);
+                i = raw_read_stdin(cbuf, (BUFSIZZ - 1) / 2);
                 lf_num = 0;
                 /* both loops are skipped when i <= 0 */
                 for (j = 0; j < i; j++)
@@ -3323,7 +3323,7 @@
                 }
                 assert(lf_num == 0);
             } else
-                i = raw_read_stdin(cbuf, BUFSIZZ);
+                i = raw_read_stdin(cbuf, BUFSIZZ - 1);
 #if !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MSDOS)
             if (i == 0)
                 at_eof = 1;
diff -Nru openssl-3.5.6/apps/skeyutl.c openssl-3.5.7/apps/skeyutl.c
--- openssl-3.5.6/apps/skeyutl.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/apps/skeyutl.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2025-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -106,7 +106,7 @@
         skey = EVP_SKEY_generate(app_get0_libctx(),
             skeymgmt ? skeymgmt : EVP_CIPHER_name(cipher),
             app_get0_propq(), params);
-        OSSL_PARAM_free(params);
+        app_params_free(params);
         if (skey == NULL) {
             BIO_printf(bio_err, "Error creating opaque key for skeymgmt %s\n",
                 skeymgmt ? skeymgmt : EVP_CIPHER_name(cipher));
diff -Nru openssl-3.5.6/apps/speed.c openssl-3.5.7/apps/speed.c
--- openssl-3.5.6/apps/speed.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/apps/speed.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
@@ -3138,8 +3138,9 @@
                             exit(1);
                         }
 
-                        if (!EVP_CIPHER_CTX_ctrl(loopargs[k].ctx, EVP_CTRL_AEAD_GET_TAG,
-                                TAG_LEN, &loopargs[k].tag)) {
+                        if (EVP_CIPHER_CTX_ctrl(loopargs[k].ctx, EVP_CTRL_AEAD_GET_TAG,
+                                TAG_LEN, &loopargs[k].tag)
+                            <= 0) {
                             BIO_printf(bio_err, "\nFailed to get the tag\n");
                             dofail();
                             exit(1);
diff -Nru openssl-3.5.6/apps/testdsa.h openssl-3.5.7/apps/testdsa.h
--- openssl-3.5.6/apps/testdsa.h	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/apps/testdsa.h	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1998-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -13,274 +13,48 @@
 EVP_PKEY *get_dsa(int);
 
 static unsigned char dsa512_priv[] = {
-    0x65,
-    0xe5,
-    0xc7,
-    0x38,
-    0x60,
-    0x24,
-    0xb5,
-    0x89,
-    0xd4,
-    0x9c,
-    0xeb,
-    0x4c,
-    0x9c,
-    0x1d,
-    0x7a,
-    0x22,
-    0xbd,
-    0xd1,
-    0xc2,
-    0xd2,
+    0x65, 0xe5, 0xc7, 0x38, 0x60, 0x24, 0xb5, 0x89, 0xd4, 0x9c,
+    0xeb, 0x4c, 0x9c, 0x1d, 0x7a, 0x22, 0xbd, 0xd1, 0xc2, 0xd2
 };
 
 static unsigned char dsa512_pub[] = {
-    0x00,
-    0x95,
-    0xa7,
-    0x0d,
-    0xec,
-    0x93,
-    0x68,
-    0xba,
-    0x5f,
-    0xf7,
-    0x5f,
-    0x07,
-    0xf2,
-    0x3b,
-    0xad,
-    0x6b,
-    0x01,
-    0xdc,
-    0xbe,
-    0xec,
-    0xde,
-    0x04,
-    0x7a,
-    0x3a,
-    0x27,
-    0xb3,
-    0xec,
-    0x49,
-    0xfd,
-    0x08,
-    0x43,
-    0x3d,
-    0x7e,
-    0xa8,
-    0x2c,
-    0x5e,
-    0x7b,
-    0xbb,
-    0xfc,
-    0xf4,
-    0x6e,
-    0xeb,
-    0x6c,
-    0xb0,
-    0x6e,
-    0xf8,
-    0x02,
-    0x12,
-    0x8c,
-    0x38,
-    0x5d,
-    0x83,
-    0x56,
-    0x7d,
-    0xee,
-    0x53,
-    0x05,
-    0x3e,
-    0x24,
-    0x84,
-    0xbe,
-    0xba,
-    0x0a,
-    0x6b,
-    0xc8,
+    0x00, 0x95, 0xa7, 0x0d, 0xec, 0x93, 0x68, 0xba, 0x5f, 0xf7,
+    0x5f, 0x07, 0xf2, 0x3b, 0xad, 0x6b, 0x01, 0xdc, 0xbe, 0xec,
+    0xde, 0x04, 0x7a, 0x3a, 0x27, 0xb3, 0xec, 0x49, 0xfd, 0x08,
+    0x43, 0x3d, 0x7e, 0xa8, 0x2c, 0x5e, 0x7b, 0xbb, 0xfc, 0xf4,
+    0x6e, 0xeb, 0x6c, 0xb0, 0x6e, 0xf8, 0x02, 0x12, 0x8c, 0x38,
+    0x5d, 0x83, 0x56, 0x7d, 0xee, 0x53, 0x05, 0x3e, 0x24, 0x84,
+    0xbe, 0xba, 0x0a, 0x6b, 0xc8
 };
 
 static unsigned char dsa512_p[] = {
-    0x9D,
-    0x1B,
-    0x69,
-    0x8E,
-    0x26,
-    0xDB,
-    0xF2,
-    0x2B,
-    0x11,
-    0x70,
-    0x19,
-    0x86,
-    0xF6,
-    0x19,
-    0xC8,
-    0xF8,
-    0x19,
-    0xF2,
-    0x18,
-    0x53,
-    0x94,
-    0x46,
-    0x06,
-    0xD0,
-    0x62,
-    0x50,
-    0x33,
-    0x4B,
-    0x02,
-    0x3C,
-    0x52,
-    0x30,
-    0x03,
-    0x8B,
-    0x3B,
-    0xF9,
-    0x5F,
-    0xD1,
-    0x24,
-    0x06,
-    0x4F,
-    0x7B,
-    0x4C,
-    0xBA,
-    0xAA,
-    0x40,
-    0x9B,
-    0xFD,
-    0x96,
-    0xE4,
-    0x37,
-    0x33,
-    0xBB,
-    0x2D,
-    0x5A,
-    0xD7,
-    0x5A,
-    0x11,
-    0x40,
-    0x66,
-    0xA2,
-    0x76,
-    0x7D,
-    0x31,
+    0x9D, 0x1B, 0x69, 0x8E, 0x26, 0xDB, 0xF2, 0x2B, 0x11, 0x70,
+    0x19, 0x86, 0xF6, 0x19, 0xC8, 0xF8, 0x19, 0xF2, 0x18, 0x53,
+    0x94, 0x46, 0x06, 0xD0, 0x62, 0x50, 0x33, 0x4B, 0x02, 0x3C,
+    0x52, 0x30, 0x03, 0x8B, 0x3B, 0xF9, 0x5F, 0xD1, 0x24, 0x06,
+    0x4F, 0x7B, 0x4C, 0xBA, 0xAA, 0x40, 0x9B, 0xFD, 0x96, 0xE4,
+    0x37, 0x33, 0xBB, 0x2D, 0x5A, 0xD7, 0x5A, 0x11, 0x40, 0x66,
+    0xA2, 0x76, 0x7D, 0x31
 };
 
 static unsigned char dsa512_q[] = {
-    0xFB,
-    0x53,
-    0xEF,
-    0x50,
-    0xB4,
-    0x40,
-    0x92,
-    0x31,
-    0x56,
-    0x86,
-    0x53,
-    0x7A,
-    0xE8,
-    0x8B,
-    0x22,
-    0x9A,
-    0x49,
-    0xFB,
-    0x71,
-    0x8F,
+    0xFB, 0x53, 0xEF, 0x50, 0xB4, 0x40, 0x92, 0x31, 0x56, 0x86,
+    0x53, 0x7A, 0xE8, 0x8B, 0x22, 0x9A, 0x49, 0xFB, 0x71, 0x8F
 };
 
 static unsigned char dsa512_g[] = {
-    0x83,
-    0x3E,
-    0x88,
-    0xE5,
-    0xC5,
-    0x89,
-    0x73,
-    0xCE,
-    0x3B,
-    0x6C,
-    0x01,
-    0x49,
-    0xBF,
-    0xB3,
-    0xC7,
-    0x9F,
-    0x0A,
-    0xEA,
-    0x44,
-    0x91,
-    0xE5,
-    0x30,
-    0xAA,
-    0xD9,
-    0xBE,
-    0x5B,
-    0x5F,
-    0xB7,
-    0x10,
-    0xD7,
-    0x89,
-    0xB7,
-    0x8E,
-    0x74,
-    0xFB,
-    0xCF,
-    0x29,
-    0x1E,
-    0xEB,
-    0xA8,
-    0x2C,
-    0x54,
-    0x51,
-    0xB8,
-    0x10,
-    0xDE,
-    0xA0,
-    0xCE,
-    0x2F,
-    0xCC,
-    0x24,
-    0x6B,
-    0x90,
-    0x77,
-    0xDE,
-    0xA2,
-    0x68,
-    0xA6,
-    0x52,
-    0x12,
-    0xA2,
-    0x03,
-    0x9D,
-    0x20,
+    0x83, 0x3E, 0x88, 0xE5, 0xC5, 0x89, 0x73, 0xCE, 0x3B, 0x6C,
+    0x01, 0x49, 0xBF, 0xB3, 0xC7, 0x9F, 0x0A, 0xEA, 0x44, 0x91,
+    0xE5, 0x30, 0xAA, 0xD9, 0xBE, 0x5B, 0x5F, 0xB7, 0x10, 0xD7,
+    0x89, 0xB7, 0x8E, 0x74, 0xFB, 0xCF, 0x29, 0x1E, 0xEB, 0xA8,
+    0x2C, 0x54, 0x51, 0xB8, 0x10, 0xDE, 0xA0, 0xCE, 0x2F, 0xCC,
+    0x24, 0x6B, 0x90, 0x77, 0xDE, 0xA2, 0x68, 0xA6, 0x52, 0x12,
+    0xA2, 0x03, 0x9D, 0x20
 };
 
 static unsigned char dsa1024_priv[] = {
-    0x7d,
-    0x21,
-    0xda,
-    0xbb,
-    0x62,
-    0x15,
-    0x47,
-    0x36,
-    0x07,
-    0x67,
-    0x12,
-    0xe8,
-    0x8c,
-    0xaa,
-    0x1c,
-    0xcd,
-    0x38,
-    0x12,
-    0x61,
-    0x18,
+    0x7d, 0x21, 0xda, 0xbb, 0x62, 0x15, 0x47, 0x36, 0x07, 0x67,
+    0x12, 0xe8, 0x8c, 0xaa, 0x1c, 0xcd, 0x38, 0x12, 0x61, 0x18
 };
 
 static unsigned char dsa1024_pub[] = {
@@ -298,1111 +72,137 @@
 };
 
 static unsigned char dsa1024_p[] = {
-    0xA7,
-    0x3F,
-    0x6E,
-    0x85,
-    0xBF,
-    0x41,
-    0x6A,
-    0x29,
-    0x7D,
-    0xF0,
-    0x9F,
-    0x47,
-    0x19,
-    0x30,
-    0x90,
-    0x9A,
-    0x09,
-    0x1D,
-    0xDA,
-    0x6A,
-    0x33,
-    0x1E,
-    0xC5,
-    0x3D,
-    0x86,
-    0x96,
-    0xB3,
-    0x15,
-    0xE0,
-    0x53,
-    0x2E,
-    0x8F,
-    0xE0,
-    0x59,
-    0x82,
-    0x73,
-    0x90,
-    0x3E,
-    0x75,
-    0x31,
-    0x99,
-    0x47,
-    0x7A,
-    0x52,
-    0xFB,
-    0x85,
-    0xE4,
-    0xD9,
-    0xA6,
-    0x7B,
-    0x38,
-    0x9B,
-    0x68,
-    0x8A,
-    0x84,
-    0x9B,
-    0x87,
-    0xC6,
-    0x1E,
-    0xB5,
-    0x7E,
-    0x86,
-    0x4B,
-    0x53,
-    0x5B,
-    0x59,
-    0xCF,
-    0x71,
-    0x65,
-    0x19,
-    0x88,
-    0x6E,
-    0xCE,
-    0x66,
-    0xAE,
-    0x6B,
-    0x88,
-    0x36,
-    0xFB,
-    0xEC,
-    0x28,
-    0xDC,
-    0xC2,
-    0xD7,
-    0xA5,
-    0xBB,
-    0xE5,
-    0x2C,
-    0x39,
-    0x26,
-    0x4B,
-    0xDA,
-    0x9A,
-    0x70,
-    0x18,
-    0x95,
-    0x37,
-    0x95,
-    0x10,
-    0x56,
-    0x23,
-    0xF6,
-    0x15,
-    0xED,
-    0xBA,
-    0x04,
-    0x5E,
-    0xDE,
-    0x39,
-    0x4F,
-    0xFD,
-    0xB7,
-    0x43,
-    0x1F,
-    0xB5,
-    0xA4,
-    0x65,
-    0x6F,
-    0xCD,
-    0x80,
-    0x11,
-    0xE4,
-    0x70,
-    0x95,
-    0x5B,
-    0x50,
-    0xCD,
-    0x49,
+    0xA7, 0x3F, 0x6E, 0x85, 0xBF, 0x41, 0x6A, 0x29, 0x7D, 0xF0,
+    0x9F, 0x47, 0x19, 0x30, 0x90, 0x9A, 0x09, 0x1D, 0xDA, 0x6A,
+    0x33, 0x1E, 0xC5, 0x3D, 0x86, 0x96, 0xB3, 0x15, 0xE0, 0x53,
+    0x2E, 0x8F, 0xE0, 0x59, 0x82, 0x73, 0x90, 0x3E, 0x75, 0x31,
+    0x99, 0x47, 0x7A, 0x52, 0xFB, 0x85, 0xE4, 0xD9, 0xA6, 0x7B,
+    0x38, 0x9B, 0x68, 0x8A, 0x84, 0x9B, 0x87, 0xC6, 0x1E, 0xB5,
+    0x7E, 0x86, 0x4B, 0x53, 0x5B, 0x59, 0xCF, 0x71, 0x65, 0x19,
+    0x88, 0x6E, 0xCE, 0x66, 0xAE, 0x6B, 0x88, 0x36, 0xFB, 0xEC,
+    0x28, 0xDC, 0xC2, 0xD7, 0xA5, 0xBB, 0xE5, 0x2C, 0x39, 0x26,
+    0x4B, 0xDA, 0x9A, 0x70, 0x18, 0x95, 0x37, 0x95, 0x10, 0x56,
+    0x23, 0xF6, 0x15, 0xED, 0xBA, 0x04, 0x5E, 0xDE, 0x39, 0x4F,
+    0xFD, 0xB7, 0x43, 0x1F, 0xB5, 0xA4, 0x65, 0x6F, 0xCD, 0x80,
+    0x11, 0xE4, 0x70, 0x95, 0x5B, 0x50, 0xCD, 0x49
 };
 
 static unsigned char dsa1024_q[] = {
-    0xF7,
-    0x07,
-    0x31,
-    0xED,
-    0xFA,
-    0x6C,
-    0x06,
-    0x03,
-    0xD5,
-    0x85,
-    0x8A,
-    0x1C,
-    0xAC,
-    0x9C,
-    0x65,
-    0xE7,
-    0x50,
-    0x66,
-    0x65,
-    0x6F,
+    0xF7, 0x07, 0x31, 0xED, 0xFA, 0x6C, 0x06, 0x03, 0xD5, 0x85,
+    0x8A, 0x1C, 0xAC, 0x9C, 0x65, 0xE7, 0x50, 0x66, 0x65, 0x6F
 };
 
 static unsigned char dsa1024_g[] = {
-    0x4D,
-    0xDF,
-    0x4C,
-    0x03,
-    0xA6,
-    0x91,
-    0x8A,
-    0xF5,
-    0x19,
-    0x6F,
-    0x50,
-    0x46,
-    0x25,
-    0x99,
-    0xE5,
-    0x68,
-    0x6F,
-    0x30,
-    0xE3,
-    0x69,
-    0xE1,
-    0xE5,
-    0xB3,
-    0x5D,
-    0x98,
-    0xBB,
-    0x28,
-    0x86,
-    0x48,
-    0xFC,
-    0xDE,
-    0x99,
-    0x04,
-    0x3F,
-    0x5F,
-    0x88,
-    0x0C,
-    0x9C,
-    0x73,
-    0x24,
-    0x0D,
-    0x20,
-    0x5D,
-    0xB9,
-    0x2A,
-    0x9A,
-    0x3F,
-    0x18,
-    0x96,
-    0x27,
-    0xE4,
-    0x62,
-    0x87,
-    0xC1,
-    0x7B,
-    0x74,
-    0x62,
-    0x53,
-    0xFC,
-    0x61,
-    0x27,
-    0xA8,
-    0x7A,
-    0x91,
-    0x09,
-    0x9D,
-    0xB6,
-    0xF1,
-    0x4D,
-    0x9C,
-    0x54,
-    0x0F,
-    0x58,
-    0x06,
-    0xEE,
-    0x49,
-    0x74,
-    0x07,
-    0xCE,
-    0x55,
-    0x7E,
-    0x23,
-    0xCE,
-    0x16,
-    0xF6,
-    0xCA,
-    0xDC,
-    0x5A,
-    0x61,
-    0x01,
-    0x7E,
-    0xC9,
-    0x71,
-    0xB5,
-    0x4D,
-    0xF6,
-    0xDC,
-    0x34,
-    0x29,
-    0x87,
-    0x68,
-    0xF6,
-    0x5E,
-    0x20,
-    0x93,
-    0xB3,
-    0xDB,
-    0xF5,
-    0xE4,
-    0x09,
-    0x6C,
-    0x41,
-    0x17,
-    0x95,
-    0x92,
-    0xEB,
-    0x01,
-    0xB5,
-    0x73,
-    0xA5,
-    0x6A,
-    0x7E,
-    0xD8,
-    0x32,
-    0xED,
-    0x0E,
-    0x02,
-    0xB8,
+    0x4D, 0xDF, 0x4C, 0x03, 0xA6, 0x91, 0x8A, 0xF5, 0x19, 0x6F,
+    0x50, 0x46, 0x25, 0x99, 0xE5, 0x68, 0x6F, 0x30, 0xE3, 0x69,
+    0xE1, 0xE5, 0xB3, 0x5D, 0x98, 0xBB, 0x28, 0x86, 0x48, 0xFC,
+    0xDE, 0x99, 0x04, 0x3F, 0x5F, 0x88, 0x0C, 0x9C, 0x73, 0x24,
+    0x0D, 0x20, 0x5D, 0xB9, 0x2A, 0x9A, 0x3F, 0x18, 0x96, 0x27,
+    0xE4, 0x62, 0x87, 0xC1, 0x7B, 0x74, 0x62, 0x53, 0xFC, 0x61,
+    0x27, 0xA8, 0x7A, 0x91, 0x09, 0x9D, 0xB6, 0xF1, 0x4D, 0x9C,
+    0x54, 0x0F, 0x58, 0x06, 0xEE, 0x49, 0x74, 0x07, 0xCE, 0x55,
+    0x7E, 0x23, 0xCE, 0x16, 0xF6, 0xCA, 0xDC, 0x5A, 0x61, 0x01,
+    0x7E, 0xC9, 0x71, 0xB5, 0x4D, 0xF6, 0xDC, 0x34, 0x29, 0x87,
+    0x68, 0xF6, 0x5E, 0x20, 0x93, 0xB3, 0xDB, 0xF5, 0xE4, 0x09,
+    0x6C, 0x41, 0x17, 0x95, 0x92, 0xEB, 0x01, 0xB5, 0x73, 0xA5,
+    0x6A, 0x7E, 0xD8, 0x32, 0xED, 0x0E, 0x02, 0xB8
 };
 
 static unsigned char dsa2048_priv[] = {
-    0x32,
-    0x67,
-    0x92,
-    0xf6,
-    0xc4,
-    0xe2,
-    0xe2,
-    0xe8,
-    0xa0,
-    0x8b,
-    0x6b,
-    0x45,
-    0x0c,
-    0x8a,
-    0x76,
-    0xb0,
-    0xee,
-    0xcf,
-    0x91,
-    0xa7,
+    0x32, 0x67, 0x92, 0xf6, 0xc4, 0xe2, 0xe2, 0xe8, 0xa0, 0x8b,
+    0x6b, 0x45, 0x0c, 0x8a, 0x76, 0xb0, 0xee, 0xcf, 0x91, 0xa7
 };
 
 static unsigned char dsa2048_pub[] = {
-    0x17,
-    0x8f,
-    0xa8,
-    0x11,
-    0x84,
-    0x92,
-    0xec,
-    0x83,
-    0x47,
-    0xc7,
-    0x6a,
-    0xb0,
-    0x92,
-    0xaf,
-    0x5a,
-    0x20,
-    0x37,
-    0xa3,
-    0x64,
-    0x79,
-    0xd2,
-    0xd0,
-    0x3d,
-    0xcd,
-    0xe0,
-    0x61,
-    0x88,
-    0x88,
-    0x21,
-    0xcc,
-    0x74,
-    0x5d,
-    0xce,
-    0x4c,
-    0x51,
-    0x47,
-    0xf0,
-    0xc5,
-    0x5c,
-    0x4c,
-    0x82,
-    0x7a,
-    0xaf,
-    0x72,
-    0xad,
-    0xb9,
-    0xe0,
-    0x53,
-    0xf2,
-    0x78,
-    0xb7,
-    0xf0,
-    0xb5,
-    0x48,
-    0x7f,
-    0x8a,
-    0x3a,
-    0x18,
-    0xd1,
-    0x9f,
-    0x8b,
-    0x7d,
-    0xa5,
-    0x47,
-    0xb7,
-    0x95,
-    0xab,
-    0x98,
-    0xf8,
-    0x7b,
-    0x74,
-    0x50,
-    0x56,
-    0x8e,
-    0x57,
-    0xf0,
-    0xee,
-    0xf5,
-    0xb7,
-    0xba,
-    0xab,
-    0x85,
-    0x86,
-    0xf9,
-    0x2b,
-    0xef,
-    0x41,
-    0x56,
-    0xa0,
-    0xa4,
-    0x9f,
-    0xb7,
-    0x38,
-    0x00,
-    0x46,
-    0x0a,
-    0xa6,
-    0xf1,
-    0xfc,
-    0x1f,
-    0xd8,
-    0x4e,
-    0x85,
-    0x44,
-    0x92,
-    0x43,
-    0x21,
-    0x5d,
-    0x6e,
-    0xcc,
-    0xc2,
-    0xcb,
-    0x26,
-    0x31,
-    0x0d,
-    0x21,
-    0xc4,
-    0xbd,
-    0x8d,
-    0x24,
-    0xbc,
-    0xd9,
-    0x18,
-    0x19,
-    0xd7,
-    0xdc,
-    0xf1,
-    0xe7,
-    0x93,
-    0x50,
-    0x48,
-    0x03,
-    0x2c,
-    0xae,
-    0x2e,
-    0xe7,
-    0x49,
-    0x88,
-    0x5f,
-    0x93,
-    0x57,
-    0x27,
-    0x99,
-    0x36,
-    0xb4,
-    0x20,
-    0xab,
-    0xfc,
-    0xa7,
-    0x2b,
-    0xf2,
-    0xd9,
-    0x98,
-    0xd7,
-    0xd4,
-    0x34,
-    0x9d,
-    0x96,
-    0x50,
-    0x58,
-    0x9a,
-    0xea,
-    0x54,
-    0xf3,
-    0xee,
-    0xf5,
-    0x63,
-    0x14,
-    0xee,
-    0x85,
-    0x83,
-    0x74,
-    0x76,
-    0xe1,
-    0x52,
-    0x95,
-    0xc3,
-    0xf7,
-    0xeb,
-    0x04,
-    0x04,
-    0x7b,
-    0xa7,
-    0x28,
-    0x1b,
-    0xcc,
-    0xea,
-    0x4a,
-    0x4e,
-    0x84,
-    0xda,
-    0xd8,
-    0x9c,
-    0x79,
-    0xd8,
-    0x9b,
-    0x66,
-    0x89,
-    0x2f,
-    0xcf,
-    0xac,
-    0xd7,
-    0x79,
-    0xf9,
-    0xa9,
-    0xd8,
-    0x45,
-    0x13,
-    0x78,
-    0xb9,
-    0x00,
-    0x14,
-    0xc9,
-    0x7e,
-    0x22,
-    0x51,
-    0x86,
-    0x67,
-    0xb0,
-    0x9f,
-    0x26,
-    0x11,
-    0x23,
-    0xc8,
-    0x38,
-    0xd7,
-    0x70,
-    0x1d,
-    0x15,
-    0x8e,
-    0x4d,
-    0x4f,
-    0x95,
-    0x97,
-    0x40,
-    0xa1,
-    0xc2,
-    0x7e,
-    0x01,
-    0x18,
-    0x72,
-    0xf4,
-    0x10,
-    0xe6,
-    0x8d,
-    0x52,
-    0x16,
-    0x7f,
-    0xf2,
-    0xc9,
-    0xf8,
-    0x33,
-    0x8b,
-    0x33,
-    0xb7,
-    0xce,
+    0x17, 0x8f, 0xa8, 0x11, 0x84, 0x92, 0xec, 0x83, 0x47, 0xc7,
+    0x6a, 0xb0, 0x92, 0xaf, 0x5a, 0x20, 0x37, 0xa3, 0x64, 0x79,
+    0xd2, 0xd0, 0x3d, 0xcd, 0xe0, 0x61, 0x88, 0x88, 0x21, 0xcc,
+    0x74, 0x5d, 0xce, 0x4c, 0x51, 0x47, 0xf0, 0xc5, 0x5c, 0x4c,
+    0x82, 0x7a, 0xaf, 0x72, 0xad, 0xb9, 0xe0, 0x53, 0xf2, 0x78,
+    0xb7, 0xf0, 0xb5, 0x48, 0x7f, 0x8a, 0x3a, 0x18, 0xd1, 0x9f,
+    0x8b, 0x7d, 0xa5, 0x47, 0xb7, 0x95, 0xab, 0x98, 0xf8, 0x7b,
+    0x74, 0x50, 0x56, 0x8e, 0x57, 0xf0, 0xee, 0xf5, 0xb7, 0xba,
+    0xab, 0x85, 0x86, 0xf9, 0x2b, 0xef, 0x41, 0x56, 0xa0, 0xa4,
+    0x9f, 0xb7, 0x38, 0x00, 0x46, 0x0a, 0xa6, 0xf1, 0xfc, 0x1f,
+    0xd8, 0x4e, 0x85, 0x44, 0x92, 0x43, 0x21, 0x5d, 0x6e, 0xcc,
+    0xc2, 0xcb, 0x26, 0x31, 0x0d, 0x21, 0xc4, 0xbd, 0x8d, 0x24,
+    0xbc, 0xd9, 0x18, 0x19, 0xd7, 0xdc, 0xf1, 0xe7, 0x93, 0x50,
+    0x48, 0x03, 0x2c, 0xae, 0x2e, 0xe7, 0x49, 0x88, 0x5f, 0x93,
+    0x57, 0x27, 0x99, 0x36, 0xb4, 0x20, 0xab, 0xfc, 0xa7, 0x2b,
+    0xf2, 0xd9, 0x98, 0xd7, 0xd4, 0x34, 0x9d, 0x96, 0x50, 0x58,
+    0x9a, 0xea, 0x54, 0xf3, 0xee, 0xf5, 0x63, 0x14, 0xee, 0x85,
+    0x83, 0x74, 0x76, 0xe1, 0x52, 0x95, 0xc3, 0xf7, 0xeb, 0x04,
+    0x04, 0x7b, 0xa7, 0x28, 0x1b, 0xcc, 0xea, 0x4a, 0x4e, 0x84,
+    0xda, 0xd8, 0x9c, 0x79, 0xd8, 0x9b, 0x66, 0x89, 0x2f, 0xcf,
+    0xac, 0xd7, 0x79, 0xf9, 0xa9, 0xd8, 0x45, 0x13, 0x78, 0xb9,
+    0x00, 0x14, 0xc9, 0x7e, 0x22, 0x51, 0x86, 0x67, 0xb0, 0x9f,
+    0x26, 0x11, 0x23, 0xc8, 0x38, 0xd7, 0x70, 0x1d, 0x15, 0x8e,
+    0x4d, 0x4f, 0x95, 0x97, 0x40, 0xa1, 0xc2, 0x7e, 0x01, 0x18,
+    0x72, 0xf4, 0x10, 0xe6, 0x8d, 0x52, 0x16, 0x7f, 0xf2, 0xc9,
+    0xf8, 0x33, 0x8b, 0x33, 0xb7, 0xce
 };
 
 static unsigned char dsa2048_p[] = {
-    0xA0,
-    0x25,
-    0xFA,
-    0xAD,
-    0xF4,
-    0x8E,
-    0xB9,
-    0xE5,
-    0x99,
-    0xF3,
-    0x5D,
-    0x6F,
-    0x4F,
-    0x83,
-    0x34,
-    0xE2,
-    0x7E,
-    0xCF,
-    0x6F,
-    0xBF,
-    0x30,
-    0xAF,
-    0x6F,
-    0x81,
-    0xEB,
-    0xF8,
-    0xC4,
-    0x13,
-    0xD9,
-    0xA0,
-    0x5D,
-    0x8B,
-    0x5C,
-    0x8E,
-    0xDC,
-    0xC2,
-    0x1D,
-    0x0B,
-    0x41,
-    0x32,
-    0xB0,
-    0x1F,
-    0xFE,
-    0xEF,
-    0x0C,
-    0xC2,
-    0xA2,
-    0x7E,
-    0x68,
-    0x5C,
-    0x28,
-    0x21,
-    0xE9,
-    0xF5,
-    0xB1,
-    0x58,
-    0x12,
-    0x63,
-    0x4C,
-    0x19,
-    0x4E,
-    0xFF,
-    0x02,
-    0x4B,
-    0x92,
-    0xED,
-    0xD2,
-    0x07,
-    0x11,
-    0x4D,
-    0x8C,
-    0x58,
-    0x16,
-    0x5C,
-    0x55,
-    0x8E,
-    0xAD,
-    0xA3,
-    0x67,
-    0x7D,
-    0xB9,
-    0x86,
-    0x6E,
-    0x0B,
-    0xE6,
-    0x54,
-    0x6F,
-    0x40,
-    0xAE,
-    0x0E,
-    0x67,
-    0x4C,
-    0xF9,
-    0x12,
-    0x5B,
-    0x3C,
-    0x08,
-    0x7A,
-    0xF7,
-    0xFC,
-    0x67,
-    0x86,
-    0x69,
-    0xE7,
-    0x0A,
-    0x94,
-    0x40,
-    0xBF,
-    0x8B,
-    0x76,
-    0xFE,
-    0x26,
-    0xD1,
-    0xF2,
-    0xA1,
-    0x1A,
-    0x84,
-    0xA1,
-    0x43,
-    0x56,
-    0x28,
-    0xBC,
-    0x9A,
-    0x5F,
-    0xD7,
-    0x3B,
-    0x69,
-    0x89,
-    0x8A,
-    0x36,
-    0x2C,
-    0x51,
-    0xDF,
-    0x12,
-    0x77,
-    0x2F,
-    0x57,
-    0x7B,
-    0xA0,
-    0xAA,
-    0xDD,
-    0x7F,
-    0xA1,
-    0x62,
-    0x3B,
-    0x40,
-    0x7B,
-    0x68,
-    0x1A,
-    0x8F,
-    0x0D,
-    0x38,
-    0xBB,
-    0x21,
-    0x5D,
-    0x18,
-    0xFC,
-    0x0F,
-    0x46,
-    0xF7,
-    0xA3,
-    0xB0,
-    0x1D,
-    0x23,
-    0xC3,
-    0xD2,
-    0xC7,
-    0x72,
-    0x51,
-    0x18,
-    0xDF,
-    0x46,
-    0x95,
-    0x79,
-    0xD9,
-    0xBD,
-    0xB5,
-    0x19,
-    0x02,
-    0x2C,
-    0x87,
-    0xDC,
-    0xE7,
-    0x57,
-    0x82,
-    0x7E,
-    0xF1,
-    0x8B,
-    0x06,
-    0x3D,
-    0x00,
-    0xA5,
-    0x7B,
-    0x6B,
-    0x26,
-    0x27,
-    0x91,
-    0x0F,
-    0x6A,
-    0x77,
-    0xE4,
-    0xD5,
-    0x04,
-    0xE4,
-    0x12,
-    0x2C,
-    0x42,
-    0xFF,
-    0xD2,
-    0x88,
-    0xBB,
-    0xD3,
-    0x92,
-    0xA0,
-    0xF9,
-    0xC8,
-    0x51,
-    0x64,
-    0x14,
-    0x5C,
-    0xD8,
-    0xF9,
-    0x6C,
-    0x47,
-    0x82,
-    0xB4,
-    0x1C,
-    0x7F,
-    0x09,
-    0xB8,
-    0xF0,
-    0x25,
-    0x83,
-    0x1D,
-    0x3F,
-    0x3F,
-    0x05,
-    0xB3,
-    0x21,
-    0x0A,
-    0x5D,
-    0xA7,
-    0xD8,
-    0x54,
-    0xC3,
-    0x65,
-    0x7D,
-    0xC3,
-    0xB0,
-    0x1D,
-    0xBF,
-    0xAE,
-    0xF8,
-    0x68,
-    0xCF,
-    0x9B,
+    0xA0, 0x25, 0xFA, 0xAD, 0xF4, 0x8E, 0xB9, 0xE5, 0x99, 0xF3,
+    0x5D, 0x6F, 0x4F, 0x83, 0x34, 0xE2, 0x7E, 0xCF, 0x6F, 0xBF,
+    0x30, 0xAF, 0x6F, 0x81, 0xEB, 0xF8, 0xC4, 0x13, 0xD9, 0xA0,
+    0x5D, 0x8B, 0x5C, 0x8E, 0xDC, 0xC2, 0x1D, 0x0B, 0x41, 0x32,
+    0xB0, 0x1F, 0xFE, 0xEF, 0x0C, 0xC2, 0xA2, 0x7E, 0x68, 0x5C,
+    0x28, 0x21, 0xE9, 0xF5, 0xB1, 0x58, 0x12, 0x63, 0x4C, 0x19,
+    0x4E, 0xFF, 0x02, 0x4B, 0x92, 0xED, 0xD2, 0x07, 0x11, 0x4D,
+    0x8C, 0x58, 0x16, 0x5C, 0x55, 0x8E, 0xAD, 0xA3, 0x67, 0x7D,
+    0xB9, 0x86, 0x6E, 0x0B, 0xE6, 0x54, 0x6F, 0x40, 0xAE, 0x0E,
+    0x67, 0x4C, 0xF9, 0x12, 0x5B, 0x3C, 0x08, 0x7A, 0xF7, 0xFC,
+    0x67, 0x86, 0x69, 0xE7, 0x0A, 0x94, 0x40, 0xBF, 0x8B, 0x76,
+    0xFE, 0x26, 0xD1, 0xF2, 0xA1, 0x1A, 0x84, 0xA1, 0x43, 0x56,
+    0x28, 0xBC, 0x9A, 0x5F, 0xD7, 0x3B, 0x69, 0x89, 0x8A, 0x36,
+    0x2C, 0x51, 0xDF, 0x12, 0x77, 0x2F, 0x57, 0x7B, 0xA0, 0xAA,
+    0xDD, 0x7F, 0xA1, 0x62, 0x3B, 0x40, 0x7B, 0x68, 0x1A, 0x8F,
+    0x0D, 0x38, 0xBB, 0x21, 0x5D, 0x18, 0xFC, 0x0F, 0x46, 0xF7,
+    0xA3, 0xB0, 0x1D, 0x23, 0xC3, 0xD2, 0xC7, 0x72, 0x51, 0x18,
+    0xDF, 0x46, 0x95, 0x79, 0xD9, 0xBD, 0xB5, 0x19, 0x02, 0x2C,
+    0x87, 0xDC, 0xE7, 0x57, 0x82, 0x7E, 0xF1, 0x8B, 0x06, 0x3D,
+    0x00, 0xA5, 0x7B, 0x6B, 0x26, 0x27, 0x91, 0x0F, 0x6A, 0x77,
+    0xE4, 0xD5, 0x04, 0xE4, 0x12, 0x2C, 0x42, 0xFF, 0xD2, 0x88,
+    0xBB, 0xD3, 0x92, 0xA0, 0xF9, 0xC8, 0x51, 0x64, 0x14, 0x5C,
+    0xD8, 0xF9, 0x6C, 0x47, 0x82, 0xB4, 0x1C, 0x7F, 0x09, 0xB8,
+    0xF0, 0x25, 0x83, 0x1D, 0x3F, 0x3F, 0x05, 0xB3, 0x21, 0x0A,
+    0x5D, 0xA7, 0xD8, 0x54, 0xC3, 0x65, 0x7D, 0xC3, 0xB0, 0x1D,
+    0xBF, 0xAE, 0xF8, 0x68, 0xCF, 0x9B
 };
 
 static unsigned char dsa2048_q[] = {
-    0x97,
-    0xE7,
-    0x33,
-    0x4D,
-    0xD3,
-    0x94,
-    0x3E,
-    0x0B,
-    0xDB,
-    0x62,
-    0x74,
-    0xC6,
-    0xA1,
-    0x08,
-    0xDD,
-    0x19,
-    0xA3,
-    0x75,
-    0x17,
-    0x1B,
+    0x97, 0xE7, 0x33, 0x4D, 0xD3, 0x94, 0x3E, 0x0B, 0xDB, 0x62,
+    0x74, 0xC6, 0xA1, 0x08, 0xDD, 0x19, 0xA3, 0x75, 0x17, 0x1B
 };
 
 static unsigned char dsa2048_g[] = {
-    0x2C,
-    0x78,
-    0x16,
-    0x59,
-    0x34,
-    0x63,
-    0xF4,
-    0xF3,
-    0x92,
-    0xFC,
-    0xB5,
-    0xA5,
-    0x4F,
-    0x13,
-    0xDE,
-    0x2F,
-    0x1C,
-    0xA4,
-    0x3C,
-    0xAE,
-    0xAD,
-    0x38,
-    0x3F,
-    0x7E,
-    0x90,
-    0xBF,
-    0x96,
-    0xA6,
-    0xAE,
-    0x25,
-    0x90,
-    0x72,
-    0xF5,
-    0x8E,
-    0x80,
-    0x0C,
-    0x39,
-    0x1C,
-    0xD9,
-    0xEC,
-    0xBA,
-    0x90,
-    0x5B,
-    0x3A,
-    0xE8,
-    0x58,
-    0x6C,
-    0x9E,
-    0x30,
-    0x42,
-    0x37,
-    0x02,
-    0x31,
-    0x82,
-    0xBC,
-    0x6A,
-    0xDF,
-    0x6A,
-    0x09,
-    0x29,
-    0xE3,
-    0xC0,
-    0x46,
-    0xD1,
-    0xCB,
-    0x85,
-    0xEC,
-    0x0C,
-    0x30,
-    0x5E,
-    0xEA,
-    0xC8,
-    0x39,
-    0x8E,
-    0x22,
-    0x9F,
-    0x22,
-    0x10,
-    0xD2,
-    0x34,
-    0x61,
-    0x68,
-    0x37,
-    0x3D,
-    0x2E,
-    0x4A,
-    0x5B,
-    0x9A,
-    0xF5,
-    0xC1,
-    0x48,
-    0xC6,
-    0xF6,
-    0xDC,
-    0x63,
-    0x1A,
-    0xD3,
-    0x96,
-    0x64,
-    0xBA,
-    0x34,
-    0xC9,
-    0xD1,
-    0xA0,
-    0xD1,
-    0xAE,
-    0x6C,
-    0x2F,
-    0x48,
-    0x17,
-    0x93,
-    0x14,
-    0x43,
-    0xED,
-    0xF0,
-    0x21,
-    0x30,
-    0x19,
-    0xC3,
-    0x1B,
-    0x5F,
-    0xDE,
-    0xA3,
-    0xF0,
-    0x70,
-    0x78,
-    0x18,
-    0xE1,
-    0xA8,
-    0xE4,
-    0xEE,
-    0x2E,
-    0x00,
-    0xA5,
-    0xE4,
-    0xB3,
-    0x17,
-    0xC8,
-    0x0C,
-    0x7D,
-    0x6E,
-    0x42,
-    0xDC,
-    0xB7,
-    0x46,
-    0x00,
-    0x36,
-    0x4D,
-    0xD4,
-    0x46,
-    0xAA,
-    0x3D,
-    0x3C,
-    0x46,
-    0x89,
-    0x40,
-    0xBF,
-    0x1D,
-    0x84,
-    0x77,
-    0x0A,
-    0x75,
-    0xF3,
-    0x87,
-    0x1D,
-    0x08,
-    0x4C,
-    0xA6,
-    0xD1,
-    0xA9,
-    0x1C,
-    0x1E,
-    0x12,
-    0x1E,
-    0xE1,
-    0xC7,
-    0x30,
-    0x28,
-    0x76,
-    0xA5,
-    0x7F,
-    0x6C,
-    0x85,
-    0x96,
-    0x2B,
-    0x6F,
-    0xDB,
-    0x80,
-    0x66,
-    0x26,
-    0xAE,
-    0xF5,
-    0x93,
-    0xC7,
-    0x8E,
-    0xAE,
-    0x9A,
-    0xED,
-    0xE4,
-    0xCA,
-    0x04,
-    0xEA,
-    0x3B,
-    0x72,
-    0xEF,
-    0xDC,
-    0x87,
-    0xED,
-    0x0D,
-    0xA5,
-    0x4C,
-    0x4A,
-    0xDD,
-    0x71,
-    0x22,
-    0x64,
-    0x59,
-    0x69,
-    0x4E,
-    0x8E,
-    0xBF,
-    0x43,
-    0xDC,
-    0xAB,
-    0x8E,
-    0x66,
-    0xBB,
-    0x01,
-    0xB6,
-    0xF4,
-    0xE7,
-    0xFD,
-    0xD2,
-    0xAD,
-    0x9F,
-    0x36,
-    0xC1,
-    0xA0,
-    0x29,
-    0x99,
-    0xD1,
-    0x96,
-    0x70,
-    0x59,
-    0x06,
-    0x78,
-    0x35,
-    0xBD,
-    0x65,
-    0x55,
-    0x52,
-    0x9E,
-    0xF8,
-    0xB2,
-    0xE5,
-    0x38,
+    0x2C, 0x78, 0x16, 0x59, 0x34, 0x63, 0xF4, 0xF3, 0x92, 0xFC,
+    0xB5, 0xA5, 0x4F, 0x13, 0xDE, 0x2F, 0x1C, 0xA4, 0x3C, 0xAE,
+    0xAD, 0x38, 0x3F, 0x7E, 0x90, 0xBF, 0x96, 0xA6, 0xAE, 0x25,
+    0x90, 0x72, 0xF5, 0x8E, 0x80, 0x0C, 0x39, 0x1C, 0xD9, 0xEC,
+    0xBA, 0x90, 0x5B, 0x3A, 0xE8, 0x58, 0x6C, 0x9E, 0x30, 0x42,
+    0x37, 0x02, 0x31, 0x82, 0xBC, 0x6A, 0xDF, 0x6A, 0x09, 0x29,
+    0xE3, 0xC0, 0x46, 0xD1, 0xCB, 0x85, 0xEC, 0x0C, 0x30, 0x5E,
+    0xEA, 0xC8, 0x39, 0x8E, 0x22, 0x9F, 0x22, 0x10, 0xD2, 0x34,
+    0x61, 0x68, 0x37, 0x3D, 0x2E, 0x4A, 0x5B, 0x9A, 0xF5, 0xC1,
+    0x48, 0xC6, 0xF6, 0xDC, 0x63, 0x1A, 0xD3, 0x96, 0x64, 0xBA,
+    0x34, 0xC9, 0xD1, 0xA0, 0xD1, 0xAE, 0x6C, 0x2F, 0x48, 0x17,
+    0x93, 0x14, 0x43, 0xED, 0xF0, 0x21, 0x30, 0x19, 0xC3, 0x1B,
+    0x5F, 0xDE, 0xA3, 0xF0, 0x70, 0x78, 0x18, 0xE1, 0xA8, 0xE4,
+    0xEE, 0x2E, 0x00, 0xA5, 0xE4, 0xB3, 0x17, 0xC8, 0x0C, 0x7D,
+    0x6E, 0x42, 0xDC, 0xB7, 0x46, 0x00, 0x36, 0x4D, 0xD4, 0x46,
+    0xAA, 0x3D, 0x3C, 0x46, 0x89, 0x40, 0xBF, 0x1D, 0x84, 0x77,
+    0x0A, 0x75, 0xF3, 0x87, 0x1D, 0x08, 0x4C, 0xA6, 0xD1, 0xA9,
+    0x1C, 0x1E, 0x12, 0x1E, 0xE1, 0xC7, 0x30, 0x28, 0x76, 0xA5,
+    0x7F, 0x6C, 0x85, 0x96, 0x2B, 0x6F, 0xDB, 0x80, 0x66, 0x26,
+    0xAE, 0xF5, 0x93, 0xC7, 0x8E, 0xAE, 0x9A, 0xED, 0xE4, 0xCA,
+    0x04, 0xEA, 0x3B, 0x72, 0xEF, 0xDC, 0x87, 0xED, 0x0D, 0xA5,
+    0x4C, 0x4A, 0xDD, 0x71, 0x22, 0x64, 0x59, 0x69, 0x4E, 0x8E,
+    0xBF, 0x43, 0xDC, 0xAB, 0x8E, 0x66, 0xBB, 0x01, 0xB6, 0xF4,
+    0xE7, 0xFD, 0xD2, 0xAD, 0x9F, 0x36, 0xC1, 0xA0, 0x29, 0x99,
+    0xD1, 0x96, 0x70, 0x59, 0x06, 0x78, 0x35, 0xBD, 0x65, 0x55,
+    0x52, 0x9E, 0xF8, 0xB2, 0xE5, 0x38
 };
 
 typedef struct testdsa_st {
diff -Nru openssl-3.5.6/apps/testrsa.h openssl-3.5.7/apps/testrsa.h
--- openssl-3.5.6/apps/testrsa.h	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/apps/testrsa.h	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -8,2129 +8,225 @@
  */
 
 static unsigned char test512[] = {
-    0x30,
-    0x82,
-    0x01,
-    0x3a,
-    0x02,
-    0x01,
-    0x00,
-    0x02,
-    0x41,
-    0x00,
-    0xd6,
-    0x33,
-    0xb9,
-    0xc8,
-    0xfb,
-    0x4f,
-    0x3c,
-    0x7d,
-    0xc0,
-    0x01,
-    0x86,
-    0xd0,
-    0xe7,
-    0xa0,
-    0x55,
-    0xf2,
-    0x95,
-    0x93,
-    0xcc,
-    0x4f,
-    0xb7,
-    0x5b,
-    0x67,
-    0x5b,
-    0x94,
-    0x68,
-    0xc9,
-    0x34,
-    0x15,
-    0xde,
-    0xa5,
-    0x2e,
-    0x1c,
-    0x33,
-    0xc2,
-    0x6e,
-    0xfc,
-    0x34,
-    0x5e,
-    0x71,
-    0x13,
-    0xb7,
-    0xd6,
-    0xee,
-    0xd8,
-    0xa5,
-    0x65,
-    0x05,
-    0x72,
-    0x87,
-    0xa8,
-    0xb0,
-    0x77,
-    0xfe,
-    0x57,
-    0xf5,
-    0xfc,
-    0x5f,
-    0x55,
-    0x83,
-    0x87,
-    0xdd,
-    0x57,
-    0x49,
-    0x02,
-    0x03,
-    0x01,
-    0x00,
-    0x01,
-    0x02,
-    0x41,
-    0x00,
-    0xa7,
-    0xf7,
-    0x91,
-    0xc5,
-    0x0f,
-    0x84,
-    0x57,
-    0xdc,
-    0x07,
-    0xf7,
-    0x6a,
-    0x7f,
-    0x60,
-    0x52,
-    0xb3,
-    0x72,
-    0xf1,
-    0x66,
-    0x1f,
-    0x7d,
-    0x97,
-    0x3b,
-    0x9e,
-    0xb6,
-    0x0a,
-    0x8f,
-    0x8c,
-    0xcf,
-    0x42,
-    0x23,
-    0x00,
-    0x04,
-    0xd4,
-    0x28,
-    0x0e,
-    0x1c,
-    0x90,
-    0xc4,
-    0x11,
-    0x25,
-    0x25,
-    0xa5,
-    0x93,
-    0xa5,
-    0x2f,
-    0x70,
-    0x02,
-    0xdf,
-    0x81,
-    0x9c,
-    0x49,
-    0x03,
-    0xa0,
-    0xf8,
-    0x6d,
-    0x54,
-    0x2e,
-    0x26,
-    0xde,
-    0xaa,
-    0x85,
-    0x59,
-    0xa8,
-    0x31,
-    0x02,
-    0x21,
-    0x00,
-    0xeb,
-    0x47,
-    0xd7,
-    0x3b,
-    0xf6,
-    0xc3,
-    0xdd,
-    0x5a,
-    0x46,
-    0xc5,
-    0xb9,
-    0x2b,
-    0x9a,
-    0xa0,
-    0x09,
-    0x8f,
-    0xa6,
-    0xfb,
-    0xf3,
-    0x78,
-    0x7a,
-    0x33,
-    0x70,
-    0x9d,
-    0x0f,
-    0x42,
-    0x6b,
-    0x13,
-    0x68,
-    0x24,
-    0xd3,
-    0x15,
-    0x02,
-    0x21,
-    0x00,
-    0xe9,
-    0x10,
-    0xb0,
-    0xb3,
-    0x0d,
-    0xe2,
-    0x82,
-    0x68,
-    0x77,
-    0x8a,
-    0x6e,
-    0x7c,
-    0xda,
-    0xbc,
-    0x3e,
-    0x53,
-    0x83,
-    0xfb,
-    0xd6,
-    0x22,
-    0xe7,
-    0xb5,
-    0xae,
-    0x6e,
-    0x80,
-    0xda,
-    0x00,
-    0x55,
-    0x97,
-    0xc1,
-    0xd0,
-    0x65,
-    0x02,
-    0x20,
-    0x4c,
-    0xf8,
-    0x73,
-    0xb1,
-    0x6a,
-    0x49,
-    0x29,
-    0x61,
-    0x1f,
-    0x46,
-    0x10,
-    0x0d,
-    0xf3,
-    0xc7,
-    0xe7,
-    0x58,
-    0xd7,
-    0x88,
-    0x15,
-    0x5e,
-    0x94,
-    0x9b,
-    0xbf,
-    0x7b,
-    0xa2,
-    0x42,
-    0x58,
-    0x45,
-    0x41,
-    0x0c,
-    0xcb,
-    0x01,
-    0x02,
-    0x20,
-    0x12,
-    0x11,
-    0xba,
-    0x31,
-    0x57,
-    0x9d,
-    0x3d,
-    0x11,
-    0x0e,
-    0x5b,
-    0x8c,
-    0x2f,
-    0x5f,
-    0xe2,
-    0x02,
-    0x4f,
-    0x05,
-    0x47,
-    0x8c,
-    0x15,
-    0x8e,
-    0xb3,
-    0x56,
-    0x3f,
-    0xb8,
-    0xfb,
-    0xad,
-    0xd4,
-    0xf4,
-    0xfc,
-    0x10,
-    0xc5,
-    0x02,
-    0x20,
-    0x18,
-    0xa1,
-    0x29,
-    0x99,
-    0x5b,
-    0xd9,
-    0xc8,
-    0xd4,
-    0xfc,
-    0x49,
-    0x7a,
-    0x2a,
-    0x21,
-    0x2c,
-    0x49,
-    0xe4,
-    0x4f,
-    0xeb,
-    0xef,
-    0x51,
-    0xf1,
-    0xab,
-    0x6d,
-    0xfb,
-    0x4b,
-    0x14,
-    0xe9,
-    0x4b,
-    0x52,
-    0xb5,
-    0x82,
-    0x2c,
+    0x30, 0x82, 0x01, 0x3a, 0x02, 0x01, 0x00, 0x02, 0x41, 0x00,
+    0xd6, 0x33, 0xb9, 0xc8, 0xfb, 0x4f, 0x3c, 0x7d, 0xc0, 0x01,
+    0x86, 0xd0, 0xe7, 0xa0, 0x55, 0xf2, 0x95, 0x93, 0xcc, 0x4f,
+    0xb7, 0x5b, 0x67, 0x5b, 0x94, 0x68, 0xc9, 0x34, 0x15, 0xde,
+    0xa5, 0x2e, 0x1c, 0x33, 0xc2, 0x6e, 0xfc, 0x34, 0x5e, 0x71,
+    0x13, 0xb7, 0xd6, 0xee, 0xd8, 0xa5, 0x65, 0x05, 0x72, 0x87,
+    0xa8, 0xb0, 0x77, 0xfe, 0x57, 0xf5, 0xfc, 0x5f, 0x55, 0x83,
+    0x87, 0xdd, 0x57, 0x49, 0x02, 0x03, 0x01, 0x00, 0x01, 0x02,
+    0x41, 0x00, 0xa7, 0xf7, 0x91, 0xc5, 0x0f, 0x84, 0x57, 0xdc,
+    0x07, 0xf7, 0x6a, 0x7f, 0x60, 0x52, 0xb3, 0x72, 0xf1, 0x66,
+    0x1f, 0x7d, 0x97, 0x3b, 0x9e, 0xb6, 0x0a, 0x8f, 0x8c, 0xcf,
+    0x42, 0x23, 0x00, 0x04, 0xd4, 0x28, 0x0e, 0x1c, 0x90, 0xc4,
+    0x11, 0x25, 0x25, 0xa5, 0x93, 0xa5, 0x2f, 0x70, 0x02, 0xdf,
+    0x81, 0x9c, 0x49, 0x03, 0xa0, 0xf8, 0x6d, 0x54, 0x2e, 0x26,
+    0xde, 0xaa, 0x85, 0x59, 0xa8, 0x31, 0x02, 0x21, 0x00, 0xeb,
+    0x47, 0xd7, 0x3b, 0xf6, 0xc3, 0xdd, 0x5a, 0x46, 0xc5, 0xb9,
+    0x2b, 0x9a, 0xa0, 0x09, 0x8f, 0xa6, 0xfb, 0xf3, 0x78, 0x7a,
+    0x33, 0x70, 0x9d, 0x0f, 0x42, 0x6b, 0x13, 0x68, 0x24, 0xd3,
+    0x15, 0x02, 0x21, 0x00, 0xe9, 0x10, 0xb0, 0xb3, 0x0d, 0xe2,
+    0x82, 0x68, 0x77, 0x8a, 0x6e, 0x7c, 0xda, 0xbc, 0x3e, 0x53,
+    0x83, 0xfb, 0xd6, 0x22, 0xe7, 0xb5, 0xae, 0x6e, 0x80, 0xda,
+    0x00, 0x55, 0x97, 0xc1, 0xd0, 0x65, 0x02, 0x20, 0x4c, 0xf8,
+    0x73, 0xb1, 0x6a, 0x49, 0x29, 0x61, 0x1f, 0x46, 0x10, 0x0d,
+    0xf3, 0xc7, 0xe7, 0x58, 0xd7, 0x88, 0x15, 0x5e, 0x94, 0x9b,
+    0xbf, 0x7b, 0xa2, 0x42, 0x58, 0x45, 0x41, 0x0c, 0xcb, 0x01,
+    0x02, 0x20, 0x12, 0x11, 0xba, 0x31, 0x57, 0x9d, 0x3d, 0x11,
+    0x0e, 0x5b, 0x8c, 0x2f, 0x5f, 0xe2, 0x02, 0x4f, 0x05, 0x47,
+    0x8c, 0x15, 0x8e, 0xb3, 0x56, 0x3f, 0xb8, 0xfb, 0xad, 0xd4,
+    0xf4, 0xfc, 0x10, 0xc5, 0x02, 0x20, 0x18, 0xa1, 0x29, 0x99,
+    0x5b, 0xd9, 0xc8, 0xd4, 0xfc, 0x49, 0x7a, 0x2a, 0x21, 0x2c,
+    0x49, 0xe4, 0x4f, 0xeb, 0xef, 0x51, 0xf1, 0xab, 0x6d, 0xfb,
+    0x4b, 0x14, 0xe9, 0x4b, 0x52, 0xb5, 0x82, 0x2c
 };
 
 static unsigned char test1024[] = {
-    0x30,
-    0x82,
-    0x02,
-    0x5c,
-    0x02,
-    0x01,
-    0x00,
-    0x02,
-    0x81,
-    0x81,
-    0x00,
-    0xdc,
-    0x98,
-    0x43,
-    0xe8,
-    0x3d,
-    0x43,
-    0x5b,
-    0xe4,
-    0x05,
-    0xcd,
-    0xd0,
-    0xa9,
-    0x3e,
-    0xcb,
-    0x83,
-    0x75,
-    0xf6,
-    0xb5,
-    0xa5,
-    0x9f,
-    0x6b,
-    0xe9,
-    0x34,
-    0x41,
-    0x29,
-    0x18,
-    0xfa,
-    0x6a,
-    0x55,
-    0x4d,
-    0x70,
-    0xfc,
-    0xec,
-    0xae,
-    0x87,
-    0x38,
-    0x0a,
-    0x20,
-    0xa9,
-    0xc0,
-    0x45,
-    0x77,
-    0x6e,
-    0x57,
-    0x60,
-    0x57,
-    0xf4,
-    0xed,
-    0x96,
-    0x22,
-    0xcb,
-    0x8f,
-    0xe1,
-    0x33,
-    0x3a,
-    0x17,
-    0x1f,
-    0xed,
-    0x37,
-    0xa5,
-    0x6f,
-    0xeb,
-    0xa6,
-    0xbc,
-    0x12,
-    0x80,
-    0x1d,
-    0x53,
-    0xbd,
-    0x70,
-    0xeb,
-    0x21,
-    0x76,
-    0x3e,
-    0xc9,
-    0x2f,
-    0x1a,
-    0x45,
-    0x24,
-    0x82,
-    0xff,
-    0xcd,
-    0x59,
-    0x32,
-    0x06,
-    0x2e,
-    0x12,
-    0x3b,
-    0x23,
-    0x78,
-    0xed,
-    0x12,
-    0x3d,
-    0xe0,
-    0x8d,
-    0xf9,
-    0x67,
-    0x4f,
-    0x37,
-    0x4e,
-    0x47,
-    0x02,
-    0x4c,
-    0x2d,
-    0xc0,
-    0x4f,
-    0x1f,
-    0xb3,
-    0x94,
-    0xe1,
-    0x41,
-    0x2e,
-    0x2d,
-    0x90,
-    0x10,
-    0xfc,
-    0x82,
-    0x91,
-    0x8b,
-    0x0f,
-    0x22,
-    0xd4,
-    0xf2,
-    0xfc,
-    0x2c,
-    0xab,
-    0x53,
-    0x55,
-    0x02,
-    0x03,
-    0x01,
-    0x00,
-    0x01,
-    0x02,
-    0x81,
-    0x80,
-    0x2b,
-    0xcc,
-    0x3f,
-    0x8f,
-    0x58,
-    0xba,
-    0x8b,
-    0x00,
-    0x16,
-    0xf6,
-    0xea,
-    0x3a,
-    0xf0,
-    0x30,
-    0xd0,
-    0x05,
-    0x17,
-    0xda,
-    0xb0,
-    0xeb,
-    0x9a,
-    0x2d,
-    0x4f,
-    0x26,
-    0xb0,
-    0xd6,
-    0x38,
-    0xc1,
-    0xeb,
-    0xf5,
-    0xd8,
-    0x3d,
-    0x1f,
-    0x70,
-    0xf7,
-    0x7f,
-    0xf4,
-    0xe2,
-    0xcf,
-    0x51,
-    0x51,
-    0x79,
-    0x88,
-    0xfa,
-    0xe8,
-    0x32,
-    0x0e,
-    0x7b,
-    0x2d,
-    0x97,
-    0xf2,
-    0xfa,
-    0xba,
-    0x27,
-    0xc5,
-    0x9c,
-    0xd9,
-    0xc5,
-    0xeb,
-    0x8a,
-    0x79,
-    0x52,
-    0x3c,
-    0x64,
-    0x34,
-    0x7d,
-    0xc2,
-    0xcf,
-    0x28,
-    0xc7,
-    0x4e,
-    0xd5,
-    0x43,
-    0x0b,
-    0xd1,
-    0xa6,
-    0xca,
-    0x6d,
-    0x03,
-    0x2d,
-    0x72,
-    0x23,
-    0xbc,
-    0x6d,
-    0x05,
-    0xfa,
-    0x16,
-    0x09,
-    0x2f,
-    0x2e,
-    0x5c,
-    0xb6,
-    0xee,
-    0x74,
-    0xdd,
-    0xd2,
-    0x48,
-    0x8e,
-    0x36,
-    0x0c,
-    0x06,
-    0x3d,
-    0x4d,
-    0xe5,
-    0x10,
-    0x82,
-    0xeb,
-    0x6a,
-    0xf3,
-    0x4b,
-    0x9f,
-    0xd6,
-    0xed,
-    0x11,
-    0xb1,
-    0x6e,
-    0xec,
-    0xf4,
-    0xfe,
-    0x8e,
-    0x75,
-    0x94,
-    0x20,
-    0x2f,
-    0xcb,
-    0xac,
-    0x46,
-    0xf1,
-    0x02,
-    0x41,
-    0x00,
-    0xf9,
-    0x8c,
-    0xa3,
-    0x85,
-    0xb1,
-    0xdd,
-    0x29,
-    0xaf,
-    0x65,
-    0xc1,
-    0x33,
-    0xf3,
-    0x95,
-    0xc5,
-    0x52,
-    0x68,
-    0x0b,
-    0xd4,
-    0xf1,
-    0xe5,
-    0x0e,
-    0x02,
-    0x9f,
-    0x4f,
-    0xfa,
-    0x77,
-    0xdc,
-    0x46,
-    0x9e,
-    0xc7,
-    0xa6,
-    0xe4,
-    0x16,
-    0x29,
-    0xda,
-    0xb0,
-    0x07,
-    0xcf,
-    0x5b,
-    0xa9,
-    0x12,
-    0x8a,
-    0xdd,
-    0x63,
-    0x0a,
-    0xde,
-    0x2e,
-    0x8c,
-    0x66,
-    0x8b,
-    0x8c,
-    0xdc,
-    0x19,
-    0xa3,
-    0x7e,
-    0xf4,
-    0x3b,
-    0xd0,
-    0x1a,
-    0x8c,
-    0xa4,
-    0xc2,
-    0xe1,
-    0xd3,
-    0x02,
-    0x41,
-    0x00,
-    0xe2,
-    0x4c,
-    0x05,
-    0xf2,
-    0x04,
-    0x86,
-    0x4e,
-    0x61,
-    0x43,
-    0xdb,
-    0xb0,
-    0xb9,
-    0x96,
-    0x86,
-    0x52,
-    0x2c,
-    0xca,
-    0x8d,
-    0x7b,
-    0xab,
-    0x0b,
-    0x13,
-    0x0d,
-    0x7e,
-    0x38,
-    0x5b,
-    0xe2,
-    0x2e,
-    0x7b,
-    0x0e,
-    0xe7,
-    0x19,
-    0x99,
-    0x38,
-    0xe7,
-    0xf2,
-    0x21,
-    0xbd,
-    0x85,
-    0x85,
-    0xe3,
-    0xfd,
-    0x28,
-    0x77,
-    0x20,
-    0x31,
-    0x71,
-    0x2c,
-    0xd0,
-    0xff,
-    0xfb,
-    0x2e,
-    0xaf,
-    0x85,
-    0xb4,
-    0x86,
-    0xca,
-    0xf3,
-    0xbb,
-    0xca,
-    0xaa,
-    0x0f,
-    0x95,
-    0x37,
-    0x02,
-    0x40,
-    0x0e,
-    0x41,
-    0x9a,
-    0x95,
-    0xe8,
-    0xb3,
-    0x59,
-    0xce,
-    0x4b,
-    0x61,
-    0xde,
-    0x35,
-    0xec,
-    0x38,
-    0x79,
-    0x9c,
-    0xb8,
-    0x10,
-    0x52,
-    0x41,
-    0x63,
-    0xab,
-    0x82,
-    0xae,
-    0x6f,
-    0x00,
-    0xa9,
-    0xf4,
-    0xde,
-    0xdd,
-    0x49,
-    0x0b,
-    0x7e,
-    0xb8,
-    0xa5,
-    0x65,
-    0xa9,
-    0x0c,
-    0x8f,
-    0x8f,
-    0xf9,
-    0x1f,
-    0x35,
-    0xc6,
-    0x92,
-    0xb8,
-    0x5e,
-    0xb0,
-    0x66,
-    0xab,
-    0x52,
-    0x40,
-    0xc0,
-    0xb6,
-    0x36,
-    0x6a,
-    0x7d,
-    0x80,
-    0x46,
-    0x04,
-    0x02,
-    0xe5,
-    0x9f,
-    0x41,
-    0x02,
-    0x41,
-    0x00,
-    0xc0,
-    0xad,
-    0xcc,
-    0x4e,
-    0x21,
-    0xee,
-    0x1d,
-    0x24,
-    0x91,
-    0xfb,
-    0xa7,
-    0x80,
-    0x8d,
-    0x9a,
-    0xb6,
-    0xb3,
-    0x2e,
-    0x8f,
-    0xc2,
-    0xe1,
-    0x82,
-    0xdf,
-    0x69,
-    0x18,
-    0xb4,
-    0x71,
-    0xff,
-    0xa6,
-    0x65,
-    0xde,
-    0xed,
-    0x84,
-    0x8d,
-    0x42,
-    0xb7,
-    0xb3,
-    0x21,
-    0x69,
-    0x56,
-    0x1c,
-    0x07,
-    0x60,
-    0x51,
-    0x29,
-    0x04,
-    0xff,
-    0x34,
-    0x06,
-    0xdd,
-    0xb9,
-    0x67,
-    0x2c,
-    0x7c,
-    0x04,
-    0x93,
-    0x0e,
-    0x46,
-    0x15,
-    0xbb,
-    0x2a,
-    0xb7,
-    0x1b,
-    0xe7,
-    0x87,
-    0x02,
-    0x40,
-    0x78,
-    0xda,
-    0x5d,
-    0x07,
-    0x51,
-    0x0c,
-    0x16,
-    0x7a,
-    0x9f,
-    0x29,
-    0x20,
-    0x84,
-    0x0d,
-    0x42,
-    0xfa,
-    0xd7,
-    0x00,
-    0xd8,
-    0x77,
-    0x7e,
-    0xb0,
-    0xb0,
-    0x6b,
-    0xd6,
-    0x5b,
-    0x53,
-    0xb8,
-    0x9b,
-    0x7a,
-    0xcd,
-    0xc7,
-    0x2b,
-    0xb8,
-    0x6a,
-    0x63,
-    0xa9,
-    0xfb,
-    0x6f,
-    0xa4,
-    0x72,
-    0xbf,
-    0x4c,
-    0x5d,
-    0x00,
-    0x14,
-    0xba,
-    0xfa,
-    0x59,
-    0x88,
-    0xed,
-    0xe4,
-    0xe0,
-    0x8c,
-    0xa2,
-    0xec,
-    0x14,
-    0x7e,
-    0x2d,
-    0xe2,
-    0xf0,
-    0x46,
-    0x49,
-    0x95,
-    0x45,
+    0x30, 0x82, 0x02, 0x5c, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81,
+    0x00, 0xdc, 0x98, 0x43, 0xe8, 0x3d, 0x43, 0x5b, 0xe4, 0x05,
+    0xcd, 0xd0, 0xa9, 0x3e, 0xcb, 0x83, 0x75, 0xf6, 0xb5, 0xa5,
+    0x9f, 0x6b, 0xe9, 0x34, 0x41, 0x29, 0x18, 0xfa, 0x6a, 0x55,
+    0x4d, 0x70, 0xfc, 0xec, 0xae, 0x87, 0x38, 0x0a, 0x20, 0xa9,
+    0xc0, 0x45, 0x77, 0x6e, 0x57, 0x60, 0x57, 0xf4, 0xed, 0x96,
+    0x22, 0xcb, 0x8f, 0xe1, 0x33, 0x3a, 0x17, 0x1f, 0xed, 0x37,
+    0xa5, 0x6f, 0xeb, 0xa6, 0xbc, 0x12, 0x80, 0x1d, 0x53, 0xbd,
+    0x70, 0xeb, 0x21, 0x76, 0x3e, 0xc9, 0x2f, 0x1a, 0x45, 0x24,
+    0x82, 0xff, 0xcd, 0x59, 0x32, 0x06, 0x2e, 0x12, 0x3b, 0x23,
+    0x78, 0xed, 0x12, 0x3d, 0xe0, 0x8d, 0xf9, 0x67, 0x4f, 0x37,
+    0x4e, 0x47, 0x02, 0x4c, 0x2d, 0xc0, 0x4f, 0x1f, 0xb3, 0x94,
+    0xe1, 0x41, 0x2e, 0x2d, 0x90, 0x10, 0xfc, 0x82, 0x91, 0x8b,
+    0x0f, 0x22, 0xd4, 0xf2, 0xfc, 0x2c, 0xab, 0x53, 0x55, 0x02,
+    0x03, 0x01, 0x00, 0x01, 0x02, 0x81, 0x80, 0x2b, 0xcc, 0x3f,
+    0x8f, 0x58, 0xba, 0x8b, 0x00, 0x16, 0xf6, 0xea, 0x3a, 0xf0,
+    0x30, 0xd0, 0x05, 0x17, 0xda, 0xb0, 0xeb, 0x9a, 0x2d, 0x4f,
+    0x26, 0xb0, 0xd6, 0x38, 0xc1, 0xeb, 0xf5, 0xd8, 0x3d, 0x1f,
+    0x70, 0xf7, 0x7f, 0xf4, 0xe2, 0xcf, 0x51, 0x51, 0x79, 0x88,
+    0xfa, 0xe8, 0x32, 0x0e, 0x7b, 0x2d, 0x97, 0xf2, 0xfa, 0xba,
+    0x27, 0xc5, 0x9c, 0xd9, 0xc5, 0xeb, 0x8a, 0x79, 0x52, 0x3c,
+    0x64, 0x34, 0x7d, 0xc2, 0xcf, 0x28, 0xc7, 0x4e, 0xd5, 0x43,
+    0x0b, 0xd1, 0xa6, 0xca, 0x6d, 0x03, 0x2d, 0x72, 0x23, 0xbc,
+    0x6d, 0x05, 0xfa, 0x16, 0x09, 0x2f, 0x2e, 0x5c, 0xb6, 0xee,
+    0x74, 0xdd, 0xd2, 0x48, 0x8e, 0x36, 0x0c, 0x06, 0x3d, 0x4d,
+    0xe5, 0x10, 0x82, 0xeb, 0x6a, 0xf3, 0x4b, 0x9f, 0xd6, 0xed,
+    0x11, 0xb1, 0x6e, 0xec, 0xf4, 0xfe, 0x8e, 0x75, 0x94, 0x20,
+    0x2f, 0xcb, 0xac, 0x46, 0xf1, 0x02, 0x41, 0x00, 0xf9, 0x8c,
+    0xa3, 0x85, 0xb1, 0xdd, 0x29, 0xaf, 0x65, 0xc1, 0x33, 0xf3,
+    0x95, 0xc5, 0x52, 0x68, 0x0b, 0xd4, 0xf1, 0xe5, 0x0e, 0x02,
+    0x9f, 0x4f, 0xfa, 0x77, 0xdc, 0x46, 0x9e, 0xc7, 0xa6, 0xe4,
+    0x16, 0x29, 0xda, 0xb0, 0x07, 0xcf, 0x5b, 0xa9, 0x12, 0x8a,
+    0xdd, 0x63, 0x0a, 0xde, 0x2e, 0x8c, 0x66, 0x8b, 0x8c, 0xdc,
+    0x19, 0xa3, 0x7e, 0xf4, 0x3b, 0xd0, 0x1a, 0x8c, 0xa4, 0xc2,
+    0xe1, 0xd3, 0x02, 0x41, 0x00, 0xe2, 0x4c, 0x05, 0xf2, 0x04,
+    0x86, 0x4e, 0x61, 0x43, 0xdb, 0xb0, 0xb9, 0x96, 0x86, 0x52,
+    0x2c, 0xca, 0x8d, 0x7b, 0xab, 0x0b, 0x13, 0x0d, 0x7e, 0x38,
+    0x5b, 0xe2, 0x2e, 0x7b, 0x0e, 0xe7, 0x19, 0x99, 0x38, 0xe7,
+    0xf2, 0x21, 0xbd, 0x85, 0x85, 0xe3, 0xfd, 0x28, 0x77, 0x20,
+    0x31, 0x71, 0x2c, 0xd0, 0xff, 0xfb, 0x2e, 0xaf, 0x85, 0xb4,
+    0x86, 0xca, 0xf3, 0xbb, 0xca, 0xaa, 0x0f, 0x95, 0x37, 0x02,
+    0x40, 0x0e, 0x41, 0x9a, 0x95, 0xe8, 0xb3, 0x59, 0xce, 0x4b,
+    0x61, 0xde, 0x35, 0xec, 0x38, 0x79, 0x9c, 0xb8, 0x10, 0x52,
+    0x41, 0x63, 0xab, 0x82, 0xae, 0x6f, 0x00, 0xa9, 0xf4, 0xde,
+    0xdd, 0x49, 0x0b, 0x7e, 0xb8, 0xa5, 0x65, 0xa9, 0x0c, 0x8f,
+    0x8f, 0xf9, 0x1f, 0x35, 0xc6, 0x92, 0xb8, 0x5e, 0xb0, 0x66,
+    0xab, 0x52, 0x40, 0xc0, 0xb6, 0x36, 0x6a, 0x7d, 0x80, 0x46,
+    0x04, 0x02, 0xe5, 0x9f, 0x41, 0x02, 0x41, 0x00, 0xc0, 0xad,
+    0xcc, 0x4e, 0x21, 0xee, 0x1d, 0x24, 0x91, 0xfb, 0xa7, 0x80,
+    0x8d, 0x9a, 0xb6, 0xb3, 0x2e, 0x8f, 0xc2, 0xe1, 0x82, 0xdf,
+    0x69, 0x18, 0xb4, 0x71, 0xff, 0xa6, 0x65, 0xde, 0xed, 0x84,
+    0x8d, 0x42, 0xb7, 0xb3, 0x21, 0x69, 0x56, 0x1c, 0x07, 0x60,
+    0x51, 0x29, 0x04, 0xff, 0x34, 0x06, 0xdd, 0xb9, 0x67, 0x2c,
+    0x7c, 0x04, 0x93, 0x0e, 0x46, 0x15, 0xbb, 0x2a, 0xb7, 0x1b,
+    0xe7, 0x87, 0x02, 0x40, 0x78, 0xda, 0x5d, 0x07, 0x51, 0x0c,
+    0x16, 0x7a, 0x9f, 0x29, 0x20, 0x84, 0x0d, 0x42, 0xfa, 0xd7,
+    0x00, 0xd8, 0x77, 0x7e, 0xb0, 0xb0, 0x6b, 0xd6, 0x5b, 0x53,
+    0xb8, 0x9b, 0x7a, 0xcd, 0xc7, 0x2b, 0xb8, 0x6a, 0x63, 0xa9,
+    0xfb, 0x6f, 0xa4, 0x72, 0xbf, 0x4c, 0x5d, 0x00, 0x14, 0xba,
+    0xfa, 0x59, 0x88, 0xed, 0xe4, 0xe0, 0x8c, 0xa2, 0xec, 0x14,
+    0x7e, 0x2d, 0xe2, 0xf0, 0x46, 0x49, 0x95, 0x45
 };
 
 static unsigned char test2048[] = {
-    0x30,
-    0x82,
-    0x04,
-    0xa3,
-    0x02,
-    0x01,
-    0x00,
-    0x02,
-    0x82,
-    0x01,
-    0x01,
-    0x00,
-    0xc0,
-    0xc0,
-    0xce,
-    0x3e,
-    0x3c,
-    0x53,
-    0x67,
-    0x3f,
-    0x4f,
-    0xc5,
-    0x2f,
-    0xa4,
-    0xc2,
-    0x5a,
-    0x2f,
-    0x58,
-    0xfd,
-    0x27,
-    0x52,
-    0x6a,
-    0xe8,
-    0xcf,
-    0x4a,
-    0x73,
-    0x47,
-    0x8d,
-    0x25,
-    0x0f,
-    0x5f,
-    0x03,
-    0x26,
-    0x78,
-    0xef,
-    0xf0,
-    0x22,
-    0x12,
-    0xd3,
-    0xde,
-    0x47,
-    0xb2,
-    0x1c,
-    0x0b,
-    0x38,
-    0x63,
-    0x1a,
-    0x6c,
-    0x85,
-    0x7a,
-    0x80,
-    0xc6,
-    0x8f,
-    0xa0,
-    0x41,
-    0xaf,
-    0x62,
-    0xc4,
-    0x67,
-    0x32,
-    0x88,
-    0xf8,
-    0xa6,
-    0x9c,
-    0xf5,
-    0x23,
-    0x1d,
-    0xe4,
-    0xac,
-    0x3f,
-    0x29,
-    0xf9,
-    0xec,
-    0xe1,
-    0x8b,
-    0x26,
-    0x03,
-    0x2c,
-    0xb2,
-    0xab,
-    0xf3,
-    0x7d,
-    0xb5,
-    0xca,
-    0x49,
-    0xc0,
-    0x8f,
-    0x1c,
-    0xdf,
-    0x33,
-    0x3a,
-    0x60,
-    0xda,
-    0x3c,
-    0xb0,
-    0x16,
-    0xf8,
-    0xa9,
-    0x12,
-    0x8f,
-    0x64,
-    0xac,
-    0x23,
-    0x0c,
-    0x69,
-    0x64,
-    0x97,
-    0x5d,
-    0x99,
-    0xd4,
-    0x09,
-    0x83,
-    0x9b,
-    0x61,
-    0xd3,
-    0xac,
-    0xf0,
-    0xde,
-    0xdd,
-    0x5e,
-    0x9f,
-    0x44,
-    0x94,
-    0xdb,
-    0x3a,
-    0x4d,
-    0x97,
-    0xe8,
-    0x52,
-    0x29,
-    0xf7,
-    0xdb,
-    0x94,
-    0x07,
-    0x45,
-    0x90,
-    0x78,
-    0x1e,
-    0x31,
-    0x0b,
-    0x80,
-    0xf7,
-    0x57,
-    0xad,
-    0x1c,
-    0x79,
-    0xc5,
-    0xcb,
-    0x32,
-    0xb0,
-    0xce,
-    0xcd,
-    0x74,
-    0xb3,
-    0xe2,
-    0x94,
-    0xc5,
-    0x78,
-    0x2f,
-    0x34,
-    0x1a,
-    0x45,
-    0xf7,
-    0x8c,
-    0x52,
-    0xa5,
-    0xbc,
-    0x8d,
-    0xec,
-    0xd1,
-    0x2f,
-    0x31,
-    0x3b,
-    0xf0,
-    0x49,
-    0x59,
-    0x5e,
-    0x88,
-    0x9d,
-    0x15,
-    0x92,
-    0x35,
-    0x32,
-    0xc1,
-    0xe7,
-    0x61,
-    0xec,
-    0x50,
-    0x48,
-    0x7c,
-    0xba,
-    0x05,
-    0xf9,
-    0xf8,
-    0xf8,
-    0xa7,
-    0x8c,
-    0x83,
-    0xe8,
-    0x66,
-    0x5b,
-    0xeb,
-    0xfe,
-    0xd8,
-    0x4f,
-    0xdd,
-    0x6d,
-    0x36,
-    0xc0,
-    0xb2,
-    0x90,
-    0x0f,
-    0xb8,
-    0x52,
-    0xf9,
-    0x04,
-    0x9b,
-    0x40,
-    0x2c,
-    0x27,
-    0xd6,
-    0x36,
-    0x8e,
-    0xc2,
-    0x1b,
-    0x44,
-    0xf3,
-    0x92,
-    0xd5,
-    0x15,
-    0x9e,
-    0x9a,
-    0xbc,
-    0xf3,
-    0x7d,
-    0x03,
-    0xd7,
-    0x02,
-    0x14,
-    0x20,
-    0xe9,
-    0x10,
-    0x92,
-    0xfd,
-    0xf9,
-    0xfc,
-    0x8f,
-    0xe5,
-    0x18,
-    0xe1,
-    0x95,
-    0xcc,
-    0x9e,
-    0x60,
-    0xa6,
-    0xfa,
-    0x38,
-    0x4d,
-    0x02,
-    0x03,
-    0x01,
-    0x00,
-    0x01,
-    0x02,
-    0x82,
-    0x01,
-    0x00,
-    0x00,
-    0xc3,
-    0xc3,
-    0x0d,
-    0xb4,
-    0x27,
-    0x90,
-    0x8d,
-    0x4b,
-    0xbf,
-    0xb8,
-    0x84,
-    0xaa,
-    0xd0,
-    0xb8,
-    0xc7,
-    0x5d,
-    0x99,
-    0xbe,
-    0x55,
-    0xf6,
-    0x3e,
-    0x7c,
-    0x49,
-    0x20,
-    0xcb,
-    0x8a,
-    0x8e,
-    0x19,
-    0x0e,
-    0x66,
-    0x24,
-    0xac,
-    0xaf,
-    0x03,
-    0x33,
-    0x97,
-    0xeb,
-    0x95,
-    0xd5,
-    0x3b,
-    0x0f,
-    0x40,
-    0x56,
-    0x04,
-    0x50,
-    0xd1,
-    0xe6,
-    0xbe,
-    0x84,
-    0x0b,
-    0x25,
-    0xd3,
-    0x9c,
-    0xe2,
-    0x83,
-    0x6c,
-    0xf5,
-    0x62,
-    0x5d,
-    0xba,
-    0x2b,
-    0x7d,
-    0x3d,
-    0x7a,
-    0x6c,
-    0xe1,
-    0xd2,
-    0x0e,
-    0x54,
-    0x93,
-    0x80,
-    0x01,
-    0x91,
-    0x51,
-    0x09,
-    0xe8,
-    0x5b,
-    0x8e,
-    0x47,
-    0xbd,
-    0x64,
-    0xe4,
-    0x0e,
-    0x03,
-    0x83,
-    0x55,
-    0xcf,
-    0x5a,
-    0x37,
-    0xf0,
-    0x25,
-    0xb5,
-    0x7d,
-    0x21,
-    0xd7,
-    0x69,
-    0xdf,
-    0x6f,
-    0xc2,
-    0xcf,
-    0x10,
-    0xc9,
-    0x8a,
-    0x40,
-    0x9f,
-    0x7a,
-    0x70,
-    0xc0,
-    0xe8,
-    0xe8,
-    0xc0,
-    0xe6,
-    0x9a,
-    0x15,
-    0x0a,
-    0x8d,
-    0x4e,
-    0x46,
-    0xcb,
-    0x7a,
-    0xdb,
-    0xb3,
-    0xcb,
-    0x83,
-    0x02,
-    0xc4,
-    0xf0,
-    0xab,
-    0xeb,
-    0x02,
-    0x01,
-    0x0e,
-    0x23,
-    0xfc,
-    0x1d,
-    0xc4,
-    0xbd,
-    0xd4,
-    0xaa,
-    0x5d,
-    0x31,
-    0x46,
-    0x99,
-    0xce,
-    0x9e,
-    0xf8,
-    0x04,
-    0x75,
-    0x10,
-    0x67,
-    0xc4,
-    0x53,
-    0x47,
-    0x44,
-    0xfa,
-    0xc2,
-    0x25,
-    0x73,
-    0x7e,
-    0xd0,
-    0x8e,
-    0x59,
-    0xd1,
-    0xb2,
-    0x5a,
-    0xf4,
-    0xc7,
-    0x18,
-    0x92,
-    0x2f,
-    0x39,
-    0xab,
-    0xcd,
-    0xa3,
-    0xb5,
-    0xc2,
-    0xb9,
-    0xc7,
-    0xb9,
-    0x1b,
-    0x9f,
-    0x48,
-    0xfa,
-    0x13,
-    0xc6,
-    0x98,
-    0x4d,
-    0xca,
-    0x84,
-    0x9c,
-    0x06,
-    0xca,
-    0xe7,
-    0x89,
-    0x01,
-    0x04,
-    0xc4,
-    0x6c,
-    0xfd,
-    0x29,
-    0x59,
-    0x35,
-    0xe7,
-    0xf3,
-    0xdd,
-    0xce,
-    0x64,
-    0x59,
-    0xbf,
-    0x21,
-    0x13,
-    0xa9,
-    0x9f,
-    0x0e,
-    0xc5,
-    0xff,
-    0xbd,
-    0x33,
-    0x00,
-    0xec,
-    0xac,
-    0x6b,
-    0x11,
-    0xef,
-    0x51,
-    0x5e,
-    0xad,
-    0x07,
-    0x15,
-    0xde,
-    0xb8,
-    0x5f,
-    0xc6,
-    0xb9,
-    0xa3,
-    0x22,
-    0x65,
-    0x46,
-    0x83,
-    0x14,
-    0xdf,
-    0xd0,
-    0xf1,
-    0x44,
-    0x8a,
-    0xe1,
-    0x9c,
-    0x23,
-    0x33,
-    0xb4,
-    0x97,
-    0x33,
-    0xe6,
-    0x6b,
-    0x81,
-    0x02,
-    0x81,
-    0x81,
-    0x00,
-    0xec,
-    0x12,
-    0xa7,
-    0x59,
-    0x74,
-    0x6a,
-    0xde,
-    0x3e,
-    0xad,
-    0xd8,
-    0x36,
-    0x80,
-    0x50,
-    0xa2,
-    0xd5,
-    0x21,
-    0x81,
-    0x07,
-    0xf1,
-    0xd0,
-    0x91,
-    0xf2,
-    0x6c,
-    0x12,
-    0x2f,
-    0x9d,
-    0x1a,
-    0x26,
-    0xf8,
-    0x30,
-    0x65,
-    0xdf,
-    0xe8,
-    0xc0,
-    0x9b,
-    0x6a,
-    0x30,
-    0x98,
-    0x82,
-    0x87,
-    0xec,
-    0xa2,
-    0x56,
-    0x87,
-    0x62,
-    0x6f,
-    0xe7,
-    0x9f,
-    0xf6,
-    0x56,
-    0xe6,
-    0x71,
-    0x8f,
-    0x49,
-    0x86,
-    0x93,
-    0x5a,
-    0x4d,
-    0x34,
-    0x58,
-    0xfe,
-    0xd9,
-    0x04,
-    0x13,
-    0xaf,
-    0x79,
-    0xb7,
-    0xad,
-    0x11,
-    0xd1,
-    0x30,
-    0x9a,
-    0x14,
-    0x06,
-    0xa0,
-    0xfa,
-    0xb7,
-    0x55,
-    0xdc,
-    0x6c,
-    0x5a,
-    0x4c,
-    0x2c,
-    0x59,
-    0x56,
-    0xf6,
-    0xe8,
-    0x9d,
-    0xaf,
-    0x0a,
-    0x78,
-    0x99,
-    0x06,
-    0x06,
-    0x9e,
-    0xe7,
-    0x9c,
-    0x51,
-    0x55,
-    0x43,
-    0xfc,
-    0x3b,
-    0x6c,
-    0x0b,
-    0xbf,
-    0x2d,
-    0x41,
-    0xa7,
-    0xaf,
-    0xb7,
-    0xe0,
-    0xe8,
-    0x28,
-    0x18,
-    0xb4,
-    0x13,
-    0xd1,
-    0xe6,
-    0x97,
-    0xd0,
-    0x9f,
-    0x6a,
-    0x80,
-    0xca,
-    0xdd,
-    0x1a,
-    0x7e,
-    0x15,
-    0x02,
-    0x81,
-    0x81,
-    0x00,
-    0xd1,
-    0x06,
-    0x0c,
-    0x1f,
-    0xe3,
-    0xd0,
-    0xab,
-    0xd6,
-    0xca,
-    0x7c,
-    0xbc,
-    0x7d,
-    0x13,
-    0x35,
-    0xce,
-    0x27,
-    0xcd,
-    0xd8,
-    0x49,
-    0x51,
-    0x63,
-    0x64,
-    0x0f,
-    0xca,
-    0x06,
-    0x12,
-    0xfc,
-    0x07,
-    0x3e,
-    0xaf,
-    0x61,
-    0x6d,
-    0xe2,
-    0x53,
-    0x39,
-    0x27,
-    0xae,
-    0xc3,
-    0x11,
-    0x9e,
-    0x94,
-    0x01,
-    0x4f,
-    0xe3,
-    0xf3,
-    0x67,
-    0xf9,
-    0x77,
-    0xf9,
-    0xe7,
-    0x95,
-    0x3a,
-    0x6f,
-    0xe2,
-    0x20,
-    0x73,
-    0x3e,
-    0xa4,
-    0x7a,
-    0x28,
-    0xd4,
-    0x61,
-    0x97,
-    0xf6,
-    0x17,
-    0xa0,
-    0x23,
-    0x10,
-    0x2b,
-    0xce,
-    0x84,
-    0x57,
-    0x7e,
-    0x25,
-    0x1f,
-    0xf4,
-    0xa8,
-    0x54,
-    0xd2,
-    0x65,
-    0x94,
-    0xcc,
-    0x95,
-    0x0a,
-    0xab,
-    0x30,
-    0xc1,
-    0x59,
-    0x1f,
-    0x61,
-    0x8e,
-    0xb9,
-    0x6b,
-    0xd7,
-    0x4e,
-    0xb9,
-    0x83,
-    0x43,
-    0x79,
-    0x85,
-    0x11,
-    0xbc,
-    0x0f,
-    0xae,
-    0x25,
-    0x20,
-    0x05,
-    0xbc,
-    0xd2,
-    0x48,
-    0xa1,
-    0x68,
-    0x09,
-    0x84,
-    0xf6,
-    0x12,
-    0x9a,
-    0x66,
-    0xb9,
-    0x2b,
-    0xbb,
-    0x76,
-    0x03,
-    0x17,
-    0x46,
-    0x4e,
-    0x97,
-    0x59,
-    0x02,
-    0x81,
-    0x80,
-    0x09,
-    0x4c,
-    0xfa,
-    0xd6,
-    0xe5,
-    0x65,
-    0x48,
-    0x78,
-    0x43,
-    0xb5,
-    0x1f,
-    0x00,
-    0x93,
-    0x2c,
-    0xb7,
-    0x24,
-    0xe8,
-    0xc6,
-    0x7d,
-    0x5a,
-    0x70,
-    0x45,
-    0x92,
-    0xc8,
-    0x6c,
-    0xa3,
-    0xcd,
-    0xe1,
-    0xf7,
-    0x29,
-    0x40,
-    0xfa,
-    0x3f,
-    0x5b,
-    0x47,
-    0x44,
-    0x39,
-    0xc1,
-    0xe8,
-    0x72,
-    0x9e,
-    0x7a,
-    0x0e,
-    0xda,
-    0xaa,
-    0xa0,
-    0x2a,
-    0x09,
-    0xfd,
-    0x54,
-    0x93,
-    0x23,
-    0xaa,
-    0x37,
-    0x85,
-    0x5b,
-    0xcc,
-    0xd4,
-    0xf9,
-    0xd8,
-    0xff,
-    0xc1,
-    0x61,
-    0x0d,
-    0xbd,
-    0x7e,
-    0x18,
-    0x24,
-    0x73,
-    0x6d,
-    0x40,
-    0x72,
-    0xf1,
-    0x93,
-    0x09,
-    0x48,
-    0x97,
-    0x6c,
-    0x84,
-    0x90,
-    0xa8,
-    0x46,
-    0x14,
-    0x01,
-    0x39,
-    0x11,
-    0xe5,
-    0x3c,
-    0x41,
-    0x27,
-    0x32,
-    0x75,
-    0x24,
-    0xed,
-    0xa1,
-    0xd9,
-    0x12,
-    0x29,
-    0x8a,
-    0x28,
-    0x71,
-    0x89,
-    0x8d,
-    0xca,
-    0x30,
-    0xb0,
-    0x01,
-    0xc4,
-    0x2f,
-    0x82,
-    0x19,
-    0x14,
-    0x4c,
-    0x70,
-    0x1c,
-    0xb8,
-    0x23,
-    0x2e,
-    0xe8,
-    0x90,
-    0x49,
-    0x97,
-    0x92,
-    0x97,
-    0x6b,
-    0x7a,
-    0x9d,
-    0xb9,
-    0x02,
-    0x81,
-    0x80,
-    0x0f,
-    0x0e,
-    0xa1,
-    0x76,
-    0xf6,
-    0xa1,
-    0x44,
-    0x8f,
-    0xaf,
-    0x7c,
-    0x76,
-    0xd3,
-    0x87,
-    0xbb,
-    0xbb,
-    0x83,
-    0x10,
-    0x88,
-    0x01,
-    0x18,
-    0x14,
-    0xd1,
-    0xd3,
-    0x75,
-    0x59,
-    0x24,
-    0xaa,
-    0xf5,
-    0x16,
-    0xa5,
-    0xe9,
-    0x9d,
-    0xd1,
-    0xcc,
-    0xee,
-    0xf4,
-    0x15,
-    0xd9,
-    0xc5,
-    0x7e,
-    0x27,
-    0xe9,
-    0x44,
-    0x49,
-    0x06,
-    0x72,
-    0xb9,
-    0xfc,
-    0xd3,
-    0x8a,
-    0xc4,
-    0x2c,
-    0x36,
-    0x7d,
-    0x12,
-    0x9b,
-    0x5a,
-    0xaa,
-    0xdc,
-    0x85,
-    0xee,
-    0x6e,
-    0xad,
-    0x54,
-    0xb3,
-    0xf4,
-    0xfc,
-    0x31,
-    0xa1,
-    0x06,
-    0x3a,
-    0x70,
-    0x57,
-    0x0c,
-    0xf3,
-    0x95,
-    0x5b,
-    0x3e,
-    0xe8,
-    0xfd,
-    0x1a,
-    0x4f,
-    0xf6,
-    0x78,
-    0x93,
-    0x46,
-    0x6a,
-    0xd7,
-    0x31,
-    0xb4,
-    0x84,
-    0x64,
-    0x85,
-    0x09,
-    0x38,
-    0x89,
-    0x92,
-    0x94,
-    0x1c,
-    0xbf,
-    0xe2,
-    0x3c,
-    0x2a,
-    0xe0,
-    0xff,
-    0x99,
-    0xa3,
-    0xf0,
-    0x2b,
-    0x31,
-    0xc2,
-    0x36,
-    0xcd,
-    0x60,
-    0xbf,
-    0x9d,
-    0x2d,
-    0x74,
-    0x32,
-    0xe8,
-    0x9c,
-    0x93,
-    0x6e,
-    0xbb,
-    0x91,
-    0x7b,
-    0xfd,
-    0xd9,
-    0x02,
-    0x81,
-    0x81,
-    0x00,
-    0xa2,
-    0x71,
-    0x25,
-    0x38,
-    0xeb,
-    0x2a,
-    0xe9,
-    0x37,
-    0xcd,
-    0xfe,
-    0x44,
-    0xce,
-    0x90,
-    0x3f,
-    0x52,
-    0x87,
-    0x84,
-    0x52,
-    0x1b,
-    0xae,
-    0x8d,
-    0x22,
-    0x94,
-    0xce,
-    0x38,
-    0xe6,
-    0x04,
-    0x88,
-    0x76,
-    0x85,
-    0x9a,
-    0xd3,
-    0x14,
-    0x09,
-    0xe5,
-    0x69,
-    0x9a,
-    0xff,
-    0x58,
-    0x92,
-    0x02,
-    0x6a,
-    0x7d,
-    0x7c,
-    0x1e,
-    0x2c,
-    0xfd,
-    0xa8,
-    0xca,
-    0x32,
-    0x14,
-    0x4f,
-    0x0d,
-    0x84,
-    0x0d,
-    0x37,
-    0x43,
-    0xbf,
-    0xe4,
-    0x5d,
-    0x12,
-    0xc8,
-    0x24,
-    0x91,
-    0x27,
-    0x8d,
-    0x46,
-    0xd9,
-    0x54,
-    0x53,
-    0xe7,
-    0x62,
-    0x71,
-    0xa8,
-    0x2b,
-    0x71,
-    0x41,
-    0x8d,
-    0x75,
-    0xf8,
-    0x3a,
-    0xa0,
-    0x61,
-    0x29,
-    0x46,
-    0xa6,
-    0xe5,
-    0x82,
-    0xfa,
-    0x3a,
-    0xd9,
-    0x08,
-    0xfa,
-    0xfc,
-    0x63,
-    0xfd,
-    0x6b,
-    0x30,
-    0xbc,
-    0xf4,
-    0x4e,
-    0x9e,
-    0x8c,
-    0x25,
-    0x0c,
-    0xb6,
-    0x55,
-    0xe7,
-    0x3c,
-    0xd4,
-    0x4e,
-    0x0b,
-    0xfd,
-    0x8b,
-    0xc3,
-    0x0e,
-    0x1d,
-    0x9c,
-    0x44,
-    0x57,
-    0x8f,
-    0x1f,
-    0x86,
-    0xf7,
-    0xd5,
-    0x1b,
-    0xe4,
-    0x95,
+    0x30, 0x82, 0x04, 0xa3, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01,
+    0x01, 0x00, 0xc0, 0xc0, 0xce, 0x3e, 0x3c, 0x53, 0x67, 0x3f,
+    0x4f, 0xc5, 0x2f, 0xa4, 0xc2, 0x5a, 0x2f, 0x58, 0xfd, 0x27,
+    0x52, 0x6a, 0xe8, 0xcf, 0x4a, 0x73, 0x47, 0x8d, 0x25, 0x0f,
+    0x5f, 0x03, 0x26, 0x78, 0xef, 0xf0, 0x22, 0x12, 0xd3, 0xde,
+    0x47, 0xb2, 0x1c, 0x0b, 0x38, 0x63, 0x1a, 0x6c, 0x85, 0x7a,
+    0x80, 0xc6, 0x8f, 0xa0, 0x41, 0xaf, 0x62, 0xc4, 0x67, 0x32,
+    0x88, 0xf8, 0xa6, 0x9c, 0xf5, 0x23, 0x1d, 0xe4, 0xac, 0x3f,
+    0x29, 0xf9, 0xec, 0xe1, 0x8b, 0x26, 0x03, 0x2c, 0xb2, 0xab,
+    0xf3, 0x7d, 0xb5, 0xca, 0x49, 0xc0, 0x8f, 0x1c, 0xdf, 0x33,
+    0x3a, 0x60, 0xda, 0x3c, 0xb0, 0x16, 0xf8, 0xa9, 0x12, 0x8f,
+    0x64, 0xac, 0x23, 0x0c, 0x69, 0x64, 0x97, 0x5d, 0x99, 0xd4,
+    0x09, 0x83, 0x9b, 0x61, 0xd3, 0xac, 0xf0, 0xde, 0xdd, 0x5e,
+    0x9f, 0x44, 0x94, 0xdb, 0x3a, 0x4d, 0x97, 0xe8, 0x52, 0x29,
+    0xf7, 0xdb, 0x94, 0x07, 0x45, 0x90, 0x78, 0x1e, 0x31, 0x0b,
+    0x80, 0xf7, 0x57, 0xad, 0x1c, 0x79, 0xc5, 0xcb, 0x32, 0xb0,
+    0xce, 0xcd, 0x74, 0xb3, 0xe2, 0x94, 0xc5, 0x78, 0x2f, 0x34,
+    0x1a, 0x45, 0xf7, 0x8c, 0x52, 0xa5, 0xbc, 0x8d, 0xec, 0xd1,
+    0x2f, 0x31, 0x3b, 0xf0, 0x49, 0x59, 0x5e, 0x88, 0x9d, 0x15,
+    0x92, 0x35, 0x32, 0xc1, 0xe7, 0x61, 0xec, 0x50, 0x48, 0x7c,
+    0xba, 0x05, 0xf9, 0xf8, 0xf8, 0xa7, 0x8c, 0x83, 0xe8, 0x66,
+    0x5b, 0xeb, 0xfe, 0xd8, 0x4f, 0xdd, 0x6d, 0x36, 0xc0, 0xb2,
+    0x90, 0x0f, 0xb8, 0x52, 0xf9, 0x04, 0x9b, 0x40, 0x2c, 0x27,
+    0xd6, 0x36, 0x8e, 0xc2, 0x1b, 0x44, 0xf3, 0x92, 0xd5, 0x15,
+    0x9e, 0x9a, 0xbc, 0xf3, 0x7d, 0x03, 0xd7, 0x02, 0x14, 0x20,
+    0xe9, 0x10, 0x92, 0xfd, 0xf9, 0xfc, 0x8f, 0xe5, 0x18, 0xe1,
+    0x95, 0xcc, 0x9e, 0x60, 0xa6, 0xfa, 0x38, 0x4d, 0x02, 0x03,
+    0x01, 0x00, 0x01, 0x02, 0x82, 0x01, 0x00, 0x00, 0xc3, 0xc3,
+    0x0d, 0xb4, 0x27, 0x90, 0x8d, 0x4b, 0xbf, 0xb8, 0x84, 0xaa,
+    0xd0, 0xb8, 0xc7, 0x5d, 0x99, 0xbe, 0x55, 0xf6, 0x3e, 0x7c,
+    0x49, 0x20, 0xcb, 0x8a, 0x8e, 0x19, 0x0e, 0x66, 0x24, 0xac,
+    0xaf, 0x03, 0x33, 0x97, 0xeb, 0x95, 0xd5, 0x3b, 0x0f, 0x40,
+    0x56, 0x04, 0x50, 0xd1, 0xe6, 0xbe, 0x84, 0x0b, 0x25, 0xd3,
+    0x9c, 0xe2, 0x83, 0x6c, 0xf5, 0x62, 0x5d, 0xba, 0x2b, 0x7d,
+    0x3d, 0x7a, 0x6c, 0xe1, 0xd2, 0x0e, 0x54, 0x93, 0x80, 0x01,
+    0x91, 0x51, 0x09, 0xe8, 0x5b, 0x8e, 0x47, 0xbd, 0x64, 0xe4,
+    0x0e, 0x03, 0x83, 0x55, 0xcf, 0x5a, 0x37, 0xf0, 0x25, 0xb5,
+    0x7d, 0x21, 0xd7, 0x69, 0xdf, 0x6f, 0xc2, 0xcf, 0x10, 0xc9,
+    0x8a, 0x40, 0x9f, 0x7a, 0x70, 0xc0, 0xe8, 0xe8, 0xc0, 0xe6,
+    0x9a, 0x15, 0x0a, 0x8d, 0x4e, 0x46, 0xcb, 0x7a, 0xdb, 0xb3,
+    0xcb, 0x83, 0x02, 0xc4, 0xf0, 0xab, 0xeb, 0x02, 0x01, 0x0e,
+    0x23, 0xfc, 0x1d, 0xc4, 0xbd, 0xd4, 0xaa, 0x5d, 0x31, 0x46,
+    0x99, 0xce, 0x9e, 0xf8, 0x04, 0x75, 0x10, 0x67, 0xc4, 0x53,
+    0x47, 0x44, 0xfa, 0xc2, 0x25, 0x73, 0x7e, 0xd0, 0x8e, 0x59,
+    0xd1, 0xb2, 0x5a, 0xf4, 0xc7, 0x18, 0x92, 0x2f, 0x39, 0xab,
+    0xcd, 0xa3, 0xb5, 0xc2, 0xb9, 0xc7, 0xb9, 0x1b, 0x9f, 0x48,
+    0xfa, 0x13, 0xc6, 0x98, 0x4d, 0xca, 0x84, 0x9c, 0x06, 0xca,
+    0xe7, 0x89, 0x01, 0x04, 0xc4, 0x6c, 0xfd, 0x29, 0x59, 0x35,
+    0xe7, 0xf3, 0xdd, 0xce, 0x64, 0x59, 0xbf, 0x21, 0x13, 0xa9,
+    0x9f, 0x0e, 0xc5, 0xff, 0xbd, 0x33, 0x00, 0xec, 0xac, 0x6b,
+    0x11, 0xef, 0x51, 0x5e, 0xad, 0x07, 0x15, 0xde, 0xb8, 0x5f,
+    0xc6, 0xb9, 0xa3, 0x22, 0x65, 0x46, 0x83, 0x14, 0xdf, 0xd0,
+    0xf1, 0x44, 0x8a, 0xe1, 0x9c, 0x23, 0x33, 0xb4, 0x97, 0x33,
+    0xe6, 0x6b, 0x81, 0x02, 0x81, 0x81, 0x00, 0xec, 0x12, 0xa7,
+    0x59, 0x74, 0x6a, 0xde, 0x3e, 0xad, 0xd8, 0x36, 0x80, 0x50,
+    0xa2, 0xd5, 0x21, 0x81, 0x07, 0xf1, 0xd0, 0x91, 0xf2, 0x6c,
+    0x12, 0x2f, 0x9d, 0x1a, 0x26, 0xf8, 0x30, 0x65, 0xdf, 0xe8,
+    0xc0, 0x9b, 0x6a, 0x30, 0x98, 0x82, 0x87, 0xec, 0xa2, 0x56,
+    0x87, 0x62, 0x6f, 0xe7, 0x9f, 0xf6, 0x56, 0xe6, 0x71, 0x8f,
+    0x49, 0x86, 0x93, 0x5a, 0x4d, 0x34, 0x58, 0xfe, 0xd9, 0x04,
+    0x13, 0xaf, 0x79, 0xb7, 0xad, 0x11, 0xd1, 0x30, 0x9a, 0x14,
+    0x06, 0xa0, 0xfa, 0xb7, 0x55, 0xdc, 0x6c, 0x5a, 0x4c, 0x2c,
+    0x59, 0x56, 0xf6, 0xe8, 0x9d, 0xaf, 0x0a, 0x78, 0x99, 0x06,
+    0x06, 0x9e, 0xe7, 0x9c, 0x51, 0x55, 0x43, 0xfc, 0x3b, 0x6c,
+    0x0b, 0xbf, 0x2d, 0x41, 0xa7, 0xaf, 0xb7, 0xe0, 0xe8, 0x28,
+    0x18, 0xb4, 0x13, 0xd1, 0xe6, 0x97, 0xd0, 0x9f, 0x6a, 0x80,
+    0xca, 0xdd, 0x1a, 0x7e, 0x15, 0x02, 0x81, 0x81, 0x00, 0xd1,
+    0x06, 0x0c, 0x1f, 0xe3, 0xd0, 0xab, 0xd6, 0xca, 0x7c, 0xbc,
+    0x7d, 0x13, 0x35, 0xce, 0x27, 0xcd, 0xd8, 0x49, 0x51, 0x63,
+    0x64, 0x0f, 0xca, 0x06, 0x12, 0xfc, 0x07, 0x3e, 0xaf, 0x61,
+    0x6d, 0xe2, 0x53, 0x39, 0x27, 0xae, 0xc3, 0x11, 0x9e, 0x94,
+    0x01, 0x4f, 0xe3, 0xf3, 0x67, 0xf9, 0x77, 0xf9, 0xe7, 0x95,
+    0x3a, 0x6f, 0xe2, 0x20, 0x73, 0x3e, 0xa4, 0x7a, 0x28, 0xd4,
+    0x61, 0x97, 0xf6, 0x17, 0xa0, 0x23, 0x10, 0x2b, 0xce, 0x84,
+    0x57, 0x7e, 0x25, 0x1f, 0xf4, 0xa8, 0x54, 0xd2, 0x65, 0x94,
+    0xcc, 0x95, 0x0a, 0xab, 0x30, 0xc1, 0x59, 0x1f, 0x61, 0x8e,
+    0xb9, 0x6b, 0xd7, 0x4e, 0xb9, 0x83, 0x43, 0x79, 0x85, 0x11,
+    0xbc, 0x0f, 0xae, 0x25, 0x20, 0x05, 0xbc, 0xd2, 0x48, 0xa1,
+    0x68, 0x09, 0x84, 0xf6, 0x12, 0x9a, 0x66, 0xb9, 0x2b, 0xbb,
+    0x76, 0x03, 0x17, 0x46, 0x4e, 0x97, 0x59, 0x02, 0x81, 0x80,
+    0x09, 0x4c, 0xfa, 0xd6, 0xe5, 0x65, 0x48, 0x78, 0x43, 0xb5,
+    0x1f, 0x00, 0x93, 0x2c, 0xb7, 0x24, 0xe8, 0xc6, 0x7d, 0x5a,
+    0x70, 0x45, 0x92, 0xc8, 0x6c, 0xa3, 0xcd, 0xe1, 0xf7, 0x29,
+    0x40, 0xfa, 0x3f, 0x5b, 0x47, 0x44, 0x39, 0xc1, 0xe8, 0x72,
+    0x9e, 0x7a, 0x0e, 0xda, 0xaa, 0xa0, 0x2a, 0x09, 0xfd, 0x54,
+    0x93, 0x23, 0xaa, 0x37, 0x85, 0x5b, 0xcc, 0xd4, 0xf9, 0xd8,
+    0xff, 0xc1, 0x61, 0x0d, 0xbd, 0x7e, 0x18, 0x24, 0x73, 0x6d,
+    0x40, 0x72, 0xf1, 0x93, 0x09, 0x48, 0x97, 0x6c, 0x84, 0x90,
+    0xa8, 0x46, 0x14, 0x01, 0x39, 0x11, 0xe5, 0x3c, 0x41, 0x27,
+    0x32, 0x75, 0x24, 0xed, 0xa1, 0xd9, 0x12, 0x29, 0x8a, 0x28,
+    0x71, 0x89, 0x8d, 0xca, 0x30, 0xb0, 0x01, 0xc4, 0x2f, 0x82,
+    0x19, 0x14, 0x4c, 0x70, 0x1c, 0xb8, 0x23, 0x2e, 0xe8, 0x90,
+    0x49, 0x97, 0x92, 0x97, 0x6b, 0x7a, 0x9d, 0xb9, 0x02, 0x81,
+    0x80, 0x0f, 0x0e, 0xa1, 0x76, 0xf6, 0xa1, 0x44, 0x8f, 0xaf,
+    0x7c, 0x76, 0xd3, 0x87, 0xbb, 0xbb, 0x83, 0x10, 0x88, 0x01,
+    0x18, 0x14, 0xd1, 0xd3, 0x75, 0x59, 0x24, 0xaa, 0xf5, 0x16,
+    0xa5, 0xe9, 0x9d, 0xd1, 0xcc, 0xee, 0xf4, 0x15, 0xd9, 0xc5,
+    0x7e, 0x27, 0xe9, 0x44, 0x49, 0x06, 0x72, 0xb9, 0xfc, 0xd3,
+    0x8a, 0xc4, 0x2c, 0x36, 0x7d, 0x12, 0x9b, 0x5a, 0xaa, 0xdc,
+    0x85, 0xee, 0x6e, 0xad, 0x54, 0xb3, 0xf4, 0xfc, 0x31, 0xa1,
+    0x06, 0x3a, 0x70, 0x57, 0x0c, 0xf3, 0x95, 0x5b, 0x3e, 0xe8,
+    0xfd, 0x1a, 0x4f, 0xf6, 0x78, 0x93, 0x46, 0x6a, 0xd7, 0x31,
+    0xb4, 0x84, 0x64, 0x85, 0x09, 0x38, 0x89, 0x92, 0x94, 0x1c,
+    0xbf, 0xe2, 0x3c, 0x2a, 0xe0, 0xff, 0x99, 0xa3, 0xf0, 0x2b,
+    0x31, 0xc2, 0x36, 0xcd, 0x60, 0xbf, 0x9d, 0x2d, 0x74, 0x32,
+    0xe8, 0x9c, 0x93, 0x6e, 0xbb, 0x91, 0x7b, 0xfd, 0xd9, 0x02,
+    0x81, 0x81, 0x00, 0xa2, 0x71, 0x25, 0x38, 0xeb, 0x2a, 0xe9,
+    0x37, 0xcd, 0xfe, 0x44, 0xce, 0x90, 0x3f, 0x52, 0x87, 0x84,
+    0x52, 0x1b, 0xae, 0x8d, 0x22, 0x94, 0xce, 0x38, 0xe6, 0x04,
+    0x88, 0x76, 0x85, 0x9a, 0xd3, 0x14, 0x09, 0xe5, 0x69, 0x9a,
+    0xff, 0x58, 0x92, 0x02, 0x6a, 0x7d, 0x7c, 0x1e, 0x2c, 0xfd,
+    0xa8, 0xca, 0x32, 0x14, 0x4f, 0x0d, 0x84, 0x0d, 0x37, 0x43,
+    0xbf, 0xe4, 0x5d, 0x12, 0xc8, 0x24, 0x91, 0x27, 0x8d, 0x46,
+    0xd9, 0x54, 0x53, 0xe7, 0x62, 0x71, 0xa8, 0x2b, 0x71, 0x41,
+    0x8d, 0x75, 0xf8, 0x3a, 0xa0, 0x61, 0x29, 0x46, 0xa6, 0xe5,
+    0x82, 0xfa, 0x3a, 0xd9, 0x08, 0xfa, 0xfc, 0x63, 0xfd, 0x6b,
+    0x30, 0xbc, 0xf4, 0x4e, 0x9e, 0x8c, 0x25, 0x0c, 0xb6, 0x55,
+    0xe7, 0x3c, 0xd4, 0x4e, 0x0b, 0xfd, 0x8b, 0xc3, 0x0e, 0x1d,
+    0x9c, 0x44, 0x57, 0x8f, 0x1f, 0x86, 0xf7, 0xd5, 0x1b, 0xe4,
+    0x95
 };
 
 static unsigned char test3072[] = {
@@ -2314,2355 +410,241 @@
 };
 
 static unsigned char test4096[] = {
-    0x30,
-    0x82,
-    0x09,
-    0x29,
-    0x02,
-    0x01,
-    0x00,
-    0x02,
-    0x82,
-    0x02,
-    0x01,
-    0x00,
-    0xc0,
-    0x71,
-    0xac,
-    0x1a,
-    0x13,
-    0x88,
-    0x82,
-    0x43,
-    0x3b,
-    0x51,
-    0x57,
-    0x71,
-    0x8d,
-    0xb6,
-    0x2b,
-    0x82,
-    0x65,
-    0x21,
-    0x53,
-    0x5f,
-    0x28,
-    0x29,
-    0x4f,
-    0x8d,
-    0x7c,
-    0x8a,
-    0xb9,
-    0x44,
-    0xb3,
-    0x28,
-    0x41,
-    0x4f,
-    0xd3,
-    0xfa,
-    0x6a,
-    0xf8,
-    0xb9,
-    0x28,
-    0x50,
-    0x39,
-    0x67,
-    0x53,
-    0x2c,
-    0x3c,
-    0xd7,
-    0xcb,
-    0x96,
-    0x41,
-    0x40,
-    0x32,
-    0xbb,
-    0xeb,
-    0x70,
-    0xae,
-    0x1f,
-    0xb0,
-    0x65,
-    0xf7,
-    0x3a,
-    0xd9,
-    0x22,
-    0xfd,
-    0x10,
-    0xae,
-    0xbd,
-    0x02,
-    0xe2,
-    0xdd,
-    0xf3,
-    0xc2,
-    0x79,
-    0x3c,
-    0xc6,
-    0xfc,
-    0x75,
-    0xbb,
-    0xaf,
-    0x4e,
-    0x3a,
-    0x36,
-    0xc2,
-    0x4f,
-    0xea,
-    0x25,
-    0xdf,
-    0x13,
-    0x16,
-    0x4b,
-    0x20,
-    0xfe,
-    0x4b,
-    0x69,
-    0x16,
-    0xc4,
-    0x7f,
-    0x1a,
-    0x43,
-    0xa6,
-    0x17,
-    0x1b,
-    0xb9,
-    0x0a,
-    0xf3,
-    0x09,
-    0x86,
-    0x28,
-    0x89,
-    0xcf,
-    0x2c,
-    0xd0,
-    0xd4,
-    0x81,
-    0xaf,
-    0xc6,
-    0x6d,
-    0xe6,
-    0x21,
-    0x8d,
-    0xee,
-    0xef,
-    0xea,
-    0xdc,
-    0xb7,
-    0xc6,
-    0x3b,
-    0x63,
-    0x9f,
-    0x0e,
-    0xad,
-    0x89,
-    0x78,
-    0x23,
-    0x18,
-    0xbf,
-    0x70,
-    0x7e,
-    0x84,
-    0xe0,
-    0x37,
-    0xec,
-    0xdb,
-    0x8e,
-    0x9c,
-    0x3e,
-    0x6a,
-    0x19,
-    0xcc,
-    0x99,
-    0x72,
-    0xe6,
-    0xb5,
-    0x7d,
-    0x6d,
-    0xfa,
-    0xe5,
-    0xd3,
-    0xe4,
-    0x90,
-    0xb5,
-    0xb2,
-    0xb2,
-    0x12,
-    0x70,
-    0x4e,
-    0xca,
-    0xf8,
-    0x10,
-    0xf8,
-    0xa3,
-    0x14,
-    0xc2,
-    0x48,
-    0x19,
-    0xeb,
-    0x60,
-    0x99,
-    0xbb,
-    0x2a,
-    0x1f,
-    0xb1,
-    0x7a,
-    0xb1,
-    0x3d,
-    0x24,
-    0xfb,
-    0xa0,
-    0x29,
-    0xda,
-    0xbd,
-    0x1b,
-    0xd7,
-    0xa4,
-    0xbf,
-    0xef,
-    0x60,
-    0x2d,
-    0x22,
-    0xca,
-    0x65,
-    0x98,
-    0xf1,
-    0xc4,
-    0xe1,
-    0xc9,
-    0x02,
-    0x6b,
-    0x16,
-    0x28,
-    0x2f,
-    0xa1,
-    0xaa,
-    0x79,
-    0x00,
-    0xda,
-    0xdc,
-    0x7c,
-    0x43,
-    0xf7,
-    0x42,
-    0x3c,
-    0xa0,
-    0xef,
-    0x68,
-    0xf7,
-    0xdf,
-    0xb9,
-    0x69,
-    0xfb,
-    0x8e,
-    0x01,
-    0xed,
-    0x01,
-    0x42,
-    0xb5,
-    0x4e,
-    0x57,
-    0xa6,
-    0x26,
-    0xb8,
-    0xd0,
-    0x7b,
-    0x56,
-    0x6d,
-    0x03,
-    0xc6,
-    0x40,
-    0x8c,
-    0x8c,
-    0x2a,
-    0x55,
-    0xd7,
-    0x9c,
-    0x35,
-    0x00,
-    0x94,
-    0x93,
-    0xec,
-    0x03,
-    0xeb,
-    0x22,
-    0xef,
-    0x77,
-    0xbb,
-    0x79,
-    0x13,
-    0x3f,
-    0x15,
-    0xa1,
-    0x8f,
-    0xca,
-    0xdf,
-    0xfd,
-    0xd3,
-    0xb8,
-    0xe1,
-    0xd4,
-    0xcc,
-    0x09,
-    0x3f,
-    0x3c,
-    0x2c,
-    0xdb,
-    0xd1,
-    0x49,
-    0x7f,
-    0x38,
-    0x07,
-    0x83,
-    0x6d,
-    0xeb,
-    0x08,
-    0x66,
-    0xe9,
-    0x06,
-    0x44,
-    0x12,
-    0xac,
-    0x95,
-    0x22,
-    0x90,
-    0x23,
-    0x67,
-    0xd4,
-    0x08,
-    0xcc,
-    0xf4,
-    0xb7,
-    0xdc,
-    0xcc,
-    0x87,
-    0xd4,
-    0xac,
-    0x69,
-    0x35,
-    0x4c,
-    0xb5,
-    0x39,
-    0x36,
-    0xcd,
-    0xa4,
-    0xd2,
-    0x95,
-    0xca,
-    0x0d,
-    0xc5,
-    0xda,
-    0xc2,
-    0xc5,
-    0x22,
-    0x32,
-    0x28,
-    0x08,
-    0xe3,
-    0xd2,
-    0x8b,
-    0x38,
-    0x30,
-    0xdc,
-    0x8c,
-    0x75,
-    0x4f,
-    0x6a,
-    0xec,
-    0x7a,
-    0xac,
-    0x16,
-    0x3e,
-    0xa8,
-    0xd4,
-    0x6a,
-    0x45,
-    0xe1,
-    0xa8,
-    0x4f,
-    0x2e,
-    0x80,
-    0x34,
-    0xaa,
-    0x54,
-    0x1b,
-    0x02,
-    0x95,
-    0x7d,
-    0x8a,
-    0x6d,
-    0xcc,
-    0x79,
-    0xca,
-    0xf2,
-    0xa4,
-    0x2e,
-    0x8d,
-    0xfb,
-    0xfe,
-    0x15,
-    0x51,
-    0x10,
-    0x0e,
-    0x4d,
-    0x88,
-    0xb1,
-    0xc7,
-    0xf4,
-    0x79,
-    0xdb,
-    0xf0,
-    0xb4,
-    0x56,
-    0x44,
-    0x37,
-    0xca,
-    0x5a,
-    0xc1,
-    0x8c,
-    0x48,
-    0xac,
-    0xae,
-    0x48,
-    0x80,
-    0x83,
-    0x01,
-    0x3f,
-    0xde,
-    0xd9,
-    0xd3,
-    0x2c,
-    0x51,
-    0x46,
-    0xb1,
-    0x41,
-    0xb6,
-    0xc6,
-    0x91,
-    0x72,
-    0xf9,
-    0x83,
-    0x55,
-    0x1b,
-    0x8c,
-    0xba,
-    0xf3,
-    0x73,
-    0xe5,
-    0x2c,
-    0x74,
-    0x50,
-    0x3a,
-    0xbe,
-    0xc5,
-    0x2f,
-    0xa7,
-    0xb2,
-    0x6d,
-    0x8c,
-    0x9e,
-    0x13,
-    0x77,
-    0xa3,
-    0x13,
-    0xcd,
-    0x6d,
-    0x8c,
-    0x45,
-    0xe1,
-    0xfc,
-    0x0b,
-    0xb7,
-    0x69,
-    0xe9,
-    0x27,
-    0xbc,
-    0x65,
-    0xc3,
-    0xfa,
-    0x9b,
-    0xd0,
-    0xef,
-    0xfe,
-    0xe8,
-    0x1f,
-    0xb3,
-    0x5e,
-    0x34,
-    0xf4,
-    0x8c,
-    0xea,
-    0xfc,
-    0xd3,
-    0x81,
-    0xbf,
-    0x3d,
-    0x30,
-    0xb2,
-    0xb4,
-    0x01,
-    0xe8,
-    0x43,
-    0x0f,
-    0xba,
-    0x02,
-    0x23,
-    0x42,
-    0x76,
-    0x82,
-    0x31,
-    0x73,
-    0x91,
-    0xed,
-    0x07,
-    0x46,
-    0x61,
-    0x0d,
-    0x39,
-    0x83,
-    0x40,
-    0xce,
-    0x7a,
-    0xd4,
-    0xdb,
-    0x80,
-    0x2c,
-    0x1f,
-    0x0d,
-    0xd1,
-    0x34,
-    0xd4,
-    0x92,
-    0xe3,
-    0xd4,
-    0xf1,
-    0xc2,
-    0x01,
-    0x02,
-    0x03,
-    0x01,
-    0x00,
-    0x01,
-    0x02,
-    0x82,
-    0x02,
-    0x01,
-    0x00,
-    0x97,
-    0x6c,
-    0xda,
-    0x6e,
-    0xea,
-    0x4f,
-    0xcf,
-    0xaf,
-    0xf7,
-    0x4c,
-    0xd9,
-    0xf1,
-    0x90,
-    0x00,
-    0x77,
-    0xdb,
-    0xf2,
-    0x97,
-    0x76,
-    0x72,
-    0xb9,
-    0xb7,
-    0x47,
-    0xd1,
-    0x9c,
-    0xdd,
-    0xcb,
-    0x4a,
-    0x33,
-    0x6e,
-    0xc9,
-    0x75,
-    0x76,
-    0xe6,
-    0xe4,
-    0xa5,
-    0x31,
-    0x8c,
-    0x77,
-    0x13,
-    0xb4,
-    0x29,
-    0xcd,
-    0xf5,
-    0x52,
-    0x17,
-    0xef,
-    0xf3,
-    0x08,
-    0x00,
-    0xe3,
-    0xbd,
-    0x2e,
-    0xbc,
-    0xd4,
-    0x52,
-    0x88,
-    0xe9,
-    0x30,
-    0x75,
-    0x0b,
-    0x02,
-    0xf5,
-    0xcd,
-    0x89,
-    0x0c,
-    0x6c,
-    0x57,
-    0x19,
-    0x27,
-    0x3d,
-    0x1e,
-    0x85,
-    0xb4,
-    0xc1,
-    0x2f,
-    0x1d,
-    0x92,
-    0x00,
-    0x5c,
-    0x76,
-    0x29,
-    0x4b,
-    0xa4,
-    0xe1,
-    0x12,
-    0xb3,
-    0xc8,
-    0x09,
-    0xfe,
-    0x0e,
-    0x78,
-    0x72,
-    0x61,
-    0xcb,
-    0x61,
-    0x6f,
-    0x39,
-    0x91,
-    0x95,
-    0x4e,
-    0xd5,
-    0x3e,
-    0xc7,
-    0x8f,
-    0xb8,
-    0xf6,
-    0x36,
-    0xfe,
-    0x9c,
-    0x93,
-    0x9a,
-    0x38,
-    0x25,
-    0x7a,
-    0xf4,
-    0x4a,
-    0x12,
-    0xd4,
-    0xa0,
-    0x13,
-    0xbd,
-    0xf9,
-    0x1d,
-    0x12,
-    0x3e,
-    0x21,
-    0x39,
-    0xfb,
-    0x72,
-    0xe0,
-    0x05,
-    0x3d,
-    0xc3,
-    0xe5,
-    0x50,
-    0xa8,
-    0x5d,
-    0x85,
-    0xa3,
-    0xea,
-    0x5f,
-    0x1c,
-    0xb2,
-    0x3f,
-    0xea,
-    0x6d,
-    0x03,
-    0x91,
-    0x55,
-    0xd8,
-    0x19,
-    0x0a,
-    0x21,
-    0x12,
-    0x16,
-    0xd9,
-    0x12,
-    0xc4,
-    0xe6,
-    0x07,
-    0x18,
-    0x5b,
-    0x26,
-    0xa4,
-    0xae,
-    0xed,
-    0x2b,
-    0xb7,
-    0xa6,
-    0xed,
-    0xf8,
-    0xad,
-    0xec,
-    0x77,
-    0xe6,
-    0x7f,
-    0x4f,
-    0x76,
-    0x00,
-    0xc0,
-    0xfa,
-    0x15,
-    0x92,
-    0xb4,
-    0x2c,
-    0x22,
-    0xc2,
-    0xeb,
-    0x6a,
-    0xad,
-    0x14,
-    0x05,
-    0xb2,
-    0xe5,
-    0x8a,
-    0x9e,
-    0x85,
-    0x83,
-    0xcc,
-    0x04,
-    0xf1,
-    0x56,
-    0x78,
-    0x44,
-    0x5e,
-    0xde,
-    0xe0,
-    0x60,
-    0x1a,
-    0x65,
-    0x79,
-    0x31,
-    0x23,
-    0x05,
-    0xbb,
-    0x01,
-    0xff,
-    0xdd,
-    0x2e,
-    0xb7,
-    0xb3,
-    0xaa,
-    0x74,
-    0xe0,
-    0xa5,
-    0x94,
-    0xaf,
-    0x4b,
-    0xde,
-    0x58,
-    0x0f,
-    0x55,
-    0xde,
-    0x33,
-    0xf6,
-    0xe3,
-    0xd6,
-    0x34,
-    0x36,
-    0x57,
-    0xd6,
-    0x79,
-    0x91,
-    0x2e,
-    0xbe,
-    0x3b,
-    0xd9,
-    0x4e,
-    0xb6,
-    0x9d,
-    0x21,
-    0x5c,
-    0xd3,
-    0x48,
-    0x14,
-    0x7f,
-    0x4a,
-    0xc4,
-    0x60,
-    0xa9,
-    0x29,
-    0xf8,
-    0x53,
-    0x7f,
-    0x88,
-    0x11,
-    0x2d,
-    0xb5,
-    0xc5,
-    0x2d,
-    0x6f,
-    0xee,
-    0x85,
-    0x0b,
-    0xf7,
-    0x8d,
-    0x9a,
-    0xbe,
-    0xb0,
-    0x42,
-    0xf2,
-    0x2e,
-    0x71,
-    0xaf,
-    0x19,
-    0x31,
-    0x6d,
-    0xec,
-    0xcd,
-    0x6f,
-    0x2b,
-    0x23,
-    0xdf,
-    0xb4,
-    0x40,
-    0xaf,
-    0x2c,
-    0x0a,
-    0xc3,
-    0x1b,
-    0x7d,
-    0x7d,
-    0x03,
-    0x1d,
-    0x4b,
-    0xf3,
-    0xb5,
-    0xe0,
-    0x85,
-    0xd8,
-    0xdf,
-    0x91,
-    0x6b,
-    0x0a,
-    0x69,
-    0xf7,
-    0xf2,
-    0x69,
-    0x66,
-    0x5b,
-    0xf1,
-    0xcf,
-    0x46,
-    0x7d,
-    0xe9,
-    0x70,
-    0xfa,
-    0x6d,
-    0x7e,
-    0x75,
-    0x4e,
-    0xa9,
-    0x77,
-    0xe6,
-    0x8c,
-    0x02,
-    0xf7,
-    0x14,
-    0x4d,
-    0xa5,
-    0x41,
-    0x8f,
-    0x3f,
-    0xc1,
-    0x62,
-    0x1e,
-    0x71,
-    0x5e,
-    0x38,
-    0xb4,
-    0xd6,
-    0xe6,
-    0xe1,
-    0x4b,
-    0xc2,
-    0x2c,
-    0x30,
-    0x83,
-    0x81,
-    0x6f,
-    0x49,
-    0x2e,
-    0x96,
-    0xe6,
-    0xc9,
-    0x9a,
-    0xf7,
-    0x5d,
-    0x09,
-    0xa0,
-    0x55,
-    0x02,
-    0xa5,
-    0x3a,
-    0x25,
-    0x23,
-    0xd0,
-    0x92,
-    0xc3,
-    0xa3,
-    0xe3,
-    0x0e,
-    0x12,
-    0x2f,
-    0x4d,
-    0xef,
-    0xf3,
-    0x55,
-    0x5a,
-    0xbe,
-    0xe6,
-    0x19,
-    0x86,
-    0x31,
-    0xab,
-    0x75,
-    0x9a,
-    0xd3,
-    0xf0,
-    0x2c,
-    0xc5,
-    0x41,
-    0x92,
-    0xd9,
-    0x1f,
-    0x5f,
-    0x11,
-    0x8c,
-    0x75,
-    0x1c,
-    0x63,
-    0xd0,
-    0x02,
-    0x80,
-    0x2c,
-    0x68,
-    0xcb,
-    0x93,
-    0xfb,
-    0x51,
-    0x73,
-    0x49,
-    0xb4,
-    0x60,
-    0xda,
-    0xe2,
-    0x26,
-    0xaf,
-    0xa9,
-    0x46,
-    0x12,
-    0xb8,
-    0xec,
-    0x50,
-    0xdd,
-    0x12,
-    0x06,
-    0x5f,
-    0xce,
-    0x59,
-    0xe6,
-    0xf6,
-    0x1c,
-    0xe0,
-    0x54,
-    0x10,
-    0xad,
-    0xf6,
-    0xcd,
-    0x98,
-    0xcc,
-    0x0f,
-    0xfb,
-    0xcb,
-    0x41,
-    0x14,
-    0x9d,
-    0xed,
-    0xe4,
-    0xb4,
-    0x74,
-    0x5f,
-    0x09,
-    0x60,
-    0xc7,
-    0x12,
-    0xf6,
-    0x7b,
-    0x3c,
-    0x8f,
-    0xa7,
-    0x20,
-    0xbc,
-    0xe4,
-    0xb1,
-    0xef,
-    0xeb,
-    0xa4,
-    0x93,
-    0xc5,
-    0x06,
-    0xca,
-    0x9a,
-    0x27,
-    0x9d,
-    0x87,
-    0xf3,
-    0xde,
-    0xca,
-    0xe5,
-    0xe7,
-    0xf6,
-    0x1c,
-    0x01,
-    0x65,
-    0x5b,
-    0xfb,
-    0x19,
-    0x79,
-    0x6e,
-    0x08,
-    0x26,
-    0xc5,
-    0xc8,
-    0x28,
-    0x0e,
-    0xb6,
-    0x3b,
-    0x07,
-    0x08,
-    0xc1,
-    0x02,
-    0x82,
-    0x01,
-    0x01,
-    0x00,
-    0xe8,
-    0x1c,
-    0x73,
-    0xa6,
-    0xb8,
-    0xe0,
-    0x0e,
-    0x6d,
-    0x8d,
-    0x1b,
-    0xb9,
-    0x53,
-    0xed,
-    0x58,
-    0x94,
-    0xe6,
-    0x1d,
-    0x60,
-    0x14,
-    0x5c,
-    0x76,
-    0x43,
-    0xc4,
-    0x58,
-    0x19,
-    0xc4,
-    0x24,
-    0xe8,
-    0xbc,
-    0x1b,
-    0x3b,
-    0x0b,
-    0x13,
-    0x24,
-    0x45,
-    0x54,
-    0x0e,
-    0xcc,
-    0x37,
-    0xf0,
-    0xe0,
-    0x63,
-    0x7d,
-    0xc3,
-    0xf7,
-    0xfb,
-    0x81,
-    0x74,
-    0x81,
-    0xc4,
-    0x0f,
-    0x1a,
-    0x21,
-    0x48,
-    0xaf,
-    0xce,
-    0xc1,
-    0xc4,
-    0x94,
-    0x18,
-    0x06,
-    0x44,
-    0x8d,
-    0xd3,
-    0xd2,
-    0x22,
-    0x2d,
-    0x2d,
-    0x3e,
-    0x5a,
-    0x31,
-    0xdc,
-    0x95,
-    0x8e,
-    0xf4,
-    0x41,
-    0xfc,
-    0x58,
-    0xc9,
-    0x40,
-    0x92,
-    0x17,
-    0x5f,
-    0xe3,
-    0xda,
-    0xac,
-    0x9e,
-    0x3f,
-    0x1c,
-    0x2a,
-    0x6b,
-    0x58,
-    0x5f,
-    0x48,
-    0x78,
-    0x20,
-    0xb1,
-    0xaf,
-    0x24,
-    0x9b,
-    0x3c,
-    0x20,
-    0x8b,
-    0x93,
-    0x25,
-    0x9e,
-    0xe6,
-    0x6b,
-    0xbc,
-    0x13,
-    0x42,
-    0x14,
-    0x6c,
-    0x36,
-    0x31,
-    0xff,
-    0x7a,
-    0xd1,
-    0xc1,
-    0x1a,
-    0x26,
-    0x14,
-    0x7f,
-    0xa9,
-    0x76,
-    0xa7,
-    0x0c,
-    0xf8,
-    0xcc,
-    0xed,
-    0x07,
-    0x6a,
-    0xd2,
-    0xdf,
-    0x62,
-    0xee,
-    0x0a,
-    0x7c,
-    0x84,
-    0xcb,
-    0x49,
-    0x90,
-    0xb2,
-    0x03,
-    0x0d,
-    0xa2,
-    0x82,
-    0x06,
-    0x77,
-    0xf1,
-    0xcd,
-    0x67,
-    0xf2,
-    0x47,
-    0x21,
-    0x02,
-    0x3f,
-    0x43,
-    0x21,
-    0xf0,
-    0x46,
-    0x30,
-    0x62,
-    0x51,
-    0x72,
-    0xb1,
-    0xe7,
-    0x48,
-    0xc6,
-    0x67,
-    0x12,
-    0xcd,
-    0x9e,
-    0xd6,
-    0x15,
-    0xe5,
-    0x21,
-    0xed,
-    0xfa,
-    0x8f,
-    0x30,
-    0xa6,
-    0x41,
-    0xfe,
-    0xb6,
-    0xfa,
-    0x8f,
-    0x34,
-    0x14,
-    0x19,
-    0xe8,
-    0x11,
-    0xf7,
-    0xa5,
-    0x77,
-    0x3e,
-    0xb7,
-    0xf9,
-    0x39,
-    0x07,
-    0x8c,
-    0x67,
-    0x2a,
-    0xab,
-    0x7b,
-    0x08,
-    0xf8,
-    0xb0,
-    0x06,
-    0xa8,
-    0xea,
-    0x2f,
-    0x8f,
-    0xfa,
-    0xcc,
-    0xcc,
-    0x40,
-    0xce,
-    0xf3,
-    0x70,
-    0x4f,
-    0x3f,
-    0x7f,
-    0xe2,
-    0x0c,
-    0xea,
-    0x76,
-    0x4a,
-    0x35,
-    0x4e,
-    0x47,
-    0xad,
-    0x2b,
-    0xa7,
-    0x97,
-    0x5d,
-    0x74,
-    0x43,
-    0x97,
-    0x90,
-    0xd2,
-    0xfb,
-    0xd9,
-    0xf9,
-    0x96,
-    0x01,
-    0x33,
-    0x05,
-    0xed,
-    0x7b,
-    0x03,
-    0x05,
-    0xad,
-    0xf8,
-    0x49,
-    0x03,
-    0x02,
-    0x82,
-    0x01,
-    0x01,
-    0x00,
-    0xd4,
-    0x40,
-    0x17,
-    0x66,
-    0x10,
-    0x92,
-    0x95,
-    0xc8,
-    0xec,
-    0x62,
-    0xa9,
-    0x7a,
-    0xcb,
-    0x93,
-    0x8e,
-    0xe6,
-    0x53,
-    0xd4,
-    0x80,
-    0x48,
-    0x27,
-    0x4b,
-    0x41,
-    0xce,
-    0x61,
-    0xdf,
-    0xbf,
-    0x94,
-    0xa4,
-    0x3d,
-    0x71,
-    0x03,
-    0x0b,
-    0xed,
-    0x25,
-    0x71,
-    0x98,
-    0xa4,
-    0xd6,
-    0xd5,
-    0x4a,
-    0x57,
-    0xf5,
-    0x6c,
-    0x1b,
-    0xda,
-    0x21,
-    0x7d,
-    0x35,
-    0x45,
-    0xb3,
-    0xf3,
-    0x6a,
-    0xd9,
-    0xd3,
-    0x43,
-    0xe8,
-    0x5c,
-    0x54,
-    0x1c,
-    0x83,
-    0x1b,
-    0xb4,
-    0x5f,
-    0xf2,
-    0x97,
-    0x24,
-    0x2e,
-    0xdc,
-    0x40,
-    0xde,
-    0x92,
-    0x23,
-    0x59,
-    0x8e,
-    0xbc,
-    0xd2,
-    0xa1,
-    0xf2,
-    0xe0,
-    0x4c,
-    0xdd,
-    0x0b,
-    0xd1,
-    0xe7,
-    0xae,
-    0x65,
-    0xbc,
-    0xb5,
-    0xf5,
-    0x5b,
-    0x98,
-    0xe9,
-    0xd7,
-    0xc2,
-    0xb7,
-    0x0e,
-    0x55,
-    0x71,
-    0x0e,
-    0x3c,
-    0x0a,
-    0x24,
-    0x6b,
-    0xa6,
-    0xe6,
-    0x14,
-    0x61,
-    0x11,
-    0xfd,
-    0x33,
-    0x42,
-    0x99,
-    0x2b,
-    0x84,
-    0x77,
-    0x74,
-    0x92,
-    0x91,
-    0xf5,
-    0x79,
-    0x79,
-    0xcf,
-    0xad,
-    0x8e,
-    0x04,
-    0xef,
-    0x80,
-    0x1e,
-    0x57,
-    0xf4,
-    0x14,
-    0xf5,
-    0x35,
-    0x09,
-    0x74,
-    0xb2,
-    0x13,
-    0x71,
-    0x58,
-    0x6b,
-    0xea,
-    0x32,
-    0x5d,
-    0xf3,
-    0xd3,
-    0x76,
-    0x48,
-    0x39,
-    0x10,
-    0x23,
-    0x84,
-    0x9d,
-    0xbe,
-    0x92,
-    0x77,
-    0x4a,
-    0xed,
-    0x70,
-    0x3e,
-    0x1a,
-    0xa2,
-    0x6c,
-    0xb3,
-    0x81,
-    0x00,
-    0xc3,
-    0xc9,
-    0xe4,
-    0x52,
-    0xc8,
-    0x24,
-    0x88,
-    0x0c,
-    0x41,
-    0xad,
-    0x87,
-    0x5a,
-    0xea,
-    0xa3,
-    0x7a,
-    0x85,
-    0x1c,
-    0x5e,
-    0x31,
-    0x7f,
-    0xc3,
-    0x35,
-    0xc6,
-    0xfa,
-    0x10,
-    0xc8,
-    0x75,
-    0x10,
-    0xc4,
-    0x96,
-    0x99,
-    0xe7,
-    0xfe,
-    0x01,
-    0xb4,
-    0x74,
-    0xdb,
-    0xb4,
-    0x11,
-    0xc3,
-    0xc8,
-    0x8c,
-    0xf6,
-    0xf7,
-    0x3b,
-    0x66,
-    0x50,
-    0xfc,
-    0xdb,
-    0xeb,
-    0xca,
-    0x47,
-    0x85,
-    0x89,
-    0xe1,
-    0x65,
-    0xd9,
-    0x62,
-    0x34,
-    0x3c,
-    0x70,
-    0xd8,
-    0x2e,
-    0xb4,
-    0x2f,
-    0x65,
-    0x3c,
-    0x4a,
-    0xa6,
-    0x2a,
-    0xe7,
-    0xc7,
-    0xd8,
-    0x41,
-    0x8f,
-    0x8a,
-    0x43,
-    0xbf,
-    0x42,
-    0xf2,
-    0x4d,
-    0xbc,
-    0xfc,
-    0x9e,
-    0x27,
-    0x95,
-    0xfb,
-    0x75,
-    0xff,
-    0xab,
-    0x02,
-    0x82,
-    0x01,
-    0x00,
-    0x41,
-    0x2f,
-    0x44,
-    0x57,
-    0x6d,
-    0x12,
-    0x17,
-    0x5b,
-    0x32,
-    0xc6,
-    0xb7,
-    0x6c,
-    0x57,
-    0x7a,
-    0x8a,
-    0x0e,
-    0x79,
-    0xef,
-    0x72,
-    0xa8,
-    0x68,
-    0xda,
-    0x2d,
-    0x38,
-    0xe4,
-    0xbb,
-    0x8d,
-    0xf6,
-    0x02,
-    0x65,
-    0xcf,
-    0x56,
-    0x13,
-    0xe1,
-    0x1a,
-    0xcb,
-    0x39,
-    0x80,
-    0xa6,
-    0xb1,
-    0x32,
-    0x03,
-    0x1e,
-    0xdd,
-    0xbb,
-    0x35,
-    0xd9,
-    0xac,
-    0x43,
-    0x89,
-    0x31,
-    0x08,
-    0x90,
-    0x92,
-    0x5e,
-    0x35,
-    0x3d,
-    0x7b,
-    0x9c,
-    0x6f,
-    0x86,
-    0xcb,
-    0x17,
-    0xdd,
-    0x85,
-    0xe4,
-    0xed,
-    0x35,
-    0x08,
-    0x8e,
-    0xc1,
-    0xf4,
-    0x05,
-    0xd8,
-    0x68,
-    0xc6,
-    0x63,
-    0x3c,
-    0xf7,
-    0xff,
-    0xf7,
-    0x47,
-    0x33,
-    0x39,
-    0xc5,
-    0x3e,
-    0xb7,
-    0x0e,
-    0x58,
-    0x35,
-    0x9d,
-    0x81,
-    0xea,
-    0xf8,
-    0x6a,
-    0x2c,
-    0x1c,
-    0x5a,
-    0x68,
-    0x78,
-    0x64,
-    0x11,
-    0x6b,
-    0xc1,
-    0x3e,
-    0x4e,
-    0x7a,
-    0xbd,
-    0x84,
-    0xcb,
-    0x0f,
-    0xc2,
-    0xb6,
-    0x85,
-    0x1d,
-    0xd3,
-    0x76,
-    0xc5,
-    0x93,
-    0x6a,
-    0x69,
-    0x89,
-    0x56,
-    0x34,
-    0xdc,
-    0x4a,
-    0x9b,
-    0xbc,
-    0xff,
-    0xa8,
-    0x0d,
-    0x6e,
-    0x35,
-    0x9c,
-    0x60,
-    0xa7,
-    0x23,
-    0x30,
-    0xc7,
-    0x06,
-    0x64,
-    0x39,
-    0x8b,
-    0x94,
-    0x89,
-    0xee,
-    0xba,
-    0x7f,
-    0x60,
-    0x8d,
-    0xfa,
-    0xb6,
-    0x97,
-    0x76,
-    0xdc,
-    0x51,
-    0x4a,
-    0x3c,
-    0xeb,
-    0x3a,
-    0x14,
-    0x2c,
-    0x20,
-    0x60,
-    0x69,
-    0x4a,
-    0x86,
-    0xfe,
-    0x8c,
-    0x21,
-    0x84,
-    0x49,
-    0x54,
-    0xb3,
-    0x20,
-    0xe1,
-    0x01,
-    0x7f,
-    0x58,
-    0xdf,
-    0x7f,
-    0xb5,
-    0x21,
-    0x51,
-    0x8c,
-    0x47,
-    0x9f,
-    0x91,
-    0xeb,
-    0x97,
-    0x3e,
-    0xf2,
-    0x54,
-    0xcf,
-    0x16,
-    0x46,
-    0xf9,
-    0xd9,
-    0xb6,
-    0xe7,
-    0x64,
-    0xc9,
-    0xd0,
-    0x54,
-    0xea,
-    0x2f,
-    0xa1,
-    0xcf,
-    0xa5,
-    0x7f,
-    0x28,
-    0x8d,
-    0x84,
-    0xec,
-    0xd5,
-    0x39,
-    0x03,
-    0x76,
-    0x5b,
-    0x2d,
-    0x8e,
-    0x43,
-    0xf2,
-    0x01,
-    0x24,
-    0xc9,
-    0x6f,
-    0xc0,
-    0xf5,
-    0x69,
-    0x6f,
-    0x7d,
-    0xb5,
-    0x85,
-    0xd2,
-    0x5f,
-    0x7f,
-    0x78,
-    0x40,
-    0x07,
-    0x7f,
-    0x09,
-    0x15,
-    0xb5,
-    0x1f,
-    0x28,
-    0x65,
-    0x10,
-    0xe4,
-    0x19,
-    0xa8,
-    0xc6,
-    0x9e,
-    0x8d,
-    0xdc,
-    0xcb,
-    0x02,
-    0x82,
-    0x01,
-    0x00,
-    0x13,
-    0x01,
-    0xee,
-    0x56,
-    0x80,
-    0x93,
-    0x70,
-    0x00,
-    0x7f,
-    0x52,
-    0xd2,
-    0x94,
-    0xa1,
-    0x98,
-    0x84,
-    0x4a,
-    0x92,
-    0x25,
-    0x4c,
-    0x9b,
-    0xa9,
-    0x91,
-    0x2e,
-    0xc2,
-    0x79,
-    0xb7,
-    0x5c,
-    0xe3,
-    0xc5,
-    0xd5,
-    0x8e,
-    0xc2,
-    0x54,
-    0x16,
-    0x17,
-    0xad,
-    0x55,
-    0x9b,
-    0x25,
-    0x76,
-    0x12,
-    0x63,
-    0x50,
-    0x22,
-    0x2f,
-    0x58,
-    0x58,
-    0x79,
-    0x6b,
-    0x04,
-    0xe3,
-    0xf9,
-    0x9f,
-    0x8f,
-    0x04,
-    0x41,
-    0x67,
-    0x94,
-    0xa5,
-    0x1f,
-    0xac,
-    0x8a,
-    0x15,
-    0x9c,
-    0x26,
-    0x10,
-    0x6c,
-    0xf8,
-    0x19,
-    0x57,
-    0x61,
-    0xd7,
-    0x3a,
-    0x7d,
-    0x31,
-    0xb0,
-    0x2d,
-    0x38,
-    0xbd,
-    0x94,
-    0x62,
-    0xad,
-    0xc4,
-    0xfa,
-    0x36,
-    0x42,
-    0x42,
-    0xf0,
-    0x24,
-    0x67,
-    0x65,
-    0x9d,
-    0x8b,
-    0x0b,
-    0x7c,
-    0x6f,
-    0x82,
-    0x44,
-    0x1a,
-    0x8c,
-    0xc8,
-    0xc9,
-    0xab,
-    0xbb,
-    0x4c,
-    0x45,
-    0xfc,
-    0x7b,
-    0x38,
-    0xee,
-    0x30,
-    0xe1,
-    0xfc,
-    0xef,
-    0x8d,
-    0xbc,
-    0x58,
-    0xdf,
-    0x2b,
-    0x5d,
-    0x0d,
-    0x54,
-    0xe0,
-    0x49,
-    0x4d,
-    0x97,
-    0x99,
-    0x8f,
-    0x22,
-    0xa8,
-    0x83,
-    0xbe,
-    0x40,
-    0xbb,
-    0x50,
-    0x2e,
-    0x78,
-    0x28,
-    0x0f,
-    0x95,
-    0x78,
-    0x8c,
-    0x8f,
-    0x98,
-    0x24,
-    0x56,
-    0xc2,
-    0x97,
-    0xf3,
-    0x2c,
-    0x43,
-    0xd2,
-    0x03,
-    0x82,
-    0x66,
-    0x81,
-    0x72,
-    0x5f,
-    0x53,
-    0x16,
-    0xec,
-    0xb1,
-    0xb1,
-    0x04,
-    0x5e,
-    0x40,
-    0x20,
-    0x48,
-    0x7b,
-    0x3f,
-    0x02,
-    0x97,
-    0x6a,
-    0xeb,
-    0x96,
-    0x12,
-    0x21,
-    0x35,
-    0xfe,
-    0x1f,
-    0x47,
-    0xc0,
-    0x95,
-    0xea,
-    0xc5,
-    0x8a,
-    0x08,
-    0x84,
-    0x4f,
-    0x5e,
-    0x63,
-    0x94,
-    0x60,
-    0x0f,
-    0x71,
-    0x5b,
-    0x7f,
-    0x4a,
-    0xec,
-    0x4f,
-    0x60,
-    0xc6,
-    0xba,
-    0x4a,
-    0x24,
-    0xf1,
-    0x20,
-    0x8b,
-    0xa7,
-    0x2e,
-    0x3a,
-    0xce,
-    0x8d,
-    0xe0,
-    0x27,
-    0x1d,
-    0xb5,
-    0x8e,
-    0xb4,
-    0x21,
-    0xc5,
-    0xe2,
-    0xa6,
-    0x16,
-    0x0a,
-    0x51,
-    0x83,
-    0x55,
-    0x88,
-    0xd1,
-    0x30,
-    0x11,
-    0x63,
-    0xd5,
-    0xd7,
-    0x8d,
-    0xae,
-    0x16,
-    0x12,
-    0x82,
-    0xc4,
-    0x85,
-    0x00,
-    0x4e,
-    0x27,
-    0x83,
-    0xa5,
-    0x7c,
-    0x90,
-    0x2e,
-    0xe5,
-    0xa2,
-    0xa3,
-    0xd3,
-    0x4c,
-    0x63,
-    0x02,
-    0x82,
-    0x01,
-    0x01,
-    0x00,
-    0x86,
-    0x08,
-    0x98,
-    0x98,
-    0xa5,
-    0x00,
-    0x05,
-    0x39,
-    0x77,
-    0xd9,
-    0x66,
-    0xb3,
-    0xcf,
-    0xca,
-    0xa0,
-    0x71,
-    0xb3,
-    0x50,
-    0xce,
-    0x3d,
-    0xb1,
-    0x93,
-    0x95,
-    0x35,
-    0xc4,
-    0xd4,
-    0x2e,
-    0x90,
-    0xdf,
-    0x0f,
-    0xfc,
-    0x60,
-    0xc1,
-    0x94,
-    0x68,
-    0x61,
-    0x43,
-    0xca,
-    0x9a,
-    0x23,
-    0x4a,
-    0x1e,
-    0x45,
-    0x72,
-    0x99,
-    0xb5,
-    0x1e,
-    0x61,
-    0x8d,
-    0x77,
-    0x0f,
-    0xa0,
-    0xbb,
-    0xd7,
-    0x77,
-    0xb4,
-    0x2a,
-    0x15,
-    0x11,
-    0x88,
-    0x2d,
-    0xb3,
-    0x56,
-    0x61,
-    0x5e,
-    0x6a,
-    0xed,
-    0xa4,
-    0x46,
-    0x4a,
-    0x3f,
-    0x50,
-    0x11,
-    0xd6,
-    0xba,
-    0xb6,
-    0xd7,
-    0x95,
-    0x65,
-    0x53,
-    0xc3,
-    0xa1,
-    0x8f,
-    0xe0,
-    0xa3,
-    0xf5,
-    0x1c,
-    0xfd,
-    0xaf,
-    0x6e,
-    0x43,
-    0xd7,
-    0x17,
-    0xa7,
-    0xd3,
-    0x81,
-    0x1b,
-    0xa4,
-    0xdf,
-    0xe0,
-    0x97,
-    0x8a,
-    0x46,
-    0x03,
-    0xd3,
-    0x46,
-    0x0e,
-    0x83,
-    0x48,
-    0x4e,
-    0xd2,
-    0x02,
-    0xcb,
-    0xc0,
-    0xad,
-    0x79,
-    0x95,
-    0x8c,
-    0x96,
-    0xba,
-    0x40,
-    0x34,
-    0x11,
-    0x71,
-    0x5e,
-    0xe9,
-    0x11,
-    0xf9,
-    0xc5,
-    0x4a,
-    0x5e,
-    0x91,
-    0x9d,
-    0xf5,
-    0x92,
-    0x4f,
-    0xeb,
-    0xc6,
-    0x70,
-    0x02,
-    0x2d,
-    0x3d,
-    0x04,
-    0xaa,
-    0xe9,
-    0x3a,
-    0x8e,
-    0xd5,
-    0xa8,
-    0xad,
-    0xf7,
-    0xce,
-    0x0d,
-    0x16,
-    0xb2,
-    0xec,
-    0x0a,
-    0x9c,
-    0xf5,
-    0x94,
-    0x39,
-    0xb9,
-    0x8a,
-    0xfc,
-    0x1e,
-    0xf9,
-    0xcc,
-    0xf2,
-    0x5f,
-    0x21,
-    0x31,
-    0x74,
-    0x72,
-    0x6b,
-    0x64,
-    0xae,
-    0x35,
-    0x61,
-    0x8d,
-    0x0d,
-    0xcb,
-    0xe7,
-    0xda,
-    0x39,
-    0xca,
-    0xf3,
-    0x21,
-    0x66,
-    0x0b,
-    0x95,
-    0xd7,
-    0x0a,
-    0x7c,
-    0xca,
-    0xa1,
-    0xa9,
-    0x5a,
-    0xe8,
-    0xac,
-    0xe0,
-    0x71,
-    0x54,
-    0xaf,
-    0x28,
-    0xcf,
-    0xd5,
-    0x70,
-    0x89,
-    0xe0,
-    0xf3,
-    0x9e,
-    0x43,
-    0x6c,
-    0x8d,
-    0x7b,
-    0x99,
-    0x01,
-    0x68,
-    0x4d,
-    0xa1,
-    0x45,
-    0x46,
-    0x0c,
-    0x43,
-    0xbc,
-    0xcc,
-    0x2c,
-    0xdd,
-    0xc5,
-    0x46,
-    0xc8,
-    0x4e,
-    0x0e,
-    0xbe,
-    0xed,
-    0xb9,
-    0x26,
-    0xab,
-    0x2e,
-    0xdb,
-    0xeb,
-    0x8f,
-    0xff,
-    0xdb,
-    0xb0,
-    0xc6,
-    0x55,
-    0xaf,
-    0xf8,
-    0x2a,
-    0x91,
-    0x9d,
-    0x50,
-    0x44,
-    0x21,
-    0x17,
+    0x30, 0x82, 0x09, 0x29, 0x02, 0x01, 0x00, 0x02, 0x82, 0x02,
+    0x01, 0x00, 0xc0, 0x71, 0xac, 0x1a, 0x13, 0x88, 0x82, 0x43,
+    0x3b, 0x51, 0x57, 0x71, 0x8d, 0xb6, 0x2b, 0x82, 0x65, 0x21,
+    0x53, 0x5f, 0x28, 0x29, 0x4f, 0x8d, 0x7c, 0x8a, 0xb9, 0x44,
+    0xb3, 0x28, 0x41, 0x4f, 0xd3, 0xfa, 0x6a, 0xf8, 0xb9, 0x28,
+    0x50, 0x39, 0x67, 0x53, 0x2c, 0x3c, 0xd7, 0xcb, 0x96, 0x41,
+    0x40, 0x32, 0xbb, 0xeb, 0x70, 0xae, 0x1f, 0xb0, 0x65, 0xf7,
+    0x3a, 0xd9, 0x22, 0xfd, 0x10, 0xae, 0xbd, 0x02, 0xe2, 0xdd,
+    0xf3, 0xc2, 0x79, 0x3c, 0xc6, 0xfc, 0x75, 0xbb, 0xaf, 0x4e,
+    0x3a, 0x36, 0xc2, 0x4f, 0xea, 0x25, 0xdf, 0x13, 0x16, 0x4b,
+    0x20, 0xfe, 0x4b, 0x69, 0x16, 0xc4, 0x7f, 0x1a, 0x43, 0xa6,
+    0x17, 0x1b, 0xb9, 0x0a, 0xf3, 0x09, 0x86, 0x28, 0x89, 0xcf,
+    0x2c, 0xd0, 0xd4, 0x81, 0xaf, 0xc6, 0x6d, 0xe6, 0x21, 0x8d,
+    0xee, 0xef, 0xea, 0xdc, 0xb7, 0xc6, 0x3b, 0x63, 0x9f, 0x0e,
+    0xad, 0x89, 0x78, 0x23, 0x18, 0xbf, 0x70, 0x7e, 0x84, 0xe0,
+    0x37, 0xec, 0xdb, 0x8e, 0x9c, 0x3e, 0x6a, 0x19, 0xcc, 0x99,
+    0x72, 0xe6, 0xb5, 0x7d, 0x6d, 0xfa, 0xe5, 0xd3, 0xe4, 0x90,
+    0xb5, 0xb2, 0xb2, 0x12, 0x70, 0x4e, 0xca, 0xf8, 0x10, 0xf8,
+    0xa3, 0x14, 0xc2, 0x48, 0x19, 0xeb, 0x60, 0x99, 0xbb, 0x2a,
+    0x1f, 0xb1, 0x7a, 0xb1, 0x3d, 0x24, 0xfb, 0xa0, 0x29, 0xda,
+    0xbd, 0x1b, 0xd7, 0xa4, 0xbf, 0xef, 0x60, 0x2d, 0x22, 0xca,
+    0x65, 0x98, 0xf1, 0xc4, 0xe1, 0xc9, 0x02, 0x6b, 0x16, 0x28,
+    0x2f, 0xa1, 0xaa, 0x79, 0x00, 0xda, 0xdc, 0x7c, 0x43, 0xf7,
+    0x42, 0x3c, 0xa0, 0xef, 0x68, 0xf7, 0xdf, 0xb9, 0x69, 0xfb,
+    0x8e, 0x01, 0xed, 0x01, 0x42, 0xb5, 0x4e, 0x57, 0xa6, 0x26,
+    0xb8, 0xd0, 0x7b, 0x56, 0x6d, 0x03, 0xc6, 0x40, 0x8c, 0x8c,
+    0x2a, 0x55, 0xd7, 0x9c, 0x35, 0x00, 0x94, 0x93, 0xec, 0x03,
+    0xeb, 0x22, 0xef, 0x77, 0xbb, 0x79, 0x13, 0x3f, 0x15, 0xa1,
+    0x8f, 0xca, 0xdf, 0xfd, 0xd3, 0xb8, 0xe1, 0xd4, 0xcc, 0x09,
+    0x3f, 0x3c, 0x2c, 0xdb, 0xd1, 0x49, 0x7f, 0x38, 0x07, 0x83,
+    0x6d, 0xeb, 0x08, 0x66, 0xe9, 0x06, 0x44, 0x12, 0xac, 0x95,
+    0x22, 0x90, 0x23, 0x67, 0xd4, 0x08, 0xcc, 0xf4, 0xb7, 0xdc,
+    0xcc, 0x87, 0xd4, 0xac, 0x69, 0x35, 0x4c, 0xb5, 0x39, 0x36,
+    0xcd, 0xa4, 0xd2, 0x95, 0xca, 0x0d, 0xc5, 0xda, 0xc2, 0xc5,
+    0x22, 0x32, 0x28, 0x08, 0xe3, 0xd2, 0x8b, 0x38, 0x30, 0xdc,
+    0x8c, 0x75, 0x4f, 0x6a, 0xec, 0x7a, 0xac, 0x16, 0x3e, 0xa8,
+    0xd4, 0x6a, 0x45, 0xe1, 0xa8, 0x4f, 0x2e, 0x80, 0x34, 0xaa,
+    0x54, 0x1b, 0x02, 0x95, 0x7d, 0x8a, 0x6d, 0xcc, 0x79, 0xca,
+    0xf2, 0xa4, 0x2e, 0x8d, 0xfb, 0xfe, 0x15, 0x51, 0x10, 0x0e,
+    0x4d, 0x88, 0xb1, 0xc7, 0xf4, 0x79, 0xdb, 0xf0, 0xb4, 0x56,
+    0x44, 0x37, 0xca, 0x5a, 0xc1, 0x8c, 0x48, 0xac, 0xae, 0x48,
+    0x80, 0x83, 0x01, 0x3f, 0xde, 0xd9, 0xd3, 0x2c, 0x51, 0x46,
+    0xb1, 0x41, 0xb6, 0xc6, 0x91, 0x72, 0xf9, 0x83, 0x55, 0x1b,
+    0x8c, 0xba, 0xf3, 0x73, 0xe5, 0x2c, 0x74, 0x50, 0x3a, 0xbe,
+    0xc5, 0x2f, 0xa7, 0xb2, 0x6d, 0x8c, 0x9e, 0x13, 0x77, 0xa3,
+    0x13, 0xcd, 0x6d, 0x8c, 0x45, 0xe1, 0xfc, 0x0b, 0xb7, 0x69,
+    0xe9, 0x27, 0xbc, 0x65, 0xc3, 0xfa, 0x9b, 0xd0, 0xef, 0xfe,
+    0xe8, 0x1f, 0xb3, 0x5e, 0x34, 0xf4, 0x8c, 0xea, 0xfc, 0xd3,
+    0x81, 0xbf, 0x3d, 0x30, 0xb2, 0xb4, 0x01, 0xe8, 0x43, 0x0f,
+    0xba, 0x02, 0x23, 0x42, 0x76, 0x82, 0x31, 0x73, 0x91, 0xed,
+    0x07, 0x46, 0x61, 0x0d, 0x39, 0x83, 0x40, 0xce, 0x7a, 0xd4,
+    0xdb, 0x80, 0x2c, 0x1f, 0x0d, 0xd1, 0x34, 0xd4, 0x92, 0xe3,
+    0xd4, 0xf1, 0xc2, 0x01, 0x02, 0x03, 0x01, 0x00, 0x01, 0x02,
+    0x82, 0x02, 0x01, 0x00, 0x97, 0x6c, 0xda, 0x6e, 0xea, 0x4f,
+    0xcf, 0xaf, 0xf7, 0x4c, 0xd9, 0xf1, 0x90, 0x00, 0x77, 0xdb,
+    0xf2, 0x97, 0x76, 0x72, 0xb9, 0xb7, 0x47, 0xd1, 0x9c, 0xdd,
+    0xcb, 0x4a, 0x33, 0x6e, 0xc9, 0x75, 0x76, 0xe6, 0xe4, 0xa5,
+    0x31, 0x8c, 0x77, 0x13, 0xb4, 0x29, 0xcd, 0xf5, 0x52, 0x17,
+    0xef, 0xf3, 0x08, 0x00, 0xe3, 0xbd, 0x2e, 0xbc, 0xd4, 0x52,
+    0x88, 0xe9, 0x30, 0x75, 0x0b, 0x02, 0xf5, 0xcd, 0x89, 0x0c,
+    0x6c, 0x57, 0x19, 0x27, 0x3d, 0x1e, 0x85, 0xb4, 0xc1, 0x2f,
+    0x1d, 0x92, 0x00, 0x5c, 0x76, 0x29, 0x4b, 0xa4, 0xe1, 0x12,
+    0xb3, 0xc8, 0x09, 0xfe, 0x0e, 0x78, 0x72, 0x61, 0xcb, 0x61,
+    0x6f, 0x39, 0x91, 0x95, 0x4e, 0xd5, 0x3e, 0xc7, 0x8f, 0xb8,
+    0xf6, 0x36, 0xfe, 0x9c, 0x93, 0x9a, 0x38, 0x25, 0x7a, 0xf4,
+    0x4a, 0x12, 0xd4, 0xa0, 0x13, 0xbd, 0xf9, 0x1d, 0x12, 0x3e,
+    0x21, 0x39, 0xfb, 0x72, 0xe0, 0x05, 0x3d, 0xc3, 0xe5, 0x50,
+    0xa8, 0x5d, 0x85, 0xa3, 0xea, 0x5f, 0x1c, 0xb2, 0x3f, 0xea,
+    0x6d, 0x03, 0x91, 0x55, 0xd8, 0x19, 0x0a, 0x21, 0x12, 0x16,
+    0xd9, 0x12, 0xc4, 0xe6, 0x07, 0x18, 0x5b, 0x26, 0xa4, 0xae,
+    0xed, 0x2b, 0xb7, 0xa6, 0xed, 0xf8, 0xad, 0xec, 0x77, 0xe6,
+    0x7f, 0x4f, 0x76, 0x00, 0xc0, 0xfa, 0x15, 0x92, 0xb4, 0x2c,
+    0x22, 0xc2, 0xeb, 0x6a, 0xad, 0x14, 0x05, 0xb2, 0xe5, 0x8a,
+    0x9e, 0x85, 0x83, 0xcc, 0x04, 0xf1, 0x56, 0x78, 0x44, 0x5e,
+    0xde, 0xe0, 0x60, 0x1a, 0x65, 0x79, 0x31, 0x23, 0x05, 0xbb,
+    0x01, 0xff, 0xdd, 0x2e, 0xb7, 0xb3, 0xaa, 0x74, 0xe0, 0xa5,
+    0x94, 0xaf, 0x4b, 0xde, 0x58, 0x0f, 0x55, 0xde, 0x33, 0xf6,
+    0xe3, 0xd6, 0x34, 0x36, 0x57, 0xd6, 0x79, 0x91, 0x2e, 0xbe,
+    0x3b, 0xd9, 0x4e, 0xb6, 0x9d, 0x21, 0x5c, 0xd3, 0x48, 0x14,
+    0x7f, 0x4a, 0xc4, 0x60, 0xa9, 0x29, 0xf8, 0x53, 0x7f, 0x88,
+    0x11, 0x2d, 0xb5, 0xc5, 0x2d, 0x6f, 0xee, 0x85, 0x0b, 0xf7,
+    0x8d, 0x9a, 0xbe, 0xb0, 0x42, 0xf2, 0x2e, 0x71, 0xaf, 0x19,
+    0x31, 0x6d, 0xec, 0xcd, 0x6f, 0x2b, 0x23, 0xdf, 0xb4, 0x40,
+    0xaf, 0x2c, 0x0a, 0xc3, 0x1b, 0x7d, 0x7d, 0x03, 0x1d, 0x4b,
+    0xf3, 0xb5, 0xe0, 0x85, 0xd8, 0xdf, 0x91, 0x6b, 0x0a, 0x69,
+    0xf7, 0xf2, 0x69, 0x66, 0x5b, 0xf1, 0xcf, 0x46, 0x7d, 0xe9,
+    0x70, 0xfa, 0x6d, 0x7e, 0x75, 0x4e, 0xa9, 0x77, 0xe6, 0x8c,
+    0x02, 0xf7, 0x14, 0x4d, 0xa5, 0x41, 0x8f, 0x3f, 0xc1, 0x62,
+    0x1e, 0x71, 0x5e, 0x38, 0xb4, 0xd6, 0xe6, 0xe1, 0x4b, 0xc2,
+    0x2c, 0x30, 0x83, 0x81, 0x6f, 0x49, 0x2e, 0x96, 0xe6, 0xc9,
+    0x9a, 0xf7, 0x5d, 0x09, 0xa0, 0x55, 0x02, 0xa5, 0x3a, 0x25,
+    0x23, 0xd0, 0x92, 0xc3, 0xa3, 0xe3, 0x0e, 0x12, 0x2f, 0x4d,
+    0xef, 0xf3, 0x55, 0x5a, 0xbe, 0xe6, 0x19, 0x86, 0x31, 0xab,
+    0x75, 0x9a, 0xd3, 0xf0, 0x2c, 0xc5, 0x41, 0x92, 0xd9, 0x1f,
+    0x5f, 0x11, 0x8c, 0x75, 0x1c, 0x63, 0xd0, 0x02, 0x80, 0x2c,
+    0x68, 0xcb, 0x93, 0xfb, 0x51, 0x73, 0x49, 0xb4, 0x60, 0xda,
+    0xe2, 0x26, 0xaf, 0xa9, 0x46, 0x12, 0xb8, 0xec, 0x50, 0xdd,
+    0x12, 0x06, 0x5f, 0xce, 0x59, 0xe6, 0xf6, 0x1c, 0xe0, 0x54,
+    0x10, 0xad, 0xf6, 0xcd, 0x98, 0xcc, 0x0f, 0xfb, 0xcb, 0x41,
+    0x14, 0x9d, 0xed, 0xe4, 0xb4, 0x74, 0x5f, 0x09, 0x60, 0xc7,
+    0x12, 0xf6, 0x7b, 0x3c, 0x8f, 0xa7, 0x20, 0xbc, 0xe4, 0xb1,
+    0xef, 0xeb, 0xa4, 0x93, 0xc5, 0x06, 0xca, 0x9a, 0x27, 0x9d,
+    0x87, 0xf3, 0xde, 0xca, 0xe5, 0xe7, 0xf6, 0x1c, 0x01, 0x65,
+    0x5b, 0xfb, 0x19, 0x79, 0x6e, 0x08, 0x26, 0xc5, 0xc8, 0x28,
+    0x0e, 0xb6, 0x3b, 0x07, 0x08, 0xc1, 0x02, 0x82, 0x01, 0x01,
+    0x00, 0xe8, 0x1c, 0x73, 0xa6, 0xb8, 0xe0, 0x0e, 0x6d, 0x8d,
+    0x1b, 0xb9, 0x53, 0xed, 0x58, 0x94, 0xe6, 0x1d, 0x60, 0x14,
+    0x5c, 0x76, 0x43, 0xc4, 0x58, 0x19, 0xc4, 0x24, 0xe8, 0xbc,
+    0x1b, 0x3b, 0x0b, 0x13, 0x24, 0x45, 0x54, 0x0e, 0xcc, 0x37,
+    0xf0, 0xe0, 0x63, 0x7d, 0xc3, 0xf7, 0xfb, 0x81, 0x74, 0x81,
+    0xc4, 0x0f, 0x1a, 0x21, 0x48, 0xaf, 0xce, 0xc1, 0xc4, 0x94,
+    0x18, 0x06, 0x44, 0x8d, 0xd3, 0xd2, 0x22, 0x2d, 0x2d, 0x3e,
+    0x5a, 0x31, 0xdc, 0x95, 0x8e, 0xf4, 0x41, 0xfc, 0x58, 0xc9,
+    0x40, 0x92, 0x17, 0x5f, 0xe3, 0xda, 0xac, 0x9e, 0x3f, 0x1c,
+    0x2a, 0x6b, 0x58, 0x5f, 0x48, 0x78, 0x20, 0xb1, 0xaf, 0x24,
+    0x9b, 0x3c, 0x20, 0x8b, 0x93, 0x25, 0x9e, 0xe6, 0x6b, 0xbc,
+    0x13, 0x42, 0x14, 0x6c, 0x36, 0x31, 0xff, 0x7a, 0xd1, 0xc1,
+    0x1a, 0x26, 0x14, 0x7f, 0xa9, 0x76, 0xa7, 0x0c, 0xf8, 0xcc,
+    0xed, 0x07, 0x6a, 0xd2, 0xdf, 0x62, 0xee, 0x0a, 0x7c, 0x84,
+    0xcb, 0x49, 0x90, 0xb2, 0x03, 0x0d, 0xa2, 0x82, 0x06, 0x77,
+    0xf1, 0xcd, 0x67, 0xf2, 0x47, 0x21, 0x02, 0x3f, 0x43, 0x21,
+    0xf0, 0x46, 0x30, 0x62, 0x51, 0x72, 0xb1, 0xe7, 0x48, 0xc6,
+    0x67, 0x12, 0xcd, 0x9e, 0xd6, 0x15, 0xe5, 0x21, 0xed, 0xfa,
+    0x8f, 0x30, 0xa6, 0x41, 0xfe, 0xb6, 0xfa, 0x8f, 0x34, 0x14,
+    0x19, 0xe8, 0x11, 0xf7, 0xa5, 0x77, 0x3e, 0xb7, 0xf9, 0x39,
+    0x07, 0x8c, 0x67, 0x2a, 0xab, 0x7b, 0x08, 0xf8, 0xb0, 0x06,
+    0xa8, 0xea, 0x2f, 0x8f, 0xfa, 0xcc, 0xcc, 0x40, 0xce, 0xf3,
+    0x70, 0x4f, 0x3f, 0x7f, 0xe2, 0x0c, 0xea, 0x76, 0x4a, 0x35,
+    0x4e, 0x47, 0xad, 0x2b, 0xa7, 0x97, 0x5d, 0x74, 0x43, 0x97,
+    0x90, 0xd2, 0xfb, 0xd9, 0xf9, 0x96, 0x01, 0x33, 0x05, 0xed,
+    0x7b, 0x03, 0x05, 0xad, 0xf8, 0x49, 0x03, 0x02, 0x82, 0x01,
+    0x01, 0x00, 0xd4, 0x40, 0x17, 0x66, 0x10, 0x92, 0x95, 0xc8,
+    0xec, 0x62, 0xa9, 0x7a, 0xcb, 0x93, 0x8e, 0xe6, 0x53, 0xd4,
+    0x80, 0x48, 0x27, 0x4b, 0x41, 0xce, 0x61, 0xdf, 0xbf, 0x94,
+    0xa4, 0x3d, 0x71, 0x03, 0x0b, 0xed, 0x25, 0x71, 0x98, 0xa4,
+    0xd6, 0xd5, 0x4a, 0x57, 0xf5, 0x6c, 0x1b, 0xda, 0x21, 0x7d,
+    0x35, 0x45, 0xb3, 0xf3, 0x6a, 0xd9, 0xd3, 0x43, 0xe8, 0x5c,
+    0x54, 0x1c, 0x83, 0x1b, 0xb4, 0x5f, 0xf2, 0x97, 0x24, 0x2e,
+    0xdc, 0x40, 0xde, 0x92, 0x23, 0x59, 0x8e, 0xbc, 0xd2, 0xa1,
+    0xf2, 0xe0, 0x4c, 0xdd, 0x0b, 0xd1, 0xe7, 0xae, 0x65, 0xbc,
+    0xb5, 0xf5, 0x5b, 0x98, 0xe9, 0xd7, 0xc2, 0xb7, 0x0e, 0x55,
+    0x71, 0x0e, 0x3c, 0x0a, 0x24, 0x6b, 0xa6, 0xe6, 0x14, 0x61,
+    0x11, 0xfd, 0x33, 0x42, 0x99, 0x2b, 0x84, 0x77, 0x74, 0x92,
+    0x91, 0xf5, 0x79, 0x79, 0xcf, 0xad, 0x8e, 0x04, 0xef, 0x80,
+    0x1e, 0x57, 0xf4, 0x14, 0xf5, 0x35, 0x09, 0x74, 0xb2, 0x13,
+    0x71, 0x58, 0x6b, 0xea, 0x32, 0x5d, 0xf3, 0xd3, 0x76, 0x48,
+    0x39, 0x10, 0x23, 0x84, 0x9d, 0xbe, 0x92, 0x77, 0x4a, 0xed,
+    0x70, 0x3e, 0x1a, 0xa2, 0x6c, 0xb3, 0x81, 0x00, 0xc3, 0xc9,
+    0xe4, 0x52, 0xc8, 0x24, 0x88, 0x0c, 0x41, 0xad, 0x87, 0x5a,
+    0xea, 0xa3, 0x7a, 0x85, 0x1c, 0x5e, 0x31, 0x7f, 0xc3, 0x35,
+    0xc6, 0xfa, 0x10, 0xc8, 0x75, 0x10, 0xc4, 0x96, 0x99, 0xe7,
+    0xfe, 0x01, 0xb4, 0x74, 0xdb, 0xb4, 0x11, 0xc3, 0xc8, 0x8c,
+    0xf6, 0xf7, 0x3b, 0x66, 0x50, 0xfc, 0xdb, 0xeb, 0xca, 0x47,
+    0x85, 0x89, 0xe1, 0x65, 0xd9, 0x62, 0x34, 0x3c, 0x70, 0xd8,
+    0x2e, 0xb4, 0x2f, 0x65, 0x3c, 0x4a, 0xa6, 0x2a, 0xe7, 0xc7,
+    0xd8, 0x41, 0x8f, 0x8a, 0x43, 0xbf, 0x42, 0xf2, 0x4d, 0xbc,
+    0xfc, 0x9e, 0x27, 0x95, 0xfb, 0x75, 0xff, 0xab, 0x02, 0x82,
+    0x01, 0x00, 0x41, 0x2f, 0x44, 0x57, 0x6d, 0x12, 0x17, 0x5b,
+    0x32, 0xc6, 0xb7, 0x6c, 0x57, 0x7a, 0x8a, 0x0e, 0x79, 0xef,
+    0x72, 0xa8, 0x68, 0xda, 0x2d, 0x38, 0xe4, 0xbb, 0x8d, 0xf6,
+    0x02, 0x65, 0xcf, 0x56, 0x13, 0xe1, 0x1a, 0xcb, 0x39, 0x80,
+    0xa6, 0xb1, 0x32, 0x03, 0x1e, 0xdd, 0xbb, 0x35, 0xd9, 0xac,
+    0x43, 0x89, 0x31, 0x08, 0x90, 0x92, 0x5e, 0x35, 0x3d, 0x7b,
+    0x9c, 0x6f, 0x86, 0xcb, 0x17, 0xdd, 0x85, 0xe4, 0xed, 0x35,
+    0x08, 0x8e, 0xc1, 0xf4, 0x05, 0xd8, 0x68, 0xc6, 0x63, 0x3c,
+    0xf7, 0xff, 0xf7, 0x47, 0x33, 0x39, 0xc5, 0x3e, 0xb7, 0x0e,
+    0x58, 0x35, 0x9d, 0x81, 0xea, 0xf8, 0x6a, 0x2c, 0x1c, 0x5a,
+    0x68, 0x78, 0x64, 0x11, 0x6b, 0xc1, 0x3e, 0x4e, 0x7a, 0xbd,
+    0x84, 0xcb, 0x0f, 0xc2, 0xb6, 0x85, 0x1d, 0xd3, 0x76, 0xc5,
+    0x93, 0x6a, 0x69, 0x89, 0x56, 0x34, 0xdc, 0x4a, 0x9b, 0xbc,
+    0xff, 0xa8, 0x0d, 0x6e, 0x35, 0x9c, 0x60, 0xa7, 0x23, 0x30,
+    0xc7, 0x06, 0x64, 0x39, 0x8b, 0x94, 0x89, 0xee, 0xba, 0x7f,
+    0x60, 0x8d, 0xfa, 0xb6, 0x97, 0x76, 0xdc, 0x51, 0x4a, 0x3c,
+    0xeb, 0x3a, 0x14, 0x2c, 0x20, 0x60, 0x69, 0x4a, 0x86, 0xfe,
+    0x8c, 0x21, 0x84, 0x49, 0x54, 0xb3, 0x20, 0xe1, 0x01, 0x7f,
+    0x58, 0xdf, 0x7f, 0xb5, 0x21, 0x51, 0x8c, 0x47, 0x9f, 0x91,
+    0xeb, 0x97, 0x3e, 0xf2, 0x54, 0xcf, 0x16, 0x46, 0xf9, 0xd9,
+    0xb6, 0xe7, 0x64, 0xc9, 0xd0, 0x54, 0xea, 0x2f, 0xa1, 0xcf,
+    0xa5, 0x7f, 0x28, 0x8d, 0x84, 0xec, 0xd5, 0x39, 0x03, 0x76,
+    0x5b, 0x2d, 0x8e, 0x43, 0xf2, 0x01, 0x24, 0xc9, 0x6f, 0xc0,
+    0xf5, 0x69, 0x6f, 0x7d, 0xb5, 0x85, 0xd2, 0x5f, 0x7f, 0x78,
+    0x40, 0x07, 0x7f, 0x09, 0x15, 0xb5, 0x1f, 0x28, 0x65, 0x10,
+    0xe4, 0x19, 0xa8, 0xc6, 0x9e, 0x8d, 0xdc, 0xcb, 0x02, 0x82,
+    0x01, 0x00, 0x13, 0x01, 0xee, 0x56, 0x80, 0x93, 0x70, 0x00,
+    0x7f, 0x52, 0xd2, 0x94, 0xa1, 0x98, 0x84, 0x4a, 0x92, 0x25,
+    0x4c, 0x9b, 0xa9, 0x91, 0x2e, 0xc2, 0x79, 0xb7, 0x5c, 0xe3,
+    0xc5, 0xd5, 0x8e, 0xc2, 0x54, 0x16, 0x17, 0xad, 0x55, 0x9b,
+    0x25, 0x76, 0x12, 0x63, 0x50, 0x22, 0x2f, 0x58, 0x58, 0x79,
+    0x6b, 0x04, 0xe3, 0xf9, 0x9f, 0x8f, 0x04, 0x41, 0x67, 0x94,
+    0xa5, 0x1f, 0xac, 0x8a, 0x15, 0x9c, 0x26, 0x10, 0x6c, 0xf8,
+    0x19, 0x57, 0x61, 0xd7, 0x3a, 0x7d, 0x31, 0xb0, 0x2d, 0x38,
+    0xbd, 0x94, 0x62, 0xad, 0xc4, 0xfa, 0x36, 0x42, 0x42, 0xf0,
+    0x24, 0x67, 0x65, 0x9d, 0x8b, 0x0b, 0x7c, 0x6f, 0x82, 0x44,
+    0x1a, 0x8c, 0xc8, 0xc9, 0xab, 0xbb, 0x4c, 0x45, 0xfc, 0x7b,
+    0x38, 0xee, 0x30, 0xe1, 0xfc, 0xef, 0x8d, 0xbc, 0x58, 0xdf,
+    0x2b, 0x5d, 0x0d, 0x54, 0xe0, 0x49, 0x4d, 0x97, 0x99, 0x8f,
+    0x22, 0xa8, 0x83, 0xbe, 0x40, 0xbb, 0x50, 0x2e, 0x78, 0x28,
+    0x0f, 0x95, 0x78, 0x8c, 0x8f, 0x98, 0x24, 0x56, 0xc2, 0x97,
+    0xf3, 0x2c, 0x43, 0xd2, 0x03, 0x82, 0x66, 0x81, 0x72, 0x5f,
+    0x53, 0x16, 0xec, 0xb1, 0xb1, 0x04, 0x5e, 0x40, 0x20, 0x48,
+    0x7b, 0x3f, 0x02, 0x97, 0x6a, 0xeb, 0x96, 0x12, 0x21, 0x35,
+    0xfe, 0x1f, 0x47, 0xc0, 0x95, 0xea, 0xc5, 0x8a, 0x08, 0x84,
+    0x4f, 0x5e, 0x63, 0x94, 0x60, 0x0f, 0x71, 0x5b, 0x7f, 0x4a,
+    0xec, 0x4f, 0x60, 0xc6, 0xba, 0x4a, 0x24, 0xf1, 0x20, 0x8b,
+    0xa7, 0x2e, 0x3a, 0xce, 0x8d, 0xe0, 0x27, 0x1d, 0xb5, 0x8e,
+    0xb4, 0x21, 0xc5, 0xe2, 0xa6, 0x16, 0x0a, 0x51, 0x83, 0x55,
+    0x88, 0xd1, 0x30, 0x11, 0x63, 0xd5, 0xd7, 0x8d, 0xae, 0x16,
+    0x12, 0x82, 0xc4, 0x85, 0x00, 0x4e, 0x27, 0x83, 0xa5, 0x7c,
+    0x90, 0x2e, 0xe5, 0xa2, 0xa3, 0xd3, 0x4c, 0x63, 0x02, 0x82,
+    0x01, 0x01, 0x00, 0x86, 0x08, 0x98, 0x98, 0xa5, 0x00, 0x05,
+    0x39, 0x77, 0xd9, 0x66, 0xb3, 0xcf, 0xca, 0xa0, 0x71, 0xb3,
+    0x50, 0xce, 0x3d, 0xb1, 0x93, 0x95, 0x35, 0xc4, 0xd4, 0x2e,
+    0x90, 0xdf, 0x0f, 0xfc, 0x60, 0xc1, 0x94, 0x68, 0x61, 0x43,
+    0xca, 0x9a, 0x23, 0x4a, 0x1e, 0x45, 0x72, 0x99, 0xb5, 0x1e,
+    0x61, 0x8d, 0x77, 0x0f, 0xa0, 0xbb, 0xd7, 0x77, 0xb4, 0x2a,
+    0x15, 0x11, 0x88, 0x2d, 0xb3, 0x56, 0x61, 0x5e, 0x6a, 0xed,
+    0xa4, 0x46, 0x4a, 0x3f, 0x50, 0x11, 0xd6, 0xba, 0xb6, 0xd7,
+    0x95, 0x65, 0x53, 0xc3, 0xa1, 0x8f, 0xe0, 0xa3, 0xf5, 0x1c,
+    0xfd, 0xaf, 0x6e, 0x43, 0xd7, 0x17, 0xa7, 0xd3, 0x81, 0x1b,
+    0xa4, 0xdf, 0xe0, 0x97, 0x8a, 0x46, 0x03, 0xd3, 0x46, 0x0e,
+    0x83, 0x48, 0x4e, 0xd2, 0x02, 0xcb, 0xc0, 0xad, 0x79, 0x95,
+    0x8c, 0x96, 0xba, 0x40, 0x34, 0x11, 0x71, 0x5e, 0xe9, 0x11,
+    0xf9, 0xc5, 0x4a, 0x5e, 0x91, 0x9d, 0xf5, 0x92, 0x4f, 0xeb,
+    0xc6, 0x70, 0x02, 0x2d, 0x3d, 0x04, 0xaa, 0xe9, 0x3a, 0x8e,
+    0xd5, 0xa8, 0xad, 0xf7, 0xce, 0x0d, 0x16, 0xb2, 0xec, 0x0a,
+    0x9c, 0xf5, 0x94, 0x39, 0xb9, 0x8a, 0xfc, 0x1e, 0xf9, 0xcc,
+    0xf2, 0x5f, 0x21, 0x31, 0x74, 0x72, 0x6b, 0x64, 0xae, 0x35,
+    0x61, 0x8d, 0x0d, 0xcb, 0xe7, 0xda, 0x39, 0xca, 0xf3, 0x21,
+    0x66, 0x0b, 0x95, 0xd7, 0x0a, 0x7c, 0xca, 0xa1, 0xa9, 0x5a,
+    0xe8, 0xac, 0xe0, 0x71, 0x54, 0xaf, 0x28, 0xcf, 0xd5, 0x70,
+    0x89, 0xe0, 0xf3, 0x9e, 0x43, 0x6c, 0x8d, 0x7b, 0x99, 0x01,
+    0x68, 0x4d, 0xa1, 0x45, 0x46, 0x0c, 0x43, 0xbc, 0xcc, 0x2c,
+    0xdd, 0xc5, 0x46, 0xc8, 0x4e, 0x0e, 0xbe, 0xed, 0xb9, 0x26,
+    0xab, 0x2e, 0xdb, 0xeb, 0x8f, 0xff, 0xdb, 0xb0, 0xc6, 0x55,
+    0xaf, 0xf8, 0x2a, 0x91, 0x9d, 0x50, 0x44, 0x21, 0x17
 };
 
 static unsigned char test7680[] = {
diff -Nru openssl-3.5.6/CHANGES.md openssl-3.5.7/CHANGES.md
--- openssl-3.5.6/CHANGES.md	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/CHANGES.md	2026-06-09 13:54:25.000000000 +0200
@@ -28,6 +28,303 @@
 OpenSSL 3.5
 -----------
 
+### Changes between 3.5.6 and 3.5.7 [9 Jun 2026]
+
+ * Fixed heap use-after-free in `PKCS7_verify()`.
+
+   Severity: High
+
+   Issue summary: A specially crafted PKCS#7 or S/MIME signed message could
+   trigger a use-after-free during PKCS#7 signature verification.
+
+   Impact summary: A use-after-free may result in process crashes, heap
+   corruption, or, potentially, remote code execution.
+
+   Reported by: Thai Duong (Calif.io in collaboration with Claude
+   and Anthropic Research).
+
+   ([CVE-2026-45447])
+
+   *Igor Ustinov*
+
+ * Fixed CMS `AuthEnvelopedData` processing may accept forged messages.
+
+   Severity: Moderate
+
+   Issue Summary: Cryptographic Message Services (CMS) processing fails
+   to perform sufficient input validation on the cipher and tag length fields
+   of `AuthEnvelopedData` containers, leading to various potential compromises.
+
+   Impact Summary: Attackers making use of these vulnerabilities may achieve
+   key-equivalent functionality for a given CMS recipient and/or bypass
+   integrity validation for a given message.
+
+   Reported by: Asim Viladi Oglu Manizada, Alex Gaynor (Anthropic),
+   Ying Dong, and Haiyang Huang.
+
+   ([CVE-2026-34182])
+
+   *Neil Horman*
+
+ * Fixed unbounded memory growth in the QUIC `PATH_CHALLENGE` handler.
+
+   Severity: Moderate
+
+   Issue summary: Remote peer may exhaust heap memory of the QUIC server
+   or client by flooding it with packets containing `PATH_CHALLENGE` frames.
+
+   Impact summary: A malicious remote peer can cause an unbounded memory
+   allocation which can lead to an abnormal termination of the application
+   acting as a QUIC client or server and a Denial of Service.
+
+   Reported by: Abhinav Agarwal.
+
+   ([CVE-2026-34183])
+
+   *Abhinav Agarwal and Alexandr Nedvedicky*
+
+ * Fixed NULL pointer dereference in QUIC server initial packet handling.
+
+   Severity: Moderate
+
+   Issue summary: Receiving a QUIC initial packet with an invalid token
+   may trigger a NULL pointer dereference in the OpenSSL QUIC server
+   with address validation disabled.
+
+   Impact summary: NULL pointer dereference typically causes abnormal
+   termination of the affected QUIC server process and a Denial of Service.
+
+   Reported by: Sunwoo Lee (KENTECH), Hyuk Lim (KENTECH),
+   and Seunghyun Yoon (KENTECH).
+
+   ([CVE-2026-42764])
+
+   *Sunwoo Lee (KENTECH), Hyuk Lim (KENTECH), and Seunghyun Yoon (KENTECH)*
+
+ * Fixed AES-OCB IV ignored on `EVP_Cipher()` path.
+
+   Severity: Moderate
+
+   Issue summary: When an application drives an AES-OCB context through
+   the public `EVP_Cipher()` one-shot interface, the application-supplied
+   initialisation vector (IV) is silently discarded.
+
+   Impact summary: Every message encrypted under the same key uses the same
+   effective nonce regardless of the IV supplied by the caller, resulting
+   in `(key, nonce)` reuse and loss of confidentiality.  If the same code path
+   is used to compute the authentication tag, the tag depends only
+   on the `(key, IV)` pair and not on the plaintext or ciphertext, allowing
+   universal forgery of arbitrary ciphertext from a single captured message.
+
+   Reported by: Alex Gaynor (Anthropic).
+
+   ([CVE-2026-45445])
+
+   *Viktor Dukhovni*
+
+ * Fixed possible heap buffer overflow in ASN.1 multibyte string conversion.
+
+   Severity: Low
+
+   Issue summary: A signed integer overflow when sizing the destination
+   buffer for Unicode output in `ASN1_mbstring_ncopy()` can lead to a heap
+   buffer overflow.
+
+   Impact summary: A heap buffer overflow may lead to a crash or possibly
+   attacker controlled code execution or other undefined behaviour.
+
+   Reported by: Zehua Qiao and Jinwen He.
+
+   ([CVE-2026-7383])
+
+   *Viktor Dukhovni*
+
+ * Fixed out-of-bounds read in CMS password-based decryption.
+
+   Severity: Low
+
+   Issue summary: When CMS password-based decryption ([RFC 3211]/PWRI key
+   unwrap) processes attacker-supplied CMS data, an attacker-chosen stream-mode
+   KEK cipher can trigger a heap out-of-bounds read in `kek_unwrap_key()`.
+
+   Impact summary: A heap buffer over-read may trigger a crash, which leads
+   to Denial of Service for an application if the input buffer ends at a memory
+   page boundary and the following page is unmapped.  There is no information
+   disclosure, as the over-read bytes are not revealed to the attacker.
+
+   Reported by: Bhabani Sankar Das and Haruki Oyama (Waseda University).
+
+   ([CVE-2026-9076])
+
+   *Nikola Pajkovský*
+
+ * Fixed heap buffer over-read in ASN.1 content parsing.
+
+   Severity: Low
+
+   Issue summary: Parsing a crafted DER-encoded ASN.1 structure with a primitive
+   element whose content exceeds 2 gigabytes in length may cause a heap buffer
+   over-read on 64-bit Unix and Unix-like platforms.
+
+   Impact summary: The heap buffer over-read may crash the application (Denial
+   of Service) or to load into the decoded ASN.1 object contents of memory
+   beyond the end of the input buffer.  More typically, such ASN.1 elements
+   would instead be truncated.
+
+   Reported by: Frank Buss.
+
+   ([CVE-2026-34180])
+
+   *Viktor Dukhovni*
+
+ * Fixed PKCS#12 files with PBMAC1 are accepted with short HMAC keys.
+
+   Severity: Low
+
+   Issue Summary: The PKCS#12 file processing fails to perform sufficient input
+   validation for files that use Password-Based Message Authentication Code 1
+   (PBMAC1) integrity mechanism allowing a certificate and private key forgery.
+
+   Impact Summary: An attacker impersonating a user can cause a service reading
+   PKCS#12 files to accept forged certificates and private keys with a 1 in 256
+   probability.
+
+   Reported by: Pavol Žáčik (Red Hat) and Alex Gaynor (Anthropic).
+
+   ([CVE-2026-34181])
+
+   *Alicja Kario (Red Hat)*
+
+ * Fixed possible NULL dereference in password-dased CMS decryption.
+
+   Severity: Low
+
+   Issue summary: A specially crafted password-encrypted CMS message
+   could trigger a NULL pointer dereference during CMS decryption.
+
+   Impact summary: This NULL pointer dereference could lead to an application
+   crash and a Denial of Service.
+
+   Reported by: Mayank Jangid, Kushal Khemka, Hari Priandana,
+   Bhabani Sankar Das, and Qifan Zhang (Palo Alto Networks).
+
+   ([CVE-2026-42766])
+
+   *Igor Ustinov*
+
+ * Fixed NULL pointer dereference in CRMF `EncryptedValue` decryption.
+
+   Severity: Low
+
+   Issue summary: An attacker-controlled CMP (Certificate Management Protocol)
+   server could trigger a NULL pointer dereference in a CMP client application.
+
+   Impact summary: A NULL pointer dereference could cause a crash
+   of the application and a Denial of Service.
+
+   Reported by: Zhanpeng Liu (Tencent Xuanwu Lab),
+   Guannan Wang (Tencent Xuanwu Lab), and Guancheng Li (Tencent Xuanwu Lab).
+
+   ([CVE-2026-42767])
+
+   *Igor Ustinov*
+
+ * Fixed multi-`RecipientInfo` Bleichenbacher Oracle in `CMS_decrypt()`
+   and `PKCS7_decrypt()`.
+
+   Severity: Low
+
+   Issue summary: The `CMS_decrypt()` and `PKCS7_decrypt()` functions
+   are vulnerable to Bleichenbacher-style attack when an attacker is able
+   to provide CMS or S/MIME messages and observe the error code
+   and/or decryption output.
+
+   Impact summary: The Bleichenbacher-style attack allows an attacker to use
+   the victim's vulnerable application as a way to decrypt or sign messages
+   with the victim's private RSA key.
+
+   Reported by: Alex Gaynor (Anthropic).
+
+   ([CVE-2026-42768])
+
+   *Dmitry Belyavskiy (Red Hat) and Alicja Kario (Red Hat)*
+
+ * Fixed trust anchor substitution via `cert`/`issuer` typo in CMP
+   `rootCaKeyUpdate`.
+
+   Severity: Low
+
+   Issue Summary: An error in the callback used to verify the certificate
+   provided in a Root CA key update Certificate Management Protocol (CMP)
+   message response rendered the certificate validation ineffectual,
+   which could lead to escalation of credentials from the Registration
+   Authority (RA) level to the root Certification Authority (root CA) level.
+
+   Impact Summary: The Registration Authority could replace the root CA
+   certificate for the CMP clients with an arbitrary root CA certificate.
+
+   Reported by: Alex Gaynor (Anthropic).
+
+   ([CVE-2026-42769])
+
+   *Alex Gaynor (Anthropic) and Bob Beck*
+
+ * Fixed FFC-DH peer validation uses attacker-supplied `q`.
+
+   Severity: Low
+
+   Issue summary: When `EVP_PKEY_derive_set_peer()` is called with a DHX (X9.42)
+   peer key, the peer key is not properly checked for the subgroup membership.
+
+   Impact summary: A malicious peer which presents an X9.42 key carrying
+   the victim's `p` and `g` parameters, a forged `q = r` (a small prime factor
+   of the cofactor `(p − 1)/q_local`), and a public value `Y` of order `r` can
+   recover the victim's private key after a small number of key exchange
+   attempts.
+
+   Reported by: Alex Gaynor (Anthropic).
+
+   ([CVE-2026-42770])
+
+   *Alex Gaynor (Anthropic), Viktor Dukhovni, and Norbert Pócs*
+
+ * Fixed incorrect tag processing for empty messages in AES-GCM-SIV
+   and AES-SIV modes.
+
+   Severity: Low
+
+   Issue summary: The implementations of AES-SIV ([RFC 5297]) and AES-GCM-SIV
+   ([RFC 8452]) mishandle the authentication of AAD (Additional Authenticated
+   Data) with an empty ciphertext, allowing forgery of such messages.
+
+   Impact summary: An attacker can forge empty messages with arbitrary AAD
+   to the victim's application using these ciphers.
+
+   Reported by: Alex Gaynor (Anthropic).
+
+   ([CVE-2026-45446])
+
+   *Dmitry Belyavskiy (Red Hat)*
+
+ * Fixed TLS 1.3 server not sending `NewSessionTicket` message
+   after ciphersuite mismatch.
+   <!-- https://github.com/openssl/openssl/pull/30626 -->
+
+   *Daniel Kubec*
+
+ * Implemented validation of the minimal length of PSK identity
+   being of at least one byte long, as required per [RFC 8446].
+   <!-- https://github.com/openssl/openssl/pull/31058 -->
+
+   *Matt Caswell*
+
+ * Fixed usage of stale application buffer pointer by kTLS implementation
+   after incomplete writes when `SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER` is set,
+   that led to invalid memory reads and sending of incorrect data.
+   <!-- https://github.com/openssl/openssl/pull/31146 -->
+
+   *Ilya Maximets*
+
 ### Changes between 3.5.5 and 3.5.6 [7 Apr 2026]
 
  * Fixed incorrect failure handling in RSA KEM RSASVE encapsulation.
@@ -21961,6 +22258,8 @@
 [CVE-2025-69420]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-69420
 [CVE-2025-69421]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-69421
 [CVE-2026-2673]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-2673
+[CVE-2026-7383]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-7383
+[CVE-2026-9076]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-9076
 [CVE-2026-22795]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-22795
 [CVE-2026-22796]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-22796
 [CVE-2026-28387]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-28387
@@ -21969,5 +22268,22 @@
 [CVE-2026-28390]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-28390
 [CVE-2026-31789]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-31789
 [CVE-2026-31790]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-31790
+[CVE-2026-34180]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-34180
+[CVE-2026-34181]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-34181
+[CVE-2026-34182]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-34182
+[CVE-2026-34183]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-34183
+[CVE-2026-42764]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-42764
+[CVE-2026-42766]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-42766
+[CVE-2026-42767]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-42767
+[CVE-2026-42768]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-42768
+[CVE-2026-42769]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-42769
+[CVE-2026-42770]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-42770
+[CVE-2026-45445]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-45445
+[CVE-2026-45446]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-45446
+[CVE-2026-45447]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-45447
 [ESV]: https://csrc.nist.gov/Projects/cryptographic-module-validation-program/entropy-validations
 [RFC 2578 (STD 58), section 3.5]: https://datatracker.ietf.org/doc/html/rfc2578#section-3.5
+[RFC 3211]: https://datatracker.ietf.org/doc/html/rfc3211
+[RFC 5297]: https://datatracker.ietf.org/doc/html/rfc5297
+[RFC 8446]: https://datatracker.ietf.org/doc/html/rfc8446
+[RFC 8452]: https://datatracker.ietf.org/doc/html/rfc8452
diff -Nru openssl-3.5.6/Configurations/README.md openssl-3.5.7/Configurations/README.md
--- openssl-3.5.6/Configurations/README.md	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/Configurations/README.md	2026-06-09 13:54:25.000000000 +0200
@@ -502,7 +502,7 @@
 Text::Template, using `{-` and `-}` as delimiters that enclose the
 perl code fragments that generate configuration-dependent content.
 Those perl fragments have access to all the hash variables from
-configdata.pem.
+configdata.pm.
 
 The build-file template is expected to define at least the following
 perl functions in a perl code fragment enclosed with `{-` and `-}`.
diff -Nru openssl-3.5.6/Configure openssl-3.5.7/Configure
--- openssl-3.5.6/Configure	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/Configure	2026-06-09 13:54:25.000000000 +0200
@@ -1,6 +1,6 @@
 #! /usr/bin/env perl
 # -*- mode: perl; -*-
-# Copyright 2016-2025 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved.
 #
 # Licensed under the Apache License 2.0 (the "License").  You may not use
 # this file except in compliance with the License.  You can obtain a copy
@@ -221,16 +221,9 @@
 #
 # API compatibility name to version number mapping.
 #
-my $apitable = {
-    # This table expresses when API additions or changes can occur.
-    # The numbering used changes from 3.0 and on because we updated
-    # (solidified) our version numbering scheme at that point.
-
-    # From 3.0 and on, we internalise the given version number in decimal
-    # as MAJOR * 10000 + MINOR * 100 + 0
-    "3.0.0" => 30000,
-    "3.0"   => 30000,
 
+# This table expresses when API additions or changes can occur
+my $apitable = {
     # Note that before 3.0, we didn't have the same version number scheme.
     # Still, the numbering we use here covers what we need.
     "1.1.1" => 10101,
@@ -241,6 +234,18 @@
     "0.9.8" =>   908,
 };
 
+# From 3.0 and on, we internalise the given version number in decimal
+# as MAJOR * 10000 + MINOR * 100 + 0
+my @post30_versions = ([3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5],
+                       );
+
+# The numbering used changes from 3.0 and on because we updated
+# (solidified) our version numbering scheme at that point.
+foreach (@post30_versions) {
+    my ($x, $y) = @{$_};
+    $apitable->{"$x.$y.0"} = $apitable->{"$x.$y"} = $x * 10000 + $y * 100;
+}
+
 # For OpenSSL::config::get_platform
 my %guess_opts = ();
 
diff -Nru openssl-3.5.6/crypto/aes/asm/aesfx-sparcv9.pl openssl-3.5.7/crypto/aes/asm/aesfx-sparcv9.pl
--- openssl-3.5.6/crypto/aes/asm/aesfx-sparcv9.pl	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/aes/asm/aesfx-sparcv9.pl	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 #! /usr/bin/env perl
-# Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved.
 #
 # Licensed under the Apache License 2.0 (the "License").  You may not use
 # this file except in compliance with the License.  You can obtain a copy
@@ -479,11 +479,16 @@
 	ldd		[$end + 24], %f12
 
 	movrz		$len, 0, $inc
+
+	brz,pn		$len, .Lcbc_enc_skip_load
+	nop
+
 	fmovd		$intail, $in0
 	ldd		[$inp - 8], $in1	! load next input block
 	ldda		[$inp]0x82, $intail	! non-faulting load
 	add		$inp, $inc, $inp	! inp+=16
 
+.Lcbc_enc_skip_load:
 	fmovd		%f0, %f4
 	faesencx	%f2, %f6, %f0
 	faesencx	%f4, %f8, %f2
@@ -694,11 +699,16 @@
 	fmovd		$in1, $iv1
 
 	movrz		$len, 0, $inc
+
+	brz,pn		$len, .Lcbc_dec_skip_load
+	nop
+
 	fmovd		$intail, $in0
 	ldd		[$inp - 8], $in1	! load next input block
 	ldda		[$inp]0x82, $intail	! non-faulting load
 	add		$inp, $inc, $inp	! inp+=16
 
+.Lcbc_dec_skip_load:
 	fmovd		%f0, %f4
 	faesdecx	%f2, %f10, %f0
 	faesdecx	%f4, %f12, %f2
@@ -953,11 +963,16 @@
 	fxor		$in1, $rllo, %f8
 
 	movrz		$len, 0, $inc
+
+	brz,pn		$len, .Lctr32_enc_skip_load
+	nop
+
 	fmovd		$intail, $in0
 	ldd		[$inp - 8], $in1	! load next input block
 	ldda		[$inp]0x82, $intail	! non-faulting load
 	add		$inp, $inc, $inp	! inp+=16
 
+.Lctr32_enc_skip_load:
 	fmovd		%f0, %f4
 	faesencx	%f2, %f10, %f0
 	faesencx	%f4, %f12, %f2
diff -Nru openssl-3.5.6/crypto/asn1/a_d2i_fp.c openssl-3.5.7/crypto/asn1/a_d2i_fp.c
--- openssl-3.5.6/crypto/asn1/a_d2i_fp.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/asn1/a_d2i_fp.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -104,7 +104,7 @@
 }
 #endif
 
-#define HEADER_SIZE 8
+#define HEADER_SIZE 2
 #define ASN1_CHUNK_INITIAL_SIZE (16 * 1024)
 int asn1_d2i_read_bio(BIO *in, BUF_MEM **pb)
 {
@@ -138,7 +138,7 @@
                 goto err;
             }
             i = BIO_read(in, &(b->data[len]), want);
-            if (i < 0 && diff == 0) {
+            if (i <= 0) {
                 ERR_raise(ERR_LIB_ASN1, ASN1_R_NOT_ENOUGH_DATA);
                 goto err;
             }
@@ -154,12 +154,65 @@
         }
         /* else data already loaded */
 
+        /* make sure there is enough data for a complete header */
         p = (unsigned char *)&(b->data[off]);
         q = p;
         diff = len - off;
-        if (diff == 0)
+        if (diff < 2) {
+            /* Failed sanity check */
+            ERR_raise(ERR_LIB_ASN1, ASN1_R_NOT_ENOUGH_DATA);
             goto err;
-        inf = ASN1_get_object(&q, &slen, &tag, &xclass, diff);
+        }
+
+        diff--;
+        if ((*(q++) & V_ASN1_PRIMITIVE_TAG) == V_ASN1_PRIMITIVE_TAG) {
+            unsigned int n = 0;
+            /* Multi-byte tag.  See if we have the whole thing yet */
+            do {
+                if (n > 4) {
+                    /* The tag value must fit into int */
+                    ERR_raise(ERR_LIB_ASN1, ASN1_R_HEADER_TOO_LONG);
+                    goto err;
+                }
+                ++n;
+                diff--;
+            } while (diff > 0 && *(q++) & 0x80);
+
+            if (diff == 0) {
+                /*
+                 * End of current data, will need at least 1 more byte for
+                 * length.  2 if the tag is still incomplete
+                 */
+                want = q - p + 2;
+                if (*q & 0x80) {
+                    want++;
+                }
+                continue;
+            }
+        }
+
+        /* Check the length.  This should also work for indefinite length */
+        diff--;
+        if (*q & 0x80) {
+            unsigned int n = *q & 0x7f;
+
+            if (n > sizeof(long)) {
+                ERR_raise(ERR_LIB_ASN1, ASN1_R_TOO_LONG);
+                goto err;
+            }
+            if (n > diff) {
+                want = q - p + n + 1;
+                continue;
+            }
+        }
+
+        /*
+         * We have a complete header now, assuming we didn't hit EOF. Parse the
+         * tag and length
+         */
+        q = p;
+        diff = len - off;
+        inf = ASN1_get_object(&q, &slen, &tag, &xclass, (int)diff);
         if (inf & 0x80) {
             unsigned long e;
 
@@ -169,8 +222,7 @@
             ERR_pop_to_mark();
             ERR_set_mark();
         }
-        i = q - p; /* header length */
-        off += i; /* end of data */
+        off += q - p; /* end of data */
 
         if (inf & 1) {
             /* no data body so go round again */
diff -Nru openssl-3.5.6/crypto/asn1/a_mbstr.c openssl-3.5.7/crypto/asn1/a_mbstr.c
--- openssl-3.5.6/crypto/asn1/a_mbstr.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/asn1/a_mbstr.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1999-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -174,11 +174,27 @@
         break;
 
     case MBSTRING_BMP:
+        if (nchar > INT_MAX / 2) {
+            ERR_raise(ERR_LIB_ASN1, ASN1_R_STRING_TOO_LONG);
+            if (free_out) {
+                ASN1_STRING_free(dest);
+                *out = NULL;
+            }
+            return -1;
+        }
         outlen = nchar << 1;
         cpyfunc = cpy_bmp;
         break;
 
     case MBSTRING_UNIV:
+        if (nchar > INT_MAX / 4) {
+            ERR_raise(ERR_LIB_ASN1, ASN1_R_STRING_TOO_LONG);
+            if (free_out) {
+                ASN1_STRING_free(dest);
+                *out = NULL;
+            }
+            return -1;
+        }
         outlen = nchar << 2;
         cpyfunc = cpy_univ;
         break;
@@ -186,8 +202,11 @@
     case MBSTRING_UTF8:
         outlen = 0;
         ret = traverse_string(in, len, inform, out_utf8, &outlen);
-        if (ret < 0) {
-            ERR_raise(ERR_LIB_ASN1, ASN1_R_INVALID_UTF8STRING);
+        if (ret < 0) { /* error already raised in out_utf8() */
+            if (free_out) {
+                ASN1_STRING_free(dest);
+                *out = NULL;
+            }
             return -1;
         }
         cpyfunc = cpy_utf8;
@@ -270,9 +289,15 @@
     int *outlen, len;
 
     len = UTF8_putc(NULL, -1, value);
-    if (len <= 0)
+    if (len <= 0) {
+        ERR_raise(ERR_LIB_ASN1, ASN1_R_INVALID_UTF8STRING);
         return len;
+    }
     outlen = arg;
+    if (*outlen > INT_MAX - len) {
+        ERR_raise(ERR_LIB_ASN1, ASN1_R_STRING_TOO_LONG);
+        return -1;
+    }
     *outlen += len;
     return 1;
 }
diff -Nru openssl-3.5.6/crypto/asn1/asn1_lib.c openssl-3.5.7/crypto/asn1/asn1_lib.c
--- openssl-3.5.6/crypto/asn1/asn1_lib.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/asn1/asn1_lib.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -129,7 +129,7 @@
         *inf = 0;
         i = *p & 0x7f;
         if (*p++ & 0x80) {
-            if (max < i + 1)
+            if (max < i)
                 return 0;
             /* Skip leading zeroes */
             while (i > 0 && *p == 0) {
diff -Nru openssl-3.5.6/crypto/asn1/asn_mime.c openssl-3.5.7/crypto/asn1/asn_mime.c
--- openssl-3.5.6/crypto/asn1/asn_mime.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/asn1/asn_mime.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2008-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -665,16 +665,18 @@
 #else
                     1
 #endif
-                    || (flags & SMIME_CRLFEOL) != 0)
-                    BIO_write(bpart, "\r\n", 2);
-                else
-                    BIO_write(bpart, "\n", 1);
+                    || (flags & SMIME_CRLFEOL) != 0) {
+                    if (BIO_write(bpart, "\r\n", 2) < 2)
+                        goto err;
+                } else if (BIO_write(bpart, "\n", 1) < 1)
+                    goto err;
             }
             eol = next_eol;
-            if (len > 0)
-                BIO_write(bpart, linebuf, len);
+            if (len > 0 && BIO_write(bpart, linebuf, len) < len)
+                goto err;
         }
     }
+err:
     BIO_free(bpart);
     return 0;
 }
diff -Nru openssl-3.5.6/crypto/asn1/tasn_dec.c openssl-3.5.7/crypto/asn1/tasn_dec.c
--- openssl-3.5.6/crypto/asn1/tasn_dec.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/asn1/tasn_dec.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2000-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -54,7 +54,7 @@
     const ASN1_ITEM *it,
     int tag, int aclass, char opt,
     ASN1_TLC *ctx);
-static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
+static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, long len,
     int utype, char *free_cont, const ASN1_ITEM *it);
 
 /* Table to convert tags to bit values, used for MSTRING type */
@@ -855,19 +855,24 @@
 
 /* Translate ASN1 content octets into a structure */
 
-static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
+static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, long len,
     int utype, char *free_cont, const ASN1_ITEM *it)
 {
     ASN1_VALUE **opval = NULL;
     ASN1_STRING *stmp;
     ASN1_TYPE *typ = NULL;
     int ret = 0;
+    int ilen = (int)len;
     const ASN1_PRIMITIVE_FUNCS *pf;
     ASN1_INTEGER **tint;
     pf = it->funcs;
 
-    if (pf && pf->prim_c2i)
-        return pf->prim_c2i(pval, cont, len, utype, free_cont, it);
+    if (pf && pf->prim_c2i) {
+        if (len == (long)ilen)
+            return pf->prim_c2i(pval, cont, ilen, utype, free_cont, it);
+        ERR_raise(ERR_LIB_ASN1, ASN1_R_TOO_LONG);
+        return 0;
+    }
     /* If ANY type clear type and set pointer to internal value */
     if (it->utype == V_ASN1_ANY) {
         if (*pval == NULL) {
@@ -885,7 +890,8 @@
     }
     switch (utype) {
     case V_ASN1_OBJECT:
-        if (!ossl_c2i_ASN1_OBJECT((ASN1_OBJECT **)pval, &cont, len))
+        if (len != (long)ilen
+            || !ossl_c2i_ASN1_OBJECT((ASN1_OBJECT **)pval, &cont, ilen))
             goto err;
         break;
 
@@ -940,6 +946,10 @@
     case V_ASN1_SET:
     case V_ASN1_SEQUENCE:
     default:
+        if (len != (long)ilen) {
+            ERR_raise(ERR_LIB_ASN1, ASN1_R_TOO_LONG);
+            goto err;
+        }
         if (utype == V_ASN1_BMPSTRING && (len & 1)) {
             ERR_raise(ERR_LIB_ASN1, ASN1_R_BMPSTRING_IS_WRONG_LENGTH);
             goto err;
@@ -970,10 +980,10 @@
         }
         /* If we've already allocated a buffer use it */
         if (*free_cont) {
-            ASN1_STRING_set0(stmp, (unsigned char *)cont /* UGLY CAST! */, len);
+            ASN1_STRING_set0(stmp, (unsigned char *)cont /* UGLY CAST! */, ilen);
             *free_cont = 0;
         } else {
-            if (!ASN1_STRING_set(stmp, cont, len)) {
+            if (!ASN1_STRING_set(stmp, cont, ilen)) {
                 ERR_raise(ERR_LIB_ASN1, ERR_R_ASN1_LIB);
                 ASN1_STRING_free(stmp);
                 *pval = NULL;
diff -Nru openssl-3.5.6/crypto/bio/bss_dgram.c openssl-3.5.7/crypto/bio/bss_dgram.c
--- openssl-3.5.6/crypto/bio/bss_dgram.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/bio/bss_dgram.c	2026-06-09 13:54:25.000000000 +0200
@@ -68,8 +68,8 @@
 #undef NO_RECVMMSG
 #define NO_RECVMMSG
 #endif
-#if defined(_AIX) && !defined(_AIX72)
-/* AIX >= 7.2 provides sendmmsg() and recvmmsg(). */
+#if defined(_AIX)
+/* AIX header files don't properly expose sendmmsg/recvmmsg declarations */
 #undef NO_RECVMMSG
 #define NO_RECVMMSG
 #endif
diff -Nru openssl-3.5.6/crypto/bio/bss_dgram_pair.c openssl-3.5.7/crypto/bio/bss_dgram_pair.c
--- openssl-3.5.6/crypto/bio/bss_dgram_pair.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/bio/bss_dgram_pair.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -305,6 +305,7 @@
     b = bio->ptr;
 
     if (ring_buf_init(&b->rbuf, b->req_buf_len) == 0) {
+        dgram_pair_free(bio);
         ERR_raise(ERR_LIB_BIO, ERR_R_BIO_LIB);
         return 0;
     }
diff -Nru openssl-3.5.6/crypto/bn/bn_const.c openssl-3.5.7/crypto/bn/bn_const.c
--- openssl-3.5.6/crypto/bn/bn_const.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/bn/bn_const.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2005-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -24,102 +24,16 @@
 BIGNUM *BN_get_rfc2409_prime_768(BIGNUM *bn)
 {
     static const unsigned char RFC2409_PRIME_768[] = {
-        0xFF,
-        0xFF,
-        0xFF,
-        0xFF,
-        0xFF,
-        0xFF,
-        0xFF,
-        0xFF,
-        0xC9,
-        0x0F,
-        0xDA,
-        0xA2,
-        0x21,
-        0x68,
-        0xC2,
-        0x34,
-        0xC4,
-        0xC6,
-        0x62,
-        0x8B,
-        0x80,
-        0xDC,
-        0x1C,
-        0xD1,
-        0x29,
-        0x02,
-        0x4E,
-        0x08,
-        0x8A,
-        0x67,
-        0xCC,
-        0x74,
-        0x02,
-        0x0B,
-        0xBE,
-        0xA6,
-        0x3B,
-        0x13,
-        0x9B,
-        0x22,
-        0x51,
-        0x4A,
-        0x08,
-        0x79,
-        0x8E,
-        0x34,
-        0x04,
-        0xDD,
-        0xEF,
-        0x95,
-        0x19,
-        0xB3,
-        0xCD,
-        0x3A,
-        0x43,
-        0x1B,
-        0x30,
-        0x2B,
-        0x0A,
-        0x6D,
-        0xF2,
-        0x5F,
-        0x14,
-        0x37,
-        0x4F,
-        0xE1,
-        0x35,
-        0x6D,
-        0x6D,
-        0x51,
-        0xC2,
-        0x45,
-        0xE4,
-        0x85,
-        0xB5,
-        0x76,
-        0x62,
-        0x5E,
-        0x7E,
-        0xC6,
-        0xF4,
-        0x4C,
-        0x42,
-        0xE9,
-        0xA6,
-        0x3A,
-        0x36,
-        0x20,
-        0xFF,
-        0xFF,
-        0xFF,
-        0xFF,
-        0xFF,
-        0xFF,
-        0xFF,
-        0xFF,
+        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x0F,
+        0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, 0xC4, 0xC6, 0x62, 0x8B,
+        0x80, 0xDC, 0x1C, 0xD1, 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67,
+        0xCC, 0x74, 0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22,
+        0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, 0xEF, 0x95,
+        0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 0x30, 0x2B, 0x0A, 0x6D,
+        0xF2, 0x5F, 0x14, 0x37, 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51,
+        0xC2, 0x45, 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6,
+        0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x3A, 0x36, 0x20, 0xFF, 0xFF,
+        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
     };
     return BN_bin2bn(RFC2409_PRIME_768, sizeof(RFC2409_PRIME_768), bn);
 }
@@ -136,134 +50,19 @@
 BIGNUM *BN_get_rfc2409_prime_1024(BIGNUM *bn)
 {
     static const unsigned char RFC2409_PRIME_1024[] = {
-        0xFF,
-        0xFF,
-        0xFF,
-        0xFF,
-        0xFF,
-        0xFF,
-        0xFF,
-        0xFF,
-        0xC9,
-        0x0F,
-        0xDA,
-        0xA2,
-        0x21,
-        0x68,
-        0xC2,
-        0x34,
-        0xC4,
-        0xC6,
-        0x62,
-        0x8B,
-        0x80,
-        0xDC,
-        0x1C,
-        0xD1,
-        0x29,
-        0x02,
-        0x4E,
-        0x08,
-        0x8A,
-        0x67,
-        0xCC,
-        0x74,
-        0x02,
-        0x0B,
-        0xBE,
-        0xA6,
-        0x3B,
-        0x13,
-        0x9B,
-        0x22,
-        0x51,
-        0x4A,
-        0x08,
-        0x79,
-        0x8E,
-        0x34,
-        0x04,
-        0xDD,
-        0xEF,
-        0x95,
-        0x19,
-        0xB3,
-        0xCD,
-        0x3A,
-        0x43,
-        0x1B,
-        0x30,
-        0x2B,
-        0x0A,
-        0x6D,
-        0xF2,
-        0x5F,
-        0x14,
-        0x37,
-        0x4F,
-        0xE1,
-        0x35,
-        0x6D,
-        0x6D,
-        0x51,
-        0xC2,
-        0x45,
-        0xE4,
-        0x85,
-        0xB5,
-        0x76,
-        0x62,
-        0x5E,
-        0x7E,
-        0xC6,
-        0xF4,
-        0x4C,
-        0x42,
-        0xE9,
-        0xA6,
-        0x37,
-        0xED,
-        0x6B,
-        0x0B,
-        0xFF,
-        0x5C,
-        0xB6,
-        0xF4,
-        0x06,
-        0xB7,
-        0xED,
-        0xEE,
-        0x38,
-        0x6B,
-        0xFB,
-        0x5A,
-        0x89,
-        0x9F,
-        0xA5,
-        0xAE,
-        0x9F,
-        0x24,
-        0x11,
-        0x7C,
-        0x4B,
-        0x1F,
-        0xE6,
-        0x49,
-        0x28,
-        0x66,
-        0x51,
-        0xEC,
-        0xE6,
-        0x53,
-        0x81,
-        0xFF,
-        0xFF,
-        0xFF,
-        0xFF,
-        0xFF,
-        0xFF,
-        0xFF,
-        0xFF,
+        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x0F,
+        0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, 0xC4, 0xC6, 0x62, 0x8B,
+        0x80, 0xDC, 0x1C, 0xD1, 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67,
+        0xCC, 0x74, 0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22,
+        0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, 0xEF, 0x95,
+        0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 0x30, 0x2B, 0x0A, 0x6D,
+        0xF2, 0x5F, 0x14, 0x37, 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51,
+        0xC2, 0x45, 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6,
+        0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B, 0x0B, 0xFF,
+        0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, 0xEE, 0x38, 0x6B, 0xFB,
+        0x5A, 0x89, 0x9F, 0xA5, 0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B,
+        0x1F, 0xE6, 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE6, 0x53, 0x81,
+        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
     };
     return BN_bin2bn(RFC2409_PRIME_1024, sizeof(RFC2409_PRIME_1024), bn);
 }
diff -Nru openssl-3.5.6/crypto/bn/bn_mod.c openssl-3.5.7/crypto/bn/bn_mod.c
--- openssl-3.5.6/crypto/bn/bn_mod.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/bn/bn_mod.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1998-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -11,24 +11,24 @@
 #include "internal/nelem.h"
 #include "bn_local.h"
 
-int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx)
+int BN_nnmod(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx)
 {
     /*
-     * like BN_mod, but returns non-negative remainder (i.e., 0 <= r < |d|
+     * like BN_mod, but returns non-negative remainder (i.e., 0 <= r < |m|
      * always holds)
      */
 
-    if (r == d) {
+    if (r == m) {
         ERR_raise(ERR_LIB_BN, ERR_R_PASSED_INVALID_ARGUMENT);
         return 0;
     }
 
-    if (!(BN_mod(r, m, d, ctx)))
+    if (!(BN_mod(r, a, m, ctx)))
         return 0;
     if (!r->neg)
         return 1;
-    /* now   -|d| < r < 0,  so we have to set  r := r + |d| */
-    return (d->neg ? BN_sub : BN_add)(r, r, d);
+    /* now   -|m| < r < 0,  so we have to set  r := r + |m| */
+    return (m->neg ? BN_sub : BN_add)(r, r, m);
 }
 
 int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
diff -Nru openssl-3.5.6/crypto/cast/cast_s.h openssl-3.5.7/crypto/cast/cast_s.h
--- openssl-3.5.6/crypto/cast/cast_s.h	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/cast/cast_s.h	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -8,2073 +8,281 @@
  */
 
 const CAST_LONG CAST_S_table0[256] = {
-    0x30fb40d4,
-    0x9fa0ff0b,
-    0x6beccd2f,
-    0x3f258c7a,
-    0x1e213f2f,
-    0x9c004dd3,
-    0x6003e540,
-    0xcf9fc949,
-    0xbfd4af27,
-    0x88bbbdb5,
-    0xe2034090,
-    0x98d09675,
-    0x6e63a0e0,
-    0x15c361d2,
-    0xc2e7661d,
-    0x22d4ff8e,
-    0x28683b6f,
-    0xc07fd059,
-    0xff2379c8,
-    0x775f50e2,
-    0x43c340d3,
-    0xdf2f8656,
-    0x887ca41a,
-    0xa2d2bd2d,
-    0xa1c9e0d6,
-    0x346c4819,
-    0x61b76d87,
-    0x22540f2f,
-    0x2abe32e1,
-    0xaa54166b,
-    0x22568e3a,
-    0xa2d341d0,
-    0x66db40c8,
-    0xa784392f,
-    0x004dff2f,
-    0x2db9d2de,
-    0x97943fac,
-    0x4a97c1d8,
-    0x527644b7,
-    0xb5f437a7,
-    0xb82cbaef,
-    0xd751d159,
-    0x6ff7f0ed,
-    0x5a097a1f,
-    0x827b68d0,
-    0x90ecf52e,
-    0x22b0c054,
-    0xbc8e5935,
-    0x4b6d2f7f,
-    0x50bb64a2,
-    0xd2664910,
-    0xbee5812d,
-    0xb7332290,
-    0xe93b159f,
-    0xb48ee411,
-    0x4bff345d,
-    0xfd45c240,
-    0xad31973f,
-    0xc4f6d02e,
-    0x55fc8165,
-    0xd5b1caad,
-    0xa1ac2dae,
-    0xa2d4b76d,
-    0xc19b0c50,
-    0x882240f2,
-    0x0c6e4f38,
-    0xa4e4bfd7,
-    0x4f5ba272,
-    0x564c1d2f,
-    0xc59c5319,
-    0xb949e354,
-    0xb04669fe,
-    0xb1b6ab8a,
-    0xc71358dd,
-    0x6385c545,
-    0x110f935d,
-    0x57538ad5,
-    0x6a390493,
-    0xe63d37e0,
-    0x2a54f6b3,
-    0x3a787d5f,
-    0x6276a0b5,
-    0x19a6fcdf,
-    0x7a42206a,
-    0x29f9d4d5,
-    0xf61b1891,
-    0xbb72275e,
-    0xaa508167,
-    0x38901091,
-    0xc6b505eb,
-    0x84c7cb8c,
-    0x2ad75a0f,
-    0x874a1427,
-    0xa2d1936b,
-    0x2ad286af,
-    0xaa56d291,
-    0xd7894360,
-    0x425c750d,
-    0x93b39e26,
-    0x187184c9,
-    0x6c00b32d,
-    0x73e2bb14,
-    0xa0bebc3c,
-    0x54623779,
-    0x64459eab,
-    0x3f328b82,
-    0x7718cf82,
-    0x59a2cea6,
-    0x04ee002e,
-    0x89fe78e6,
-    0x3fab0950,
-    0x325ff6c2,
-    0x81383f05,
-    0x6963c5c8,
-    0x76cb5ad6,
-    0xd49974c9,
-    0xca180dcf,
-    0x380782d5,
-    0xc7fa5cf6,
-    0x8ac31511,
-    0x35e79e13,
-    0x47da91d0,
-    0xf40f9086,
-    0xa7e2419e,
-    0x31366241,
-    0x051ef495,
-    0xaa573b04,
-    0x4a805d8d,
-    0x548300d0,
-    0x00322a3c,
-    0xbf64cddf,
-    0xba57a68e,
-    0x75c6372b,
-    0x50afd341,
-    0xa7c13275,
-    0x915a0bf5,
-    0x6b54bfab,
-    0x2b0b1426,
-    0xab4cc9d7,
-    0x449ccd82,
-    0xf7fbf265,
-    0xab85c5f3,
-    0x1b55db94,
-    0xaad4e324,
-    0xcfa4bd3f,
-    0x2deaa3e2,
-    0x9e204d02,
-    0xc8bd25ac,
-    0xeadf55b3,
-    0xd5bd9e98,
-    0xe31231b2,
-    0x2ad5ad6c,
-    0x954329de,
-    0xadbe4528,
-    0xd8710f69,
-    0xaa51c90f,
-    0xaa786bf6,
-    0x22513f1e,
-    0xaa51a79b,
-    0x2ad344cc,
-    0x7b5a41f0,
-    0xd37cfbad,
-    0x1b069505,
-    0x41ece491,
-    0xb4c332e6,
-    0x032268d4,
-    0xc9600acc,
-    0xce387e6d,
-    0xbf6bb16c,
-    0x6a70fb78,
-    0x0d03d9c9,
-    0xd4df39de,
-    0xe01063da,
-    0x4736f464,
-    0x5ad328d8,
-    0xb347cc96,
-    0x75bb0fc3,
-    0x98511bfb,
-    0x4ffbcc35,
-    0xb58bcf6a,
-    0xe11f0abc,
-    0xbfc5fe4a,
-    0xa70aec10,
-    0xac39570a,
-    0x3f04442f,
-    0x6188b153,
-    0xe0397a2e,
-    0x5727cb79,
-    0x9ceb418f,
-    0x1cacd68d,
-    0x2ad37c96,
-    0x0175cb9d,
-    0xc69dff09,
-    0xc75b65f0,
-    0xd9db40d8,
-    0xec0e7779,
-    0x4744ead4,
-    0xb11c3274,
-    0xdd24cb9e,
-    0x7e1c54bd,
-    0xf01144f9,
-    0xd2240eb1,
-    0x9675b3fd,
-    0xa3ac3755,
-    0xd47c27af,
-    0x51c85f4d,
-    0x56907596,
-    0xa5bb15e6,
-    0x580304f0,
-    0xca042cf1,
-    0x011a37ea,
-    0x8dbfaadb,
-    0x35ba3e4a,
-    0x3526ffa0,
-    0xc37b4d09,
-    0xbc306ed9,
-    0x98a52666,
-    0x5648f725,
-    0xff5e569d,
-    0x0ced63d0,
-    0x7c63b2cf,
-    0x700b45e1,
-    0xd5ea50f1,
-    0x85a92872,
-    0xaf1fbda7,
-    0xd4234870,
-    0xa7870bf3,
-    0x2d3b4d79,
-    0x42e04198,
-    0x0cd0ede7,
-    0x26470db8,
-    0xf881814c,
-    0x474d6ad7,
-    0x7c0c5e5c,
-    0xd1231959,
-    0x381b7298,
-    0xf5d2f4db,
-    0xab838653,
-    0x6e2f1e23,
-    0x83719c9e,
-    0xbd91e046,
-    0x9a56456e,
-    0xdc39200c,
-    0x20c8c571,
-    0x962bda1c,
-    0xe1e696ff,
-    0xb141ab08,
-    0x7cca89b9,
-    0x1a69e783,
-    0x02cc4843,
-    0xa2f7c579,
-    0x429ef47d,
-    0x427b169c,
-    0x5ac9f049,
-    0xdd8f0f00,
-    0x5c8165bf,
+    0x30fb40d4, 0x9fa0ff0b, 0x6beccd2f, 0x3f258c7a, 0x1e213f2f, 0x9c004dd3, 0x6003e540, 0xcf9fc949,
+    0xbfd4af27, 0x88bbbdb5, 0xe2034090, 0x98d09675, 0x6e63a0e0, 0x15c361d2, 0xc2e7661d, 0x22d4ff8e,
+    0x28683b6f, 0xc07fd059, 0xff2379c8, 0x775f50e2, 0x43c340d3, 0xdf2f8656, 0x887ca41a, 0xa2d2bd2d,
+    0xa1c9e0d6, 0x346c4819, 0x61b76d87, 0x22540f2f, 0x2abe32e1, 0xaa54166b, 0x22568e3a, 0xa2d341d0,
+    0x66db40c8, 0xa784392f, 0x004dff2f, 0x2db9d2de, 0x97943fac, 0x4a97c1d8, 0x527644b7, 0xb5f437a7,
+    0xb82cbaef, 0xd751d159, 0x6ff7f0ed, 0x5a097a1f, 0x827b68d0, 0x90ecf52e, 0x22b0c054, 0xbc8e5935,
+    0x4b6d2f7f, 0x50bb64a2, 0xd2664910, 0xbee5812d, 0xb7332290, 0xe93b159f, 0xb48ee411, 0x4bff345d,
+    0xfd45c240, 0xad31973f, 0xc4f6d02e, 0x55fc8165, 0xd5b1caad, 0xa1ac2dae, 0xa2d4b76d, 0xc19b0c50,
+    0x882240f2, 0x0c6e4f38, 0xa4e4bfd7, 0x4f5ba272, 0x564c1d2f, 0xc59c5319, 0xb949e354, 0xb04669fe,
+    0xb1b6ab8a, 0xc71358dd, 0x6385c545, 0x110f935d, 0x57538ad5, 0x6a390493, 0xe63d37e0, 0x2a54f6b3,
+    0x3a787d5f, 0x6276a0b5, 0x19a6fcdf, 0x7a42206a, 0x29f9d4d5, 0xf61b1891, 0xbb72275e, 0xaa508167,
+    0x38901091, 0xc6b505eb, 0x84c7cb8c, 0x2ad75a0f, 0x874a1427, 0xa2d1936b, 0x2ad286af, 0xaa56d291,
+    0xd7894360, 0x425c750d, 0x93b39e26, 0x187184c9, 0x6c00b32d, 0x73e2bb14, 0xa0bebc3c, 0x54623779,
+    0x64459eab, 0x3f328b82, 0x7718cf82, 0x59a2cea6, 0x04ee002e, 0x89fe78e6, 0x3fab0950, 0x325ff6c2,
+    0x81383f05, 0x6963c5c8, 0x76cb5ad6, 0xd49974c9, 0xca180dcf, 0x380782d5, 0xc7fa5cf6, 0x8ac31511,
+    0x35e79e13, 0x47da91d0, 0xf40f9086, 0xa7e2419e, 0x31366241, 0x051ef495, 0xaa573b04, 0x4a805d8d,
+    0x548300d0, 0x00322a3c, 0xbf64cddf, 0xba57a68e, 0x75c6372b, 0x50afd341, 0xa7c13275, 0x915a0bf5,
+    0x6b54bfab, 0x2b0b1426, 0xab4cc9d7, 0x449ccd82, 0xf7fbf265, 0xab85c5f3, 0x1b55db94, 0xaad4e324,
+    0xcfa4bd3f, 0x2deaa3e2, 0x9e204d02, 0xc8bd25ac, 0xeadf55b3, 0xd5bd9e98, 0xe31231b2, 0x2ad5ad6c,
+    0x954329de, 0xadbe4528, 0xd8710f69, 0xaa51c90f, 0xaa786bf6, 0x22513f1e, 0xaa51a79b, 0x2ad344cc,
+    0x7b5a41f0, 0xd37cfbad, 0x1b069505, 0x41ece491, 0xb4c332e6, 0x032268d4, 0xc9600acc, 0xce387e6d,
+    0xbf6bb16c, 0x6a70fb78, 0x0d03d9c9, 0xd4df39de, 0xe01063da, 0x4736f464, 0x5ad328d8, 0xb347cc96,
+    0x75bb0fc3, 0x98511bfb, 0x4ffbcc35, 0xb58bcf6a, 0xe11f0abc, 0xbfc5fe4a, 0xa70aec10, 0xac39570a,
+    0x3f04442f, 0x6188b153, 0xe0397a2e, 0x5727cb79, 0x9ceb418f, 0x1cacd68d, 0x2ad37c96, 0x0175cb9d,
+    0xc69dff09, 0xc75b65f0, 0xd9db40d8, 0xec0e7779, 0x4744ead4, 0xb11c3274, 0xdd24cb9e, 0x7e1c54bd,
+    0xf01144f9, 0xd2240eb1, 0x9675b3fd, 0xa3ac3755, 0xd47c27af, 0x51c85f4d, 0x56907596, 0xa5bb15e6,
+    0x580304f0, 0xca042cf1, 0x011a37ea, 0x8dbfaadb, 0x35ba3e4a, 0x3526ffa0, 0xc37b4d09, 0xbc306ed9,
+    0x98a52666, 0x5648f725, 0xff5e569d, 0x0ced63d0, 0x7c63b2cf, 0x700b45e1, 0xd5ea50f1, 0x85a92872,
+    0xaf1fbda7, 0xd4234870, 0xa7870bf3, 0x2d3b4d79, 0x42e04198, 0x0cd0ede7, 0x26470db8, 0xf881814c,
+    0x474d6ad7, 0x7c0c5e5c, 0xd1231959, 0x381b7298, 0xf5d2f4db, 0xab838653, 0x6e2f1e23, 0x83719c9e,
+    0xbd91e046, 0x9a56456e, 0xdc39200c, 0x20c8c571, 0x962bda1c, 0xe1e696ff, 0xb141ab08, 0x7cca89b9,
+    0x1a69e783, 0x02cc4843, 0xa2f7c579, 0x429ef47d, 0x427b169c, 0x5ac9f049, 0xdd8f0f00, 0x5c8165bf
 };
 
 const CAST_LONG CAST_S_table1[256] = {
-    0x1f201094,
-    0xef0ba75b,
-    0x69e3cf7e,
-    0x393f4380,
-    0xfe61cf7a,
-    0xeec5207a,
-    0x55889c94,
-    0x72fc0651,
-    0xada7ef79,
-    0x4e1d7235,
-    0xd55a63ce,
-    0xde0436ba,
-    0x99c430ef,
-    0x5f0c0794,
-    0x18dcdb7d,
-    0xa1d6eff3,
-    0xa0b52f7b,
-    0x59e83605,
-    0xee15b094,
-    0xe9ffd909,
-    0xdc440086,
-    0xef944459,
-    0xba83ccb3,
-    0xe0c3cdfb,
-    0xd1da4181,
-    0x3b092ab1,
-    0xf997f1c1,
-    0xa5e6cf7b,
-    0x01420ddb,
-    0xe4e7ef5b,
-    0x25a1ff41,
-    0xe180f806,
-    0x1fc41080,
-    0x179bee7a,
-    0xd37ac6a9,
-    0xfe5830a4,
-    0x98de8b7f,
-    0x77e83f4e,
-    0x79929269,
-    0x24fa9f7b,
-    0xe113c85b,
-    0xacc40083,
-    0xd7503525,
-    0xf7ea615f,
-    0x62143154,
-    0x0d554b63,
-    0x5d681121,
-    0xc866c359,
-    0x3d63cf73,
-    0xcee234c0,
-    0xd4d87e87,
-    0x5c672b21,
-    0x071f6181,
-    0x39f7627f,
-    0x361e3084,
-    0xe4eb573b,
-    0x602f64a4,
-    0xd63acd9c,
-    0x1bbc4635,
-    0x9e81032d,
-    0x2701f50c,
-    0x99847ab4,
-    0xa0e3df79,
-    0xba6cf38c,
-    0x10843094,
-    0x2537a95e,
-    0xf46f6ffe,
-    0xa1ff3b1f,
-    0x208cfb6a,
-    0x8f458c74,
-    0xd9e0a227,
-    0x4ec73a34,
-    0xfc884f69,
-    0x3e4de8df,
-    0xef0e0088,
-    0x3559648d,
-    0x8a45388c,
-    0x1d804366,
-    0x721d9bfd,
-    0xa58684bb,
-    0xe8256333,
-    0x844e8212,
-    0x128d8098,
-    0xfed33fb4,
-    0xce280ae1,
-    0x27e19ba5,
-    0xd5a6c252,
-    0xe49754bd,
-    0xc5d655dd,
-    0xeb667064,
-    0x77840b4d,
-    0xa1b6a801,
-    0x84db26a9,
-    0xe0b56714,
-    0x21f043b7,
-    0xe5d05860,
-    0x54f03084,
-    0x066ff472,
-    0xa31aa153,
-    0xdadc4755,
-    0xb5625dbf,
-    0x68561be6,
-    0x83ca6b94,
-    0x2d6ed23b,
-    0xeccf01db,
-    0xa6d3d0ba,
-    0xb6803d5c,
-    0xaf77a709,
-    0x33b4a34c,
-    0x397bc8d6,
-    0x5ee22b95,
-    0x5f0e5304,
-    0x81ed6f61,
-    0x20e74364,
-    0xb45e1378,
-    0xde18639b,
-    0x881ca122,
-    0xb96726d1,
-    0x8049a7e8,
-    0x22b7da7b,
-    0x5e552d25,
-    0x5272d237,
-    0x79d2951c,
-    0xc60d894c,
-    0x488cb402,
-    0x1ba4fe5b,
-    0xa4b09f6b,
-    0x1ca815cf,
-    0xa20c3005,
-    0x8871df63,
-    0xb9de2fcb,
-    0x0cc6c9e9,
-    0x0beeff53,
-    0xe3214517,
-    0xb4542835,
-    0x9f63293c,
-    0xee41e729,
-    0x6e1d2d7c,
-    0x50045286,
-    0x1e6685f3,
-    0xf33401c6,
-    0x30a22c95,
-    0x31a70850,
-    0x60930f13,
-    0x73f98417,
-    0xa1269859,
-    0xec645c44,
-    0x52c877a9,
-    0xcdff33a6,
-    0xa02b1741,
-    0x7cbad9a2,
-    0x2180036f,
-    0x50d99c08,
-    0xcb3f4861,
-    0xc26bd765,
-    0x64a3f6ab,
-    0x80342676,
-    0x25a75e7b,
-    0xe4e6d1fc,
-    0x20c710e6,
-    0xcdf0b680,
-    0x17844d3b,
-    0x31eef84d,
-    0x7e0824e4,
-    0x2ccb49eb,
-    0x846a3bae,
-    0x8ff77888,
-    0xee5d60f6,
-    0x7af75673,
-    0x2fdd5cdb,
-    0xa11631c1,
-    0x30f66f43,
-    0xb3faec54,
-    0x157fd7fa,
-    0xef8579cc,
-    0xd152de58,
-    0xdb2ffd5e,
-    0x8f32ce19,
-    0x306af97a,
-    0x02f03ef8,
-    0x99319ad5,
-    0xc242fa0f,
-    0xa7e3ebb0,
-    0xc68e4906,
-    0xb8da230c,
-    0x80823028,
-    0xdcdef3c8,
-    0xd35fb171,
-    0x088a1bc8,
-    0xbec0c560,
-    0x61a3c9e8,
-    0xbca8f54d,
-    0xc72feffa,
-    0x22822e99,
-    0x82c570b4,
-    0xd8d94e89,
-    0x8b1c34bc,
-    0x301e16e6,
-    0x273be979,
-    0xb0ffeaa6,
-    0x61d9b8c6,
-    0x00b24869,
-    0xb7ffce3f,
-    0x08dc283b,
-    0x43daf65a,
-    0xf7e19798,
-    0x7619b72f,
-    0x8f1c9ba4,
-    0xdc8637a0,
-    0x16a7d3b1,
-    0x9fc393b7,
-    0xa7136eeb,
-    0xc6bcc63e,
-    0x1a513742,
-    0xef6828bc,
-    0x520365d6,
-    0x2d6a77ab,
-    0x3527ed4b,
-    0x821fd216,
-    0x095c6e2e,
-    0xdb92f2fb,
-    0x5eea29cb,
-    0x145892f5,
-    0x91584f7f,
-    0x5483697b,
-    0x2667a8cc,
-    0x85196048,
-    0x8c4bacea,
-    0x833860d4,
-    0x0d23e0f9,
-    0x6c387e8a,
-    0x0ae6d249,
-    0xb284600c,
-    0xd835731d,
-    0xdcb1c647,
-    0xac4c56ea,
-    0x3ebd81b3,
-    0x230eabb0,
-    0x6438bc87,
-    0xf0b5b1fa,
-    0x8f5ea2b3,
-    0xfc184642,
-    0x0a036b7a,
-    0x4fb089bd,
-    0x649da589,
-    0xa345415e,
-    0x5c038323,
-    0x3e5d3bb9,
-    0x43d79572,
-    0x7e6dd07c,
-    0x06dfdf1e,
-    0x6c6cc4ef,
-    0x7160a539,
-    0x73bfbe70,
-    0x83877605,
-    0x4523ecf1,
+    0x1f201094, 0xef0ba75b, 0x69e3cf7e, 0x393f4380, 0xfe61cf7a, 0xeec5207a, 0x55889c94, 0x72fc0651,
+    0xada7ef79, 0x4e1d7235, 0xd55a63ce, 0xde0436ba, 0x99c430ef, 0x5f0c0794, 0x18dcdb7d, 0xa1d6eff3,
+    0xa0b52f7b, 0x59e83605, 0xee15b094, 0xe9ffd909, 0xdc440086, 0xef944459, 0xba83ccb3, 0xe0c3cdfb,
+    0xd1da4181, 0x3b092ab1, 0xf997f1c1, 0xa5e6cf7b, 0x01420ddb, 0xe4e7ef5b, 0x25a1ff41, 0xe180f806,
+    0x1fc41080, 0x179bee7a, 0xd37ac6a9, 0xfe5830a4, 0x98de8b7f, 0x77e83f4e, 0x79929269, 0x24fa9f7b,
+    0xe113c85b, 0xacc40083, 0xd7503525, 0xf7ea615f, 0x62143154, 0x0d554b63, 0x5d681121, 0xc866c359,
+    0x3d63cf73, 0xcee234c0, 0xd4d87e87, 0x5c672b21, 0x071f6181, 0x39f7627f, 0x361e3084, 0xe4eb573b,
+    0x602f64a4, 0xd63acd9c, 0x1bbc4635, 0x9e81032d, 0x2701f50c, 0x99847ab4, 0xa0e3df79, 0xba6cf38c,
+    0x10843094, 0x2537a95e, 0xf46f6ffe, 0xa1ff3b1f, 0x208cfb6a, 0x8f458c74, 0xd9e0a227, 0x4ec73a34,
+    0xfc884f69, 0x3e4de8df, 0xef0e0088, 0x3559648d, 0x8a45388c, 0x1d804366, 0x721d9bfd, 0xa58684bb,
+    0xe8256333, 0x844e8212, 0x128d8098, 0xfed33fb4, 0xce280ae1, 0x27e19ba5, 0xd5a6c252, 0xe49754bd,
+    0xc5d655dd, 0xeb667064, 0x77840b4d, 0xa1b6a801, 0x84db26a9, 0xe0b56714, 0x21f043b7, 0xe5d05860,
+    0x54f03084, 0x066ff472, 0xa31aa153, 0xdadc4755, 0xb5625dbf, 0x68561be6, 0x83ca6b94, 0x2d6ed23b,
+    0xeccf01db, 0xa6d3d0ba, 0xb6803d5c, 0xaf77a709, 0x33b4a34c, 0x397bc8d6, 0x5ee22b95, 0x5f0e5304,
+    0x81ed6f61, 0x20e74364, 0xb45e1378, 0xde18639b, 0x881ca122, 0xb96726d1, 0x8049a7e8, 0x22b7da7b,
+    0x5e552d25, 0x5272d237, 0x79d2951c, 0xc60d894c, 0x488cb402, 0x1ba4fe5b, 0xa4b09f6b, 0x1ca815cf,
+    0xa20c3005, 0x8871df63, 0xb9de2fcb, 0x0cc6c9e9, 0x0beeff53, 0xe3214517, 0xb4542835, 0x9f63293c,
+    0xee41e729, 0x6e1d2d7c, 0x50045286, 0x1e6685f3, 0xf33401c6, 0x30a22c95, 0x31a70850, 0x60930f13,
+    0x73f98417, 0xa1269859, 0xec645c44, 0x52c877a9, 0xcdff33a6, 0xa02b1741, 0x7cbad9a2, 0x2180036f,
+    0x50d99c08, 0xcb3f4861, 0xc26bd765, 0x64a3f6ab, 0x80342676, 0x25a75e7b, 0xe4e6d1fc, 0x20c710e6,
+    0xcdf0b680, 0x17844d3b, 0x31eef84d, 0x7e0824e4, 0x2ccb49eb, 0x846a3bae, 0x8ff77888, 0xee5d60f6,
+    0x7af75673, 0x2fdd5cdb, 0xa11631c1, 0x30f66f43, 0xb3faec54, 0x157fd7fa, 0xef8579cc, 0xd152de58,
+    0xdb2ffd5e, 0x8f32ce19, 0x306af97a, 0x02f03ef8, 0x99319ad5, 0xc242fa0f, 0xa7e3ebb0, 0xc68e4906,
+    0xb8da230c, 0x80823028, 0xdcdef3c8, 0xd35fb171, 0x088a1bc8, 0xbec0c560, 0x61a3c9e8, 0xbca8f54d,
+    0xc72feffa, 0x22822e99, 0x82c570b4, 0xd8d94e89, 0x8b1c34bc, 0x301e16e6, 0x273be979, 0xb0ffeaa6,
+    0x61d9b8c6, 0x00b24869, 0xb7ffce3f, 0x08dc283b, 0x43daf65a, 0xf7e19798, 0x7619b72f, 0x8f1c9ba4,
+    0xdc8637a0, 0x16a7d3b1, 0x9fc393b7, 0xa7136eeb, 0xc6bcc63e, 0x1a513742, 0xef6828bc, 0x520365d6,
+    0x2d6a77ab, 0x3527ed4b, 0x821fd216, 0x095c6e2e, 0xdb92f2fb, 0x5eea29cb, 0x145892f5, 0x91584f7f,
+    0x5483697b, 0x2667a8cc, 0x85196048, 0x8c4bacea, 0x833860d4, 0x0d23e0f9, 0x6c387e8a, 0x0ae6d249,
+    0xb284600c, 0xd835731d, 0xdcb1c647, 0xac4c56ea, 0x3ebd81b3, 0x230eabb0, 0x6438bc87, 0xf0b5b1fa,
+    0x8f5ea2b3, 0xfc184642, 0x0a036b7a, 0x4fb089bd, 0x649da589, 0xa345415e, 0x5c038323, 0x3e5d3bb9,
+    0x43d79572, 0x7e6dd07c, 0x06dfdf1e, 0x6c6cc4ef, 0x7160a539, 0x73bfbe70, 0x83877605, 0x4523ecf1
 };
 
 const CAST_LONG CAST_S_table2[256] = {
-    0x8defc240,
-    0x25fa5d9f,
-    0xeb903dbf,
-    0xe810c907,
-    0x47607fff,
-    0x369fe44b,
-    0x8c1fc644,
-    0xaececa90,
-    0xbeb1f9bf,
-    0xeefbcaea,
-    0xe8cf1950,
-    0x51df07ae,
-    0x920e8806,
-    0xf0ad0548,
-    0xe13c8d83,
-    0x927010d5,
-    0x11107d9f,
-    0x07647db9,
-    0xb2e3e4d4,
-    0x3d4f285e,
-    0xb9afa820,
-    0xfade82e0,
-    0xa067268b,
-    0x8272792e,
-    0x553fb2c0,
-    0x489ae22b,
-    0xd4ef9794,
-    0x125e3fbc,
-    0x21fffcee,
-    0x825b1bfd,
-    0x9255c5ed,
-    0x1257a240,
-    0x4e1a8302,
-    0xbae07fff,
-    0x528246e7,
-    0x8e57140e,
-    0x3373f7bf,
-    0x8c9f8188,
-    0xa6fc4ee8,
-    0xc982b5a5,
-    0xa8c01db7,
-    0x579fc264,
-    0x67094f31,
-    0xf2bd3f5f,
-    0x40fff7c1,
-    0x1fb78dfc,
-    0x8e6bd2c1,
-    0x437be59b,
-    0x99b03dbf,
-    0xb5dbc64b,
-    0x638dc0e6,
-    0x55819d99,
-    0xa197c81c,
-    0x4a012d6e,
-    0xc5884a28,
-    0xccc36f71,
-    0xb843c213,
-    0x6c0743f1,
-    0x8309893c,
-    0x0feddd5f,
-    0x2f7fe850,
-    0xd7c07f7e,
-    0x02507fbf,
-    0x5afb9a04,
-    0xa747d2d0,
-    0x1651192e,
-    0xaf70bf3e,
-    0x58c31380,
-    0x5f98302e,
-    0x727cc3c4,
-    0x0a0fb402,
-    0x0f7fef82,
-    0x8c96fdad,
-    0x5d2c2aae,
-    0x8ee99a49,
-    0x50da88b8,
-    0x8427f4a0,
-    0x1eac5790,
-    0x796fb449,
-    0x8252dc15,
-    0xefbd7d9b,
-    0xa672597d,
-    0xada840d8,
-    0x45f54504,
-    0xfa5d7403,
-    0xe83ec305,
-    0x4f91751a,
-    0x925669c2,
-    0x23efe941,
-    0xa903f12e,
-    0x60270df2,
-    0x0276e4b6,
-    0x94fd6574,
-    0x927985b2,
-    0x8276dbcb,
-    0x02778176,
-    0xf8af918d,
-    0x4e48f79e,
-    0x8f616ddf,
-    0xe29d840e,
-    0x842f7d83,
-    0x340ce5c8,
-    0x96bbb682,
-    0x93b4b148,
-    0xef303cab,
-    0x984faf28,
-    0x779faf9b,
-    0x92dc560d,
-    0x224d1e20,
-    0x8437aa88,
-    0x7d29dc96,
-    0x2756d3dc,
-    0x8b907cee,
-    0xb51fd240,
-    0xe7c07ce3,
-    0xe566b4a1,
-    0xc3e9615e,
-    0x3cf8209d,
-    0x6094d1e3,
-    0xcd9ca341,
-    0x5c76460e,
-    0x00ea983b,
-    0xd4d67881,
-    0xfd47572c,
-    0xf76cedd9,
-    0xbda8229c,
-    0x127dadaa,
-    0x438a074e,
-    0x1f97c090,
-    0x081bdb8a,
-    0x93a07ebe,
-    0xb938ca15,
-    0x97b03cff,
-    0x3dc2c0f8,
-    0x8d1ab2ec,
-    0x64380e51,
-    0x68cc7bfb,
-    0xd90f2788,
-    0x12490181,
-    0x5de5ffd4,
-    0xdd7ef86a,
-    0x76a2e214,
-    0xb9a40368,
-    0x925d958f,
-    0x4b39fffa,
-    0xba39aee9,
-    0xa4ffd30b,
-    0xfaf7933b,
-    0x6d498623,
-    0x193cbcfa,
-    0x27627545,
-    0x825cf47a,
-    0x61bd8ba0,
-    0xd11e42d1,
-    0xcead04f4,
-    0x127ea392,
-    0x10428db7,
-    0x8272a972,
-    0x9270c4a8,
-    0x127de50b,
-    0x285ba1c8,
-    0x3c62f44f,
-    0x35c0eaa5,
-    0xe805d231,
-    0x428929fb,
-    0xb4fcdf82,
-    0x4fb66a53,
-    0x0e7dc15b,
-    0x1f081fab,
-    0x108618ae,
-    0xfcfd086d,
-    0xf9ff2889,
-    0x694bcc11,
-    0x236a5cae,
-    0x12deca4d,
-    0x2c3f8cc5,
-    0xd2d02dfe,
-    0xf8ef5896,
-    0xe4cf52da,
-    0x95155b67,
-    0x494a488c,
-    0xb9b6a80c,
-    0x5c8f82bc,
-    0x89d36b45,
-    0x3a609437,
-    0xec00c9a9,
-    0x44715253,
-    0x0a874b49,
-    0xd773bc40,
-    0x7c34671c,
-    0x02717ef6,
-    0x4feb5536,
-    0xa2d02fff,
-    0xd2bf60c4,
-    0xd43f03c0,
-    0x50b4ef6d,
-    0x07478cd1,
-    0x006e1888,
-    0xa2e53f55,
-    0xb9e6d4bc,
-    0xa2048016,
-    0x97573833,
-    0xd7207d67,
-    0xde0f8f3d,
-    0x72f87b33,
-    0xabcc4f33,
-    0x7688c55d,
-    0x7b00a6b0,
-    0x947b0001,
-    0x570075d2,
-    0xf9bb88f8,
-    0x8942019e,
-    0x4264a5ff,
-    0x856302e0,
-    0x72dbd92b,
-    0xee971b69,
-    0x6ea22fde,
-    0x5f08ae2b,
-    0xaf7a616d,
-    0xe5c98767,
-    0xcf1febd2,
-    0x61efc8c2,
-    0xf1ac2571,
-    0xcc8239c2,
-    0x67214cb8,
-    0xb1e583d1,
-    0xb7dc3e62,
-    0x7f10bdce,
-    0xf90a5c38,
-    0x0ff0443d,
-    0x606e6dc6,
-    0x60543a49,
-    0x5727c148,
-    0x2be98a1d,
-    0x8ab41738,
-    0x20e1be24,
-    0xaf96da0f,
-    0x68458425,
-    0x99833be5,
-    0x600d457d,
-    0x282f9350,
-    0x8334b362,
-    0xd91d1120,
-    0x2b6d8da0,
-    0x642b1e31,
-    0x9c305a00,
-    0x52bce688,
-    0x1b03588a,
-    0xf7baefd5,
-    0x4142ed9c,
-    0xa4315c11,
-    0x83323ec5,
-    0xdfef4636,
-    0xa133c501,
-    0xe9d3531c,
-    0xee353783,
+    0x8defc240, 0x25fa5d9f, 0xeb903dbf, 0xe810c907, 0x47607fff, 0x369fe44b, 0x8c1fc644, 0xaececa90,
+    0xbeb1f9bf, 0xeefbcaea, 0xe8cf1950, 0x51df07ae, 0x920e8806, 0xf0ad0548, 0xe13c8d83, 0x927010d5,
+    0x11107d9f, 0x07647db9, 0xb2e3e4d4, 0x3d4f285e, 0xb9afa820, 0xfade82e0, 0xa067268b, 0x8272792e,
+    0x553fb2c0, 0x489ae22b, 0xd4ef9794, 0x125e3fbc, 0x21fffcee, 0x825b1bfd, 0x9255c5ed, 0x1257a240,
+    0x4e1a8302, 0xbae07fff, 0x528246e7, 0x8e57140e, 0x3373f7bf, 0x8c9f8188, 0xa6fc4ee8, 0xc982b5a5,
+    0xa8c01db7, 0x579fc264, 0x67094f31, 0xf2bd3f5f, 0x40fff7c1, 0x1fb78dfc, 0x8e6bd2c1, 0x437be59b,
+    0x99b03dbf, 0xb5dbc64b, 0x638dc0e6, 0x55819d99, 0xa197c81c, 0x4a012d6e, 0xc5884a28, 0xccc36f71,
+    0xb843c213, 0x6c0743f1, 0x8309893c, 0x0feddd5f, 0x2f7fe850, 0xd7c07f7e, 0x02507fbf, 0x5afb9a04,
+    0xa747d2d0, 0x1651192e, 0xaf70bf3e, 0x58c31380, 0x5f98302e, 0x727cc3c4, 0x0a0fb402, 0x0f7fef82,
+    0x8c96fdad, 0x5d2c2aae, 0x8ee99a49, 0x50da88b8, 0x8427f4a0, 0x1eac5790, 0x796fb449, 0x8252dc15,
+    0xefbd7d9b, 0xa672597d, 0xada840d8, 0x45f54504, 0xfa5d7403, 0xe83ec305, 0x4f91751a, 0x925669c2,
+    0x23efe941, 0xa903f12e, 0x60270df2, 0x0276e4b6, 0x94fd6574, 0x927985b2, 0x8276dbcb, 0x02778176,
+    0xf8af918d, 0x4e48f79e, 0x8f616ddf, 0xe29d840e, 0x842f7d83, 0x340ce5c8, 0x96bbb682, 0x93b4b148,
+    0xef303cab, 0x984faf28, 0x779faf9b, 0x92dc560d, 0x224d1e20, 0x8437aa88, 0x7d29dc96, 0x2756d3dc,
+    0x8b907cee, 0xb51fd240, 0xe7c07ce3, 0xe566b4a1, 0xc3e9615e, 0x3cf8209d, 0x6094d1e3, 0xcd9ca341,
+    0x5c76460e, 0x00ea983b, 0xd4d67881, 0xfd47572c, 0xf76cedd9, 0xbda8229c, 0x127dadaa, 0x438a074e,
+    0x1f97c090, 0x081bdb8a, 0x93a07ebe, 0xb938ca15, 0x97b03cff, 0x3dc2c0f8, 0x8d1ab2ec, 0x64380e51,
+    0x68cc7bfb, 0xd90f2788, 0x12490181, 0x5de5ffd4, 0xdd7ef86a, 0x76a2e214, 0xb9a40368, 0x925d958f,
+    0x4b39fffa, 0xba39aee9, 0xa4ffd30b, 0xfaf7933b, 0x6d498623, 0x193cbcfa, 0x27627545, 0x825cf47a,
+    0x61bd8ba0, 0xd11e42d1, 0xcead04f4, 0x127ea392, 0x10428db7, 0x8272a972, 0x9270c4a8, 0x127de50b,
+    0x285ba1c8, 0x3c62f44f, 0x35c0eaa5, 0xe805d231, 0x428929fb, 0xb4fcdf82, 0x4fb66a53, 0x0e7dc15b,
+    0x1f081fab, 0x108618ae, 0xfcfd086d, 0xf9ff2889, 0x694bcc11, 0x236a5cae, 0x12deca4d, 0x2c3f8cc5,
+    0xd2d02dfe, 0xf8ef5896, 0xe4cf52da, 0x95155b67, 0x494a488c, 0xb9b6a80c, 0x5c8f82bc, 0x89d36b45,
+    0x3a609437, 0xec00c9a9, 0x44715253, 0x0a874b49, 0xd773bc40, 0x7c34671c, 0x02717ef6, 0x4feb5536,
+    0xa2d02fff, 0xd2bf60c4, 0xd43f03c0, 0x50b4ef6d, 0x07478cd1, 0x006e1888, 0xa2e53f55, 0xb9e6d4bc,
+    0xa2048016, 0x97573833, 0xd7207d67, 0xde0f8f3d, 0x72f87b33, 0xabcc4f33, 0x7688c55d, 0x7b00a6b0,
+    0x947b0001, 0x570075d2, 0xf9bb88f8, 0x8942019e, 0x4264a5ff, 0x856302e0, 0x72dbd92b, 0xee971b69,
+    0x6ea22fde, 0x5f08ae2b, 0xaf7a616d, 0xe5c98767, 0xcf1febd2, 0x61efc8c2, 0xf1ac2571, 0xcc8239c2,
+    0x67214cb8, 0xb1e583d1, 0xb7dc3e62, 0x7f10bdce, 0xf90a5c38, 0x0ff0443d, 0x606e6dc6, 0x60543a49,
+    0x5727c148, 0x2be98a1d, 0x8ab41738, 0x20e1be24, 0xaf96da0f, 0x68458425, 0x99833be5, 0x600d457d,
+    0x282f9350, 0x8334b362, 0xd91d1120, 0x2b6d8da0, 0x642b1e31, 0x9c305a00, 0x52bce688, 0x1b03588a,
+    0xf7baefd5, 0x4142ed9c, 0xa4315c11, 0x83323ec5, 0xdfef4636, 0xa133c501, 0xe9d3531c, 0xee353783
 };
 
 const CAST_LONG CAST_S_table3[256] = {
-    0x9db30420,
-    0x1fb6e9de,
-    0xa7be7bef,
-    0xd273a298,
-    0x4a4f7bdb,
-    0x64ad8c57,
-    0x85510443,
-    0xfa020ed1,
-    0x7e287aff,
-    0xe60fb663,
-    0x095f35a1,
-    0x79ebf120,
-    0xfd059d43,
-    0x6497b7b1,
-    0xf3641f63,
-    0x241e4adf,
-    0x28147f5f,
-    0x4fa2b8cd,
-    0xc9430040,
-    0x0cc32220,
-    0xfdd30b30,
-    0xc0a5374f,
-    0x1d2d00d9,
-    0x24147b15,
-    0xee4d111a,
-    0x0fca5167,
-    0x71ff904c,
-    0x2d195ffe,
-    0x1a05645f,
-    0x0c13fefe,
-    0x081b08ca,
-    0x05170121,
-    0x80530100,
-    0xe83e5efe,
-    0xac9af4f8,
-    0x7fe72701,
-    0xd2b8ee5f,
-    0x06df4261,
-    0xbb9e9b8a,
-    0x7293ea25,
-    0xce84ffdf,
-    0xf5718801,
-    0x3dd64b04,
-    0xa26f263b,
-    0x7ed48400,
-    0x547eebe6,
-    0x446d4ca0,
-    0x6cf3d6f5,
-    0x2649abdf,
-    0xaea0c7f5,
-    0x36338cc1,
-    0x503f7e93,
-    0xd3772061,
-    0x11b638e1,
-    0x72500e03,
-    0xf80eb2bb,
-    0xabe0502e,
-    0xec8d77de,
-    0x57971e81,
-    0xe14f6746,
-    0xc9335400,
-    0x6920318f,
-    0x081dbb99,
-    0xffc304a5,
-    0x4d351805,
-    0x7f3d5ce3,
-    0xa6c866c6,
-    0x5d5bcca9,
-    0xdaec6fea,
-    0x9f926f91,
-    0x9f46222f,
-    0x3991467d,
-    0xa5bf6d8e,
-    0x1143c44f,
-    0x43958302,
-    0xd0214eeb,
-    0x022083b8,
-    0x3fb6180c,
-    0x18f8931e,
-    0x281658e6,
-    0x26486e3e,
-    0x8bd78a70,
-    0x7477e4c1,
-    0xb506e07c,
-    0xf32d0a25,
-    0x79098b02,
-    0xe4eabb81,
-    0x28123b23,
-    0x69dead38,
-    0x1574ca16,
-    0xdf871b62,
-    0x211c40b7,
-    0xa51a9ef9,
-    0x0014377b,
-    0x041e8ac8,
-    0x09114003,
-    0xbd59e4d2,
-    0xe3d156d5,
-    0x4fe876d5,
-    0x2f91a340,
-    0x557be8de,
-    0x00eae4a7,
-    0x0ce5c2ec,
-    0x4db4bba6,
-    0xe756bdff,
-    0xdd3369ac,
-    0xec17b035,
-    0x06572327,
-    0x99afc8b0,
-    0x56c8c391,
-    0x6b65811c,
-    0x5e146119,
-    0x6e85cb75,
-    0xbe07c002,
-    0xc2325577,
-    0x893ff4ec,
-    0x5bbfc92d,
-    0xd0ec3b25,
-    0xb7801ab7,
-    0x8d6d3b24,
-    0x20c763ef,
-    0xc366a5fc,
-    0x9c382880,
-    0x0ace3205,
-    0xaac9548a,
-    0xeca1d7c7,
-    0x041afa32,
-    0x1d16625a,
-    0x6701902c,
-    0x9b757a54,
-    0x31d477f7,
-    0x9126b031,
-    0x36cc6fdb,
-    0xc70b8b46,
-    0xd9e66a48,
-    0x56e55a79,
-    0x026a4ceb,
-    0x52437eff,
-    0x2f8f76b4,
-    0x0df980a5,
-    0x8674cde3,
-    0xedda04eb,
-    0x17a9be04,
-    0x2c18f4df,
-    0xb7747f9d,
-    0xab2af7b4,
-    0xefc34d20,
-    0x2e096b7c,
-    0x1741a254,
-    0xe5b6a035,
-    0x213d42f6,
-    0x2c1c7c26,
-    0x61c2f50f,
-    0x6552daf9,
-    0xd2c231f8,
-    0x25130f69,
-    0xd8167fa2,
-    0x0418f2c8,
-    0x001a96a6,
-    0x0d1526ab,
-    0x63315c21,
-    0x5e0a72ec,
-    0x49bafefd,
-    0x187908d9,
-    0x8d0dbd86,
-    0x311170a7,
-    0x3e9b640c,
-    0xcc3e10d7,
-    0xd5cad3b6,
-    0x0caec388,
-    0xf73001e1,
-    0x6c728aff,
-    0x71eae2a1,
-    0x1f9af36e,
-    0xcfcbd12f,
-    0xc1de8417,
-    0xac07be6b,
-    0xcb44a1d8,
-    0x8b9b0f56,
-    0x013988c3,
-    0xb1c52fca,
-    0xb4be31cd,
-    0xd8782806,
-    0x12a3a4e2,
-    0x6f7de532,
-    0x58fd7eb6,
-    0xd01ee900,
-    0x24adffc2,
-    0xf4990fc5,
-    0x9711aac5,
-    0x001d7b95,
-    0x82e5e7d2,
-    0x109873f6,
-    0x00613096,
-    0xc32d9521,
-    0xada121ff,
-    0x29908415,
-    0x7fbb977f,
-    0xaf9eb3db,
-    0x29c9ed2a,
-    0x5ce2a465,
-    0xa730f32c,
-    0xd0aa3fe8,
-    0x8a5cc091,
-    0xd49e2ce7,
-    0x0ce454a9,
-    0xd60acd86,
-    0x015f1919,
-    0x77079103,
-    0xdea03af6,
-    0x78a8565e,
-    0xdee356df,
-    0x21f05cbe,
-    0x8b75e387,
-    0xb3c50651,
-    0xb8a5c3ef,
-    0xd8eeb6d2,
-    0xe523be77,
-    0xc2154529,
-    0x2f69efdf,
-    0xafe67afb,
-    0xf470c4b2,
-    0xf3e0eb5b,
-    0xd6cc9876,
-    0x39e4460c,
-    0x1fda8538,
-    0x1987832f,
-    0xca007367,
-    0xa99144f8,
-    0x296b299e,
-    0x492fc295,
-    0x9266beab,
-    0xb5676e69,
-    0x9bd3ddda,
-    0xdf7e052f,
-    0xdb25701c,
-    0x1b5e51ee,
-    0xf65324e6,
-    0x6afce36c,
-    0x0316cc04,
-    0x8644213e,
-    0xb7dc59d0,
-    0x7965291f,
-    0xccd6fd43,
-    0x41823979,
-    0x932bcdf6,
-    0xb657c34d,
-    0x4edfd282,
-    0x7ae5290c,
-    0x3cb9536b,
-    0x851e20fe,
-    0x9833557e,
-    0x13ecf0b0,
-    0xd3ffb372,
-    0x3f85c5c1,
-    0x0aef7ed2,
+    0x9db30420, 0x1fb6e9de, 0xa7be7bef, 0xd273a298, 0x4a4f7bdb, 0x64ad8c57, 0x85510443, 0xfa020ed1,
+    0x7e287aff, 0xe60fb663, 0x095f35a1, 0x79ebf120, 0xfd059d43, 0x6497b7b1, 0xf3641f63, 0x241e4adf,
+    0x28147f5f, 0x4fa2b8cd, 0xc9430040, 0x0cc32220, 0xfdd30b30, 0xc0a5374f, 0x1d2d00d9, 0x24147b15,
+    0xee4d111a, 0x0fca5167, 0x71ff904c, 0x2d195ffe, 0x1a05645f, 0x0c13fefe, 0x081b08ca, 0x05170121,
+    0x80530100, 0xe83e5efe, 0xac9af4f8, 0x7fe72701, 0xd2b8ee5f, 0x06df4261, 0xbb9e9b8a, 0x7293ea25,
+    0xce84ffdf, 0xf5718801, 0x3dd64b04, 0xa26f263b, 0x7ed48400, 0x547eebe6, 0x446d4ca0, 0x6cf3d6f5,
+    0x2649abdf, 0xaea0c7f5, 0x36338cc1, 0x503f7e93, 0xd3772061, 0x11b638e1, 0x72500e03, 0xf80eb2bb,
+    0xabe0502e, 0xec8d77de, 0x57971e81, 0xe14f6746, 0xc9335400, 0x6920318f, 0x081dbb99, 0xffc304a5,
+    0x4d351805, 0x7f3d5ce3, 0xa6c866c6, 0x5d5bcca9, 0xdaec6fea, 0x9f926f91, 0x9f46222f, 0x3991467d,
+    0xa5bf6d8e, 0x1143c44f, 0x43958302, 0xd0214eeb, 0x022083b8, 0x3fb6180c, 0x18f8931e, 0x281658e6,
+    0x26486e3e, 0x8bd78a70, 0x7477e4c1, 0xb506e07c, 0xf32d0a25, 0x79098b02, 0xe4eabb81, 0x28123b23,
+    0x69dead38, 0x1574ca16, 0xdf871b62, 0x211c40b7, 0xa51a9ef9, 0x0014377b, 0x041e8ac8, 0x09114003,
+    0xbd59e4d2, 0xe3d156d5, 0x4fe876d5, 0x2f91a340, 0x557be8de, 0x00eae4a7, 0x0ce5c2ec, 0x4db4bba6,
+    0xe756bdff, 0xdd3369ac, 0xec17b035, 0x06572327, 0x99afc8b0, 0x56c8c391, 0x6b65811c, 0x5e146119,
+    0x6e85cb75, 0xbe07c002, 0xc2325577, 0x893ff4ec, 0x5bbfc92d, 0xd0ec3b25, 0xb7801ab7, 0x8d6d3b24,
+    0x20c763ef, 0xc366a5fc, 0x9c382880, 0x0ace3205, 0xaac9548a, 0xeca1d7c7, 0x041afa32, 0x1d16625a,
+    0x6701902c, 0x9b757a54, 0x31d477f7, 0x9126b031, 0x36cc6fdb, 0xc70b8b46, 0xd9e66a48, 0x56e55a79,
+    0x026a4ceb, 0x52437eff, 0x2f8f76b4, 0x0df980a5, 0x8674cde3, 0xedda04eb, 0x17a9be04, 0x2c18f4df,
+    0xb7747f9d, 0xab2af7b4, 0xefc34d20, 0x2e096b7c, 0x1741a254, 0xe5b6a035, 0x213d42f6, 0x2c1c7c26,
+    0x61c2f50f, 0x6552daf9, 0xd2c231f8, 0x25130f69, 0xd8167fa2, 0x0418f2c8, 0x001a96a6, 0x0d1526ab,
+    0x63315c21, 0x5e0a72ec, 0x49bafefd, 0x187908d9, 0x8d0dbd86, 0x311170a7, 0x3e9b640c, 0xcc3e10d7,
+    0xd5cad3b6, 0x0caec388, 0xf73001e1, 0x6c728aff, 0x71eae2a1, 0x1f9af36e, 0xcfcbd12f, 0xc1de8417,
+    0xac07be6b, 0xcb44a1d8, 0x8b9b0f56, 0x013988c3, 0xb1c52fca, 0xb4be31cd, 0xd8782806, 0x12a3a4e2,
+    0x6f7de532, 0x58fd7eb6, 0xd01ee900, 0x24adffc2, 0xf4990fc5, 0x9711aac5, 0x001d7b95, 0x82e5e7d2,
+    0x109873f6, 0x00613096, 0xc32d9521, 0xada121ff, 0x29908415, 0x7fbb977f, 0xaf9eb3db, 0x29c9ed2a,
+    0x5ce2a465, 0xa730f32c, 0xd0aa3fe8, 0x8a5cc091, 0xd49e2ce7, 0x0ce454a9, 0xd60acd86, 0x015f1919,
+    0x77079103, 0xdea03af6, 0x78a8565e, 0xdee356df, 0x21f05cbe, 0x8b75e387, 0xb3c50651, 0xb8a5c3ef,
+    0xd8eeb6d2, 0xe523be77, 0xc2154529, 0x2f69efdf, 0xafe67afb, 0xf470c4b2, 0xf3e0eb5b, 0xd6cc9876,
+    0x39e4460c, 0x1fda8538, 0x1987832f, 0xca007367, 0xa99144f8, 0x296b299e, 0x492fc295, 0x9266beab,
+    0xb5676e69, 0x9bd3ddda, 0xdf7e052f, 0xdb25701c, 0x1b5e51ee, 0xf65324e6, 0x6afce36c, 0x0316cc04,
+    0x8644213e, 0xb7dc59d0, 0x7965291f, 0xccd6fd43, 0x41823979, 0x932bcdf6, 0xb657c34d, 0x4edfd282,
+    0x7ae5290c, 0x3cb9536b, 0x851e20fe, 0x9833557e, 0x13ecf0b0, 0xd3ffb372, 0x3f85c5c1, 0x0aef7ed2
 };
 
 const CAST_LONG CAST_S_table4[256] = {
-    0x7ec90c04,
-    0x2c6e74b9,
-    0x9b0e66df,
-    0xa6337911,
-    0xb86a7fff,
-    0x1dd358f5,
-    0x44dd9d44,
-    0x1731167f,
-    0x08fbf1fa,
-    0xe7f511cc,
-    0xd2051b00,
-    0x735aba00,
-    0x2ab722d8,
-    0x386381cb,
-    0xacf6243a,
-    0x69befd7a,
-    0xe6a2e77f,
-    0xf0c720cd,
-    0xc4494816,
-    0xccf5c180,
-    0x38851640,
-    0x15b0a848,
-    0xe68b18cb,
-    0x4caadeff,
-    0x5f480a01,
-    0x0412b2aa,
-    0x259814fc,
-    0x41d0efe2,
-    0x4e40b48d,
-    0x248eb6fb,
-    0x8dba1cfe,
-    0x41a99b02,
-    0x1a550a04,
-    0xba8f65cb,
-    0x7251f4e7,
-    0x95a51725,
-    0xc106ecd7,
-    0x97a5980a,
-    0xc539b9aa,
-    0x4d79fe6a,
-    0xf2f3f763,
-    0x68af8040,
-    0xed0c9e56,
-    0x11b4958b,
-    0xe1eb5a88,
-    0x8709e6b0,
-    0xd7e07156,
-    0x4e29fea7,
-    0x6366e52d,
-    0x02d1c000,
-    0xc4ac8e05,
-    0x9377f571,
-    0x0c05372a,
-    0x578535f2,
-    0x2261be02,
-    0xd642a0c9,
-    0xdf13a280,
-    0x74b55bd2,
-    0x682199c0,
-    0xd421e5ec,
-    0x53fb3ce8,
-    0xc8adedb3,
-    0x28a87fc9,
-    0x3d959981,
-    0x5c1ff900,
-    0xfe38d399,
-    0x0c4eff0b,
-    0x062407ea,
-    0xaa2f4fb1,
-    0x4fb96976,
-    0x90c79505,
-    0xb0a8a774,
-    0xef55a1ff,
-    0xe59ca2c2,
-    0xa6b62d27,
-    0xe66a4263,
-    0xdf65001f,
-    0x0ec50966,
-    0xdfdd55bc,
-    0x29de0655,
-    0x911e739a,
-    0x17af8975,
-    0x32c7911c,
-    0x89f89468,
-    0x0d01e980,
-    0x524755f4,
-    0x03b63cc9,
-    0x0cc844b2,
-    0xbcf3f0aa,
-    0x87ac36e9,
-    0xe53a7426,
-    0x01b3d82b,
-    0x1a9e7449,
-    0x64ee2d7e,
-    0xcddbb1da,
-    0x01c94910,
-    0xb868bf80,
-    0x0d26f3fd,
-    0x9342ede7,
-    0x04a5c284,
-    0x636737b6,
-    0x50f5b616,
-    0xf24766e3,
-    0x8eca36c1,
-    0x136e05db,
-    0xfef18391,
-    0xfb887a37,
-    0xd6e7f7d4,
-    0xc7fb7dc9,
-    0x3063fcdf,
-    0xb6f589de,
-    0xec2941da,
-    0x26e46695,
-    0xb7566419,
-    0xf654efc5,
-    0xd08d58b7,
-    0x48925401,
-    0xc1bacb7f,
-    0xe5ff550f,
-    0xb6083049,
-    0x5bb5d0e8,
-    0x87d72e5a,
-    0xab6a6ee1,
-    0x223a66ce,
-    0xc62bf3cd,
-    0x9e0885f9,
-    0x68cb3e47,
-    0x086c010f,
-    0xa21de820,
-    0xd18b69de,
-    0xf3f65777,
-    0xfa02c3f6,
-    0x407edac3,
-    0xcbb3d550,
-    0x1793084d,
-    0xb0d70eba,
-    0x0ab378d5,
-    0xd951fb0c,
-    0xded7da56,
-    0x4124bbe4,
-    0x94ca0b56,
-    0x0f5755d1,
-    0xe0e1e56e,
-    0x6184b5be,
-    0x580a249f,
-    0x94f74bc0,
-    0xe327888e,
-    0x9f7b5561,
-    0xc3dc0280,
-    0x05687715,
-    0x646c6bd7,
-    0x44904db3,
-    0x66b4f0a3,
-    0xc0f1648a,
-    0x697ed5af,
-    0x49e92ff6,
-    0x309e374f,
-    0x2cb6356a,
-    0x85808573,
-    0x4991f840,
-    0x76f0ae02,
-    0x083be84d,
-    0x28421c9a,
-    0x44489406,
-    0x736e4cb8,
-    0xc1092910,
-    0x8bc95fc6,
-    0x7d869cf4,
-    0x134f616f,
-    0x2e77118d,
-    0xb31b2be1,
-    0xaa90b472,
-    0x3ca5d717,
-    0x7d161bba,
-    0x9cad9010,
-    0xaf462ba2,
-    0x9fe459d2,
-    0x45d34559,
-    0xd9f2da13,
-    0xdbc65487,
-    0xf3e4f94e,
-    0x176d486f,
-    0x097c13ea,
-    0x631da5c7,
-    0x445f7382,
-    0x175683f4,
-    0xcdc66a97,
-    0x70be0288,
-    0xb3cdcf72,
-    0x6e5dd2f3,
-    0x20936079,
-    0x459b80a5,
-    0xbe60e2db,
-    0xa9c23101,
-    0xeba5315c,
-    0x224e42f2,
-    0x1c5c1572,
-    0xf6721b2c,
-    0x1ad2fff3,
-    0x8c25404e,
-    0x324ed72f,
-    0x4067b7fd,
-    0x0523138e,
-    0x5ca3bc78,
-    0xdc0fd66e,
-    0x75922283,
-    0x784d6b17,
-    0x58ebb16e,
-    0x44094f85,
-    0x3f481d87,
-    0xfcfeae7b,
-    0x77b5ff76,
-    0x8c2302bf,
-    0xaaf47556,
-    0x5f46b02a,
-    0x2b092801,
-    0x3d38f5f7,
-    0x0ca81f36,
-    0x52af4a8a,
-    0x66d5e7c0,
-    0xdf3b0874,
-    0x95055110,
-    0x1b5ad7a8,
-    0xf61ed5ad,
-    0x6cf6e479,
-    0x20758184,
-    0xd0cefa65,
-    0x88f7be58,
-    0x4a046826,
-    0x0ff6f8f3,
-    0xa09c7f70,
-    0x5346aba0,
-    0x5ce96c28,
-    0xe176eda3,
-    0x6bac307f,
-    0x376829d2,
-    0x85360fa9,
-    0x17e3fe2a,
-    0x24b79767,
-    0xf5a96b20,
-    0xd6cd2595,
-    0x68ff1ebf,
-    0x7555442c,
-    0xf19f06be,
-    0xf9e0659a,
-    0xeeb9491d,
-    0x34010718,
-    0xbb30cab8,
-    0xe822fe15,
-    0x88570983,
-    0x750e6249,
-    0xda627e55,
-    0x5e76ffa8,
-    0xb1534546,
-    0x6d47de08,
-    0xefe9e7d4,
+    0x7ec90c04, 0x2c6e74b9, 0x9b0e66df, 0xa6337911, 0xb86a7fff, 0x1dd358f5, 0x44dd9d44, 0x1731167f,
+    0x08fbf1fa, 0xe7f511cc, 0xd2051b00, 0x735aba00, 0x2ab722d8, 0x386381cb, 0xacf6243a, 0x69befd7a,
+    0xe6a2e77f, 0xf0c720cd, 0xc4494816, 0xccf5c180, 0x38851640, 0x15b0a848, 0xe68b18cb, 0x4caadeff,
+    0x5f480a01, 0x0412b2aa, 0x259814fc, 0x41d0efe2, 0x4e40b48d, 0x248eb6fb, 0x8dba1cfe, 0x41a99b02,
+    0x1a550a04, 0xba8f65cb, 0x7251f4e7, 0x95a51725, 0xc106ecd7, 0x97a5980a, 0xc539b9aa, 0x4d79fe6a,
+    0xf2f3f763, 0x68af8040, 0xed0c9e56, 0x11b4958b, 0xe1eb5a88, 0x8709e6b0, 0xd7e07156, 0x4e29fea7,
+    0x6366e52d, 0x02d1c000, 0xc4ac8e05, 0x9377f571, 0x0c05372a, 0x578535f2, 0x2261be02, 0xd642a0c9,
+    0xdf13a280, 0x74b55bd2, 0x682199c0, 0xd421e5ec, 0x53fb3ce8, 0xc8adedb3, 0x28a87fc9, 0x3d959981,
+    0x5c1ff900, 0xfe38d399, 0x0c4eff0b, 0x062407ea, 0xaa2f4fb1, 0x4fb96976, 0x90c79505, 0xb0a8a774,
+    0xef55a1ff, 0xe59ca2c2, 0xa6b62d27, 0xe66a4263, 0xdf65001f, 0x0ec50966, 0xdfdd55bc, 0x29de0655,
+    0x911e739a, 0x17af8975, 0x32c7911c, 0x89f89468, 0x0d01e980, 0x524755f4, 0x03b63cc9, 0x0cc844b2,
+    0xbcf3f0aa, 0x87ac36e9, 0xe53a7426, 0x01b3d82b, 0x1a9e7449, 0x64ee2d7e, 0xcddbb1da, 0x01c94910,
+    0xb868bf80, 0x0d26f3fd, 0x9342ede7, 0x04a5c284, 0x636737b6, 0x50f5b616, 0xf24766e3, 0x8eca36c1,
+    0x136e05db, 0xfef18391, 0xfb887a37, 0xd6e7f7d4, 0xc7fb7dc9, 0x3063fcdf, 0xb6f589de, 0xec2941da,
+    0x26e46695, 0xb7566419, 0xf654efc5, 0xd08d58b7, 0x48925401, 0xc1bacb7f, 0xe5ff550f, 0xb6083049,
+    0x5bb5d0e8, 0x87d72e5a, 0xab6a6ee1, 0x223a66ce, 0xc62bf3cd, 0x9e0885f9, 0x68cb3e47, 0x086c010f,
+    0xa21de820, 0xd18b69de, 0xf3f65777, 0xfa02c3f6, 0x407edac3, 0xcbb3d550, 0x1793084d, 0xb0d70eba,
+    0x0ab378d5, 0xd951fb0c, 0xded7da56, 0x4124bbe4, 0x94ca0b56, 0x0f5755d1, 0xe0e1e56e, 0x6184b5be,
+    0x580a249f, 0x94f74bc0, 0xe327888e, 0x9f7b5561, 0xc3dc0280, 0x05687715, 0x646c6bd7, 0x44904db3,
+    0x66b4f0a3, 0xc0f1648a, 0x697ed5af, 0x49e92ff6, 0x309e374f, 0x2cb6356a, 0x85808573, 0x4991f840,
+    0x76f0ae02, 0x083be84d, 0x28421c9a, 0x44489406, 0x736e4cb8, 0xc1092910, 0x8bc95fc6, 0x7d869cf4,
+    0x134f616f, 0x2e77118d, 0xb31b2be1, 0xaa90b472, 0x3ca5d717, 0x7d161bba, 0x9cad9010, 0xaf462ba2,
+    0x9fe459d2, 0x45d34559, 0xd9f2da13, 0xdbc65487, 0xf3e4f94e, 0x176d486f, 0x097c13ea, 0x631da5c7,
+    0x445f7382, 0x175683f4, 0xcdc66a97, 0x70be0288, 0xb3cdcf72, 0x6e5dd2f3, 0x20936079, 0x459b80a5,
+    0xbe60e2db, 0xa9c23101, 0xeba5315c, 0x224e42f2, 0x1c5c1572, 0xf6721b2c, 0x1ad2fff3, 0x8c25404e,
+    0x324ed72f, 0x4067b7fd, 0x0523138e, 0x5ca3bc78, 0xdc0fd66e, 0x75922283, 0x784d6b17, 0x58ebb16e,
+    0x44094f85, 0x3f481d87, 0xfcfeae7b, 0x77b5ff76, 0x8c2302bf, 0xaaf47556, 0x5f46b02a, 0x2b092801,
+    0x3d38f5f7, 0x0ca81f36, 0x52af4a8a, 0x66d5e7c0, 0xdf3b0874, 0x95055110, 0x1b5ad7a8, 0xf61ed5ad,
+    0x6cf6e479, 0x20758184, 0xd0cefa65, 0x88f7be58, 0x4a046826, 0x0ff6f8f3, 0xa09c7f70, 0x5346aba0,
+    0x5ce96c28, 0xe176eda3, 0x6bac307f, 0x376829d2, 0x85360fa9, 0x17e3fe2a, 0x24b79767, 0xf5a96b20,
+    0xd6cd2595, 0x68ff1ebf, 0x7555442c, 0xf19f06be, 0xf9e0659a, 0xeeb9491d, 0x34010718, 0xbb30cab8,
+    0xe822fe15, 0x88570983, 0x750e6249, 0xda627e55, 0x5e76ffa8, 0xb1534546, 0x6d47de08, 0xefe9e7d4
 };
 
 const CAST_LONG CAST_S_table5[256] = {
-    0xf6fa8f9d,
-    0x2cac6ce1,
-    0x4ca34867,
-    0xe2337f7c,
-    0x95db08e7,
-    0x016843b4,
-    0xeced5cbc,
-    0x325553ac,
-    0xbf9f0960,
-    0xdfa1e2ed,
-    0x83f0579d,
-    0x63ed86b9,
-    0x1ab6a6b8,
-    0xde5ebe39,
-    0xf38ff732,
-    0x8989b138,
-    0x33f14961,
-    0xc01937bd,
-    0xf506c6da,
-    0xe4625e7e,
-    0xa308ea99,
-    0x4e23e33c,
-    0x79cbd7cc,
-    0x48a14367,
-    0xa3149619,
-    0xfec94bd5,
-    0xa114174a,
-    0xeaa01866,
-    0xa084db2d,
-    0x09a8486f,
-    0xa888614a,
-    0x2900af98,
-    0x01665991,
-    0xe1992863,
-    0xc8f30c60,
-    0x2e78ef3c,
-    0xd0d51932,
-    0xcf0fec14,
-    0xf7ca07d2,
-    0xd0a82072,
-    0xfd41197e,
-    0x9305a6b0,
-    0xe86be3da,
-    0x74bed3cd,
-    0x372da53c,
-    0x4c7f4448,
-    0xdab5d440,
-    0x6dba0ec3,
-    0x083919a7,
-    0x9fbaeed9,
-    0x49dbcfb0,
-    0x4e670c53,
-    0x5c3d9c01,
-    0x64bdb941,
-    0x2c0e636a,
-    0xba7dd9cd,
-    0xea6f7388,
-    0xe70bc762,
-    0x35f29adb,
-    0x5c4cdd8d,
-    0xf0d48d8c,
-    0xb88153e2,
-    0x08a19866,
-    0x1ae2eac8,
-    0x284caf89,
-    0xaa928223,
-    0x9334be53,
-    0x3b3a21bf,
-    0x16434be3,
-    0x9aea3906,
-    0xefe8c36e,
-    0xf890cdd9,
-    0x80226dae,
-    0xc340a4a3,
-    0xdf7e9c09,
-    0xa694a807,
-    0x5b7c5ecc,
-    0x221db3a6,
-    0x9a69a02f,
-    0x68818a54,
-    0xceb2296f,
-    0x53c0843a,
-    0xfe893655,
-    0x25bfe68a,
-    0xb4628abc,
-    0xcf222ebf,
-    0x25ac6f48,
-    0xa9a99387,
-    0x53bddb65,
-    0xe76ffbe7,
-    0xe967fd78,
-    0x0ba93563,
-    0x8e342bc1,
-    0xe8a11be9,
-    0x4980740d,
-    0xc8087dfc,
-    0x8de4bf99,
-    0xa11101a0,
-    0x7fd37975,
-    0xda5a26c0,
-    0xe81f994f,
-    0x9528cd89,
-    0xfd339fed,
-    0xb87834bf,
-    0x5f04456d,
-    0x22258698,
-    0xc9c4c83b,
-    0x2dc156be,
-    0x4f628daa,
-    0x57f55ec5,
-    0xe2220abe,
-    0xd2916ebf,
-    0x4ec75b95,
-    0x24f2c3c0,
-    0x42d15d99,
-    0xcd0d7fa0,
-    0x7b6e27ff,
-    0xa8dc8af0,
-    0x7345c106,
-    0xf41e232f,
-    0x35162386,
-    0xe6ea8926,
-    0x3333b094,
-    0x157ec6f2,
-    0x372b74af,
-    0x692573e4,
-    0xe9a9d848,
-    0xf3160289,
-    0x3a62ef1d,
-    0xa787e238,
-    0xf3a5f676,
-    0x74364853,
-    0x20951063,
-    0x4576698d,
-    0xb6fad407,
-    0x592af950,
-    0x36f73523,
-    0x4cfb6e87,
-    0x7da4cec0,
-    0x6c152daa,
-    0xcb0396a8,
-    0xc50dfe5d,
-    0xfcd707ab,
-    0x0921c42f,
-    0x89dff0bb,
-    0x5fe2be78,
-    0x448f4f33,
-    0x754613c9,
-    0x2b05d08d,
-    0x48b9d585,
-    0xdc049441,
-    0xc8098f9b,
-    0x7dede786,
-    0xc39a3373,
-    0x42410005,
-    0x6a091751,
-    0x0ef3c8a6,
-    0x890072d6,
-    0x28207682,
-    0xa9a9f7be,
-    0xbf32679d,
-    0xd45b5b75,
-    0xb353fd00,
-    0xcbb0e358,
-    0x830f220a,
-    0x1f8fb214,
-    0xd372cf08,
-    0xcc3c4a13,
-    0x8cf63166,
-    0x061c87be,
-    0x88c98f88,
-    0x6062e397,
-    0x47cf8e7a,
-    0xb6c85283,
-    0x3cc2acfb,
-    0x3fc06976,
-    0x4e8f0252,
-    0x64d8314d,
-    0xda3870e3,
-    0x1e665459,
-    0xc10908f0,
-    0x513021a5,
-    0x6c5b68b7,
-    0x822f8aa0,
-    0x3007cd3e,
-    0x74719eef,
-    0xdc872681,
-    0x073340d4,
-    0x7e432fd9,
-    0x0c5ec241,
-    0x8809286c,
-    0xf592d891,
-    0x08a930f6,
-    0x957ef305,
-    0xb7fbffbd,
-    0xc266e96f,
-    0x6fe4ac98,
-    0xb173ecc0,
-    0xbc60b42a,
-    0x953498da,
-    0xfba1ae12,
-    0x2d4bd736,
-    0x0f25faab,
-    0xa4f3fceb,
-    0xe2969123,
-    0x257f0c3d,
-    0x9348af49,
-    0x361400bc,
-    0xe8816f4a,
-    0x3814f200,
-    0xa3f94043,
-    0x9c7a54c2,
-    0xbc704f57,
-    0xda41e7f9,
-    0xc25ad33a,
-    0x54f4a084,
-    0xb17f5505,
-    0x59357cbe,
-    0xedbd15c8,
-    0x7f97c5ab,
-    0xba5ac7b5,
-    0xb6f6deaf,
-    0x3a479c3a,
-    0x5302da25,
-    0x653d7e6a,
-    0x54268d49,
-    0x51a477ea,
-    0x5017d55b,
-    0xd7d25d88,
-    0x44136c76,
-    0x0404a8c8,
-    0xb8e5a121,
-    0xb81a928a,
-    0x60ed5869,
-    0x97c55b96,
-    0xeaec991b,
-    0x29935913,
-    0x01fdb7f1,
-    0x088e8dfa,
-    0x9ab6f6f5,
-    0x3b4cbf9f,
-    0x4a5de3ab,
-    0xe6051d35,
-    0xa0e1d855,
-    0xd36b4cf1,
-    0xf544edeb,
-    0xb0e93524,
-    0xbebb8fbd,
-    0xa2d762cf,
-    0x49c92f54,
-    0x38b5f331,
-    0x7128a454,
-    0x48392905,
-    0xa65b1db8,
-    0x851c97bd,
-    0xd675cf2f,
+    0xf6fa8f9d, 0x2cac6ce1, 0x4ca34867, 0xe2337f7c, 0x95db08e7, 0x016843b4, 0xeced5cbc, 0x325553ac,
+    0xbf9f0960, 0xdfa1e2ed, 0x83f0579d, 0x63ed86b9, 0x1ab6a6b8, 0xde5ebe39, 0xf38ff732, 0x8989b138,
+    0x33f14961, 0xc01937bd, 0xf506c6da, 0xe4625e7e, 0xa308ea99, 0x4e23e33c, 0x79cbd7cc, 0x48a14367,
+    0xa3149619, 0xfec94bd5, 0xa114174a, 0xeaa01866, 0xa084db2d, 0x09a8486f, 0xa888614a, 0x2900af98,
+    0x01665991, 0xe1992863, 0xc8f30c60, 0x2e78ef3c, 0xd0d51932, 0xcf0fec14, 0xf7ca07d2, 0xd0a82072,
+    0xfd41197e, 0x9305a6b0, 0xe86be3da, 0x74bed3cd, 0x372da53c, 0x4c7f4448, 0xdab5d440, 0x6dba0ec3,
+    0x083919a7, 0x9fbaeed9, 0x49dbcfb0, 0x4e670c53, 0x5c3d9c01, 0x64bdb941, 0x2c0e636a, 0xba7dd9cd,
+    0xea6f7388, 0xe70bc762, 0x35f29adb, 0x5c4cdd8d, 0xf0d48d8c, 0xb88153e2, 0x08a19866, 0x1ae2eac8,
+    0x284caf89, 0xaa928223, 0x9334be53, 0x3b3a21bf, 0x16434be3, 0x9aea3906, 0xefe8c36e, 0xf890cdd9,
+    0x80226dae, 0xc340a4a3, 0xdf7e9c09, 0xa694a807, 0x5b7c5ecc, 0x221db3a6, 0x9a69a02f, 0x68818a54,
+    0xceb2296f, 0x53c0843a, 0xfe893655, 0x25bfe68a, 0xb4628abc, 0xcf222ebf, 0x25ac6f48, 0xa9a99387,
+    0x53bddb65, 0xe76ffbe7, 0xe967fd78, 0x0ba93563, 0x8e342bc1, 0xe8a11be9, 0x4980740d, 0xc8087dfc,
+    0x8de4bf99, 0xa11101a0, 0x7fd37975, 0xda5a26c0, 0xe81f994f, 0x9528cd89, 0xfd339fed, 0xb87834bf,
+    0x5f04456d, 0x22258698, 0xc9c4c83b, 0x2dc156be, 0x4f628daa, 0x57f55ec5, 0xe2220abe, 0xd2916ebf,
+    0x4ec75b95, 0x24f2c3c0, 0x42d15d99, 0xcd0d7fa0, 0x7b6e27ff, 0xa8dc8af0, 0x7345c106, 0xf41e232f,
+    0x35162386, 0xe6ea8926, 0x3333b094, 0x157ec6f2, 0x372b74af, 0x692573e4, 0xe9a9d848, 0xf3160289,
+    0x3a62ef1d, 0xa787e238, 0xf3a5f676, 0x74364853, 0x20951063, 0x4576698d, 0xb6fad407, 0x592af950,
+    0x36f73523, 0x4cfb6e87, 0x7da4cec0, 0x6c152daa, 0xcb0396a8, 0xc50dfe5d, 0xfcd707ab, 0x0921c42f,
+    0x89dff0bb, 0x5fe2be78, 0x448f4f33, 0x754613c9, 0x2b05d08d, 0x48b9d585, 0xdc049441, 0xc8098f9b,
+    0x7dede786, 0xc39a3373, 0x42410005, 0x6a091751, 0x0ef3c8a6, 0x890072d6, 0x28207682, 0xa9a9f7be,
+    0xbf32679d, 0xd45b5b75, 0xb353fd00, 0xcbb0e358, 0x830f220a, 0x1f8fb214, 0xd372cf08, 0xcc3c4a13,
+    0x8cf63166, 0x061c87be, 0x88c98f88, 0x6062e397, 0x47cf8e7a, 0xb6c85283, 0x3cc2acfb, 0x3fc06976,
+    0x4e8f0252, 0x64d8314d, 0xda3870e3, 0x1e665459, 0xc10908f0, 0x513021a5, 0x6c5b68b7, 0x822f8aa0,
+    0x3007cd3e, 0x74719eef, 0xdc872681, 0x073340d4, 0x7e432fd9, 0x0c5ec241, 0x8809286c, 0xf592d891,
+    0x08a930f6, 0x957ef305, 0xb7fbffbd, 0xc266e96f, 0x6fe4ac98, 0xb173ecc0, 0xbc60b42a, 0x953498da,
+    0xfba1ae12, 0x2d4bd736, 0x0f25faab, 0xa4f3fceb, 0xe2969123, 0x257f0c3d, 0x9348af49, 0x361400bc,
+    0xe8816f4a, 0x3814f200, 0xa3f94043, 0x9c7a54c2, 0xbc704f57, 0xda41e7f9, 0xc25ad33a, 0x54f4a084,
+    0xb17f5505, 0x59357cbe, 0xedbd15c8, 0x7f97c5ab, 0xba5ac7b5, 0xb6f6deaf, 0x3a479c3a, 0x5302da25,
+    0x653d7e6a, 0x54268d49, 0x51a477ea, 0x5017d55b, 0xd7d25d88, 0x44136c76, 0x0404a8c8, 0xb8e5a121,
+    0xb81a928a, 0x60ed5869, 0x97c55b96, 0xeaec991b, 0x29935913, 0x01fdb7f1, 0x088e8dfa, 0x9ab6f6f5,
+    0x3b4cbf9f, 0x4a5de3ab, 0xe6051d35, 0xa0e1d855, 0xd36b4cf1, 0xf544edeb, 0xb0e93524, 0xbebb8fbd,
+    0xa2d762cf, 0x49c92f54, 0x38b5f331, 0x7128a454, 0x48392905, 0xa65b1db8, 0x851c97bd, 0xd675cf2f
 };
 
 const CAST_LONG CAST_S_table6[256] = {
-    0x85e04019,
-    0x332bf567,
-    0x662dbfff,
-    0xcfc65693,
-    0x2a8d7f6f,
-    0xab9bc912,
-    0xde6008a1,
-    0x2028da1f,
-    0x0227bce7,
-    0x4d642916,
-    0x18fac300,
-    0x50f18b82,
-    0x2cb2cb11,
-    0xb232e75c,
-    0x4b3695f2,
-    0xb28707de,
-    0xa05fbcf6,
-    0xcd4181e9,
-    0xe150210c,
-    0xe24ef1bd,
-    0xb168c381,
-    0xfde4e789,
-    0x5c79b0d8,
-    0x1e8bfd43,
-    0x4d495001,
-    0x38be4341,
-    0x913cee1d,
-    0x92a79c3f,
-    0x089766be,
-    0xbaeeadf4,
-    0x1286becf,
-    0xb6eacb19,
-    0x2660c200,
-    0x7565bde4,
-    0x64241f7a,
-    0x8248dca9,
-    0xc3b3ad66,
-    0x28136086,
-    0x0bd8dfa8,
-    0x356d1cf2,
-    0x107789be,
-    0xb3b2e9ce,
-    0x0502aa8f,
-    0x0bc0351e,
-    0x166bf52a,
-    0xeb12ff82,
-    0xe3486911,
-    0xd34d7516,
-    0x4e7b3aff,
-    0x5f43671b,
-    0x9cf6e037,
-    0x4981ac83,
-    0x334266ce,
-    0x8c9341b7,
-    0xd0d854c0,
-    0xcb3a6c88,
-    0x47bc2829,
-    0x4725ba37,
-    0xa66ad22b,
-    0x7ad61f1e,
-    0x0c5cbafa,
-    0x4437f107,
-    0xb6e79962,
-    0x42d2d816,
-    0x0a961288,
-    0xe1a5c06e,
-    0x13749e67,
-    0x72fc081a,
-    0xb1d139f7,
-    0xf9583745,
-    0xcf19df58,
-    0xbec3f756,
-    0xc06eba30,
-    0x07211b24,
-    0x45c28829,
-    0xc95e317f,
-    0xbc8ec511,
-    0x38bc46e9,
-    0xc6e6fa14,
-    0xbae8584a,
-    0xad4ebc46,
-    0x468f508b,
-    0x7829435f,
-    0xf124183b,
-    0x821dba9f,
-    0xaff60ff4,
-    0xea2c4e6d,
-    0x16e39264,
-    0x92544a8b,
-    0x009b4fc3,
-    0xaba68ced,
-    0x9ac96f78,
-    0x06a5b79a,
-    0xb2856e6e,
-    0x1aec3ca9,
-    0xbe838688,
-    0x0e0804e9,
-    0x55f1be56,
-    0xe7e5363b,
-    0xb3a1f25d,
-    0xf7debb85,
-    0x61fe033c,
-    0x16746233,
-    0x3c034c28,
-    0xda6d0c74,
-    0x79aac56c,
-    0x3ce4e1ad,
-    0x51f0c802,
-    0x98f8f35a,
-    0x1626a49f,
-    0xeed82b29,
-    0x1d382fe3,
-    0x0c4fb99a,
-    0xbb325778,
-    0x3ec6d97b,
-    0x6e77a6a9,
-    0xcb658b5c,
-    0xd45230c7,
-    0x2bd1408b,
-    0x60c03eb7,
-    0xb9068d78,
-    0xa33754f4,
-    0xf430c87d,
-    0xc8a71302,
-    0xb96d8c32,
-    0xebd4e7be,
-    0xbe8b9d2d,
-    0x7979fb06,
-    0xe7225308,
-    0x8b75cf77,
-    0x11ef8da4,
-    0xe083c858,
-    0x8d6b786f,
-    0x5a6317a6,
-    0xfa5cf7a0,
-    0x5dda0033,
-    0xf28ebfb0,
-    0xf5b9c310,
-    0xa0eac280,
-    0x08b9767a,
-    0xa3d9d2b0,
-    0x79d34217,
-    0x021a718d,
-    0x9ac6336a,
-    0x2711fd60,
-    0x438050e3,
-    0x069908a8,
-    0x3d7fedc4,
-    0x826d2bef,
-    0x4eeb8476,
-    0x488dcf25,
-    0x36c9d566,
-    0x28e74e41,
-    0xc2610aca,
-    0x3d49a9cf,
-    0xbae3b9df,
-    0xb65f8de6,
-    0x92aeaf64,
-    0x3ac7d5e6,
-    0x9ea80509,
-    0xf22b017d,
-    0xa4173f70,
-    0xdd1e16c3,
-    0x15e0d7f9,
-    0x50b1b887,
-    0x2b9f4fd5,
-    0x625aba82,
-    0x6a017962,
-    0x2ec01b9c,
-    0x15488aa9,
-    0xd716e740,
-    0x40055a2c,
-    0x93d29a22,
-    0xe32dbf9a,
-    0x058745b9,
-    0x3453dc1e,
-    0xd699296e,
-    0x496cff6f,
-    0x1c9f4986,
-    0xdfe2ed07,
-    0xb87242d1,
-    0x19de7eae,
-    0x053e561a,
-    0x15ad6f8c,
-    0x66626c1c,
-    0x7154c24c,
-    0xea082b2a,
-    0x93eb2939,
-    0x17dcb0f0,
-    0x58d4f2ae,
-    0x9ea294fb,
-    0x52cf564c,
-    0x9883fe66,
-    0x2ec40581,
-    0x763953c3,
-    0x01d6692e,
-    0xd3a0c108,
-    0xa1e7160e,
-    0xe4f2dfa6,
-    0x693ed285,
-    0x74904698,
-    0x4c2b0edd,
-    0x4f757656,
-    0x5d393378,
-    0xa132234f,
-    0x3d321c5d,
-    0xc3f5e194,
-    0x4b269301,
-    0xc79f022f,
-    0x3c997e7e,
-    0x5e4f9504,
-    0x3ffafbbd,
-    0x76f7ad0e,
-    0x296693f4,
-    0x3d1fce6f,
-    0xc61e45be,
-    0xd3b5ab34,
-    0xf72bf9b7,
-    0x1b0434c0,
-    0x4e72b567,
-    0x5592a33d,
-    0xb5229301,
-    0xcfd2a87f,
-    0x60aeb767,
-    0x1814386b,
-    0x30bcc33d,
-    0x38a0c07d,
-    0xfd1606f2,
-    0xc363519b,
-    0x589dd390,
-    0x5479f8e6,
-    0x1cb8d647,
-    0x97fd61a9,
-    0xea7759f4,
-    0x2d57539d,
-    0x569a58cf,
-    0xe84e63ad,
-    0x462e1b78,
-    0x6580f87e,
-    0xf3817914,
-    0x91da55f4,
-    0x40a230f3,
-    0xd1988f35,
-    0xb6e318d2,
-    0x3ffa50bc,
-    0x3d40f021,
-    0xc3c0bdae,
-    0x4958c24c,
-    0x518f36b2,
-    0x84b1d370,
-    0x0fedce83,
-    0x878ddada,
-    0xf2a279c7,
-    0x94e01be8,
-    0x90716f4b,
-    0x954b8aa3,
+    0x85e04019, 0x332bf567, 0x662dbfff, 0xcfc65693, 0x2a8d7f6f, 0xab9bc912, 0xde6008a1, 0x2028da1f,
+    0x0227bce7, 0x4d642916, 0x18fac300, 0x50f18b82, 0x2cb2cb11, 0xb232e75c, 0x4b3695f2, 0xb28707de,
+    0xa05fbcf6, 0xcd4181e9, 0xe150210c, 0xe24ef1bd, 0xb168c381, 0xfde4e789, 0x5c79b0d8, 0x1e8bfd43,
+    0x4d495001, 0x38be4341, 0x913cee1d, 0x92a79c3f, 0x089766be, 0xbaeeadf4, 0x1286becf, 0xb6eacb19,
+    0x2660c200, 0x7565bde4, 0x64241f7a, 0x8248dca9, 0xc3b3ad66, 0x28136086, 0x0bd8dfa8, 0x356d1cf2,
+    0x107789be, 0xb3b2e9ce, 0x0502aa8f, 0x0bc0351e, 0x166bf52a, 0xeb12ff82, 0xe3486911, 0xd34d7516,
+    0x4e7b3aff, 0x5f43671b, 0x9cf6e037, 0x4981ac83, 0x334266ce, 0x8c9341b7, 0xd0d854c0, 0xcb3a6c88,
+    0x47bc2829, 0x4725ba37, 0xa66ad22b, 0x7ad61f1e, 0x0c5cbafa, 0x4437f107, 0xb6e79962, 0x42d2d816,
+    0x0a961288, 0xe1a5c06e, 0x13749e67, 0x72fc081a, 0xb1d139f7, 0xf9583745, 0xcf19df58, 0xbec3f756,
+    0xc06eba30, 0x07211b24, 0x45c28829, 0xc95e317f, 0xbc8ec511, 0x38bc46e9, 0xc6e6fa14, 0xbae8584a,
+    0xad4ebc46, 0x468f508b, 0x7829435f, 0xf124183b, 0x821dba9f, 0xaff60ff4, 0xea2c4e6d, 0x16e39264,
+    0x92544a8b, 0x009b4fc3, 0xaba68ced, 0x9ac96f78, 0x06a5b79a, 0xb2856e6e, 0x1aec3ca9, 0xbe838688,
+    0x0e0804e9, 0x55f1be56, 0xe7e5363b, 0xb3a1f25d, 0xf7debb85, 0x61fe033c, 0x16746233, 0x3c034c28,
+    0xda6d0c74, 0x79aac56c, 0x3ce4e1ad, 0x51f0c802, 0x98f8f35a, 0x1626a49f, 0xeed82b29, 0x1d382fe3,
+    0x0c4fb99a, 0xbb325778, 0x3ec6d97b, 0x6e77a6a9, 0xcb658b5c, 0xd45230c7, 0x2bd1408b, 0x60c03eb7,
+    0xb9068d78, 0xa33754f4, 0xf430c87d, 0xc8a71302, 0xb96d8c32, 0xebd4e7be, 0xbe8b9d2d, 0x7979fb06,
+    0xe7225308, 0x8b75cf77, 0x11ef8da4, 0xe083c858, 0x8d6b786f, 0x5a6317a6, 0xfa5cf7a0, 0x5dda0033,
+    0xf28ebfb0, 0xf5b9c310, 0xa0eac280, 0x08b9767a, 0xa3d9d2b0, 0x79d34217, 0x021a718d, 0x9ac6336a,
+    0x2711fd60, 0x438050e3, 0x069908a8, 0x3d7fedc4, 0x826d2bef, 0x4eeb8476, 0x488dcf25, 0x36c9d566,
+    0x28e74e41, 0xc2610aca, 0x3d49a9cf, 0xbae3b9df, 0xb65f8de6, 0x92aeaf64, 0x3ac7d5e6, 0x9ea80509,
+    0xf22b017d, 0xa4173f70, 0xdd1e16c3, 0x15e0d7f9, 0x50b1b887, 0x2b9f4fd5, 0x625aba82, 0x6a017962,
+    0x2ec01b9c, 0x15488aa9, 0xd716e740, 0x40055a2c, 0x93d29a22, 0xe32dbf9a, 0x058745b9, 0x3453dc1e,
+    0xd699296e, 0x496cff6f, 0x1c9f4986, 0xdfe2ed07, 0xb87242d1, 0x19de7eae, 0x053e561a, 0x15ad6f8c,
+    0x66626c1c, 0x7154c24c, 0xea082b2a, 0x93eb2939, 0x17dcb0f0, 0x58d4f2ae, 0x9ea294fb, 0x52cf564c,
+    0x9883fe66, 0x2ec40581, 0x763953c3, 0x01d6692e, 0xd3a0c108, 0xa1e7160e, 0xe4f2dfa6, 0x693ed285,
+    0x74904698, 0x4c2b0edd, 0x4f757656, 0x5d393378, 0xa132234f, 0x3d321c5d, 0xc3f5e194, 0x4b269301,
+    0xc79f022f, 0x3c997e7e, 0x5e4f9504, 0x3ffafbbd, 0x76f7ad0e, 0x296693f4, 0x3d1fce6f, 0xc61e45be,
+    0xd3b5ab34, 0xf72bf9b7, 0x1b0434c0, 0x4e72b567, 0x5592a33d, 0xb5229301, 0xcfd2a87f, 0x60aeb767,
+    0x1814386b, 0x30bcc33d, 0x38a0c07d, 0xfd1606f2, 0xc363519b, 0x589dd390, 0x5479f8e6, 0x1cb8d647,
+    0x97fd61a9, 0xea7759f4, 0x2d57539d, 0x569a58cf, 0xe84e63ad, 0x462e1b78, 0x6580f87e, 0xf3817914,
+    0x91da55f4, 0x40a230f3, 0xd1988f35, 0xb6e318d2, 0x3ffa50bc, 0x3d40f021, 0xc3c0bdae, 0x4958c24c,
+    0x518f36b2, 0x84b1d370, 0x0fedce83, 0x878ddada, 0xf2a279c7, 0x94e01be8, 0x90716f4b, 0x954b8aa3
 };
 
 const CAST_LONG CAST_S_table7[256] = {
-    0xe216300d,
-    0xbbddfffc,
-    0xa7ebdabd,
-    0x35648095,
-    0x7789f8b7,
-    0xe6c1121b,
-    0x0e241600,
-    0x052ce8b5,
-    0x11a9cfb0,
-    0xe5952f11,
-    0xece7990a,
-    0x9386d174,
-    0x2a42931c,
-    0x76e38111,
-    0xb12def3a,
-    0x37ddddfc,
-    0xde9adeb1,
-    0x0a0cc32c,
-    0xbe197029,
-    0x84a00940,
-    0xbb243a0f,
-    0xb4d137cf,
-    0xb44e79f0,
-    0x049eedfd,
-    0x0b15a15d,
-    0x480d3168,
-    0x8bbbde5a,
-    0x669ded42,
-    0xc7ece831,
-    0x3f8f95e7,
-    0x72df191b,
-    0x7580330d,
-    0x94074251,
-    0x5c7dcdfa,
-    0xabbe6d63,
-    0xaa402164,
-    0xb301d40a,
-    0x02e7d1ca,
-    0x53571dae,
-    0x7a3182a2,
-    0x12a8ddec,
-    0xfdaa335d,
-    0x176f43e8,
-    0x71fb46d4,
-    0x38129022,
-    0xce949ad4,
-    0xb84769ad,
-    0x965bd862,
-    0x82f3d055,
-    0x66fb9767,
-    0x15b80b4e,
-    0x1d5b47a0,
-    0x4cfde06f,
-    0xc28ec4b8,
-    0x57e8726e,
-    0x647a78fc,
-    0x99865d44,
-    0x608bd593,
-    0x6c200e03,
-    0x39dc5ff6,
-    0x5d0b00a3,
-    0xae63aff2,
-    0x7e8bd632,
-    0x70108c0c,
-    0xbbd35049,
-    0x2998df04,
-    0x980cf42a,
-    0x9b6df491,
-    0x9e7edd53,
-    0x06918548,
-    0x58cb7e07,
-    0x3b74ef2e,
-    0x522fffb1,
-    0xd24708cc,
-    0x1c7e27cd,
-    0xa4eb215b,
-    0x3cf1d2e2,
-    0x19b47a38,
-    0x424f7618,
-    0x35856039,
-    0x9d17dee7,
-    0x27eb35e6,
-    0xc9aff67b,
-    0x36baf5b8,
-    0x09c467cd,
-    0xc18910b1,
-    0xe11dbf7b,
-    0x06cd1af8,
-    0x7170c608,
-    0x2d5e3354,
-    0xd4de495a,
-    0x64c6d006,
-    0xbcc0c62c,
-    0x3dd00db3,
-    0x708f8f34,
-    0x77d51b42,
-    0x264f620f,
-    0x24b8d2bf,
-    0x15c1b79e,
-    0x46a52564,
-    0xf8d7e54e,
-    0x3e378160,
-    0x7895cda5,
-    0x859c15a5,
-    0xe6459788,
-    0xc37bc75f,
-    0xdb07ba0c,
-    0x0676a3ab,
-    0x7f229b1e,
-    0x31842e7b,
-    0x24259fd7,
-    0xf8bef472,
-    0x835ffcb8,
-    0x6df4c1f2,
-    0x96f5b195,
-    0xfd0af0fc,
-    0xb0fe134c,
-    0xe2506d3d,
-    0x4f9b12ea,
-    0xf215f225,
-    0xa223736f,
-    0x9fb4c428,
-    0x25d04979,
-    0x34c713f8,
-    0xc4618187,
-    0xea7a6e98,
-    0x7cd16efc,
-    0x1436876c,
-    0xf1544107,
-    0xbedeee14,
-    0x56e9af27,
-    0xa04aa441,
-    0x3cf7c899,
-    0x92ecbae6,
-    0xdd67016d,
-    0x151682eb,
-    0xa842eedf,
-    0xfdba60b4,
-    0xf1907b75,
-    0x20e3030f,
-    0x24d8c29e,
-    0xe139673b,
-    0xefa63fb8,
-    0x71873054,
-    0xb6f2cf3b,
-    0x9f326442,
-    0xcb15a4cc,
-    0xb01a4504,
-    0xf1e47d8d,
-    0x844a1be5,
-    0xbae7dfdc,
-    0x42cbda70,
-    0xcd7dae0a,
-    0x57e85b7a,
-    0xd53f5af6,
-    0x20cf4d8c,
-    0xcea4d428,
-    0x79d130a4,
-    0x3486ebfb,
-    0x33d3cddc,
-    0x77853b53,
-    0x37effcb5,
-    0xc5068778,
-    0xe580b3e6,
-    0x4e68b8f4,
-    0xc5c8b37e,
-    0x0d809ea2,
-    0x398feb7c,
-    0x132a4f94,
-    0x43b7950e,
-    0x2fee7d1c,
-    0x223613bd,
-    0xdd06caa2,
-    0x37df932b,
-    0xc4248289,
-    0xacf3ebc3,
-    0x5715f6b7,
-    0xef3478dd,
-    0xf267616f,
-    0xc148cbe4,
-    0x9052815e,
-    0x5e410fab,
-    0xb48a2465,
-    0x2eda7fa4,
-    0xe87b40e4,
-    0xe98ea084,
-    0x5889e9e1,
-    0xefd390fc,
-    0xdd07d35b,
-    0xdb485694,
-    0x38d7e5b2,
-    0x57720101,
-    0x730edebc,
-    0x5b643113,
-    0x94917e4f,
-    0x503c2fba,
-    0x646f1282,
-    0x7523d24a,
-    0xe0779695,
-    0xf9c17a8f,
-    0x7a5b2121,
-    0xd187b896,
-    0x29263a4d,
-    0xba510cdf,
-    0x81f47c9f,
-    0xad1163ed,
-    0xea7b5965,
-    0x1a00726e,
-    0x11403092,
-    0x00da6d77,
-    0x4a0cdd61,
-    0xad1f4603,
-    0x605bdfb0,
-    0x9eedc364,
-    0x22ebe6a8,
-    0xcee7d28a,
-    0xa0e736a0,
-    0x5564a6b9,
-    0x10853209,
-    0xc7eb8f37,
-    0x2de705ca,
-    0x8951570f,
-    0xdf09822b,
-    0xbd691a6c,
-    0xaa12e4f2,
-    0x87451c0f,
-    0xe0f6a27a,
-    0x3ada4819,
-    0x4cf1764f,
-    0x0d771c2b,
-    0x67cdb156,
-    0x350d8384,
-    0x5938fa0f,
-    0x42399ef3,
-    0x36997b07,
-    0x0e84093d,
-    0x4aa93e61,
-    0x8360d87b,
-    0x1fa98b0c,
-    0x1149382c,
-    0xe97625a5,
-    0x0614d1b7,
-    0x0e25244b,
-    0x0c768347,
-    0x589e8d82,
-    0x0d2059d1,
-    0xa466bb1e,
-    0xf8da0a82,
-    0x04f19130,
-    0xba6e4ec0,
-    0x99265164,
-    0x1ee7230d,
-    0x50b2ad80,
-    0xeaee6801,
-    0x8db2a283,
-    0xea8bf59e,
+    0xe216300d, 0xbbddfffc, 0xa7ebdabd, 0x35648095, 0x7789f8b7, 0xe6c1121b, 0x0e241600, 0x052ce8b5,
+    0x11a9cfb0, 0xe5952f11, 0xece7990a, 0x9386d174, 0x2a42931c, 0x76e38111, 0xb12def3a, 0x37ddddfc,
+    0xde9adeb1, 0x0a0cc32c, 0xbe197029, 0x84a00940, 0xbb243a0f, 0xb4d137cf, 0xb44e79f0, 0x049eedfd,
+    0x0b15a15d, 0x480d3168, 0x8bbbde5a, 0x669ded42, 0xc7ece831, 0x3f8f95e7, 0x72df191b, 0x7580330d,
+    0x94074251, 0x5c7dcdfa, 0xabbe6d63, 0xaa402164, 0xb301d40a, 0x02e7d1ca, 0x53571dae, 0x7a3182a2,
+    0x12a8ddec, 0xfdaa335d, 0x176f43e8, 0x71fb46d4, 0x38129022, 0xce949ad4, 0xb84769ad, 0x965bd862,
+    0x82f3d055, 0x66fb9767, 0x15b80b4e, 0x1d5b47a0, 0x4cfde06f, 0xc28ec4b8, 0x57e8726e, 0x647a78fc,
+    0x99865d44, 0x608bd593, 0x6c200e03, 0x39dc5ff6, 0x5d0b00a3, 0xae63aff2, 0x7e8bd632, 0x70108c0c,
+    0xbbd35049, 0x2998df04, 0x980cf42a, 0x9b6df491, 0x9e7edd53, 0x06918548, 0x58cb7e07, 0x3b74ef2e,
+    0x522fffb1, 0xd24708cc, 0x1c7e27cd, 0xa4eb215b, 0x3cf1d2e2, 0x19b47a38, 0x424f7618, 0x35856039,
+    0x9d17dee7, 0x27eb35e6, 0xc9aff67b, 0x36baf5b8, 0x09c467cd, 0xc18910b1, 0xe11dbf7b, 0x06cd1af8,
+    0x7170c608, 0x2d5e3354, 0xd4de495a, 0x64c6d006, 0xbcc0c62c, 0x3dd00db3, 0x708f8f34, 0x77d51b42,
+    0x264f620f, 0x24b8d2bf, 0x15c1b79e, 0x46a52564, 0xf8d7e54e, 0x3e378160, 0x7895cda5, 0x859c15a5,
+    0xe6459788, 0xc37bc75f, 0xdb07ba0c, 0x0676a3ab, 0x7f229b1e, 0x31842e7b, 0x24259fd7, 0xf8bef472,
+    0x835ffcb8, 0x6df4c1f2, 0x96f5b195, 0xfd0af0fc, 0xb0fe134c, 0xe2506d3d, 0x4f9b12ea, 0xf215f225,
+    0xa223736f, 0x9fb4c428, 0x25d04979, 0x34c713f8, 0xc4618187, 0xea7a6e98, 0x7cd16efc, 0x1436876c,
+    0xf1544107, 0xbedeee14, 0x56e9af27, 0xa04aa441, 0x3cf7c899, 0x92ecbae6, 0xdd67016d, 0x151682eb,
+    0xa842eedf, 0xfdba60b4, 0xf1907b75, 0x20e3030f, 0x24d8c29e, 0xe139673b, 0xefa63fb8, 0x71873054,
+    0xb6f2cf3b, 0x9f326442, 0xcb15a4cc, 0xb01a4504, 0xf1e47d8d, 0x844a1be5, 0xbae7dfdc, 0x42cbda70,
+    0xcd7dae0a, 0x57e85b7a, 0xd53f5af6, 0x20cf4d8c, 0xcea4d428, 0x79d130a4, 0x3486ebfb, 0x33d3cddc,
+    0x77853b53, 0x37effcb5, 0xc5068778, 0xe580b3e6, 0x4e68b8f4, 0xc5c8b37e, 0x0d809ea2, 0x398feb7c,
+    0x132a4f94, 0x43b7950e, 0x2fee7d1c, 0x223613bd, 0xdd06caa2, 0x37df932b, 0xc4248289, 0xacf3ebc3,
+    0x5715f6b7, 0xef3478dd, 0xf267616f, 0xc148cbe4, 0x9052815e, 0x5e410fab, 0xb48a2465, 0x2eda7fa4,
+    0xe87b40e4, 0xe98ea084, 0x5889e9e1, 0xefd390fc, 0xdd07d35b, 0xdb485694, 0x38d7e5b2, 0x57720101,
+    0x730edebc, 0x5b643113, 0x94917e4f, 0x503c2fba, 0x646f1282, 0x7523d24a, 0xe0779695, 0xf9c17a8f,
+    0x7a5b2121, 0xd187b896, 0x29263a4d, 0xba510cdf, 0x81f47c9f, 0xad1163ed, 0xea7b5965, 0x1a00726e,
+    0x11403092, 0x00da6d77, 0x4a0cdd61, 0xad1f4603, 0x605bdfb0, 0x9eedc364, 0x22ebe6a8, 0xcee7d28a,
+    0xa0e736a0, 0x5564a6b9, 0x10853209, 0xc7eb8f37, 0x2de705ca, 0x8951570f, 0xdf09822b, 0xbd691a6c,
+    0xaa12e4f2, 0x87451c0f, 0xe0f6a27a, 0x3ada4819, 0x4cf1764f, 0x0d771c2b, 0x67cdb156, 0x350d8384,
+    0x5938fa0f, 0x42399ef3, 0x36997b07, 0x0e84093d, 0x4aa93e61, 0x8360d87b, 0x1fa98b0c, 0x1149382c,
+    0xe97625a5, 0x0614d1b7, 0x0e25244b, 0x0c768347, 0x589e8d82, 0x0d2059d1, 0xa466bb1e, 0xf8da0a82,
+    0x04f19130, 0xba6e4ec0, 0x99265164, 0x1ee7230d, 0x50b2ad80, 0xeaee6801, 0x8db2a283, 0xea8bf59e
 };
diff -Nru openssl-3.5.6/crypto/chacha/asm/chachap10-ppc.pl openssl-3.5.7/crypto/chacha/asm/chachap10-ppc.pl
--- openssl-3.5.6/crypto/chacha/asm/chachap10-ppc.pl	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/chacha/asm/chachap10-ppc.pl	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 #! /usr/bin/env perl
-# Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved.
 #
 # Licensed under the Apache License 2.0 (the "License").  You may not use
 # this file except in compliance with the License.  You can obtain a copy
@@ -501,7 +501,7 @@
 my ($xv18,$xv19,$xv20,$xv21) = map("v$_",(18..21));
 my ($xv22,$xv23,$xv24,$xv25,$xv26) = map("v$_",(22..26));
 
-my $FRAME=$LOCALS+64+9*16;	# 8*16 is for v24-v31 offload
+my $FRAME=$LOCALS+64+9*16+13*8+4*16;	# 8*16 for v24-v31 offload, 13*8 for f14-f26, 4*16 for v20-v23
 
 sub VSX_lane_ROUND_8x {
 my ($a0,$b0,$c0,$d0,$a4,$b4,$c4,$d4)=@_;
@@ -665,7 +665,28 @@
 	addi	r11,r11,32
 	stvx	v30,r10,$sp
 	stvx	v31,r11,$sp
-	stw	r12,`$FRAME-4`($sp)		# save vrsave
+	stfd	f14,`$LOCALS+64+9*16+0*8`($sp)	# save FPR14-FPR26 (callee-saved per ELFv2 ABI)
+	stfd	f15,`$LOCALS+64+9*16+1*8`($sp)
+	stfd	f16,`$LOCALS+64+9*16+2*8`($sp)
+	stfd	f17,`$LOCALS+64+9*16+3*8`($sp)
+	stfd	f18,`$LOCALS+64+9*16+4*8`($sp)
+	stfd	f19,`$LOCALS+64+9*16+5*8`($sp)
+	stfd	f20,`$LOCALS+64+9*16+6*8`($sp)
+	stfd	f21,`$LOCALS+64+9*16+7*8`($sp)
+	stfd	f22,`$LOCALS+64+9*16+8*8`($sp)
+	stfd	f23,`$LOCALS+64+9*16+9*8`($sp)
+	stfd	f24,`$LOCALS+64+9*16+10*8`($sp)
+	stfd	f25,`$LOCALS+64+9*16+11*8`($sp)
+	be?stfd	f26,`$LOCALS+64+9*16+12*8`($sp)	# BE only
+	li	r10,`$LOCALS+64+9*16+13*8+15`
+	li	r11,`$LOCALS+64+9*16+13*8+31`
+	stvx	v20,r10,$sp			# save VMX v20-v23 (callee-saved per ELFv2 ABI)
+	addi	r10,r10,32
+	stvx	v21,r11,$sp
+	addi	r11,r11,32
+	stvx	v22,r10,$sp
+	stvx	v23,r11,$sp
+	stw	r12,`$LOCALS+64+9*16-4`($sp)		# save vrsave
 	li	r12,-4096+63
 	$PUSH	r0, `$FRAME+$LRSAVE`($sp)
 	mtspr	256,r12				# preserve 29 AltiVec registers
@@ -1159,7 +1180,28 @@
 	bne	Loop_outer_vsx_8x
 
 Ldone_vsx_8x:
-	lwz	r12,`$FRAME-4`($sp)		# pull vrsave
+	lwz	r12,`$LOCALS+64+9*16-4`($sp)		# pull vrsave
+	lfd	f14,`$LOCALS+64+9*16+0*8`($sp)	# restore FPR14-FPR26 (callee-saved per ELFv2 ABI)
+	lfd	f15,`$LOCALS+64+9*16+1*8`($sp)
+	lfd	f16,`$LOCALS+64+9*16+2*8`($sp)
+	lfd	f17,`$LOCALS+64+9*16+3*8`($sp)
+	lfd	f18,`$LOCALS+64+9*16+4*8`($sp)
+	lfd	f19,`$LOCALS+64+9*16+5*8`($sp)
+	lfd	f20,`$LOCALS+64+9*16+6*8`($sp)
+	lfd	f21,`$LOCALS+64+9*16+7*8`($sp)
+	lfd	f22,`$LOCALS+64+9*16+8*8`($sp)
+	lfd	f23,`$LOCALS+64+9*16+9*8`($sp)
+	lfd	f24,`$LOCALS+64+9*16+10*8`($sp)
+	lfd	f25,`$LOCALS+64+9*16+11*8`($sp)
+	be?lfd	f26,`$LOCALS+64+9*16+12*8`($sp)	# BE only
+	li	r10,`$LOCALS+64+9*16+13*8+15`
+	li	r11,`$LOCALS+64+9*16+13*8+31`
+	lvx	v20,r10,$sp			# restore VMX v20-v23 (callee-saved per ELFv2 ABI)
+	addi	r10,r10,32
+	lvx	v21,r11,$sp
+	addi	r11,r11,32
+	lvx	v22,r10,$sp
+	lvx	v23,r11,$sp
 	li	r10,`15+$LOCALS+64`
 	li	r11,`31+$LOCALS+64`
 	$POP	r0, `$FRAME+$LRSAVE`($sp)
diff -Nru openssl-3.5.6/crypto/cmp/cmp_genm.c openssl-3.5.7/crypto/cmp/cmp_genm.c
--- openssl-3.5.6/crypto/cmp/cmp_genm.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/cmp/cmp_genm.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright Siemens AG 2022
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
@@ -113,8 +113,7 @@
     for (i = 0; i < n; i++) {
         OSSL_CMP_ITAV *itav = sk_OSSL_CMP_ITAV_shift(itavs);
         ASN1_OBJECT *obj = OSSL_CMP_ITAV_get0_type(itav);
-        char name[128] = "genp contains InfoType '";
-        size_t offset = strlen(name);
+        char name[128];
 
         if (OBJ_obj2nid(obj) == expected) {
             for (i++; i < n; i++)
@@ -123,9 +122,11 @@
             return itav;
         }
 
-        if (OBJ_obj2txt(name + offset, sizeof(name) - offset, obj, 0) < 0)
-            strcat(name, "<unknown>");
-        ossl_cmp_log2(WARN, ctx, "%s' while expecting 'id-it-%s'", name, desc);
+        if (OBJ_obj2txt(name, sizeof(name), obj, 0) < 0)
+            name[0] = '\0';
+        ossl_cmp_log2(WARN, ctx,
+            "genp contains InfoType '%s' while expecting 'id-it-%s'",
+            name[0] == '\0' ? "<unknown>" : name, desc);
         OSSL_CMP_ITAV_free(itav);
     }
     ERR_raise_data(ERR_LIB_CMP, CMP_R_INVALID_GENP,
@@ -202,7 +203,7 @@
         for (i = 0; i < sk_X509_num(trust); i++) {
             issuer = sk_X509_value(trust, i);
             if ((*check_issued)(store_ctx, cert, issuer)) {
-                if (X509_add_cert(chain, cert, X509_ADD_FLAG_UP_REF))
+                if (X509_add_cert(chain, issuer, X509_ADD_FLAG_UP_REF))
                     ok = 1;
                 break;
             }
@@ -235,6 +236,7 @@
     if ((csc = X509_STORE_CTX_new_ex(libctx, propq)) == NULL
         || !X509_STORE_CTX_init(csc, ts, target, untrusted))
         goto err;
+    X509_STORE_CTX_set_flags(csc, X509_V_FLAG_CHECK_SS_SIGNATURE);
     X509_STORE_CTX_set_verify_cb(csc, selfsigned_verify_cb);
     ok = X509_verify_cert(csc) > 0;
 
@@ -253,7 +255,8 @@
     int res = 0;
 
     if (trusted != NULL) {
-        X509_VERIFY_PARAM *vpm = X509_STORE_get0_param(ts);
+        X509_VERIFY_PARAM *vpm = (ts == NULL) ? NULL
+                                              : X509_STORE_get0_param(ts);
 
         if ((ts = X509_STORE_new()) == NULL)
             return 0;
diff -Nru openssl-3.5.6/crypto/cms/cms_enc.c openssl-3.5.7/crypto/cms/cms_enc.c
--- openssl-3.5.6/crypto/cms/cms_enc.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/cms/cms_enc.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2008-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -109,13 +109,15 @@
                 goto err;
             }
             piv = aparams.iv;
-            if (ec->taglen > 0
-                && EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG,
-                       ec->taglen, ec->tag)
-                    <= 0) {
+
+            if (ec->taglen < 4 || ec->taglen > 16
+                || EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG, (int)ec->taglen, ec->tag) <= 0) {
                 ERR_raise(ERR_LIB_CMS, CMS_R_CIPHER_AEAD_SET_TAG_ERROR);
                 goto err;
             }
+        } else if (auth) {
+            ERR_raise(ERR_LIB_CMS, CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM);
+            goto err;
         }
     }
     len = EVP_CIPHER_CTX_get_key_length(ctx);
diff -Nru openssl-3.5.6/crypto/cms/cms_env.c openssl-3.5.7/crypto/cms/cms_env.c
--- openssl-3.5.6/crypto/cms/cms_env.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/cms/cms_env.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2008-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -619,13 +619,6 @@
     if (!ossl_cms_env_asn1_ctrl(ri, 1))
         goto err;
 
-    if (EVP_PKEY_is_a(pkey, "RSA"))
-        /* upper layer CMS code incorrectly assumes that a successful RSA
-         * decryption means that the key matches ciphertext (which never
-         * was the case, implicit rejection or not), so to make it work
-         * disable implicit rejection for RSA keys */
-        EVP_PKEY_CTX_ctrl_str(ktri->pctx, "rsa_pkcs1_implicit_rejection", "0");
-
     if (evp_pkey_decrypt_alloc(ktri->pctx, &ek, &eklen, fixlen,
             ktri->encryptedKey->data,
             ktri->encryptedKey->length)
diff -Nru openssl-3.5.6/crypto/cms/cms_pwri.c openssl-3.5.7/crypto/cms/cms_pwri.c
--- openssl-3.5.6/crypto/cms/cms_pwri.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/cms/cms_pwri.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2009-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2009-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -200,18 +200,18 @@
     const unsigned char *in, size_t inlen,
     EVP_CIPHER_CTX *ctx)
 {
-    size_t blocklen = EVP_CIPHER_CTX_get_block_size(ctx);
+    int blocklen = EVP_CIPHER_CTX_get_block_size(ctx);
     unsigned char *tmp;
     int outl, rv = 0;
 
-    if (blocklen == 0)
+    if (blocklen < 4)
         return 0;
 
-    if (inlen < 2 * blocklen) {
+    if (inlen < 2 * (size_t)blocklen) {
         /* too small */
         return 0;
     }
-    if (inlen % blocklen) {
+    if (inlen > INT_MAX || inlen % blocklen) {
         /* Invalid size */
         return 0;
     }
@@ -367,6 +367,11 @@
 
     /* Finish password based key derivation to setup key in "ctx" */
 
+    if (algtmp == NULL) {
+        ERR_raise_data(ERR_LIB_CMS, CMS_R_INVALID_KEY_ENCRYPTION_PARAMETER,
+            "Missing KeyDerivationAlgorithm");
+        goto err;
+    }
     if (!EVP_PBE_CipherInit_ex(algtmp->algorithm,
             (char *)pwri->pass, (int)pwri->passlen,
             algtmp->parameter, kekctx, en_de,
diff -Nru openssl-3.5.6/crypto/crmf/crmf_lib.c openssl-3.5.7/crypto/crmf/crmf_lib.c
--- openssl-3.5.6/crypto/crmf/crmf_lib.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/crmf/crmf_lib.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*-
- * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright Nokia 2007-2018
  * Copyright Siemens AG 2015-2019
  *
@@ -766,6 +766,7 @@
     EVP_CIPHER *cipher = NULL; /* used cipher */
     int cikeysize = 0; /* key size from cipher */
     unsigned char *iv = NULL; /* initial vector for symmetric encryption */
+    int iv_len; /* iv length */
     unsigned char *out = NULL; /* decryption output buffer */
     int n, ret = 0;
     EVP_PKEY_CTX *pkctx = NULL; /* private key context */
@@ -820,11 +821,12 @@
     } else {
         goto end;
     }
-    if ((iv = OPENSSL_malloc(EVP_CIPHER_get_iv_length(cipher))) == NULL)
+    iv_len = EVP_CIPHER_get_iv_length(cipher);
+    if ((iv = OPENSSL_malloc(iv_len)) == NULL)
         goto end;
-    if (ASN1_TYPE_get_octetstring(enc->symmAlg->parameter, iv,
-            EVP_CIPHER_get_iv_length(cipher))
-        != EVP_CIPHER_get_iv_length(cipher)) {
+    if (enc->symmAlg->parameter == NULL
+        || ASN1_TYPE_get_octetstring(enc->symmAlg->parameter, iv, iv_len)
+            != iv_len) {
         ERR_raise(ERR_LIB_CRMF, CRMF_R_MALFORMED_IV);
         goto end;
     }
diff -Nru openssl-3.5.6/crypto/des/fcrypt.c openssl-3.5.7/crypto/des/fcrypt.c
--- openssl-3.5.6/crypto/des/fcrypt.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/des/fcrypt.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1998-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -32,134 +32,19 @@
  * implementations do.
  */
 static const unsigned char con_salt[128] = {
-    0xD2,
-    0xD3,
-    0xD4,
-    0xD5,
-    0xD6,
-    0xD7,
-    0xD8,
-    0xD9,
-    0xDA,
-    0xDB,
-    0xDC,
-    0xDD,
-    0xDE,
-    0xDF,
-    0xE0,
-    0xE1,
-    0xE2,
-    0xE3,
-    0xE4,
-    0xE5,
-    0xE6,
-    0xE7,
-    0xE8,
-    0xE9,
-    0xEA,
-    0xEB,
-    0xEC,
-    0xED,
-    0xEE,
-    0xEF,
-    0xF0,
-    0xF1,
-    0xF2,
-    0xF3,
-    0xF4,
-    0xF5,
-    0xF6,
-    0xF7,
-    0xF8,
-    0xF9,
-    0xFA,
-    0xFB,
-    0xFC,
-    0xFD,
-    0xFE,
-    0xFF,
-    0x00,
-    0x01,
-    0x02,
-    0x03,
-    0x04,
-    0x05,
-    0x06,
-    0x07,
-    0x08,
-    0x09,
-    0x0A,
-    0x0B,
-    0x05,
-    0x06,
-    0x07,
-    0x08,
-    0x09,
-    0x0A,
-    0x0B,
-    0x0C,
-    0x0D,
-    0x0E,
-    0x0F,
-    0x10,
-    0x11,
-    0x12,
-    0x13,
-    0x14,
-    0x15,
-    0x16,
-    0x17,
-    0x18,
-    0x19,
-    0x1A,
-    0x1B,
-    0x1C,
-    0x1D,
-    0x1E,
-    0x1F,
-    0x20,
-    0x21,
-    0x22,
-    0x23,
-    0x24,
-    0x25,
-    0x20,
-    0x21,
-    0x22,
-    0x23,
-    0x24,
-    0x25,
-    0x26,
-    0x27,
-    0x28,
-    0x29,
-    0x2A,
-    0x2B,
-    0x2C,
-    0x2D,
-    0x2E,
-    0x2F,
-    0x30,
-    0x31,
-    0x32,
-    0x33,
-    0x34,
-    0x35,
-    0x36,
-    0x37,
-    0x38,
-    0x39,
-    0x3A,
-    0x3B,
-    0x3C,
-    0x3D,
-    0x3E,
-    0x3F,
-    0x40,
-    0x41,
-    0x42,
-    0x43,
-    0x44,
+    0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB,
+    0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5,
+    0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
+    0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9,
+    0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 0x00, 0x01, 0x02, 0x03,
+    0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x05, 0x06,
+    0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10,
+    0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A,
+    0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24,
+    0x25, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
+    0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32,
+    0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C,
+    0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44
 };
 
 static const unsigned char cov_2char[64] = {
diff -Nru openssl-3.5.6/crypto/dso/dso_win32.c openssl-3.5.7/crypto/dso/dso_win32.c
--- openssl-3.5.6/crypto/dso/dso_win32.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/dso/dso_win32.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2000-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -319,7 +319,7 @@
         len++; /* 1 for ending \ */
     }
     len += file_split->dirlen;
-    if (file_split->dir && file_split->file) {
+    if (file_split->dir) {
         len++; /* 1 for ending \ */
     }
     len += file_split->filelen;
diff -Nru openssl-3.5.6/crypto/ec/curve448/scalar.c openssl-3.5.7/crypto/ec/curve448/scalar.c
--- openssl-3.5.6/crypto/ec/curve448/scalar.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/ec/curve448/scalar.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2017-2026 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright 2015-2016 Cryptography Research, Inc.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
@@ -213,6 +213,7 @@
     c448_dword_t chain = 0;
     unsigned int i;
 
+    mask = value_barrier_c448(mask);
     for (i = 0; i < C448_SCALAR_LIMBS; i++) {
         chain = (chain + a->limb[i]) + (sc_p->limb[i] & mask);
         out->limb[i] = (c448_word_t)chain;
diff -Nru openssl-3.5.6/crypto/ec/curve448/word.h openssl-3.5.7/crypto/ec/curve448/word.h
--- openssl-3.5.6/crypto/ec/curve448/word.h	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/ec/curve448/word.h	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2017-2026 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright 2014 Cryptography Research, Inc.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
@@ -18,6 +18,7 @@
 #include <stdlib.h>
 #include <openssl/e_os2.h>
 #include "curve448utils.h"
+#include "internal/constant_time.h"
 
 #ifdef INT128_MAX
 #include "arch_64/arch_intrinsics.h"
@@ -53,6 +54,12 @@
 #error "For now we only support 32- and 64-bit architectures."
 #endif
 
+#if C448_WORD_BITS == 64
+#define value_barrier_c448(x) value_barrier_64(x)
+#elif C448_WORD_BITS == 32
+#define value_barrier_c448(x) value_barrier_32(x)
+#endif
+
 /*
  * The plan on booleans: The external interface uses c448_bool_t, but this
  * might be a different size than our particular arch's word_t (and thus
diff -Nru openssl-3.5.6/crypto/ec/ec_curve.c openssl-3.5.7/crypto/ec/ec_curve.c
--- openssl-3.5.6/crypto/ec/ec_curve.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/ec/ec_curve.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2002-2026 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
@@ -2495,208 +2495,38 @@
     unsigned char data[0 + 32 * 6];
 } _EC_sm2p256v1 = {
     { NID_X9_62_prime_field, 0, 32, 1 },
-    {
-        /* no seed */
+    { /* no seed */
 
         /* p */
-        0xff,
-        0xff,
-        0xff,
-        0xfe,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        /* a */
-        0xff,
-        0xff,
-        0xff,
-        0xfe,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xfc,
-        /* b */
-        0x28,
-        0xe9,
-        0xfa,
-        0x9e,
-        0x9d,
-        0x9f,
-        0x5e,
-        0x34,
-        0x4d,
-        0x5a,
-        0x9e,
-        0x4b,
-        0xcf,
-        0x65,
-        0x09,
-        0xa7,
-        0xf3,
-        0x97,
-        0x89,
-        0xf5,
-        0x15,
-        0xab,
-        0x8f,
-        0x92,
-        0xdd,
-        0xbc,
-        0xbd,
-        0x41,
-        0x4d,
-        0x94,
-        0x0e,
-        0x93,
-        /* x */
-        0x32,
-        0xc4,
-        0xae,
-        0x2c,
-        0x1f,
-        0x19,
-        0x81,
-        0x19,
-        0x5f,
-        0x99,
-        0x04,
-        0x46,
-        0x6a,
-        0x39,
-        0xc9,
-        0x94,
-        0x8f,
-        0xe3,
-        0x0b,
-        0xbf,
-        0xf2,
-        0x66,
-        0x0b,
-        0xe1,
-        0x71,
-        0x5a,
-        0x45,
-        0x89,
-        0x33,
-        0x4c,
-        0x74,
-        0xc7,
-        /* y */
-        0xbc,
-        0x37,
-        0x36,
-        0xa2,
-        0xf4,
-        0xf6,
-        0x77,
-        0x9c,
-        0x59,
-        0xbd,
-        0xce,
-        0xe3,
-        0x6b,
-        0x69,
-        0x21,
-        0x53,
-        0xd0,
-        0xa9,
-        0x87,
-        0x7c,
-        0xc6,
-        0x2a,
-        0x47,
-        0x40,
-        0x02,
-        0xdf,
-        0x32,
-        0xe5,
-        0x21,
-        0x39,
-        0xf0,
-        0xa0,
-        /* order */
-        0xff,
-        0xff,
-        0xff,
-        0xfe,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0xff,
-        0x72,
-        0x03,
-        0xdf,
-        0x6b,
-        0x21,
-        0xc6,
-        0x05,
-        0x2b,
-        0x53,
-        0xbb,
-        0xf4,
-        0x09,
-        0x39,
-        0xd5,
-        0x41,
-        0x23,
-    }
+        0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+        0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+        0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+        0xff, 0xff,
+        /* a */
+        0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+        0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+        0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+        0xff, 0xfc,
+        /* b */
+        0x28, 0xe9, 0xfa, 0x9e, 0x9d, 0x9f, 0x5e, 0x34, 0x4d, 0x5a,
+        0x9e, 0x4b, 0xcf, 0x65, 0x09, 0xa7, 0xf3, 0x97, 0x89, 0xf5,
+        0x15, 0xab, 0x8f, 0x92, 0xdd, 0xbc, 0xbd, 0x41, 0x4d, 0x94,
+        0x0e, 0x93,
+        /* x */
+        0x32, 0xc4, 0xae, 0x2c, 0x1f, 0x19, 0x81, 0x19, 0x5f, 0x99,
+        0x04, 0x46, 0x6a, 0x39, 0xc9, 0x94, 0x8f, 0xe3, 0x0b, 0xbf,
+        0xf2, 0x66, 0x0b, 0xe1, 0x71, 0x5a, 0x45, 0x89, 0x33, 0x4c,
+        0x74, 0xc7,
+        /* y */
+        0xbc, 0x37, 0x36, 0xa2, 0xf4, 0xf6, 0x77, 0x9c, 0x59, 0xbd,
+        0xce, 0xe3, 0x6b, 0x69, 0x21, 0x53, 0xd0, 0xa9, 0x87, 0x7c,
+        0xc6, 0x2a, 0x47, 0x40, 0x02, 0xdf, 0x32, 0xe5, 0x21, 0x39,
+        0xf0, 0xa0,
+        /* order */
+        0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+        0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x72, 0x03, 0xdf, 0x6b,
+        0x21, 0xc6, 0x05, 0x2b, 0x53, 0xbb, 0xf4, 0x09, 0x39, 0xd5,
+        0x41, 0x23 }
 };
 #endif /* OPENSSL_NO_SM2 */
 
diff -Nru openssl-3.5.6/crypto/ec/ec_lib.c openssl-3.5.7/crypto/ec/ec_lib.c
--- openssl-3.5.6/crypto/ec/ec_lib.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/ec/ec_lib.c	2026-06-09 13:54:25.000000000 +0200
@@ -1683,7 +1683,8 @@
     /* generator base point */
     ptmp = OSSL_PARAM_locate_const(params, OSSL_PKEY_PARAM_EC_GENERATOR);
     if (ptmp == NULL
-        || ptmp->data_type != OSSL_PARAM_OCTET_STRING) {
+        || ptmp->data_type != OSSL_PARAM_OCTET_STRING
+        || ptmp->data_size == 0) {
         ERR_raise(ERR_LIB_EC, EC_R_INVALID_GENERATOR);
         goto err;
     }
diff -Nru openssl-3.5.6/crypto/ec/ecp_s390x_nistp.c openssl-3.5.7/crypto/ec/ecp_s390x_nistp.c
--- openssl-3.5.6/crypto/ec/ecp_s390x_nistp.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/ec/ecp_s390x_nistp.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -142,9 +142,24 @@
     const BIGNUM *privkey;
     int off;
 
+    if (dgstlen < 0) {
+        ERR_raise(ERR_LIB_EC, EC_R_INVALID_LENGTH);
+        return NULL;
+    }
+
+    if (eckey == NULL) {
+        ERR_raise(ERR_LIB_EC, EC_R_MISSING_PARAMETERS);
+        return NULL;
+    }
+
     group = EC_KEY_get0_group(eckey);
+    if (group == NULL) {
+        ERR_raise(ERR_LIB_EC, EC_R_MISSING_PARAMETERS);
+        return NULL;
+    }
+
     privkey = EC_KEY_get0_private_key(eckey);
-    if (group == NULL || privkey == NULL) {
+    if (privkey == NULL) {
         ERR_raise(ERR_LIB_EC, EC_R_MISSING_PARAMETERS);
         return NULL;
     }
@@ -239,9 +254,24 @@
     const EC_POINT *pubkey;
     int off;
 
+    if (dgstlen < 0) {
+        ERR_raise(ERR_LIB_EC, EC_R_INVALID_LENGTH);
+        return -1;
+    }
+
+    if (sig == NULL || eckey == NULL) {
+        ERR_raise(ERR_LIB_EC, EC_R_MISSING_PARAMETERS);
+        return -1;
+    }
+
     group = EC_KEY_get0_group(eckey);
+    if (group == NULL) {
+        ERR_raise(ERR_LIB_EC, EC_R_MISSING_PARAMETERS);
+        return -1;
+    }
+
     pubkey = EC_KEY_get0_public_key(eckey);
-    if (eckey == NULL || group == NULL || pubkey == NULL || sig == NULL) {
+    if (pubkey == NULL) {
         ERR_raise(ERR_LIB_EC, EC_R_MISSING_PARAMETERS);
         return -1;
     }
diff -Nru openssl-3.5.6/crypto/ec/ecp_sm2p256.c openssl-3.5.7/crypto/ec/ecp_sm2p256.c
--- openssl-3.5.6/crypto/ec/ecp_sm2p256.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/ec/ecp_sm2p256.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2023-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2023-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -46,10 +46,7 @@
 };
 
 ALIGN32 static const BN_ULONG def_yG[P256_LIMBS] = {
-    0x02df32e52139f0a0,
-    0xd0a9877cc62a4740,
-    0x59bdcee36b692153,
-    0xbc3736a2f4f6779c,
+    0x02df32e52139f0a0, 0xd0a9877cc62a4740, 0x59bdcee36b692153, 0xbc3736a2f4f6779c
 };
 #endif
 
diff -Nru openssl-3.5.6/crypto/evp/asymcipher.c openssl-3.5.7/crypto/evp/asymcipher.c
--- openssl-3.5.6/crypto/evp/asymcipher.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/evp/asymcipher.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2006-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2006-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -102,7 +102,9 @@
          * iteration we're on.
          */
         EVP_ASYM_CIPHER_free(cipher);
+        cipher = NULL;
         EVP_KEYMGMT_free(tmp_keymgmt);
+        tmp_keymgmt = NULL;
 
         switch (iter) {
         case 1:
diff -Nru openssl-3.5.6/crypto/evp/e_aes.c openssl-3.5.7/crypto/evp/e_aes.c
--- openssl-3.5.6/crypto/evp/e_aes.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/evp/e_aes.c	2026-06-09 13:54:25.000000000 +0200
@@ -1466,7 +1466,7 @@
         return 1;
 
     case EVP_CTRL_AEAD_SET_IVLEN:
-        if (arg <= 0)
+        if (arg <= 0 || arg > EVP_MAX_IV_LENGTH)
             return 0;
 
         if (arg != 12) {
diff -Nru openssl-3.5.6/crypto/evp/encode.c openssl-3.5.7/crypto/evp/encode.c
--- openssl-3.5.6/crypto/evp/encode.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/evp/encode.c	2026-06-09 13:54:25.000000000 +0200
@@ -67,265 +67,35 @@
 #define B64_BASE64(a) (!B64_NOT_BASE64(a))
 
 static const unsigned char data_ascii2bin[128] = {
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xE0,
-    0xF0,
-    0xFF,
-    0xFF,
-    0xF1,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xE0,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0x3E,
-    0xFF,
-    0xF2,
-    0xFF,
-    0x3F,
-    0x34,
-    0x35,
-    0x36,
-    0x37,
-    0x38,
-    0x39,
-    0x3A,
-    0x3B,
-    0x3C,
-    0x3D,
-    0xFF,
-    0xFF,
-    0xFF,
-    0x00,
-    0xFF,
-    0xFF,
-    0xFF,
-    0x00,
-    0x01,
-    0x02,
-    0x03,
-    0x04,
-    0x05,
-    0x06,
-    0x07,
-    0x08,
-    0x09,
-    0x0A,
-    0x0B,
-    0x0C,
-    0x0D,
-    0x0E,
-    0x0F,
-    0x10,
-    0x11,
-    0x12,
-    0x13,
-    0x14,
-    0x15,
-    0x16,
-    0x17,
-    0x18,
-    0x19,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0x1A,
-    0x1B,
-    0x1C,
-    0x1D,
-    0x1E,
-    0x1F,
-    0x20,
-    0x21,
-    0x22,
-    0x23,
-    0x24,
-    0x25,
-    0x26,
-    0x27,
-    0x28,
-    0x29,
-    0x2A,
-    0x2B,
-    0x2C,
-    0x2D,
-    0x2E,
-    0x2F,
-    0x30,
-    0x31,
-    0x32,
-    0x33,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0,
+    0xF0, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0xFF, 0xFF, 0x3E, 0xFF, 0xF2, 0xFF, 0x3F, 0x34, 0x35,
+    0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0xFF, 0xFF,
+    0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x02, 0x03, 0x04,
+    0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E,
+    0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
+    0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0x1B, 0x1C,
+    0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26,
+    0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30,
+    0x31, 0x32, 0x33, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
 };
 
 static const unsigned char srpdata_ascii2bin[128] = {
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xE0,
-    0xF0,
-    0xFF,
-    0xFF,
-    0xF1,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xE0,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xF2,
-    0x3E,
-    0x3F,
-    0x00,
-    0x01,
-    0x02,
-    0x03,
-    0x04,
-    0x05,
-    0x06,
-    0x07,
-    0x08,
-    0x09,
-    0xFF,
-    0xFF,
-    0xFF,
-    0x00,
-    0xFF,
-    0xFF,
-    0xFF,
-    0x0A,
-    0x0B,
-    0x0C,
-    0x0D,
-    0x0E,
-    0x0F,
-    0x10,
-    0x11,
-    0x12,
-    0x13,
-    0x14,
-    0x15,
-    0x16,
-    0x17,
-    0x18,
-    0x19,
-    0x1A,
-    0x1B,
-    0x1C,
-    0x1D,
-    0x1E,
-    0x1F,
-    0x20,
-    0x21,
-    0x22,
-    0x23,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0x24,
-    0x25,
-    0x26,
-    0x27,
-    0x28,
-    0x29,
-    0x2A,
-    0x2B,
-    0x2C,
-    0x2D,
-    0x2E,
-    0x2F,
-    0x30,
-    0x31,
-    0x32,
-    0x33,
-    0x34,
-    0x35,
-    0x36,
-    0x37,
-    0x38,
-    0x39,
-    0x3A,
-    0x3B,
-    0x3C,
-    0x3D,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
-    0xFF,
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0,
+    0xF0, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x3E, 0x3F, 0x00, 0x01,
+    0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0xFF, 0xFF,
+    0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E,
+    0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
+    0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22,
+    0x23, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x24, 0x25, 0x26,
+    0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30,
+    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A,
+    0x3B, 0x3C, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
 };
 
 #ifndef CHARSET_EBCDIC
diff -Nru openssl-3.5.6/crypto/evp/evp_lib.c openssl-3.5.7/crypto/evp/evp_lib.c
--- openssl-3.5.6/crypto/evp/evp_lib.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/evp/evp_lib.c	2026-06-09 13:54:25.000000000 +0200
@@ -297,7 +297,7 @@
     case NID_des_ede3_cfb8:
     case NID_des_ede3_cfb1:
 
-        return NID_des_cfb64;
+        return NID_des_ede3_cfb64;
 
     default:
 #ifdef FIPS_MODULE
diff -Nru openssl-3.5.6/crypto/evp/kem.c openssl-3.5.7/crypto/evp/kem.c
--- openssl-3.5.6/crypto/evp/kem.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/evp/kem.c	2026-06-09 13:54:25.000000000 +0200
@@ -97,7 +97,9 @@
          * iteration we're on.
          */
         EVP_KEM_free(kem);
+        kem = NULL;
         EVP_KEYMGMT_free(tmp_keymgmt);
+        tmp_keymgmt = NULL;
 
         switch (iter) {
         case 1:
diff -Nru openssl-3.5.6/crypto/evp/m_sigver.c openssl-3.5.7/crypto/evp/m_sigver.c
--- openssl-3.5.6/crypto/evp/m_sigver.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/evp/m_sigver.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2006-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2006-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -139,7 +139,9 @@
          * iteration we're on.
          */
         EVP_SIGNATURE_free(signature);
+        signature = NULL;
         EVP_KEYMGMT_free(tmp_keymgmt);
+        tmp_keymgmt = NULL;
 
         switch (iter) {
         case 1:
diff -Nru openssl-3.5.6/crypto/evp/signature.c openssl-3.5.7/crypto/evp/signature.c
--- openssl-3.5.6/crypto/evp/signature.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/evp/signature.c	2026-06-09 13:54:25.000000000 +0200
@@ -726,7 +726,9 @@
              * iteration we're on.
              */
             EVP_SIGNATURE_free(signature);
+            signature = NULL;
             EVP_KEYMGMT_free(tmp_keymgmt);
+            tmp_keymgmt = NULL;
 
             switch (iter) {
             case 1:
diff -Nru openssl-3.5.6/crypto/ffc/ffc_params.c openssl-3.5.7/crypto/ffc/ffc_params.c
--- openssl-3.5.6/crypto/ffc/ffc_params.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/ffc/ffc_params.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -182,8 +182,10 @@
     if (!ffc_bn_cpy(&dst->p, src->p)
         || !ffc_bn_cpy(&dst->g, src->g)
         || !ffc_bn_cpy(&dst->q, src->q)
-        || !ffc_bn_cpy(&dst->j, src->j))
+        || !ffc_bn_cpy(&dst->j, src->j)) {
+        ossl_ffc_params_cleanup(dst);
         return 0;
+    }
 
     dst->mdname = src->mdname;
     dst->mdprops = src->mdprops;
@@ -191,8 +193,10 @@
     dst->seedlen = src->seedlen;
     if (src->seed != NULL) {
         dst->seed = OPENSSL_memdup(src->seed, src->seedlen);
-        if (dst->seed == NULL)
+        if (dst->seed == NULL) {
+            ossl_ffc_params_cleanup(dst);
             return 0;
+        }
     } else {
         dst->seed = NULL;
     }
diff -Nru openssl-3.5.6/crypto/hashtable/hashtable.c openssl-3.5.7/crypto/hashtable/hashtable.c
--- openssl-3.5.6/crypto/hashtable/hashtable.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/hashtable/hashtable.c	2026-06-09 13:54:25.000000000 +0200
@@ -285,6 +285,7 @@
 {
     struct ht_mutable_data_st *newmd = NULL;
     struct ht_mutable_data_st *oldmd = NULL;
+    CRYPTO_RCU_CB_ITEM *cbi = NULL;
 
     newmd = OPENSSL_zalloc(sizeof(*newmd));
     if (newmd == NULL)
@@ -299,6 +300,13 @@
 
     newmd->neighborhood_mask = DEFAULT_NEIGH_LEN - 1;
 
+    cbi = ossl_rcu_cb_item_new();
+    if (cbi == NULL) {
+        OPENSSL_free(newmd->neighborhood_ptr_to_free);
+        OPENSSL_free(newmd);
+        return 0;
+    }
+
     /* Swap the old and new mutable data sets */
     oldmd = ossl_rcu_deref(&h->md);
     ossl_rcu_assign_ptr(&h->md, &newmd);
@@ -307,8 +315,9 @@
     h->wpd.value_count = 0;
     h->wpd.neighborhood_len = DEFAULT_NEIGH_LEN;
 
-    ossl_rcu_call(h->lock, free_oldmd, oldmd);
+    ossl_rcu_call(h->lock, cbi, free_oldmd, oldmd);
     h->wpd.need_sync = 1;
+
     return 1;
 }
 
@@ -319,17 +328,23 @@
 
 void ossl_ht_free(HT *h)
 {
+    int flush_ok;
+
     if (h == NULL)
         return;
 
     ossl_ht_write_lock(h);
-    ossl_ht_flush_internal(h);
+    flush_ok = ossl_ht_flush_internal(h);
     ossl_ht_write_unlock(h);
     /* Freeing the lock does a final sync for us */
     CRYPTO_THREAD_lock_free(h->atomic_lock);
     ossl_rcu_lock_free(h->lock);
-    OPENSSL_free(h->md->neighborhood_ptr_to_free);
-    OPENSSL_free(h->md);
+    if (flush_ok) {
+        OPENSSL_free(h->md->neighborhood_ptr_to_free);
+        OPENSSL_free(h->md);
+    } else {
+        free_oldmd(h->md);
+    }
     OPENSSL_free(h);
     return;
 }
@@ -423,6 +438,7 @@
 {
     struct ht_mutable_data_st *newmd;
     struct ht_mutable_data_st *oldmd = ossl_rcu_deref(&h->md);
+    CRYPTO_RCU_CB_ITEM *cbi = NULL;
     int rc = 0;
     uint64_t oldi, oldj, newi, newj;
     uint64_t oldhash;
@@ -469,12 +485,20 @@
             }
             if (rehashed == 0) {
                 /* we ran out of space in a neighborhood, grow again */
-                OPENSSL_free(newmd->neighborhoods);
+                OPENSSL_free(newmd->neighborhood_ptr_to_free);
                 OPENSSL_free(newmd);
                 return grow_hashtable(h, newsize);
             }
         }
     }
+
+    /*
+     * Pre allocate the rcu callback item before assigning the newmd.
+     */
+    cbi = ossl_rcu_cb_item_new();
+    if (cbi == NULL)
+        goto out_free;
+
     /*
      * Now that our entries are all hashed into the new bucket list
      * update our bucket_len and target_max_load
@@ -485,7 +509,7 @@
      * Now we replace the old mutable data with the new
      */
     ossl_rcu_assign_ptr(&h->md, &newmd);
-    ossl_rcu_call(h->lock, free_old_neigh_table, oldmd);
+    ossl_rcu_call(h->lock, cbi, free_old_neigh_table, oldmd);
     h->wpd.need_sync = 1;
     /*
      * And we're done
@@ -495,7 +519,7 @@
 out:
     return rc;
 out_free:
-    OPENSSL_free(newmd->neighborhoods);
+    OPENSSL_free(newmd->neighborhood_ptr_to_free);
     OPENSSL_free(newmd);
     goto out;
 }
@@ -539,6 +563,7 @@
     HT_VALUE *ival;
     size_t empty_idx = SIZE_MAX;
     int lockless_reads = h->config.lockless_reads;
+    CRYPTO_RCU_CB_ITEM *cbi;
 
     do {
         PREFETCH_NEIGHBORHOOD(md->neighborhoods[neigh_idx]);
@@ -561,13 +586,16 @@
                     return 0;
                 }
                 /* Do a replacement */
+                cbi = ossl_rcu_cb_item_new();
+                if (cbi == NULL)
+                    return 0;
                 if (!CRYPTO_atomic_store(&md->neighborhoods[neigh_idx].entries[j].hash,
                         hash, h->atomic_lock))
                     return 0;
                 *olddata = (HT_VALUE *)md->neighborhoods[neigh_idx].entries[j].value;
                 ossl_rcu_assign_ptr(&md->neighborhoods[neigh_idx].entries[j].value,
                     &newval);
-                ossl_rcu_call(h->lock, free_old_ht_value, *olddata);
+                ossl_rcu_call(h->lock, cbi, free_old_ht_value, *olddata);
                 h->wpd.need_sync = 1;
                 return 1;
             }
@@ -646,7 +674,7 @@
 
     for (i = 0;
         (rc = ossl_ht_insert_locked(h, hash, newval, olddata)) == -1
-        && i < 4;
+        && i <= (int)NEIGHBORHOOD_LEN;
         ++i)
         if (!grow_hashtable(h, h->wpd.neighborhood_len)) {
             rc = -1;
@@ -730,19 +758,20 @@
             continue;
         if (compare_hash(hash, h->md->neighborhoods[neigh_idx].entries[j].hash)
             && match_key(key, &v->value.key)) {
+            CRYPTO_RCU_CB_ITEM *cbi = ossl_rcu_cb_item_new();
+            if (cbi == NULL)
+                break;
             if (!CRYPTO_atomic_store(&h->md->neighborhoods[neigh_idx].entries[j].hash,
                     0, h->atomic_lock))
                 break;
             h->wpd.value_count--;
             ossl_rcu_assign_ptr(&h->md->neighborhoods[neigh_idx].entries[j].value,
                 &nv);
+            ossl_rcu_call(h->lock, cbi, free_old_entry, v);
+            h->wpd.need_sync = 1;
             rc = 1;
             break;
         }
     }
-    if (rc == 1) {
-        ossl_rcu_call(h->lock, free_old_entry, v);
-        h->wpd.need_sync = 1;
-    }
     return rc;
 }
diff -Nru openssl-3.5.6/crypto/hpke/hpke_util.c openssl-3.5.7/crypto/hpke/hpke_util.c
--- openssl-3.5.6/crypto/hpke/hpke_util.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/hpke/hpke_util.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -406,9 +406,8 @@
     if (kctx != NULL && mdname != NULL) {
         OSSL_PARAM params[3], *p = params;
 
-        if (mdname != NULL)
-            *p++ = OSSL_PARAM_construct_utf8_string(OSSL_KDF_PARAM_DIGEST,
-                (char *)mdname, 0);
+        *p++ = OSSL_PARAM_construct_utf8_string(OSSL_KDF_PARAM_DIGEST,
+            (char *)mdname, 0);
         if (propq != NULL)
             *p++ = OSSL_PARAM_construct_utf8_string(OSSL_KDF_PARAM_PROPERTIES,
                 (char *)propq, 0);
diff -Nru openssl-3.5.6/crypto/http/http_client.c openssl-3.5.7/crypto/http/http_client.c
--- openssl-3.5.6/crypto/http/http_client.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/http/http_client.c	2026-06-09 13:54:25.000000000 +0200
@@ -95,6 +95,16 @@
 
 /* Low-level HTTP API implementation */
 
+static int no_crlf(const char *component, const char *value)
+{
+    if (value != NULL && strpbrk(value, "\r\n") != NULL) {
+        ERR_raise_data(ERR_LIB_HTTP, ERR_R_PASSED_INVALID_ARGUMENT,
+            "CR or LF character in %s", component);
+        return 0;
+    }
+    return 1;
+}
+
 OSSL_HTTP_REQ_CTX *OSSL_HTTP_REQ_CTX_new(BIO *wbio, BIO *rbio, int buf_size)
 {
     OSSL_HTTP_REQ_CTX *rctx;
@@ -184,6 +194,10 @@
         ERR_raise(ERR_LIB_HTTP, ERR_R_PASSED_NULL_PARAMETER);
         return 0;
     }
+    if (!no_crlf("server", server)
+        || !no_crlf("port", port)
+        || !no_crlf("path", path))
+        return 0;
     BIO_free(rctx->mem);
     if ((rctx->mem = BIO_new(BIO_s_mem())) == NULL)
         return 0;
@@ -237,6 +251,9 @@
         ERR_raise(ERR_LIB_HTTP, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
         return 0;
     }
+    if (!no_crlf("header name", name)
+        || !no_crlf("header value", value))
+        return 0;
 
     if (BIO_puts(rctx->mem, name) <= 0)
         return 0;
@@ -310,7 +327,7 @@
     } else {
         if (HAS_CASE_PREFIX(content_type, "text/"))
             rctx->text = 1;
-        if (BIO_printf(rctx->mem, "Content-Type: %s\r\n", content_type) <= 0)
+        if (!OSSL_HTTP_REQ_CTX_add1_header(rctx, "Content-Type", content_type))
             return 0;
     }
 
@@ -1442,11 +1459,11 @@
 {
 #undef BUF_SIZE
 #define BUF_SIZE (8 * 1024)
-    char *mbuf = OPENSSL_malloc(BUF_SIZE);
+    char *mbuf = NULL;
     char *mbufp;
     int read_len = 0;
     int ret = 0;
-    BIO *fbio = BIO_new(BIO_f_buffer());
+    BIO *fbio = NULL;
     int rv;
     time_t max_time = timeout > 0 ? time(NULL) + timeout : 0;
 
@@ -1457,8 +1474,11 @@
     }
     if (port == NULL || *port == '\0')
         port = OSSL_HTTPS_PORT;
+    if (!no_crlf("server", server) || !no_crlf("port", port))
+        goto end;
 
-    if (mbuf == NULL || fbio == NULL) {
+    if ((mbuf = OPENSSL_malloc(BUF_SIZE)) == NULL
+        || (fbio = BIO_new(BIO_f_buffer())) == NULL) {
         BIO_printf(bio_err /* may be NULL */, "%s: out of memory", prog);
         goto end;
     }
diff -Nru openssl-3.5.6/crypto/http/http_lib.c openssl-3.5.7/crypto/http/http_lib.c
--- openssl-3.5.6/crypto/http/http_lib.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/http/http_lib.c	2026-06-09 13:54:25.000000000 +0200
@@ -271,6 +271,9 @@
         server = host;
     }
 
+    if (sl == 0)
+        return 1;
+
     /*
      * using environment variable names, both lowercase and uppercase variants,
      * compatible with other HTTP client implementations like wget, curl and git
diff -Nru openssl-3.5.6/crypto/initthread.c openssl-3.5.7/crypto/initthread.c
--- openssl-3.5.6/crypto/initthread.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/initthread.c	2026-06-09 13:54:25.000000000 +0200
@@ -121,6 +121,16 @@
     return hands;
 }
 
+int CRYPTO_THREAD_init_local(CRYPTO_THREAD_LOCAL *key, void (*cleanup)(void *))
+{
+
+#ifndef FIPS_MODULE
+    if (!ossl_init_thread())
+        return 0;
+#endif
+    return ossl_thread_init_local(key, cleanup);
+}
+
 #ifndef FIPS_MODULE
 /*
  * Since per-thread-specific-data destructors are not universally
@@ -200,36 +210,18 @@
 }
 
 static CRYPTO_ONCE ossl_init_thread_runonce = CRYPTO_ONCE_STATIC_INIT;
-/* MSVC linker can use other segment for uninitialized (zeroed) variables */
-#if defined(OPENSSL_SYS_WINDOWS)
-static CRYPTO_THREAD_ID recursion_guard = (CRYPTO_THREAD_ID)-1;
-#elif defined(OPENSSL_SYS_TANDEM) && (defined(_PUT_MODEL_) || defined(_KLT_MODEL_))
-static CRYPTO_THREAD_ID recursion_guard = { (void *)-1, (short)-1, (short)-1 };
-#else
-static CRYPTO_THREAD_ID recursion_guard = (CRYPTO_THREAD_ID)0;
-#endif
 
 DEFINE_RUN_ONCE_STATIC(ossl_init_thread_once)
 {
-    /* CRYPTO_THREAD_init_local() can call ossl_init_threads() again */
-    recursion_guard = CRYPTO_THREAD_get_current_id();
-    if (!CRYPTO_THREAD_init_local(&destructor_key.value,
+    if (!ossl_thread_init_local(&destructor_key.value,
             init_thread_destructor))
         return 0;
 
-#if defined(OPENSSL_SYS_TANDEM)
-    memset(&recursion_guard, 0, sizeof(recursion_guard));
-#else
-    recursion_guard = (CRYPTO_THREAD_ID)0;
-#endif
     return 1;
 }
 
 int ossl_init_thread(void)
 {
-    if (CRYPTO_THREAD_compare_id(recursion_guard,
-            CRYPTO_THREAD_get_current_id()))
-        return 1;
     if (!RUN_ONCE(&ossl_init_thread_runonce, ossl_init_thread_once))
         return 0;
     return 1;
diff -Nru openssl-3.5.6/crypto/md2/md2_dgst.c openssl-3.5.7/crypto/md2/md2_dgst.c
--- openssl-3.5.6/crypto/md2/md2_dgst.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/md2/md2_dgst.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -32,262 +32,32 @@
  * a random byte string.
  */
 static const MD2_INT S[256] = {
-    0x29,
-    0x2E,
-    0x43,
-    0xC9,
-    0xA2,
-    0xD8,
-    0x7C,
-    0x01,
-    0x3D,
-    0x36,
-    0x54,
-    0xA1,
-    0xEC,
-    0xF0,
-    0x06,
-    0x13,
-    0x62,
-    0xA7,
-    0x05,
-    0xF3,
-    0xC0,
-    0xC7,
-    0x73,
-    0x8C,
-    0x98,
-    0x93,
-    0x2B,
-    0xD9,
-    0xBC,
-    0x4C,
-    0x82,
-    0xCA,
-    0x1E,
-    0x9B,
-    0x57,
-    0x3C,
-    0xFD,
-    0xD4,
-    0xE0,
-    0x16,
-    0x67,
-    0x42,
-    0x6F,
-    0x18,
-    0x8A,
-    0x17,
-    0xE5,
-    0x12,
-    0xBE,
-    0x4E,
-    0xC4,
-    0xD6,
-    0xDA,
-    0x9E,
-    0xDE,
-    0x49,
-    0xA0,
-    0xFB,
-    0xF5,
-    0x8E,
-    0xBB,
-    0x2F,
-    0xEE,
-    0x7A,
-    0xA9,
-    0x68,
-    0x79,
-    0x91,
-    0x15,
-    0xB2,
-    0x07,
-    0x3F,
-    0x94,
-    0xC2,
-    0x10,
-    0x89,
-    0x0B,
-    0x22,
-    0x5F,
-    0x21,
-    0x80,
-    0x7F,
-    0x5D,
-    0x9A,
-    0x5A,
-    0x90,
-    0x32,
-    0x27,
-    0x35,
-    0x3E,
-    0xCC,
-    0xE7,
-    0xBF,
-    0xF7,
-    0x97,
-    0x03,
-    0xFF,
-    0x19,
-    0x30,
-    0xB3,
-    0x48,
-    0xA5,
-    0xB5,
-    0xD1,
-    0xD7,
-    0x5E,
-    0x92,
-    0x2A,
-    0xAC,
-    0x56,
-    0xAA,
-    0xC6,
-    0x4F,
-    0xB8,
-    0x38,
-    0xD2,
-    0x96,
-    0xA4,
-    0x7D,
-    0xB6,
-    0x76,
-    0xFC,
-    0x6B,
-    0xE2,
-    0x9C,
-    0x74,
-    0x04,
-    0xF1,
-    0x45,
-    0x9D,
-    0x70,
-    0x59,
-    0x64,
-    0x71,
-    0x87,
-    0x20,
-    0x86,
-    0x5B,
-    0xCF,
-    0x65,
-    0xE6,
-    0x2D,
-    0xA8,
-    0x02,
-    0x1B,
-    0x60,
-    0x25,
-    0xAD,
-    0xAE,
-    0xB0,
-    0xB9,
-    0xF6,
-    0x1C,
-    0x46,
-    0x61,
-    0x69,
-    0x34,
-    0x40,
-    0x7E,
-    0x0F,
-    0x55,
-    0x47,
-    0xA3,
-    0x23,
-    0xDD,
-    0x51,
-    0xAF,
-    0x3A,
-    0xC3,
-    0x5C,
-    0xF9,
-    0xCE,
-    0xBA,
-    0xC5,
-    0xEA,
-    0x26,
-    0x2C,
-    0x53,
-    0x0D,
-    0x6E,
-    0x85,
-    0x28,
-    0x84,
-    0x09,
-    0xD3,
-    0xDF,
-    0xCD,
-    0xF4,
-    0x41,
-    0x81,
-    0x4D,
-    0x52,
-    0x6A,
-    0xDC,
-    0x37,
-    0xC8,
-    0x6C,
-    0xC1,
-    0xAB,
-    0xFA,
-    0x24,
-    0xE1,
-    0x7B,
-    0x08,
-    0x0C,
-    0xBD,
-    0xB1,
-    0x4A,
-    0x78,
-    0x88,
-    0x95,
-    0x8B,
-    0xE3,
-    0x63,
-    0xE8,
-    0x6D,
-    0xE9,
-    0xCB,
-    0xD5,
-    0xFE,
-    0x3B,
-    0x00,
-    0x1D,
-    0x39,
-    0xF2,
-    0xEF,
-    0xB7,
-    0x0E,
-    0x66,
-    0x58,
-    0xD0,
-    0xE4,
-    0xA6,
-    0x77,
-    0x72,
-    0xF8,
-    0xEB,
-    0x75,
-    0x4B,
-    0x0A,
-    0x31,
-    0x44,
-    0x50,
-    0xB4,
-    0x8F,
-    0xED,
-    0x1F,
-    0x1A,
-    0xDB,
-    0x99,
-    0x8D,
-    0x33,
-    0x9F,
-    0x11,
-    0x83,
-    0x14,
+    0x29, 0x2E, 0x43, 0xC9, 0xA2, 0xD8, 0x7C, 0x01, 0x3D, 0x36,
+    0x54, 0xA1, 0xEC, 0xF0, 0x06, 0x13, 0x62, 0xA7, 0x05, 0xF3,
+    0xC0, 0xC7, 0x73, 0x8C, 0x98, 0x93, 0x2B, 0xD9, 0xBC, 0x4C,
+    0x82, 0xCA, 0x1E, 0x9B, 0x57, 0x3C, 0xFD, 0xD4, 0xE0, 0x16,
+    0x67, 0x42, 0x6F, 0x18, 0x8A, 0x17, 0xE5, 0x12, 0xBE, 0x4E,
+    0xC4, 0xD6, 0xDA, 0x9E, 0xDE, 0x49, 0xA0, 0xFB, 0xF5, 0x8E,
+    0xBB, 0x2F, 0xEE, 0x7A, 0xA9, 0x68, 0x79, 0x91, 0x15, 0xB2,
+    0x07, 0x3F, 0x94, 0xC2, 0x10, 0x89, 0x0B, 0x22, 0x5F, 0x21,
+    0x80, 0x7F, 0x5D, 0x9A, 0x5A, 0x90, 0x32, 0x27, 0x35, 0x3E,
+    0xCC, 0xE7, 0xBF, 0xF7, 0x97, 0x03, 0xFF, 0x19, 0x30, 0xB3,
+    0x48, 0xA5, 0xB5, 0xD1, 0xD7, 0x5E, 0x92, 0x2A, 0xAC, 0x56,
+    0xAA, 0xC6, 0x4F, 0xB8, 0x38, 0xD2, 0x96, 0xA4, 0x7D, 0xB6,
+    0x76, 0xFC, 0x6B, 0xE2, 0x9C, 0x74, 0x04, 0xF1, 0x45, 0x9D,
+    0x70, 0x59, 0x64, 0x71, 0x87, 0x20, 0x86, 0x5B, 0xCF, 0x65,
+    0xE6, 0x2D, 0xA8, 0x02, 0x1B, 0x60, 0x25, 0xAD, 0xAE, 0xB0,
+    0xB9, 0xF6, 0x1C, 0x46, 0x61, 0x69, 0x34, 0x40, 0x7E, 0x0F,
+    0x55, 0x47, 0xA3, 0x23, 0xDD, 0x51, 0xAF, 0x3A, 0xC3, 0x5C,
+    0xF9, 0xCE, 0xBA, 0xC5, 0xEA, 0x26, 0x2C, 0x53, 0x0D, 0x6E,
+    0x85, 0x28, 0x84, 0x09, 0xD3, 0xDF, 0xCD, 0xF4, 0x41, 0x81,
+    0x4D, 0x52, 0x6A, 0xDC, 0x37, 0xC8, 0x6C, 0xC1, 0xAB, 0xFA,
+    0x24, 0xE1, 0x7B, 0x08, 0x0C, 0xBD, 0xB1, 0x4A, 0x78, 0x88,
+    0x95, 0x8B, 0xE3, 0x63, 0xE8, 0x6D, 0xE9, 0xCB, 0xD5, 0xFE,
+    0x3B, 0x00, 0x1D, 0x39, 0xF2, 0xEF, 0xB7, 0x0E, 0x66, 0x58,
+    0xD0, 0xE4, 0xA6, 0x77, 0x72, 0xF8, 0xEB, 0x75, 0x4B, 0x0A,
+    0x31, 0x44, 0x50, 0xB4, 0x8F, 0xED, 0x1F, 0x1A, 0xDB, 0x99,
+    0x8D, 0x33, 0x9F, 0x11, 0x83, 0x14
 };
 
 const char *MD2_options(void)
diff -Nru openssl-3.5.6/crypto/ml_dsa/ml_dsa_key.c openssl-3.5.7/crypto/ml_dsa/ml_dsa_key.c
--- openssl-3.5.6/crypto/ml_dsa/ml_dsa_key.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/ml_dsa/ml_dsa_key.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -274,7 +274,7 @@
         if (!key_checked
             && (selection & OSSL_KEYMGMT_SELECT_PRIVATE_KEY) != 0) {
             if (key1->priv_encoding != NULL && key2->priv_encoding != NULL) {
-                if (memcmp(key1->priv_encoding, key2->priv_encoding,
+                if (CRYPTO_memcmp(key1->priv_encoding, key2->priv_encoding,
                         key1->params->sk_len)
                     != 0)
                     return 0;
diff -Nru openssl-3.5.6/crypto/modes/wrap128.c openssl-3.5.7/crypto/modes/wrap128.c
--- openssl-3.5.6/crypto/modes/wrap128.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/modes/wrap128.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2013-2018 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2013-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -18,14 +18,7 @@
 
 /** RFC 3394 section 2.2.3.1 Default Initial Value */
 static const unsigned char default_iv[] = {
-    0xA6,
-    0xA6,
-    0xA6,
-    0xA6,
-    0xA6,
-    0xA6,
-    0xA6,
-    0xA6,
+    0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6
 };
 
 /** RFC 5649 section 3 Alternative Initial Value 32-bit constant */
@@ -178,7 +171,9 @@
  *
  *  @param[in]  key    Key value.
  *  @param[in]  icv    (Non-standard) IV, 4 bytes. NULL = use default_aiv.
- *  @param[out] out    Ciphertext. Minimal buffer length = (inlen + 15) bytes.
+ *  @param[out] out    Ciphertext. Minimal buffer length =
+ *                     (inlen rounded up to 8 + 8) bytes, i.e.
+ *                     ((inlen + 7) / 8) * 8 + 8.
  *                     Input and output buffers can overlap if block function
  *                     supports that.
  *  @param[in]  in     Plaintext as n 64-bit blocks, n >= 2.
diff -Nru openssl-3.5.6/crypto/objects/obj_dat.c openssl-3.5.7/crypto/objects/obj_dat.c
--- openssl-3.5.6/crypto/objects/obj_dat.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/objects/obj_dat.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -705,8 +705,8 @@
      */
     if (p == NULL) {
         const char *base_ = base;
-        int l, h, i = 0, c = 0;
-        char *p1;
+        int i = 0, c = 0;
+        const char *p1;
 
         for (i = 0; i < num; ++i) {
             p1 = &(base_[i * size]);
diff -Nru openssl-3.5.6/crypto/objects/obj_lib.c openssl-3.5.7/crypto/objects/obj_lib.c
--- openssl-3.5.6/crypto/objects/obj_lib.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/objects/obj_lib.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -58,5 +58,7 @@
     ret = (a->length - b->length);
     if (ret)
         return ret;
+    if (a->length == 0)
+        return 0;
     return memcmp(a->data, b->data, a->length);
 }
diff -Nru openssl-3.5.6/crypto/param_build.c openssl-3.5.7/crypto/param_build.c
--- openssl-3.5.6/crypto/param_build.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/param_build.c	2026-06-09 13:54:25.000000000 +0200
@@ -345,7 +345,7 @@
 {
     OSSL_PARAM_BLD_DEF *pd;
 
-    if (bld == NULL || key == NULL) {
+    if (bld == NULL || key == NULL || buf == NULL) {
         ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER);
         return 0;
     }
@@ -365,7 +365,7 @@
     OSSL_PARAM_BLD_DEF *pd;
     int secure;
 
-    if (bld == NULL || key == NULL || buf == NULL) {
+    if (bld == NULL || key == NULL || (buf == NULL && bsize != 0)) {
         ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER);
         return 0;
     }
@@ -383,7 +383,7 @@
 {
     OSSL_PARAM_BLD_DEF *pd;
 
-    if (bld == NULL || key == NULL) {
+    if (bld == NULL || key == NULL || (buf == NULL && bsize != 0)) {
         ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER);
         return 0;
     }
diff -Nru openssl-3.5.6/crypto/param_build_set.c openssl-3.5.7/crypto/param_build_set.c
--- openssl-3.5.6/crypto/param_build_set.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/param_build_set.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2020-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -73,6 +73,11 @@
         return OSSL_PARAM_BLD_push_BN_pad(bld, key, bn, sz);
     p = OSSL_PARAM_locate(p, key);
     if (p != NULL) {
+        /* Size probe: NULL data means "report the required size". */
+        if (p->data == NULL) {
+            p->return_size = sz;
+            return 1;
+        }
         if (sz > p->data_size) {
             ERR_raise(ERR_LIB_CRYPTO, CRYPTO_R_TOO_SMALL_BUFFER);
             return 0;
diff -Nru openssl-3.5.6/crypto/pkcs12/p12_decr.c openssl-3.5.7/crypto/pkcs12/p12_decr.c
--- openssl-3.5.6/crypto/pkcs12/p12_decr.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/pkcs12/p12_decr.c	2026-06-09 13:54:25.000000000 +0200
@@ -103,7 +103,7 @@
         if (EVP_CIPHER_CTX_is_encrypting(ctx)) {
             if (EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_GET_TAG,
                     (int)mac_len, out + outlen)
-                < 0) {
+                <= 0) {
                 OPENSSL_free(out);
                 out = NULL;
                 ERR_raise(ERR_LIB_PKCS12, ERR_R_INTERNAL_ERROR);
diff -Nru openssl-3.5.6/crypto/pkcs12/p12_mutl.c openssl-3.5.7/crypto/pkcs12/p12_mutl.c
--- openssl-3.5.6/crypto/pkcs12/p12_mutl.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/pkcs12/p12_mutl.c	2026-06-09 13:54:25.000000000 +0200
@@ -144,11 +144,13 @@
     }
     pbkdf2_salt = pbkdf2_param->salt->value.octet_string;
 
-    /* RFC 9579 specifies missing key length as invalid */
+    /* RFC 9879 specifies missing key length as invalid */
     if (pbkdf2_param->keylength != NULL)
         keylen = ASN1_INTEGER_get(pbkdf2_param->keylength);
-    if (keylen <= 0 || keylen > EVP_MAX_MD_SIZE) {
-        ERR_raise(ERR_LIB_PKCS12, PKCS12_R_PARSE_ERROR);
+    /* RFC 9879 specifies too short key length as untrustworthy too */
+    if (keylen < 20 || keylen > EVP_MAX_MD_SIZE) {
+        ERR_raise_data(ERR_LIB_PKCS12, PKCS12_R_PARSE_ERROR,
+            "Invalid Key length (%d is not in the range 20..64)", keylen);
         goto err;
     }
 
diff -Nru openssl-3.5.6/crypto/pkcs7/pk7_doit.c openssl-3.5.7/crypto/pkcs7/pk7_doit.c
--- openssl-3.5.6/crypto/pkcs7/pk7_doit.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/pkcs7/pk7_doit.c	2026-06-09 13:54:25.000000000 +0200
@@ -203,13 +203,6 @@
     if (EVP_PKEY_decrypt_init(pctx) <= 0)
         goto err;
 
-    if (EVP_PKEY_is_a(pkey, "RSA"))
-        /* upper layer pkcs7 code incorrectly assumes that a successful RSA
-         * decryption means that the key matches ciphertext (which never
-         * was the case, implicit rejection or not), so to make it work
-         * disable implicit rejection for RSA keys */
-        EVP_PKEY_CTX_ctrl_str(pctx, "rsa_pkcs1_implicit_rejection", "0");
-
     ret = evp_pkey_decrypt_alloc(pctx, &ek, &eklen, fixlen,
         ri->enc_key->data, ri->enc_key->length);
     if (ret <= 0)
diff -Nru openssl-3.5.6/crypto/pkcs7/pk7_smime.c openssl-3.5.7/crypto/pkcs7/pk7_smime.c
--- openssl-3.5.6/crypto/pkcs7/pk7_smime.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/pkcs7/pk7_smime.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1999-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -222,6 +222,7 @@
     int i, j = 0, k, ret = 0;
     BIO *p7bio = NULL;
     BIO *tmpout = NULL;
+    BIO *next = NULL;
     const PKCS7_CTX *p7_ctx;
 
     if (p7 == NULL) {
@@ -352,9 +353,11 @@
         BIO_free(tmpout);
     X509_STORE_CTX_free(cert_ctx);
     OPENSSL_free(buf);
-    if (indata != NULL)
-        BIO_pop(p7bio);
-    BIO_free_all(p7bio);
+    while (p7bio != NULL && p7bio != indata) {
+        next = BIO_pop(p7bio);
+        BIO_free(p7bio);
+        p7bio = next;
+    }
     sk_X509_free(signers);
     sk_X509_free(untrusted);
     return ret;
diff -Nru openssl-3.5.6/crypto/rc2/rc2_skey.c openssl-3.5.7/crypto/rc2/rc2_skey.c
--- openssl-3.5.6/crypto/rc2/rc2_skey.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/rc2/rc2_skey.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -17,262 +17,32 @@
 #include "rc2_local.h"
 
 static const unsigned char key_table[256] = {
-    0xd9,
-    0x78,
-    0xf9,
-    0xc4,
-    0x19,
-    0xdd,
-    0xb5,
-    0xed,
-    0x28,
-    0xe9,
-    0xfd,
-    0x79,
-    0x4a,
-    0xa0,
-    0xd8,
-    0x9d,
-    0xc6,
-    0x7e,
-    0x37,
-    0x83,
-    0x2b,
-    0x76,
-    0x53,
-    0x8e,
-    0x62,
-    0x4c,
-    0x64,
-    0x88,
-    0x44,
-    0x8b,
-    0xfb,
-    0xa2,
-    0x17,
-    0x9a,
-    0x59,
-    0xf5,
-    0x87,
-    0xb3,
-    0x4f,
-    0x13,
-    0x61,
-    0x45,
-    0x6d,
-    0x8d,
-    0x09,
-    0x81,
-    0x7d,
-    0x32,
-    0xbd,
-    0x8f,
-    0x40,
-    0xeb,
-    0x86,
-    0xb7,
-    0x7b,
-    0x0b,
-    0xf0,
-    0x95,
-    0x21,
-    0x22,
-    0x5c,
-    0x6b,
-    0x4e,
-    0x82,
-    0x54,
-    0xd6,
-    0x65,
-    0x93,
-    0xce,
-    0x60,
-    0xb2,
-    0x1c,
-    0x73,
-    0x56,
-    0xc0,
-    0x14,
-    0xa7,
-    0x8c,
-    0xf1,
-    0xdc,
-    0x12,
-    0x75,
-    0xca,
-    0x1f,
-    0x3b,
-    0xbe,
-    0xe4,
-    0xd1,
-    0x42,
-    0x3d,
-    0xd4,
-    0x30,
-    0xa3,
-    0x3c,
-    0xb6,
-    0x26,
-    0x6f,
-    0xbf,
-    0x0e,
-    0xda,
-    0x46,
-    0x69,
-    0x07,
-    0x57,
-    0x27,
-    0xf2,
-    0x1d,
-    0x9b,
-    0xbc,
-    0x94,
-    0x43,
-    0x03,
-    0xf8,
-    0x11,
-    0xc7,
-    0xf6,
-    0x90,
-    0xef,
-    0x3e,
-    0xe7,
-    0x06,
-    0xc3,
-    0xd5,
-    0x2f,
-    0xc8,
-    0x66,
-    0x1e,
-    0xd7,
-    0x08,
-    0xe8,
-    0xea,
-    0xde,
-    0x80,
-    0x52,
-    0xee,
-    0xf7,
-    0x84,
-    0xaa,
-    0x72,
-    0xac,
-    0x35,
-    0x4d,
-    0x6a,
-    0x2a,
-    0x96,
-    0x1a,
-    0xd2,
-    0x71,
-    0x5a,
-    0x15,
-    0x49,
-    0x74,
-    0x4b,
-    0x9f,
-    0xd0,
-    0x5e,
-    0x04,
-    0x18,
-    0xa4,
-    0xec,
-    0xc2,
-    0xe0,
-    0x41,
-    0x6e,
-    0x0f,
-    0x51,
-    0xcb,
-    0xcc,
-    0x24,
-    0x91,
-    0xaf,
-    0x50,
-    0xa1,
-    0xf4,
-    0x70,
-    0x39,
-    0x99,
-    0x7c,
-    0x3a,
-    0x85,
-    0x23,
-    0xb8,
-    0xb4,
-    0x7a,
-    0xfc,
-    0x02,
-    0x36,
-    0x5b,
-    0x25,
-    0x55,
-    0x97,
-    0x31,
-    0x2d,
-    0x5d,
-    0xfa,
-    0x98,
-    0xe3,
-    0x8a,
-    0x92,
-    0xae,
-    0x05,
-    0xdf,
-    0x29,
-    0x10,
-    0x67,
-    0x6c,
-    0xba,
-    0xc9,
-    0xd3,
-    0x00,
-    0xe6,
-    0xcf,
-    0xe1,
-    0x9e,
-    0xa8,
-    0x2c,
-    0x63,
-    0x16,
-    0x01,
-    0x3f,
-    0x58,
-    0xe2,
-    0x89,
-    0xa9,
-    0x0d,
-    0x38,
-    0x34,
-    0x1b,
-    0xab,
-    0x33,
-    0xff,
-    0xb0,
-    0xbb,
-    0x48,
-    0x0c,
-    0x5f,
-    0xb9,
-    0xb1,
-    0xcd,
-    0x2e,
-    0xc5,
-    0xf3,
-    0xdb,
-    0x47,
-    0xe5,
-    0xa5,
-    0x9c,
-    0x77,
-    0x0a,
-    0xa6,
-    0x20,
-    0x68,
-    0xfe,
-    0x7f,
-    0xc1,
-    0xad,
+    0xd9, 0x78, 0xf9, 0xc4, 0x19, 0xdd, 0xb5, 0xed, 0x28, 0xe9,
+    0xfd, 0x79, 0x4a, 0xa0, 0xd8, 0x9d, 0xc6, 0x7e, 0x37, 0x83,
+    0x2b, 0x76, 0x53, 0x8e, 0x62, 0x4c, 0x64, 0x88, 0x44, 0x8b,
+    0xfb, 0xa2, 0x17, 0x9a, 0x59, 0xf5, 0x87, 0xb3, 0x4f, 0x13,
+    0x61, 0x45, 0x6d, 0x8d, 0x09, 0x81, 0x7d, 0x32, 0xbd, 0x8f,
+    0x40, 0xeb, 0x86, 0xb7, 0x7b, 0x0b, 0xf0, 0x95, 0x21, 0x22,
+    0x5c, 0x6b, 0x4e, 0x82, 0x54, 0xd6, 0x65, 0x93, 0xce, 0x60,
+    0xb2, 0x1c, 0x73, 0x56, 0xc0, 0x14, 0xa7, 0x8c, 0xf1, 0xdc,
+    0x12, 0x75, 0xca, 0x1f, 0x3b, 0xbe, 0xe4, 0xd1, 0x42, 0x3d,
+    0xd4, 0x30, 0xa3, 0x3c, 0xb6, 0x26, 0x6f, 0xbf, 0x0e, 0xda,
+    0x46, 0x69, 0x07, 0x57, 0x27, 0xf2, 0x1d, 0x9b, 0xbc, 0x94,
+    0x43, 0x03, 0xf8, 0x11, 0xc7, 0xf6, 0x90, 0xef, 0x3e, 0xe7,
+    0x06, 0xc3, 0xd5, 0x2f, 0xc8, 0x66, 0x1e, 0xd7, 0x08, 0xe8,
+    0xea, 0xde, 0x80, 0x52, 0xee, 0xf7, 0x84, 0xaa, 0x72, 0xac,
+    0x35, 0x4d, 0x6a, 0x2a, 0x96, 0x1a, 0xd2, 0x71, 0x5a, 0x15,
+    0x49, 0x74, 0x4b, 0x9f, 0xd0, 0x5e, 0x04, 0x18, 0xa4, 0xec,
+    0xc2, 0xe0, 0x41, 0x6e, 0x0f, 0x51, 0xcb, 0xcc, 0x24, 0x91,
+    0xaf, 0x50, 0xa1, 0xf4, 0x70, 0x39, 0x99, 0x7c, 0x3a, 0x85,
+    0x23, 0xb8, 0xb4, 0x7a, 0xfc, 0x02, 0x36, 0x5b, 0x25, 0x55,
+    0x97, 0x31, 0x2d, 0x5d, 0xfa, 0x98, 0xe3, 0x8a, 0x92, 0xae,
+    0x05, 0xdf, 0x29, 0x10, 0x67, 0x6c, 0xba, 0xc9, 0xd3, 0x00,
+    0xe6, 0xcf, 0xe1, 0x9e, 0xa8, 0x2c, 0x63, 0x16, 0x01, 0x3f,
+    0x58, 0xe2, 0x89, 0xa9, 0x0d, 0x38, 0x34, 0x1b, 0xab, 0x33,
+    0xff, 0xb0, 0xbb, 0x48, 0x0c, 0x5f, 0xb9, 0xb1, 0xcd, 0x2e,
+    0xc5, 0xf3, 0xdb, 0x47, 0xe5, 0xa5, 0x9c, 0x77, 0x0a, 0xa6,
+    0x20, 0x68, 0xfe, 0x7f, 0xc1, 0xad
 };
 
 #if defined(_MSC_VER) && defined(_ARM_)
diff -Nru openssl-3.5.6/crypto/slh_dsa/slh_dsa_key.c openssl-3.5.7/crypto/slh_dsa/slh_dsa_key.c
--- openssl-3.5.6/crypto/slh_dsa/slh_dsa_key.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/slh_dsa/slh_dsa_key.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -62,7 +62,6 @@
     key->hash_func = ossl_slh_get_hash_fn(is_shake);
     return 1;
 err:
-    slh_dsa_key_hash_cleanup(key);
     return 0;
 }
 
@@ -206,7 +205,7 @@
         if (!key_checked
             && (selection & OSSL_KEYMGMT_SELECT_PRIVATE_KEY) != 0) {
             if (key1->has_priv && key2->has_priv) {
-                if (memcmp(key1->priv, key2->priv,
+                if (CRYPTO_memcmp(key1->priv, key2->priv,
                         key1->params->pk_len)
                     != 0)
                     return 0;
diff -Nru openssl-3.5.6/crypto/sm2/sm2_crypt.c openssl-3.5.7/crypto/sm2/sm2_crypt.c
--- openssl-3.5.6/crypto/sm2/sm2_crypt.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/sm2/sm2_crypt.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2017-2026 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright 2017 Ribose Inc. All Rights Reserved.
  * Ported from Ribose contributions from Botan.
  *
@@ -248,12 +248,23 @@
         goto done;
     }
 
-    ciphertext_leni = i2d_SM2_Ciphertext(&ctext_struct, &ciphertext_buf);
+    ciphertext_leni = i2d_SM2_Ciphertext(&ctext_struct, NULL);
     /* Ensure cast to size_t is safe */
     if (ciphertext_leni < 0) {
         ERR_raise(ERR_LIB_SM2, ERR_R_INTERNAL_ERROR);
         goto done;
     }
+
+    if (*ciphertext_len < (size_t)ciphertext_leni) {
+        ERR_raise(ERR_LIB_SM2, SM2_R_BUFFER_TOO_SMALL);
+        goto done;
+    }
+
+    ciphertext_leni = i2d_SM2_Ciphertext(&ctext_struct, &ciphertext_buf);
+    if (ciphertext_leni < 0) {
+        ERR_raise(ERR_LIB_SM2, ERR_R_INTERNAL_ERROR);
+        goto done;
+    }
     *ciphertext_len = (size_t)ciphertext_leni;
 
     rc = 1;
@@ -266,6 +277,7 @@
     OPENSSL_free(x2y2);
     OPENSSL_free(C3);
     EVP_MD_CTX_free(hash);
+    BN_CTX_end(ctx);
     BN_CTX_free(ctx);
     EC_POINT_free(kG);
     EC_POINT_free(kP);
@@ -406,6 +418,7 @@
     OPENSSL_free(x2y2);
     OPENSSL_free(computed_C3);
     EC_POINT_free(C1);
+    BN_CTX_end(ctx);
     BN_CTX_free(ctx);
     SM2_Ciphertext_free(sm2_ctext);
     EVP_MD_CTX_free(hash);
diff -Nru openssl-3.5.6/crypto/sm2/sm2_sign.c openssl-3.5.7/crypto/sm2/sm2_sign.c
--- openssl-3.5.6/crypto/sm2/sm2_sign.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/sm2/sm2_sign.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2017-2026 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright 2017 Ribose Inc. All Rights Reserved.
  * Ported from Ribose contributions from Botan.
  *
@@ -60,6 +60,7 @@
         goto done;
     }
 
+    BN_CTX_start(ctx);
     p = BN_CTX_get(ctx);
     a = BN_CTX_get(ctx);
     b = BN_CTX_get(ctx);
@@ -141,6 +142,7 @@
 
 done:
     OPENSSL_free(buf);
+    BN_CTX_end(ctx);
     BN_CTX_free(ctx);
     EVP_MD_CTX_free(hash);
     return rc;
@@ -322,6 +324,7 @@
         BN_free(s);
     }
 
+    BN_CTX_end(ctx);
     BN_CTX_free(ctx);
     EC_POINT_free(kG);
     return sig;
@@ -405,8 +408,8 @@
         ret = 1;
 
 done:
-    BN_CTX_end(ctx);
     EC_POINT_free(pt);
+    BN_CTX_end(ctx);
     BN_CTX_free(ctx);
     return ret;
 }
diff -Nru openssl-3.5.6/crypto/threads_none.c openssl-3.5.7/crypto/threads_none.c
--- openssl-3.5.6/crypto/threads_none.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/threads_none.c	2026-06-09 13:54:25.000000000 +0200
@@ -73,18 +73,23 @@
     }
 }
 
-int ossl_rcu_call(CRYPTO_RCU_LOCK *lock, rcu_cb_fn cb, void *data)
+CRYPTO_RCU_CB_ITEM *ossl_rcu_cb_item_new(void)
 {
-    struct rcu_cb_item *new = OPENSSL_zalloc(sizeof(*new));
+    return OPENSSL_zalloc(sizeof(CRYPTO_RCU_CB_ITEM));
+}
 
-    if (new == NULL)
-        return 0;
+void ossl_rcu_cb_item_free(CRYPTO_RCU_CB_ITEM *item)
+{
+    OPENSSL_free(item);
+}
 
-    new->fn = cb;
-    new->data = data;
-    new->next = lock->cb_items;
-    lock->cb_items = new;
-    return 1;
+void ossl_rcu_call(CRYPTO_RCU_LOCK *lock, CRYPTO_RCU_CB_ITEM *item,
+    rcu_cb_fn cb, void *data)
+{
+    item->fn = cb;
+    item->data = data;
+    item->next = lock->cb_items;
+    lock->cb_items = item;
 }
 
 void *ossl_rcu_uptr_deref(void **p)
@@ -162,15 +167,10 @@
 
 static struct thread_local_storage_entry thread_local_storage[OPENSSL_CRYPTO_THREAD_LOCAL_KEY_MAX];
 
-int CRYPTO_THREAD_init_local(CRYPTO_THREAD_LOCAL *key, void (*cleanup)(void *))
+int ossl_thread_init_local(CRYPTO_THREAD_LOCAL *key, void (*cleanup)(void *))
 {
     int entry_idx = 0;
 
-#ifndef FIPS_MODULE
-    if (!ossl_init_thread())
-        return 0;
-#endif
-
     for (entry_idx = 0; entry_idx < OPENSSL_CRYPTO_THREAD_LOCAL_KEY_MAX; entry_idx++) {
         if (!thread_local_storage[entry_idx].used)
             break;
diff -Nru openssl-3.5.6/crypto/threads_pthread.c openssl-3.5.7/crypto/threads_pthread.c
--- openssl-3.5.6/crypto/threads_pthread.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/threads_pthread.c	2026-06-09 13:54:25.000000000 +0200
@@ -501,24 +501,27 @@
     }
 }
 
+CRYPTO_RCU_CB_ITEM *ossl_rcu_cb_item_new(void)
+{
+    return OPENSSL_zalloc(sizeof(CRYPTO_RCU_CB_ITEM));
+}
+
+void ossl_rcu_cb_item_free(CRYPTO_RCU_CB_ITEM *item)
+{
+    OPENSSL_free(item);
+}
+
 /*
  * Note: This call assumes its made under the protection of
  * ossl_rcu_write_lock
  */
-int ossl_rcu_call(CRYPTO_RCU_LOCK *lock, rcu_cb_fn cb, void *data)
+void ossl_rcu_call(CRYPTO_RCU_LOCK *lock, CRYPTO_RCU_CB_ITEM *item,
+    rcu_cb_fn cb, void *data)
 {
-    struct rcu_cb_item *new = OPENSSL_zalloc(sizeof(*new));
-
-    if (new == NULL)
-        return 0;
-
-    new->data = data;
-    new->fn = cb;
-
-    new->next = lock->cb_items;
-    lock->cb_items = new;
-
-    return 1;
+    item->fn = cb;
+    item->data = data;
+    item->next = lock->cb_items;
+    lock->cb_items = item;
 }
 
 void *ossl_rcu_uptr_deref(void **p)
@@ -728,14 +731,9 @@
     return 1;
 }
 
-int CRYPTO_THREAD_init_local(CRYPTO_THREAD_LOCAL *key, void (*cleanup)(void *))
+int ossl_thread_init_local(CRYPTO_THREAD_LOCAL *key, void (*cleanup)(void *))
 {
 
-#ifndef FIPS_MODULE
-    if (!ossl_init_thread())
-        return 0;
-#endif
-
     if (pthread_key_create(key, cleanup) != 0)
         return 0;
 
diff -Nru openssl-3.5.6/crypto/threads_win.c openssl-3.5.7/crypto/threads_win.c
--- openssl-3.5.6/crypto/threads_win.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/threads_win.c	2026-06-09 13:54:25.000000000 +0200
@@ -397,23 +397,26 @@
     return;
 }
 
+CRYPTO_RCU_CB_ITEM *ossl_rcu_cb_item_new(void)
+{
+    return OPENSSL_zalloc(sizeof(CRYPTO_RCU_CB_ITEM));
+}
+
+void ossl_rcu_cb_item_free(CRYPTO_RCU_CB_ITEM *item)
+{
+    OPENSSL_free(item);
+}
+
 /*
  * Note, must be called under the protection of ossl_rcu_write_lock
  */
-int ossl_rcu_call(CRYPTO_RCU_LOCK *lock, rcu_cb_fn cb, void *data)
+void ossl_rcu_call(CRYPTO_RCU_LOCK *lock, CRYPTO_RCU_CB_ITEM *item,
+    rcu_cb_fn cb, void *data)
 {
-    struct rcu_cb_item *new;
-
-    new = OPENSSL_zalloc(sizeof(struct rcu_cb_item));
-    if (new == NULL)
-        return 0;
-    new->data = data;
-    new->fn = cb;
-
-    new->next = lock->cb_items;
-    lock->cb_items = new;
-
-    return 1;
+    item->fn = cb;
+    item->data = data;
+    item->next = lock->cb_items;
+    lock->cb_items = item;
 }
 
 void *ossl_rcu_uptr_deref(void **p)
@@ -540,14 +543,9 @@
     return (*lock == ONCE_DONE);
 }
 
-int CRYPTO_THREAD_init_local(CRYPTO_THREAD_LOCAL *key, void (*cleanup)(void *))
+int ossl_thread_init_local(CRYPTO_THREAD_LOCAL *key, void (*cleanup)(void *))
 {
 
-#ifndef FIPS_MODULE
-    if (!ossl_init_thread())
-        return 0;
-#endif
-
     *key = TlsAlloc();
     if (*key == TLS_OUT_OF_INDEXES)
         return 0;
diff -Nru openssl-3.5.6/crypto/x509/v3_ist.c openssl-3.5.7/crypto/x509/v3_ist.c
--- openssl-3.5.6/crypto/x509/v3_ist.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/crypto/x509/v3_ist.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2020-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -48,7 +48,6 @@
             continue;
         }
         if (strcmp(cnf->name, "signTool") == 0) {
-            ist->signTool = ASN1_UTF8STRING_new();
             if (ist->signTool == NULL
                 || cnf->value == NULL
                 || !ASN1_STRING_set(ist->signTool, cnf->value, strlen(cnf->value))) {
@@ -56,7 +55,6 @@
                 goto err;
             }
         } else if (strcmp(cnf->name, "cATool") == 0) {
-            ist->cATool = ASN1_UTF8STRING_new();
             if (ist->cATool == NULL
                 || cnf->value == NULL
                 || !ASN1_STRING_set(ist->cATool, cnf->value, strlen(cnf->value))) {
@@ -64,7 +62,6 @@
                 goto err;
             }
         } else if (strcmp(cnf->name, "signToolCert") == 0) {
-            ist->signToolCert = ASN1_UTF8STRING_new();
             if (ist->signToolCert == NULL
                 || cnf->value == NULL
                 || !ASN1_STRING_set(ist->signToolCert, cnf->value, strlen(cnf->value))) {
@@ -72,7 +69,6 @@
                 goto err;
             }
         } else if (strcmp(cnf->name, "cAToolCert") == 0) {
-            ist->cAToolCert = ASN1_UTF8STRING_new();
             if (ist->cAToolCert == NULL
                 || cnf->value == NULL
                 || !ASN1_STRING_set(ist->cAToolCert, cnf->value, strlen(cnf->value))) {
Binary files /home/bigeasy/tmp/cNMftzjEbx/openssl-3.5.6/debian/binary.tar and /home/bigeasy/tmp/L2YNVo8E9M/openssl-3.5.7/debian/binary.tar differ
diff -Nru openssl-3.5.6/debian/changelog openssl-3.5.7/debian/changelog
--- openssl-3.5.6/debian/changelog	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/changelog	2026-07-18 22:55:34.000000000 +0200
@@ -1,3 +1,9 @@
+openssl (3.5.7-1~deb13u1) trixie; urgency=medium
+
+  * Import 3.5.7
+
+ -- Sebastian Andrzej Siewior <sebastian@breakpoint.cc>  Sat, 18 Jul 2026 22:55:34 +0200
+
 openssl (3.5.6-1~deb13u2) trixie-security; urgency=medium
 
   * CVE-2026-7383 ("Possible Heap Buffer Overflow in ASN.1 Multibyte String
diff -Nru openssl-3.5.6/debian/patches/Add-test-for-path-challenge-flood-mitigation.patch openssl-3.5.7/debian/patches/Add-test-for-path-challenge-flood-mitigation.patch
--- openssl-3.5.6/debian/patches/Add-test-for-path-challenge-flood-mitigation.patch	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/patches/Add-test-for-path-challenge-flood-mitigation.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,301 +0,0 @@
-From: Alexandr Nedvedicky <sashan@openssl.org>
-Date: Tue, 21 Apr 2026 14:13:03 +0200
-Subject: Add test for path challenge flood mitigation
-
-Client injects 16 path challenge frames. Those are received
-by server. Only one challenge frame of 16 received triggers
-path challenge response. Remaining challenge frames are
-discrded/ignored.
-
-Test introduces two counters to channel object:
-  - path_challenge_rx which is bumped for every patch challenge
-  frame received
-
-  - path_response_tx which is bumped for every path response
-  frame transmitted
-
-Succesuful test verifies server receives 16 path challenge frames,
-but sends just one path response frmae as response.
----
- include/internal/quic_channel.h |   2 +
- ssl/quic/quic_channel.c         |  10 +++
- ssl/quic/quic_channel_local.h   |   4 +
- ssl/quic/quic_rx_depack.c       |  12 +++
- test/radix/quic_tests.c         | 183 ++++++++++++++++++++++++++++++++++++++++
- 5 files changed, 211 insertions(+)
-
-diff --git a/include/internal/quic_channel.h b/include/internal/quic_channel.h
-index cfaeab728178..1997ccbfd739 100644
---- a/include/internal/quic_channel.h
-+++ b/include/internal/quic_channel.h
-@@ -469,6 +469,8 @@ int ossl_quic_bind_channel(QUIC_CHANNEL *ch, const BIO_ADDR *peer,
-     const QUIC_CONN_ID *odcid);
- 
- void ossl_ch_reset_rx_state(QUIC_CHANNEL *ch);
-+uint64_t ossl_quic_channel_get_path_challenge_count(const QUIC_CHANNEL *ch);
-+uint64_t ossl_quic_channel_get_path_response_count(const QUIC_CHANNEL *ch);
- #endif
- 
- #endif
-diff --git a/ssl/quic/quic_channel.c b/ssl/quic/quic_channel.c
-index 5f81a8560d5f..82b78e0a2d48 100644
---- a/ssl/quic/quic_channel.c
-+++ b/ssl/quic/quic_channel.c
-@@ -4070,3 +4070,13 @@ uint64_t ossl_quic_channel_get_max_idle_timeout_actual(const QUIC_CHANNEL *ch)
- {
-     return ch->max_idle_timeout;
- }
-+
-+uint64_t ossl_quic_channel_get_path_challenge_count(const QUIC_CHANNEL *ch)
-+{
-+    return ch->path_challenge_rx;
-+}
-+
-+uint64_t ossl_quic_channel_get_path_response_count(const QUIC_CHANNEL *ch)
-+{
-+    return ch->path_response_tx;
-+}
-diff --git a/ssl/quic/quic_channel_local.h b/ssl/quic/quic_channel_local.h
-index e40b4901cbc7..eb082d6cea7a 100644
---- a/ssl/quic/quic_channel_local.h
-+++ b/ssl/quic/quic_channel_local.h
-@@ -506,6 +506,10 @@ struct quic_channel_st {
-      * from control frame queue (CFQ)
-      */
-     unsigned int path_response_limit;
-+    /* number of path challenge frames received */
-+    unsigned int path_challenge_rx;
-+    /* number of path response frames sent */
-+    unsigned int path_response_tx;
- };
- 
- #endif
-diff --git a/ssl/quic/quic_rx_depack.c b/ssl/quic/quic_rx_depack.c
-index 1bdb43b7d639..7ab59f01a1cd 100644
---- a/ssl/quic/quic_rx_depack.c
-+++ b/ssl/quic/quic_rx_depack.c
-@@ -937,6 +937,16 @@ static void free_path_response(unsigned char *buf, size_t buf_len, void *arg)
- 
-     ch->path_response_limit--;
- 
-+    /*
-+     * Assume path response frame is being freed on behalf of
-+     * finished TX operation. This is for unit testing purposes
-+     * only. The counter is also bumped when channel is being
-+     * destroyed and CFQ (control frame queue) is freed.
-+     * This currently does not matter for check_pc_flood
-+     * in test/radix/quic_tests.c.
-+     */
-+    ch->path_response_tx++;
-+
-     OPENSSL_free(buf);
- }
- 
-@@ -991,6 +1001,8 @@ static int depack_do_frame_path_challenge(PACKET *pkt,
-         ch->path_response_limit++;
-     }
- 
-+    ch->path_challenge_rx++;
-+
-     return 1;
- 
- err:
-diff --git a/test/radix/quic_tests.c b/test/radix/quic_tests.c
-index c0e54825cacc..d4bdc9b717f3 100644
---- a/test/radix/quic_tests.c
-+++ b/test/radix/quic_tests.c
-@@ -294,6 +294,188 @@ DEF_SCRIPT(check_cwm, "check stream obeys cwm")
-     OP_WRITE_FAIL(C);
- }
- 
-+struct mutcbk_ctx {
-+    QUIC_PKT_HDR mutctx_qhdrin;
-+    OSSL_QTX_IOVEC mutctx_iov;
-+    const unsigned char *mutctx_inject;
-+    size_t mutctx_inject_sz;
-+    int mutctx_done;
-+};
-+
-+static int mutcbk_inject_frames(const QUIC_PKT_HDR *hdrin,
-+    const OSSL_QTX_IOVEC *iovecin, size_t numin, QUIC_PKT_HDR **hdrout,
-+    const OSSL_QTX_IOVEC **iovecout, size_t *numout, void *arg)
-+{
-+    struct mutcbk_ctx *mutctx = (struct mutcbk_ctx *)arg;
-+    size_t i;
-+    size_t grow_allowance = 1200; /* QUIC_MIN_INITIAL_DGRAM_LEN */
-+    size_t bufsz = 0;
-+    char *buf;
-+
-+    /*
-+     * make injection callback a one shot event,
-+     * callback is invoked for every packet we
-+     * want to modify only one packet here.
-+     */
-+    if (mutctx->mutctx_done)
-+        return 0;
-+
-+    mutctx->mutctx_done = 1;
-+
-+    for (i = 0; i < numin; i++)
-+        bufsz += iovecin[i].buf_len;
-+
-+    mutctx->mutctx_iov.buf_len = bufsz; /* keeps old size */
-+    grow_allowance -= (bufsz < grow_allowance) ? bufsz : grow_allowance;
-+    /* AEAD tag (16 bytes) + long header (14 bytes) */
-+    grow_allowance -= (30 < grow_allowance) ? 30 : grow_allowance;
-+
-+    grow_allowance -= (hdrin->dst_conn_id.id_len < grow_allowance) ? hdrin->dst_conn_id.id_len : grow_allowance;
-+    grow_allowance -= (hdrin->src_conn_id.id_len < grow_allowance) ? hdrin->src_conn_id.id_len : grow_allowance;
-+
-+    if (grow_allowance == 0) {
-+        TEST_info("mutcbk_inject_frames() not enough space to inject");
-+        return 0;
-+    }
-+    bufsz += grow_allowance;
-+
-+    /* discard const */
-+    OPENSSL_free((char *)mutctx->mutctx_iov.buf);
-+    mutctx->mutctx_iov.buf = OPENSSL_malloc(bufsz);
-+    /* discard const */
-+    buf = (char *)mutctx->mutctx_iov.buf;
-+    if (buf == NULL) {
-+        TEST_info("mutcbk_inject_frames() OPENSSL_malloc() failed");
-+        return 0;
-+    }
-+
-+    for (i = 0; i < numin; i++) {
-+        memcpy(buf, iovecin[i].buf, iovecin[i].buf_len);
-+        buf += iovecin[i].buf_len;
-+    }
-+
-+    /* discard const */
-+    buf = (char *)mutctx->mutctx_iov.buf;
-+    if (mutctx->mutctx_inject != NULL) {
-+        memmove(buf + mutctx->mutctx_inject_sz, buf,
-+            mutctx->mutctx_iov.buf_len);
-+        memcpy(buf, mutctx->mutctx_inject, mutctx->mutctx_inject_sz);
-+    }
-+    /*
-+     * perhaps needed to have not looked at yet
-+     */
-+    mutctx->mutctx_qhdrin = *hdrin;
-+    *hdrout = &mutctx->mutctx_qhdrin;
-+    mutctx->mutctx_iov.buf_len += mutctx->mutctx_inject_sz;
-+    *iovecout = &mutctx->mutctx_iov;
-+    *numout = 1;
-+
-+    return 1;
-+}
-+
-+static void mutcbk_finish_injecct_frames(void *arg)
-+{
-+    struct mutcbk_ctx *mutctx = (struct mutcbk_ctx *)arg;
-+
-+    OPENSSL_free((char *)mutctx->mutctx_iov.buf);
-+    mutctx->mutctx_iov.buf = NULL;
-+}
-+
-+/* 16 path challenge frames */
-+#define PATH_CHALLENGE_FRAMES \
-+    "\x1a"                    \
-+    "ABCDEFGH"                \
-+    "\x1a"                    \
-+    "ABCDEFGH"                \
-+    "\x1a"                    \
-+    "ABCDEFGH"                \
-+    "\x1a"                    \
-+    "ABCDEFGH"                \
-+    "\x1a"                    \
-+    "ABCDEFGH"                \
-+    "\x1a"                    \
-+    "ABCDEFGH"                \
-+    "\x1a"                    \
-+    "ABCDEFGH"                \
-+    "\x1a"                    \
-+    "ABCDEFGH"                \
-+    "\x1a"                    \
-+    "ABCDEFGH"                \
-+    "\x1a"                    \
-+    "ABCDEFGH"                \
-+    "\x1a"                    \
-+    "ABCDEFGH"                \
-+    "\x1a"                    \
-+    "ABCDEFGH"                \
-+    "\x1a"                    \
-+    "ABCDEFGH"                \
-+    "\x1a"                    \
-+    "ABCDEFGH"                \
-+    "\x1a"                    \
-+    "ABCDEFGH"                \
-+    "\x1a"                    \
-+    "ABCDEFGH"
-+
-+DEF_FUNC(mount_flood)
-+{
-+    int ok = 0;
-+    SSL *ssl;
-+    QUIC_CHANNEL *ch;
-+    static struct mutcbk_ctx mutctx = { 0 };
-+    static const unsigned char *inject_frames = (const unsigned char *)PATH_CHALLENGE_FRAMES;
-+
-+    mutctx.mutctx_inject = inject_frames;
-+    mutctx.mutctx_inject_sz = sizeof(PATH_CHALLENGE_FRAMES) - 1;
-+    REQUIRE_SSL(ssl);
-+    ch = ossl_quic_conn_get_channel(ssl);
-+    if (!TEST_ptr(ch))
-+        goto err;
-+
-+    if (!TEST_true(ossl_quic_channel_set_mutator(ch, mutcbk_inject_frames,
-+            mutcbk_finish_injecct_frames, &mutctx)))
-+        goto err;
-+    ok = 1;
-+err:
-+    return ok;
-+}
-+
-+DEF_FUNC(check_flood_stats)
-+{
-+    int ok = 0;
-+    SSL *ssl;
-+    QUIC_CHANNEL *ch;
-+    uint64_t path_response_count;
-+    uint64_t path_challenge_count;
-+
-+    REQUIRE_SSL(ssl);
-+    ch = ossl_quic_conn_get_channel(ssl);
-+    if (!TEST_ptr(ch))
-+        goto err;
-+
-+    path_challenge_count = ossl_quic_channel_get_path_challenge_count(ch);
-+    path_response_count = ossl_quic_channel_get_path_response_count(ch);
-+
-+    if (TEST_uint64_t_ne(path_challenge_count, 16))
-+        goto err;
-+    if (TEST_uint64_t_ne(path_response_count, 1))
-+        goto err;
-+
-+    ok = 1;
-+err:
-+    return ok;
-+}
-+
-+DEF_SCRIPT(check_pc_flood, "check path challenge flood")
-+{
-+    OP_SIMPLE_PAIR_CONN();
-+    OP_SELECT_SSL(0, C);
-+    OP_FUNC(mount_flood);
-+    OP_ACCEPT_CONN_WAIT(L, S, 0);
-+    OP_WRITE_B(C, "attack");
-+    OP_SELECT_SSL(0, S);
-+    OP_FUNC(check_flood_stats);
-+}
-+
- /*
-  * List of Test Scripts
-  * ============================================================================
-@@ -303,4 +485,5 @@ static SCRIPT_INFO *const scripts[] = {
-         USE(simple_thread)
-             USE(ssl_poll)
-                 USE(check_cwm)
-+    USE(check_pc_flood)
- };
diff -Nru openssl-3.5.6/debian/patches/Add-tests-for-CVE-2026-34182.patch openssl-3.5.7/debian/patches/Add-tests-for-CVE-2026-34182.patch
--- openssl-3.5.6/debian/patches/Add-tests-for-CVE-2026-34182.patch	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/patches/Add-tests-for-CVE-2026-34182.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,221 +0,0 @@
-From: Neil Horman <nhorman@openssl.org>
-Date: Tue, 5 May 2026 09:16:29 -0400
-Subject: Add tests for CVE-2026-34182
-
-Test to ensure that for a given CMS message:
-
-1) We do not allow the creation of a CMS message containing
-   AuthEnvelopedData with a non-AEAD cipher.
-2) We do not accept a message containing AuthEnvelopedData with a
-   non-AEAD cipher specified in the AlgorithmIdentifier.
-3) We do not allow tag lengths less that 4 bytes.
----
- test/cmsapitest.c | 188 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 188 insertions(+)
-
-diff --git a/test/cmsapitest.c b/test/cmsapitest.c
-index d908bc6fc4c4..2b5d08329ba6 100644
---- a/test/cmsapitest.c
-+++ b/test/cmsapitest.c
-@@ -23,6 +23,191 @@ static char *derin = NULL;
- static char *too_long_iv_cms_in = NULL;
- static char *pwri_kek_oob_der_in = NULL;
- 
-+/*
-+ * This is our bad cms data, it contains an AuthEnvelopedData field
-+ * with a CIPHER OID set to AES-256-OFB
-+ */
-+static const unsigned char bad_cms_der[452] = {
-+    0x30, 0x82, 0x01, 0xc0, 0x06, 0x0b, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
-+    0x01, 0x09, 0x10, 0x01, 0x17, 0xa0, 0x82, 0x01, 0xaf, 0x30, 0x82, 0x01,
-+    0xab, 0x02, 0x01, 0x00, 0x31, 0x82, 0x01, 0x44, 0x30, 0x82, 0x01, 0x40,
-+    0x02, 0x01, 0x00, 0x30, 0x28, 0x30, 0x10, 0x31, 0x0e, 0x30, 0x0c, 0x06,
-+    0x03, 0x55, 0x04, 0x03, 0x0c, 0x05, 0x52, 0x65, 0x63, 0x69, 0x70, 0x02,
-+    0x14, 0x1a, 0x5c, 0x04, 0x9b, 0x3a, 0x64, 0xff, 0xd4, 0x63, 0xde, 0x4f,
-+    0x90, 0xe5, 0x76, 0xe2, 0x18, 0xe8, 0x5c, 0x9e, 0xd7, 0x30, 0x0d, 0x06,
-+    0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00,
-+    0x04, 0x82, 0x01, 0x00, 0x18, 0xcf, 0x9f, 0x44, 0x95, 0x79, 0xe9, 0x96,
-+    0x7d, 0x0f, 0xd1, 0xb4, 0xc2, 0x38, 0xb0, 0xc9, 0x76, 0xd5, 0xba, 0x08,
-+    0x5c, 0xbf, 0xc3, 0x30, 0xea, 0x3a, 0x68, 0xa4, 0xba, 0x99, 0x4c, 0x70,
-+    0x97, 0xb8, 0xa9, 0xce, 0x71, 0x4c, 0x54, 0xa3, 0xfd, 0x81, 0x9e, 0x15,
-+    0x63, 0xb7, 0x23, 0x46, 0x17, 0x69, 0xaf, 0x8f, 0xbd, 0xa3, 0x54, 0x23,
-+    0xf3, 0xf5, 0x35, 0xa8, 0xd4, 0x9c, 0xec, 0xe1, 0x17, 0x2c, 0x6d, 0x0b,
-+    0xad, 0xc0, 0xe9, 0x1d, 0xd1, 0x8d, 0x59, 0xd5, 0x29, 0xc6, 0x40, 0xc4,
-+    0xcd, 0x4e, 0x87, 0x70, 0x19, 0x5d, 0x88, 0x50, 0xbd, 0x4a, 0x13, 0xb3,
-+    0xef, 0x0c, 0x6d, 0x6a, 0xc5, 0x51, 0xbb, 0x5c, 0x39, 0x17, 0xda, 0xb1,
-+    0x71, 0x17, 0x88, 0xfb, 0x6a, 0xef, 0x7f, 0x85, 0xa7, 0x04, 0x71, 0xc7,
-+    0x83, 0x91, 0xb3, 0x30, 0x1b, 0x3d, 0x18, 0x7f, 0x63, 0xbf, 0x42, 0x7c,
-+    0xae, 0x6f, 0xae, 0xa1, 0x17, 0x84, 0xfd, 0x67, 0x2a, 0x4f, 0x4c, 0xe9,
-+    0x05, 0x26, 0x2c, 0xd5, 0xab, 0x0c, 0xcf, 0xdc, 0x3f, 0x24, 0xcf, 0x71,
-+    0x26, 0x7a, 0x1f, 0xf7, 0xc9, 0x92, 0x5e, 0xb6, 0x3d, 0x7f, 0xc3, 0x08,
-+    0xd3, 0xad, 0xc0, 0xc8, 0x4f, 0x42, 0x0c, 0xf3, 0xac, 0x23, 0x11, 0xdf,
-+    0x75, 0x84, 0x69, 0x8c, 0xa6, 0x59, 0x43, 0xfb, 0xf7, 0x6b, 0x62, 0xf0,
-+    0xf7, 0x35, 0x07, 0xc4, 0xf8, 0xd5, 0x12, 0x4a, 0x16, 0x62, 0xbc, 0x04,
-+    0xaa, 0x9a, 0x2e, 0xb2, 0x1a, 0xfa, 0x4c, 0x82, 0xce, 0x9e, 0xa8, 0x6d,
-+    0xc1, 0x29, 0x59, 0xe0, 0x33, 0xb5, 0xa6, 0x47, 0x09, 0x2e, 0xbf, 0x60,
-+    0xa6, 0xb3, 0x21, 0xa0, 0x15, 0xac, 0x92, 0x29, 0xb5, 0xe6, 0xe0, 0xd4,
-+    0x8b, 0xd8, 0x21, 0xe2, 0x17, 0x98, 0xd1, 0x11, 0x5d, 0xc5, 0xae, 0x24,
-+    0xe8, 0x92, 0xdb, 0x96, 0xa3, 0x5b, 0x58, 0xa7, 0x30, 0x4c, 0x06, 0x09,
-+    0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0x30, 0x1d, 0x06,
-+    0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x2b, 0x04, 0x10,
-+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+    0x00, 0x00, 0x00, 0x00, 0x80, 0x20, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
-+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
-+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
-+    0x41, 0x41, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-+};
-+
-+/*
-+ * This array represents a der encoded contentinfo structure addressed to
-+ * servercert.pem, with the tag value of the aes-256-gcm cipher used to encrypt
-+ * the contents of the mssages down to 1 byte.  Decoding it should fail
-+ */
-+static const unsigned char one_byte_mac_cms_der[423] = {
-+    0x30, 0x82, 0x01, 0xa3, 0x06, 0x0b, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
-+    0x01, 0x09, 0x10, 0x01, 0x17, 0xa0, 0x82, 0x01, 0x92, 0x30, 0x82, 0x01,
-+    0x8e, 0x02, 0x01, 0x00, 0x31, 0x82, 0x01, 0x33, 0x30, 0x82, 0x01, 0x2f,
-+    0x02, 0x01, 0x00, 0x30, 0x17, 0x30, 0x12, 0x31, 0x10, 0x30, 0x0e, 0x06,
-+    0x03, 0x55, 0x04, 0x03, 0x0c, 0x07, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43,
-+    0x41, 0x02, 0x01, 0x02, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
-+    0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0x10,
-+    0x3a, 0x8c, 0xee, 0x4e, 0xe2, 0x1f, 0xfe, 0xcc, 0x28, 0x39, 0x9e, 0x46,
-+    0xbe, 0xa7, 0xd5, 0x02, 0x2a, 0x53, 0x06, 0x5f, 0x94, 0x6b, 0x69, 0x6d,
-+    0x2d, 0xe8, 0x44, 0xa6, 0x43, 0x52, 0x82, 0x89, 0x2d, 0xf1, 0x9b, 0xb9,
-+    0x9e, 0xa4, 0x8d, 0x77, 0xf1, 0xd2, 0x8e, 0x86, 0x79, 0x06, 0x3e, 0x90,
-+    0xf0, 0xca, 0x9e, 0xb5, 0x35, 0xd5, 0x89, 0xf0, 0x7c, 0x06, 0xa0, 0x91,
-+    0xbf, 0xf4, 0x61, 0xaa, 0x5c, 0x99, 0xa3, 0x64, 0x15, 0xfd, 0xf9, 0x90,
-+    0xf0, 0xf3, 0x25, 0x5b, 0x48, 0xa1, 0xfb, 0x7a, 0xce, 0x63, 0xdc, 0xa9,
-+    0xfe, 0x7c, 0xbe, 0x9c, 0xaa, 0xd3, 0x42, 0x0e, 0x4a, 0xc3, 0x4b, 0x4e,
-+    0x76, 0x6d, 0x52, 0x54, 0x85, 0x4e, 0xab, 0x50, 0x2c, 0x5f, 0xc2, 0x8b,
-+    0x9f, 0x1f, 0x0f, 0x8a, 0x7c, 0xb3, 0x0a, 0xde, 0x50, 0x9b, 0xef, 0x89,
-+    0xf2, 0xea, 0x07, 0xca, 0x11, 0x76, 0x29, 0xaf, 0xe4, 0x59, 0x28, 0x19,
-+    0x48, 0x96, 0x67, 0xdd, 0xdd, 0x01, 0xf0, 0x14, 0xbe, 0x3d, 0xa5, 0xa3,
-+    0x83, 0x21, 0x39, 0x29, 0xb7, 0x8f, 0xb7, 0xf4, 0x85, 0x05, 0xee, 0xca,
-+    0xbb, 0xbd, 0xc0, 0xaf, 0x0d, 0xf1, 0xef, 0x5f, 0x06, 0x05, 0xeb, 0x0e,
-+    0x55, 0xf0, 0x7e, 0x13, 0x1a, 0x2a, 0x37, 0xd4, 0xba, 0x26, 0xc8, 0x2e,
-+    0x6b, 0xc3, 0xe1, 0xcf, 0x28, 0xab, 0x0d, 0xab, 0xdd, 0xa7, 0xf4, 0xd3,
-+    0x59, 0xcd, 0xc7, 0x2d, 0xa1, 0x56, 0x5f, 0x47, 0x77, 0x27, 0x17, 0x71,
-+    0xae, 0x75, 0xc8, 0x71, 0x58, 0xf9, 0xab, 0x67, 0xda, 0x23, 0x62, 0xa0,
-+    0x6d, 0xe5, 0x2d, 0x06, 0xb8, 0xc0, 0xac, 0xaa, 0x38, 0xa4, 0x0d, 0xb5,
-+    0xb2, 0xce, 0xa7, 0x26, 0x0d, 0x3a, 0x88, 0x2f, 0x8d, 0x6c, 0xa0, 0xf6,
-+    0x94, 0xf2, 0x2c, 0x37, 0x03, 0xaf, 0x67, 0x5c, 0xf3, 0x2c, 0xfb, 0xe8,
-+    0x16, 0x9e, 0x55, 0x30, 0x4f, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
-+    0x0d, 0x01, 0x07, 0x01, 0x30, 0x1e, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01,
-+    0x65, 0x03, 0x04, 0x01, 0x2e, 0x30, 0x11, 0x04, 0x0c, 0x6b, 0x1d, 0xe5,
-+    0xb2, 0x38, 0x0e, 0x17, 0x91, 0x9c, 0x9c, 0x40, 0x35, 0x02, 0x01, 0x10,
-+    0x80, 0x22, 0xa0, 0x90, 0x75, 0x74, 0xdf, 0x2d, 0xba, 0x4f, 0xce, 0x4e,
-+    0x7e, 0x52, 0xb0, 0x2e, 0x5f, 0xe0, 0x84, 0x01, 0xb1, 0x49, 0x0b, 0x69,
-+    0xc7, 0x61, 0x63, 0x84, 0x3a, 0xfc, 0xaa, 0x86, 0xfc, 0x96, 0x4e, 0x6c,
-+    0x04, 0x01, 0x92
-+};
-+
-+static int test_short_mac_on_auth_envelope_data(void)
-+{
-+    int ret = 0;
-+    const unsigned char *derptr = one_byte_mac_cms_der;
-+    BIO *outmsgbio = BIO_new(BIO_s_mem());
-+    CMS_ContentInfo *content = d2i_CMS_ContentInfo(NULL, &derptr, OSSL_NELEM(one_byte_mac_cms_der));
-+
-+    if (!TEST_ptr(content))
-+        goto end;
-+
-+    /*
-+     * We expect this to fail, as the tag value in the authEnvelopedData parameter is
-+     * a single byte
-+     */
-+    if (!TEST_false(CMS_decrypt(content, privkey, cert, NULL, outmsgbio, CMS_TEXT)))
-+        goto end;
-+
-+    ret = 1;
-+end:
-+    BIO_free(outmsgbio);
-+    CMS_ContentInfo_free(content);
-+    return ret;
-+}
-+
-+static int test_non_aead_on_auth_envelope_dec(void)
-+{
-+    int ret = 0;
-+    const unsigned char *derptr = bad_cms_der;
-+    BIO *outmsgbio = BIO_new(BIO_s_mem());
-+    CMS_ContentInfo *content = d2i_CMS_ContentInfo(NULL, &derptr, OSSL_NELEM(bad_cms_der));
-+
-+    if (!TEST_ptr(content))
-+        goto end;
-+
-+    /*
-+     * We expect this to fail
-+     */
-+    if (!TEST_false(CMS_decrypt(content, privkey, cert, NULL, outmsgbio,
-+            CMS_TEXT)))
-+        goto end;
-+
-+    ret = 1;
-+end:
-+    BIO_free(outmsgbio);
-+    CMS_ContentInfo_free(content);
-+    return ret;
-+}
-+
-+static int test_non_aead_on_auth_envelope_enc(void)
-+{
-+    CMS_ContentInfo *content = NULL;
-+    STACK_OF(X509) *certstack = sk_X509_new_null();
-+    const EVP_CIPHER *cipher = EVP_aes_128_cbc();
-+    const char *msg = "Hello world";
-+    BIO *msgbio = BIO_new_mem_buf(msg, (int)strlen(msg));
-+    BIO *outmsgbio = BIO_new(BIO_s_mem());
-+    X509 *recip;
-+    int i;
-+    int ret = 0;
-+
-+    if (!TEST_ptr(certstack) || !TEST_ptr(msgbio) || !TEST_ptr(outmsgbio))
-+        goto end;
-+
-+    if (!TEST_int_gt(sk_X509_push(certstack, cert), 0))
-+        goto end;
-+
-+    /*
-+     * Emulate CMS_encrypt here, but use a non AEAD cipher
-+     */
-+    content = CMS_AuthEnvelopedData_create_ex(cipher, NULL, NULL);
-+
-+    if (!TEST_ptr(content))
-+        goto end;
-+
-+    for (i = 0; i < sk_X509_num(certstack); i++) {
-+        recip = sk_X509_value(certstack, i);
-+        if (!TEST_ptr(CMS_add1_recipient_cert(content, recip, CMS_TEXT)))
-+            goto end;
-+    }
-+
-+    /*
-+     * We expect this to fail as we are using a non-AEAD cipher on
-+     * AuthEnvelopedData
-+     */
-+    if (!TEST_int_eq(CMS_final(content, msgbio, NULL, CMS_TEXT), 0))
-+        goto end;
-+
-+    ret = 1;
-+end:
-+    sk_X509_free(certstack);
-+    BIO_free(msgbio);
-+    BIO_free(outmsgbio);
-+    CMS_ContentInfo_free(content);
-+    return ret;
-+}
-+
- static int test_encrypt_decrypt(const EVP_CIPHER *cipher)
- {
-     int testresult = 0;
-@@ -600,6 +785,9 @@ int setup_tests(void)
-     ADD_TEST(test_encrypt_decrypt_aes_128_gcm);
-     ADD_TEST(test_encrypt_decrypt_aes_192_gcm);
-     ADD_TEST(test_encrypt_decrypt_aes_256_gcm);
-+    ADD_TEST(test_non_aead_on_auth_envelope_enc);
-+    ADD_TEST(test_non_aead_on_auth_envelope_dec);
-+    ADD_TEST(test_short_mac_on_auth_envelope_data);
-     ADD_TEST(test_CMS_add1_cert);
-     ADD_TEST(test_d2i_CMS_bio_NULL);
-     ADD_TEST(test_CMS_set1_key_mem_leak);
diff -Nru openssl-3.5.6/debian/patches/Apply-the-buffered-IV-on-the-AES-OCB-EVP_Cipher-path.patch openssl-3.5.7/debian/patches/Apply-the-buffered-IV-on-the-AES-OCB-EVP_Cipher-path.patch
--- openssl-3.5.6/debian/patches/Apply-the-buffered-IV-on-the-AES-OCB-EVP_Cipher-path.patch	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/patches/Apply-the-buffered-IV-on-the-AES-OCB-EVP_Cipher-path.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,333 +0,0 @@
-From: Viktor Dukhovni <viktor@openssl.org>
-Date: Mon, 18 May 2026 18:09:44 +1000
-Subject: Apply the buffered IV on the AES-OCB EVP_Cipher() path
-
-aes_ocb_cipher(), the OCB provider's OSSL_FUNC_CIPHER_CIPHER slot,
-processed input without flushing the buffered IV into the OCB
-context.  Effective nonce was 0 regardless of the caller's IV;
-EVP_*Final_ex() then emitted a tag depending only on (key, iv).
-This gave (key, nonce) reuse and single-query universal forgery on
-the EVP_Cipher() path.
-
-Apply update_iv() at the head of aes_ocb_cipher() to mirror the
-streaming handler.  The matching GCM one-shot does this already.
-
-Add a cross-driver round-trip test for AES-{GCM,CCM,OCB} and
-ChaCha20-Poly1305 in test/evp_extra_test.c.  Each cipher is
-exercised with and without AAD; the no-AAD case is needed because
-any prior EVP_CipherUpdate(NULL, aad, ...) routes through the
-streaming handler and applies the IV itself, masking the bug.
-
-Fixes CVE-2026-45445
----
- providers/implementations/ciphers/cipher_aes_ocb.c |  13 +
- test/evp_extra_test.c                              | 265 +++++++++++++++++++++
- 2 files changed, 278 insertions(+)
-
-diff --git a/providers/implementations/ciphers/cipher_aes_ocb.c b/providers/implementations/ciphers/cipher_aes_ocb.c
-index b724c425e392..99254cb49a88 100644
---- a/providers/implementations/ciphers/cipher_aes_ocb.c
-+++ b/providers/implementations/ciphers/cipher_aes_ocb.c
-@@ -514,6 +514,19 @@ static int aes_ocb_cipher(void *vctx, unsigned char *out, size_t *outl,
-         return 0;
-     }
- 
-+    /*
-+     * Mirror the streaming handler: refuse if the key has not been set,
-+     * and push the buffered IV into the OCB context before any data is
-+     * processed.  Without this, CRYPTO_ocb128_encrypt/decrypt runs with
-+     * Offset_0 = 0 regardless of the caller's IV -- catastrophic
-+     * (key, nonce) reuse, and a subsequent EVP_*Final_ex() emits a tag
-+     * that is a function of (key, iv) only.
-+     */
-+    if (!ctx->key_set || !update_iv(ctx)) {
-+        ERR_raise(ERR_LIB_PROV, PROV_R_CIPHER_OPERATION_FAILED);
-+        return 0;
-+    }
-+
-     if (!aes_generic_ocb_cipher(ctx, in, out, inl)) {
-         ERR_raise(ERR_LIB_PROV, PROV_R_CIPHER_OPERATION_FAILED);
-         return 0;
-diff --git a/test/evp_extra_test.c b/test/evp_extra_test.c
-index eec9364f42ba..b21d0a8d082f 100644
---- a/test/evp_extra_test.c
-+++ b/test/evp_extra_test.c
-@@ -6586,6 +6586,269 @@ static int test_evp_cipher_negative_length(void)
-     return ret;
- }
- 
-+/*
-+ * Cross-driver round-trip test for AEAD one-shot vs streaming paths.
-+ *
-+ * The streaming path (EVP_CipherUpdate/Final, dispatched to
-+ * OSSL_FUNC_CIPHER_UPDATE/_FINAL) is treated as the oracle.  For each
-+ * AEAD configuration we encrypt and decrypt the same (key, iv, aad, pt),
-+ * driving the body in two combinations:
-+ *
-+ *   1.  body encrypt via EVP_Cipher() (one-shot, OSSL_FUNC_CIPHER_CIPHER),
-+ *       body decrypt via EVP_CipherUpdate (streaming).
-+ *   2.  body encrypt via EVP_CipherUpdate, body decrypt via EVP_Cipher().
-+ *
-+ * Both combinations must recover the plaintext and verify the tag.  AAD
-+ * is always fed via EVP_CipherUpdate(NULL, ...): OCB's one-shot is body
-+ * only and the asymmetric "AAD streaming, body one-shot" call shape is
-+ * the natural pattern a caller reaching for EVP_Cipher() for throughput
-+ * would write anyway.
-+ *
-+ * CVE-2026-45445 (AES-OCB EVP_Cipher() ignored IV) was a silent failure
-+ * in this matrix: the one-shot encrypt path produced ciphertext under
-+ * Offset_0 = 0 regardless of IV, which the streaming decrypt path then
-+ * could not verify.  Adding this cross-check catches the same class of
-+ * bug for any future AEAD whose one-shot dispatch diverges from its
-+ * streaming dispatch.
-+ */
-+typedef struct {
-+    const char *name; /* EVP_CIPHER fetch name */
-+    size_t keylen;
-+    size_t ivlen;
-+    size_t taglen;
-+    int is_ccm; /* needs length-up-front + tag-before-body dance */
-+} AEAD_ONESHOT_CFG;
-+
-+static const AEAD_ONESHOT_CFG aead_oneshot_cfgs[] = {
-+    { "AES-128-GCM", 16, 12, 16, 0 },
-+    { "AES-256-GCM", 32, 12, 16, 0 },
-+    { "AES-128-CCM", 16, 12, 16, 1 },
-+    { "AES-256-CCM", 32, 12, 16, 1 },
-+    { "AES-128-OCB", 16, 12, 16, 0 },
-+    { "AES-256-OCB", 32, 12, 16, 0 },
-+    { "ChaCha20-Poly1305", 32, 12, 16, 0 }
-+};
-+
-+/*
-+ * Drive an encrypt or decrypt operation.  AAD always via EVP_CipherUpdate.
-+ * Body via EVP_Cipher() when oneshot_body is non-zero, EVP_CipherUpdate
-+ * otherwise.  On encrypt, fills *out and the caller-provided tag buffer.
-+ * On decrypt, reads from in and verifies tag; returns 0 if verification
-+ * fails (the test asserts the expected outcome).
-+ */
-+static int aead_oneshot_op(const AEAD_ONESHOT_CFG *cfg, int enc,
-+    int oneshot_body, const unsigned char *key,
-+    const unsigned char *iv, const unsigned char *aad,
-+    size_t aad_len, const unsigned char *in, size_t in_len,
-+    unsigned char *out, unsigned char *tag, const char **why)
-+{
-+    EVP_CIPHER_CTX *ctx = NULL;
-+    EVP_CIPHER *cipher = NULL;
-+    int outl = 0, tmpl = 0;
-+    int ok = 0;
-+    int body_rv;
-+
-+    *why = NULL;
-+
-+    if (!TEST_ptr(cipher = EVP_CIPHER_fetch(testctx, cfg->name, testpropq))) {
-+        *why = "CIPHER_FETCH";
-+        goto end;
-+    }
-+    if (!TEST_ptr(ctx = EVP_CIPHER_CTX_new())) {
-+        *why = "CTX_NEW";
-+        goto end;
-+    }
-+    if (!TEST_true(EVP_CipherInit_ex(ctx, cipher, NULL, NULL, NULL, enc))) {
-+        *why = "INIT_CIPHER";
-+        goto end;
-+    }
-+    if (!TEST_int_gt(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_IVLEN,
-+                         (int)cfg->ivlen, NULL),
-+            0)) {
-+        *why = "SET_IVLEN";
-+        goto end;
-+    }
-+    if (cfg->is_ccm) {
-+        /* Placeholder taglen on encrypt, real tag on decrypt; both before key+iv. */
-+        if (!TEST_int_gt(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG,
-+                             (int)cfg->taglen, enc ? NULL : tag),
-+                0)) {
-+            *why = "CCM_SET_TAG";
-+            goto end;
-+        }
-+    }
-+    if (!TEST_true(EVP_CipherInit_ex(ctx, NULL, NULL, key, iv, enc))) {
-+        *why = "INIT_KEY_IV";
-+        goto end;
-+    }
-+    if (cfg->is_ccm) {
-+        if (!TEST_true(EVP_CipherUpdate(ctx, NULL, &outl, NULL, (int)in_len))) {
-+            *why = "CCM_LEN_DECL";
-+            goto end;
-+        }
-+    }
-+    if (aad_len > 0
-+        && !TEST_true(EVP_CipherUpdate(ctx, NULL, &outl, aad, (int)aad_len))) {
-+        *why = "AAD";
-+        goto end;
-+    }
-+    if (!enc && !cfg->is_ccm
-+        && !TEST_int_gt(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG,
-+                            (int)cfg->taglen, tag),
-+            0)) {
-+        *why = "SET_TAG";
-+        goto end;
-+    }
-+
-+    if (oneshot_body) {
-+        body_rv = EVP_Cipher(ctx, out, in, (unsigned int)in_len);
-+        if (cfg->is_ccm && !enc) {
-+            /* CCM decrypt: 0 means tag verify failed, < 0 means error. */
-+            if (!TEST_int_gt(body_rv, 0)) {
-+                *why = "ONESHOT_DECRYPT";
-+                goto end;
-+            }
-+        } else {
-+            if (!TEST_int_ge(body_rv, 0)) {
-+                *why = "ONESHOT_BODY";
-+                goto end;
-+            }
-+        }
-+        outl = (int)in_len;
-+    } else {
-+        if (!TEST_true(EVP_CipherUpdate(ctx, out, &outl, in, (int)in_len))) {
-+            *why = enc ? "STREAM_BODY_ENC" : "STREAM_BODY_DEC";
-+            goto end;
-+        }
-+    }
-+
-+    if (!cfg->is_ccm) {
-+        if (!TEST_true(EVP_CipherFinal_ex(ctx, out + outl, &tmpl))) {
-+            *why = enc ? "FINAL_ENC" : "FINAL_DEC";
-+            goto end;
-+        }
-+    }
-+
-+    if (enc) {
-+        if (!TEST_int_gt(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_GET_TAG,
-+                             (int)cfg->taglen, tag),
-+                0)) {
-+            *why = "GET_TAG";
-+            goto end;
-+        }
-+    }
-+    ok = 1;
-+end:
-+    EVP_CIPHER_CTX_free(ctx);
-+    EVP_CIPHER_free(cipher);
-+    return ok;
-+}
-+
-+/*
-+ * For each AEAD row we run two AAD modes, and within each AAD mode two
-+ * cross-driver round trips:
-+ *
-+ *   aad_mode 0:  no AAD.  Critical for catching the OCB-style bug: any
-+ *                EVP_CipherUpdate(NULL, aad, ...) call before the body
-+ *                would itself pass through the (correct) streaming
-+ *                handler and apply the buffered IV, masking the one-shot
-+ *                handler's failure to do so.  With aad_len == 0 we make
-+ *                EVP_Cipher() the very first cipher operation on the
-+ *                context, which is the shape the bug requires.
-+ *
-+ *   aad_mode 1:  with AAD via streaming.  Catches divergence between the
-+ *                drivers when AAD is in play.
-+ *
-+ *   leg 0:       encrypt-oneshot   + decrypt-streaming
-+ *   leg 1:       encrypt-streaming + decrypt-oneshot
-+ *
-+ * The test index encodes (cipher, aad_mode) so a failure points at both.
-+ */
-+static int test_aead_oneshot_roundtrip(int idx)
-+{
-+    static const unsigned char fixed_key[32] = {
-+        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-+        0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
-+        0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
-+        0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
-+    };
-+    static const unsigned char fixed_iv[12] = {
-+        0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab
-+    };
-+    static const unsigned char fixed_aad[] = "extra:context";
-+    static const unsigned char fixed_pt[] = "THE QUICK BROWN FOX JUMPS OVER LAZY!!";
-+    const AEAD_ONESHOT_CFG *cfg = &aead_oneshot_cfgs[idx / 2];
-+    int with_aad = idx % 2;
-+    size_t aad_len = with_aad ? sizeof(fixed_aad) - 1 : 0;
-+    size_t pt_len = sizeof(fixed_pt) - 1;
-+    EVP_CIPHER *probe = NULL;
-+    unsigned char ct[64], pt[64];
-+    unsigned char tag_oneshot[16], tag_stream[16];
-+    const char *why = NULL;
-+    int leg, ok = 0;
-+
-+    /*
-+     * Probe for the cipher: a build with no-ocb / no-chacha / etc. will
-+     * not have it, and we treat that as a pass (nothing to test here).
-+     */
-+    ERR_set_mark();
-+    probe = EVP_CIPHER_fetch(testctx, cfg->name, testpropq);
-+    ERR_pop_to_mark();
-+    if (probe == NULL) {
-+        TEST_info("skipping, '%s' is not available", cfg->name);
-+        return 1;
-+    }
-+    EVP_CIPHER_free(probe);
-+
-+    for (leg = 0; leg <= 1; leg++) {
-+        int enc_oneshot = (leg == 0);
-+        unsigned char *tag = enc_oneshot ? tag_oneshot : tag_stream;
-+
-+        memset(ct, 0, sizeof(ct));
-+        memset(pt, 0, sizeof(pt));
-+        memset(tag, 0, cfg->taglen);
-+
-+        if (!aead_oneshot_op(cfg, /*enc=*/1, /*oneshot_body=*/enc_oneshot,
-+                fixed_key, fixed_iv, fixed_aad, aad_len,
-+                fixed_pt, pt_len, ct, tag, &why)) {
-+            TEST_error("%s (%s): encrypt leg %d (%s body) failed at %s",
-+                cfg->name, with_aad ? "with AAD" : "no AAD",
-+                leg, enc_oneshot ? "oneshot" : "stream",
-+                why ? why : "?");
-+            goto end;
-+        }
-+        if (!aead_oneshot_op(cfg, /*enc=*/0, /*oneshot_body=*/!enc_oneshot,
-+                fixed_key, fixed_iv, fixed_aad, aad_len,
-+                ct, pt_len, pt, tag, &why)) {
-+            TEST_error("%s (%s): decrypt leg %d (%s body) failed at %s",
-+                cfg->name, with_aad ? "with AAD" : "no AAD",
-+                leg, enc_oneshot ? "stream" : "oneshot",
-+                why ? why : "?");
-+            goto end;
-+        }
-+        if (!TEST_mem_eq(pt, pt_len, fixed_pt, pt_len)) {
-+            TEST_error("%s (%s): leg %d: recovered plaintext differs",
-+                cfg->name, with_aad ? "with AAD" : "no AAD", leg);
-+            goto end;
-+        }
-+    }
-+
-+    /*
-+     * Both legs share the same (key, iv, aad, pt) and must therefore
-+     * agree on the tag bit-for-bit, regardless of which driver computed
-+     * it.  This catches the OCB-style failure where the one-shot path
-+     * silently emits a different ciphertext/tag from the streaming path.
-+     */
-+    if (!TEST_mem_eq(tag_oneshot, cfg->taglen, tag_stream, cfg->taglen)) {
-+        TEST_error("%s (%s): oneshot-encrypt tag != streaming-encrypt tag",
-+            cfg->name, with_aad ? "with AAD" : "no AAD");
-+        goto end;
-+    }
-+    ok = 1;
-+end:
-+    return ok;
-+}
-+
- static int test_evp_cipher_pipeline(void)
- {
-     OSSL_PROVIDER *fake_pipeline = NULL;
-@@ -6987,6 +7250,8 @@ int setup_tests(void)
-     ADD_TEST(test_aes_rc4_keylen_change_cve_2023_5363);
- #endif
- 
-+    ADD_ALL_TESTS(test_aead_oneshot_roundtrip, 2 * OSSL_NELEM(aead_oneshot_cfgs));
-+
-     ADD_TEST(test_invalid_ctx_for_digest);
- 
-     ADD_TEST(test_evp_cipher_negative_length);
diff -Nru openssl-3.5.6/debian/patches/Avoid-length-truncation-in-ASN1_STRING_set.patch openssl-3.5.7/debian/patches/Avoid-length-truncation-in-ASN1_STRING_set.patch
--- openssl-3.5.6/debian/patches/Avoid-length-truncation-in-ASN1_STRING_set.patch	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/patches/Avoid-length-truncation-in-ASN1_STRING_set.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,88 +0,0 @@
-From: Viktor Dukhovni <openssl-users@dukhovni.org>
-Date: Tue, 7 Apr 2026 22:40:55 +1000
-Subject: Avoid length truncation in ASN1_STRING_set
-
-The ASN1_STRING_set() function takes an `int` length, make sure the
-argument is not inadvertently truncated when it is called from
-asn1_ex_c2i().
-
-Fixes CVE-2026-34180
----
- crypto/asn1/tasn_dec.c | 24 +++++++++++++++++-------
- 1 file changed, 17 insertions(+), 7 deletions(-)
-
-diff --git a/crypto/asn1/tasn_dec.c b/crypto/asn1/tasn_dec.c
-index 91c2e524f55b..e9532b9f48f7 100644
---- a/crypto/asn1/tasn_dec.c
-+++ b/crypto/asn1/tasn_dec.c
-@@ -54,7 +54,7 @@ static int asn1_d2i_ex_primitive(ASN1_VALUE **pval,
-     const ASN1_ITEM *it,
-     int tag, int aclass, char opt,
-     ASN1_TLC *ctx);
--static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
-+static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, long len,
-     int utype, char *free_cont, const ASN1_ITEM *it);
- 
- /* Table to convert tags to bit values, used for MSTRING type */
-@@ -855,19 +855,24 @@ static int asn1_d2i_ex_primitive(ASN1_VALUE **pval,
- 
- /* Translate ASN1 content octets into a structure */
- 
--static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
-+static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, long len,
-     int utype, char *free_cont, const ASN1_ITEM *it)
- {
-     ASN1_VALUE **opval = NULL;
-     ASN1_STRING *stmp;
-     ASN1_TYPE *typ = NULL;
-     int ret = 0;
-+    int ilen = (int)len;
-     const ASN1_PRIMITIVE_FUNCS *pf;
-     ASN1_INTEGER **tint;
-     pf = it->funcs;
- 
--    if (pf && pf->prim_c2i)
--        return pf->prim_c2i(pval, cont, len, utype, free_cont, it);
-+    if (pf && pf->prim_c2i) {
-+        if (len == (long)ilen)
-+            return pf->prim_c2i(pval, cont, ilen, utype, free_cont, it);
-+        ERR_raise(ERR_LIB_ASN1, ASN1_R_TOO_LONG);
-+        return 0;
-+    }
-     /* If ANY type clear type and set pointer to internal value */
-     if (it->utype == V_ASN1_ANY) {
-         if (*pval == NULL) {
-@@ -885,7 +890,8 @@ static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
-     }
-     switch (utype) {
-     case V_ASN1_OBJECT:
--        if (!ossl_c2i_ASN1_OBJECT((ASN1_OBJECT **)pval, &cont, len))
-+        if (len != (long)ilen
-+            || !ossl_c2i_ASN1_OBJECT((ASN1_OBJECT **)pval, &cont, ilen))
-             goto err;
-         break;
- 
-@@ -940,6 +946,10 @@ static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
-     case V_ASN1_SET:
-     case V_ASN1_SEQUENCE:
-     default:
-+        if (len != (long)ilen) {
-+            ERR_raise(ERR_LIB_ASN1, ASN1_R_TOO_LONG);
-+            goto err;
-+        }
-         if (utype == V_ASN1_BMPSTRING && (len & 1)) {
-             ERR_raise(ERR_LIB_ASN1, ASN1_R_BMPSTRING_IS_WRONG_LENGTH);
-             goto err;
-@@ -970,10 +980,10 @@ static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
-         }
-         /* If we've already allocated a buffer use it */
-         if (*free_cont) {
--            ASN1_STRING_set0(stmp, (unsigned char *)cont /* UGLY CAST! */, len);
-+            ASN1_STRING_set0(stmp, (unsigned char *)cont /* UGLY CAST! */, ilen);
-             *free_cont = 0;
-         } else {
--            if (!ASN1_STRING_set(stmp, cont, len)) {
-+            if (!ASN1_STRING_set(stmp, cont, ilen)) {
-                 ERR_raise(ERR_LIB_ASN1, ERR_R_ASN1_LIB);
-                 ASN1_STRING_free(stmp);
-                 *pval = NULL;
diff -Nru openssl-3.5.6/debian/patches/cms-kek_unwrap_key-Fix-out-of-bounds-read-in-check-byte-v.patch openssl-3.5.7/debian/patches/cms-kek_unwrap_key-Fix-out-of-bounds-read-in-check-byte-v.patch
--- openssl-3.5.6/debian/patches/cms-kek_unwrap_key-Fix-out-of-bounds-read-in-check-byte-v.patch	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/patches/cms-kek_unwrap_key-Fix-out-of-bounds-read-in-check-byte-v.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,52 +0,0 @@
-From: Nikola Pajkovsky <nikolap@openssl.org>
-Date: Thu, 21 May 2026 11:53:09 +0200
-Subject: cms: kek_unwrap_key: Fix out-of-bounds read in check-byte validation
-
-the check-byte test in kek_unwrap_key() reads tmp[1] through tmp[6]
-unconditionally, so the decrypted buffer must hold at least seven
-octets. The pre-decryption size check enforces inlen >= 2 * blocklen,
-which yields the required seven octets only when blocklen >= 4. For
-a KEK cipher with a smaller block size, inlen can be as small as
-2 * blocklen and the check-byte read overruns the inlen-sized tmp
-allocation.
-
-Reject blocklen < 4 in the early sanity check. All block ciphers
-appropriate for CMS PasswordRecipientInfo key wrapping have a block
-size of at least 8 octets (DES/3DES = 8, AES = 16), so this only
-forbids ciphers that would not be valid KEK choices anyway, and the
-existing inlen >= 2 * blocklen check then guarantees the seven-octet
-lower bound the check-byte test relies on.
-
-Fixes CVE-2026-9076
-Signed-off-by: Nikola Pajkovsky <nikolap@openssl.org>
----
- crypto/cms/cms_pwri.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/crypto/cms/cms_pwri.c b/crypto/cms/cms_pwri.c
-index d62dbbde881b..4bb06b406eb7 100644
---- a/crypto/cms/cms_pwri.c
-+++ b/crypto/cms/cms_pwri.c
-@@ -200,18 +200,18 @@ static int kek_unwrap_key(unsigned char *out, size_t *outlen,
-     const unsigned char *in, size_t inlen,
-     EVP_CIPHER_CTX *ctx)
- {
--    size_t blocklen = EVP_CIPHER_CTX_get_block_size(ctx);
-+    int blocklen = EVP_CIPHER_CTX_get_block_size(ctx);
-     unsigned char *tmp;
-     int outl, rv = 0;
- 
--    if (blocklen == 0)
-+    if (blocklen < 4)
-         return 0;
- 
--    if (inlen < 2 * blocklen) {
-+    if (inlen < 2 * (size_t)blocklen) {
-         /* too small */
-         return 0;
-     }
--    if (inlen % blocklen) {
-+    if (inlen > INT_MAX || inlen % blocklen) {
-         /* Invalid size */
-         return 0;
-     }
diff -Nru openssl-3.5.6/debian/patches/cms-kek_unwrap_key-test-for-fix-out-of-bounds-read-in-che.patch openssl-3.5.7/debian/patches/cms-kek_unwrap_key-test-for-fix-out-of-bounds-read-in-che.patch
--- openssl-3.5.6/debian/patches/cms-kek_unwrap_key-test-for-fix-out-of-bounds-read-in-che.patch	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/patches/cms-kek_unwrap_key-test-for-fix-out-of-bounds-read-in-che.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,110 +0,0 @@
-From: Nikola Pajkovsky <nikolap@openssl.org>
-Date: Thu, 21 May 2026 14:18:11 +0200
-Subject: cms: kek_unwrap_key: test for fix out-of-bounds read in check-byte
- validation
-
-added EnvelopedData blob with a PasswordRecipientInfo using
-id-alg-PWRI-KEK and an AES-128-CFB key encryption cipher. CFB's 1-byte
-effective block size let the inlen >= 2 * blocklen guard in
-kek_unwrap_key() accept a wrapped key shorter than the seven octets
-the check-byte test reads from tmp[1..6]; the encryptedKey OCTET
-STRING here is only two bytes.
-
-Signed-off-by: Nikola Pajkovsky <nikolap@openssl.org>
----
- test/cmsapitest.c             | 48 +++++++++++++++++++++++++++++++++++++++++--
- test/recipes/80-test_cmsapi.t |  3 ++-
- 2 files changed, 48 insertions(+), 3 deletions(-)
-
-diff --git a/test/cmsapitest.c b/test/cmsapitest.c
-index 0752d14df09c..d908bc6fc4c4 100644
---- a/test/cmsapitest.c
-+++ b/test/cmsapitest.c
-@@ -21,6 +21,7 @@ static X509 *cert = NULL;
- static EVP_PKEY *privkey = NULL;
- static char *derin = NULL;
- static char *too_long_iv_cms_in = NULL;
-+static char *pwri_kek_oob_der_in = NULL;
- 
- static int test_encrypt_decrypt(const EVP_CIPHER *cipher)
- {
-@@ -512,7 +513,48 @@ static int test_cms_aesgcm_iv_too_long(void)
-     return ret;
- }
- 
--OPT_TEST_DECLARE_USAGE("certfile privkeyfile derfile\n")
-+/*
-+ * CMS EnvelopedData with a single PasswordRecipientInfo using
-+ * id-alg-PWRI-KEK and an AES-128-CFB key encryption cipher
-+ * (1-byte effective block size).  The encryptedKey OCTET STRING is
-+ * only two bytes long, so the wrapped key buffer is shorter than
-+ * the seven octets read by the check-byte test in kek_unwrap_key().
-+ * Prior to CVE-2026-9076 this triggered an out-of-bounds heap read;
-+ * CMS_decrypt() must now fail cleanly.
-+ */
-+static int test_pwri_kek_unwrap_short_encrypted_key(void)
-+{
-+    BIO *in = NULL;
-+    CMS_ContentInfo *cms = NULL;
-+    unsigned long err = 0;
-+    int ret = 0;
-+
-+    if (!TEST_ptr(in = BIO_new_file(pwri_kek_oob_der_in, "rb"))
-+        || !TEST_ptr(cms = d2i_CMS_bio(in, NULL)))
-+        goto end;
-+
-+    /*
-+     * The unwrap is attempted eagerly inside CMS_decrypt_set1_password().
-+     * It must fail cleanly (no OOB read) and report CMS_R_UNWRAP_FAILURE.
-+     */
-+    if (!TEST_false(CMS_decrypt_set1_password(cms,
-+            (unsigned char *)"password", -1)))
-+        goto end;
-+
-+    err = ERR_peek_last_error();
-+    if (!TEST_int_eq(ERR_GET_LIB(err), ERR_LIB_CMS)
-+        || !TEST_int_eq(ERR_GET_REASON(err), CMS_R_UNWRAP_FAILURE))
-+        goto end;
-+
-+    ERR_clear_error();
-+    ret = 1;
-+end:
-+    CMS_ContentInfo_free(cms);
-+    BIO_free(in);
-+    return ret;
-+}
-+
-+OPT_TEST_DECLARE_USAGE("certfile privkeyfile derfile tooLongIVpem pwriKekOobDer\n")
- 
- int setup_tests(void)
- {
-@@ -527,7 +569,8 @@ int setup_tests(void)
-     if (!TEST_ptr(certin = test_get_argument(0))
-         || !TEST_ptr(privkeyin = test_get_argument(1))
-         || !TEST_ptr(derin = test_get_argument(2))
--        || !TEST_ptr(too_long_iv_cms_in = test_get_argument(3)))
-+        || !TEST_ptr(too_long_iv_cms_in = test_get_argument(3))
-+        || !TEST_ptr(pwri_kek_oob_der_in = test_get_argument(4)))
-         return 0;
- 
-     certbio = BIO_new_file(certin, "r");
-@@ -564,6 +607,7 @@ int setup_tests(void)
-     ADD_TEST(test_encrypted_data_aead);
-     ADD_ALL_TESTS(test_d2i_CMS_decode, 2);
-     ADD_TEST(test_cms_aesgcm_iv_too_long);
-+    ADD_TEST(test_pwri_kek_unwrap_short_encrypted_key);
-     return 1;
- }
- 
-diff --git a/test/recipes/80-test_cmsapi.t b/test/recipes/80-test_cmsapi.t
-index 8d9371e005c0..3d1dae846464 100644
---- a/test/recipes/80-test_cmsapi.t
-+++ b/test/recipes/80-test_cmsapi.t
-@@ -19,5 +19,6 @@ plan tests => 1;
- ok(run(test(["cmsapitest", srctop_file("test", "certs", "servercert.pem"),
-              srctop_file("test", "certs", "serverkey.pem"),
-              srctop_file("test", "recipes", "80-test_cmsapi_data", "encryptedData.der"),
--             srctop_file("test", "recipes", "80-test_cmsapi_data", "encDataWithTooLongIV.pem")])),
-+             srctop_file("test", "recipes", "80-test_cmsapi_data", "encDataWithTooLongIV.pem"),
-+             srctop_file("test", "recipes", "80-test_cmsapi_data", "cms_pwri_kek_oob.der")])),
-              "running cmsapitest");
diff -Nru openssl-3.5.6/debian/patches/Configure-allow-to-enable-ktls-if-target-does-not-start-w.patch openssl-3.5.7/debian/patches/Configure-allow-to-enable-ktls-if-target-does-not-start-w.patch
--- openssl-3.5.6/debian/patches/Configure-allow-to-enable-ktls-if-target-does-not-start-w.patch	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/patches/Configure-allow-to-enable-ktls-if-target-does-not-start-w.patch	2026-07-18 21:20:05.000000000 +0200
@@ -36,10 +36,10 @@
      "linux-latomic" => {
          inherit_from     => [ "linux-generic32" ],
 diff --git a/Configure b/Configure
-index 499585438a16..98c0bcb92a79 100755
+index 1b020faadb01..e8321ba49219 100755
 --- a/Configure
 +++ b/Configure
-@@ -1836,7 +1836,7 @@ unless ($disabled{devcryptoeng}) {
+@@ -1841,7 +1841,7 @@ unless ($disabled{devcryptoeng}) {
  unless ($disabled{ktls}) {
      $config{ktls}="";
      my $cc = $config{CROSS_COMPILE}.$config{CC};
diff -Nru openssl-3.5.6/debian/patches/Enforce-implicit-rejection-for-CMS-PKCS-7-decryption.patch openssl-3.5.7/debian/patches/Enforce-implicit-rejection-for-CMS-PKCS-7-decryption.patch
--- openssl-3.5.6/debian/patches/Enforce-implicit-rejection-for-CMS-PKCS-7-decryption.patch	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/patches/Enforce-implicit-rejection-for-CMS-PKCS-7-decryption.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,101 +0,0 @@
-From: Dmitry Belyavskiy <beldmit@gmail.com>
-Date: Fri, 15 May 2026 14:09:17 +0200
-Subject: Enforce implicit rejection for CMS/PKCS#7 decryption
-
-Drop the disablement of the implicit rejection for RSA PKCS#1 v1.5
-decryption.
-
-Fixes CVE-2026-42768
----
- crypto/cms/cms_env.c       |  7 -------
- crypto/pkcs7/pk7_doit.c    |  7 -------
- doc/man3/CMS_decrypt.pod   |  4 ++--
- doc/man3/PKCS7_decrypt.pod | 10 +++++++++-
- 4 files changed, 11 insertions(+), 17 deletions(-)
-
-diff --git a/crypto/cms/cms_env.c b/crypto/cms/cms_env.c
-index 0828d157fad6..70dd59c06169 100644
---- a/crypto/cms/cms_env.c
-+++ b/crypto/cms/cms_env.c
-@@ -619,13 +619,6 @@ static int cms_RecipientInfo_ktri_decrypt(CMS_ContentInfo *cms,
-     if (!ossl_cms_env_asn1_ctrl(ri, 1))
-         goto err;
- 
--    if (EVP_PKEY_is_a(pkey, "RSA"))
--        /* upper layer CMS code incorrectly assumes that a successful RSA
--         * decryption means that the key matches ciphertext (which never
--         * was the case, implicit rejection or not), so to make it work
--         * disable implicit rejection for RSA keys */
--        EVP_PKEY_CTX_ctrl_str(ktri->pctx, "rsa_pkcs1_implicit_rejection", "0");
--
-     if (evp_pkey_decrypt_alloc(ktri->pctx, &ek, &eklen, fixlen,
-             ktri->encryptedKey->data,
-             ktri->encryptedKey->length)
-diff --git a/crypto/pkcs7/pk7_doit.c b/crypto/pkcs7/pk7_doit.c
-index d6513cf3a379..1ec7895fc197 100644
---- a/crypto/pkcs7/pk7_doit.c
-+++ b/crypto/pkcs7/pk7_doit.c
-@@ -203,13 +203,6 @@ static int pkcs7_decrypt_rinfo(unsigned char **pek, int *peklen,
-     if (EVP_PKEY_decrypt_init(pctx) <= 0)
-         goto err;
- 
--    if (EVP_PKEY_is_a(pkey, "RSA"))
--        /* upper layer pkcs7 code incorrectly assumes that a successful RSA
--         * decryption means that the key matches ciphertext (which never
--         * was the case, implicit rejection or not), so to make it work
--         * disable implicit rejection for RSA keys */
--        EVP_PKEY_CTX_ctrl_str(pctx, "rsa_pkcs1_implicit_rejection", "0");
--
-     ret = evp_pkey_decrypt_alloc(pctx, &ek, &eklen, fixlen,
-         ri->enc_key->data, ri->enc_key->length);
-     if (ret <= 0)
-diff --git a/doc/man3/CMS_decrypt.pod b/doc/man3/CMS_decrypt.pod
-index 121b74a30a10..66a94287b6f5 100644
---- a/doc/man3/CMS_decrypt.pod
-+++ b/doc/man3/CMS_decrypt.pod
-@@ -68,7 +68,7 @@ then the above behaviour is modified and an error B<is> returned if no
- recipient encrypted key can be decrypted B<without> generating a random
- content encryption key. Applications should use this flag with
- B<extreme caution> especially in automated gateways as it can leave them
--open to attack.
-+open to attack. See L<EVP_PKEY_decrypt(3)> for more details.
- 
- It is possible to determine the correct recipient key by other means (for
- example looking them up in a database) and setting them in the CMS structure
-@@ -103,7 +103,7 @@ mentioned in CMS_verify() also applies to CMS_decrypt().
- 
- =head1 SEE ALSO
- 
--L<ERR_get_error(3)>, L<CMS_encrypt(3)>
-+L<ERR_get_error(3)>, L<CMS_encrypt(3)>, L<EVP_PKEY_decrypt(3)>
- 
- =head1 HISTORY
- 
-diff --git a/doc/man3/PKCS7_decrypt.pod b/doc/man3/PKCS7_decrypt.pod
-index aea15937ab86..cfb5b3f87376 100644
---- a/doc/man3/PKCS7_decrypt.pod
-+++ b/doc/man3/PKCS7_decrypt.pod
-@@ -22,6 +22,14 @@ B<flags> is an optional set of flags.
- Although the recipients certificate is not needed to decrypt the data it is needed
- to locate the appropriate (of possible several) recipients in the PKCS#7 structure.
- 
-+When RSA PKCS#1 v1.5 Key Transport is in use, the invoked EVP_PKEY_decrypt()
-+will use implicit rejection mechanism. It always returns the result of RSA
-+decryption of the symmetric key to avoid Marvin attack. This result is
-+deterministic and can happen to match the symmetric cipher used for the content
-+encryption. In case when the certificate is not provided, the last
-+RecipientInfo producing the key looking valid will be used. It may cause
-+getting garbage content on decryption.
-+
- The following flags can be passed in the B<flags> parameter.
- 
- If the B<PKCS7_TEXT> flag is set MIME headers for type B<text/plain> are deleted
-@@ -43,7 +51,7 @@ mentioned in PKCS7_sign() also applies to PKCS7_verify().
- 
- =head1 SEE ALSO
- 
--L<ERR_get_error(3)>, L<PKCS7_encrypt(3)>
-+L<ERR_get_error(3)>, L<PKCS7_encrypt(3)>, L<EVP_PKEY_decrypt(3)>
- 
- =head1 COPYRIGHT
- 
diff -Nru openssl-3.5.6/debian/patches/Fix-handling-of-empty-ciphertext-messages-in-AES-GCM-SIV-.patch openssl-3.5.7/debian/patches/Fix-handling-of-empty-ciphertext-messages-in-AES-GCM-SIV-.patch
--- openssl-3.5.6/debian/patches/Fix-handling-of-empty-ciphertext-messages-in-AES-GCM-SIV-.patch	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/patches/Fix-handling-of-empty-ciphertext-messages-in-AES-GCM-SIV-.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,247 +0,0 @@
-From: Dmitry Belyavskiy <beldmit@gmail.com>
-Date: Wed, 13 May 2026 11:45:51 +0200
-Subject: Fix handling of empty-ciphertext messages in AES-GCM-SIV and AES-SIV
-
-AES-GCM-SIV: EVP_DecryptFinal_ex Accepts All-Zero Tag for Empty-Ciphertext
-Messages.
-
-AES-SIV: EVP_DecryptUpdate_ex Accepts All-Zero Tag for Empty-Ciphertext
-Messages on context reuse.
-
-Fixes CVE-2026-45446
----
- .../ciphers/cipher_aes_gcm_siv_hw.c                |  27 ++--
- providers/implementations/ciphers/cipher_aes_siv.c |   3 +
- test/evp_extra_test.c                              | 139 +++++++++++++++++++++
- 3 files changed, 158 insertions(+), 11 deletions(-)
-
-diff --git a/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c b/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c
-index d0b6ae4b070d..5bdc567b4bb1 100644
---- a/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c
-+++ b/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c
-@@ -58,6 +58,9 @@ static int aes_gcm_siv_initkey(void *vctx)
-     memset(&data, 0, sizeof(data));
-     memcpy(&data.block[sizeof(data.counter)], ctx->nonce, NONCE_SIZE);
- 
-+    ctx->generated_tag = 0;
-+    memset(ctx->tag, 0, TAG_SIZE);
-+
-     /* msg_auth_key is always 16 bytes in size, regardless of AES128/AES256 */
-     /* counter is stored little-endian */
-     for (i = 0; i < BLOCK_SIZE; i += 8) {
-@@ -134,17 +137,6 @@ static int aes_gcm_siv_aad(PROV_AES_GCM_SIV_CTX *ctx,
-     return 1;
- }
- 
--static int aes_gcm_siv_finish(PROV_AES_GCM_SIV_CTX *ctx)
--{
--    int ret = 0;
--
--    if (ctx->enc)
--        return ctx->generated_tag;
--    ret = !CRYPTO_memcmp(ctx->tag, ctx->user_tag, sizeof(ctx->tag));
--    ret &= ctx->have_user_tag;
--    return ret;
--}
--
- static int aes_gcm_siv_encrypt(PROV_AES_GCM_SIV_CTX *ctx, const unsigned char *in,
-     unsigned char *out, size_t len)
- {
-@@ -271,6 +263,19 @@ static int aes_gcm_siv_decrypt(PROV_AES_GCM_SIV_CTX *ctx, const unsigned char *i
-     return !error;
- }
- 
-+static int aes_gcm_siv_finish(PROV_AES_GCM_SIV_CTX *ctx)
-+{
-+    int ret = 0;
-+
-+    if (ctx->enc)
-+        return ctx->generated_tag;
-+    if (!ctx->generated_tag)
-+        aes_gcm_siv_decrypt(ctx, NULL, NULL, 0);
-+    ret = !CRYPTO_memcmp(ctx->tag, ctx->user_tag, sizeof(ctx->tag));
-+    ret &= ctx->have_user_tag;
-+    return ret;
-+}
-+
- static int aes_gcm_siv_cipher(void *vctx, unsigned char *out,
-     const unsigned char *in, size_t len)
- {
-diff --git a/providers/implementations/ciphers/cipher_aes_siv.c b/providers/implementations/ciphers/cipher_aes_siv.c
-index 96f26757abe2..754e0757cda3 100644
---- a/providers/implementations/ciphers/cipher_aes_siv.c
-+++ b/providers/implementations/ciphers/cipher_aes_siv.c
-@@ -192,6 +192,7 @@ static int aes_siv_set_ctx_params(void *vctx, const OSSL_PARAM params[])
-     PROV_AES_SIV_CTX *ctx = (PROV_AES_SIV_CTX *)vctx;
-     const OSSL_PARAM *p;
-     unsigned int speed = 0;
-+    SIV128_CONTEXT *sctx = &ctx->siv;
- 
-     if (ossl_param_is_empty(params))
-         return 1;
-@@ -226,6 +227,8 @@ static int aes_siv_set_ctx_params(void *vctx, const OSSL_PARAM params[])
-         if (keylen != ctx->keylen)
-             return 0;
-     }
-+    sctx->final_ret = -1;
-+
-     return 1;
- }
- 
-diff --git a/test/evp_extra_test.c b/test/evp_extra_test.c
-index b21d0a8d082f..fcaa7cce139f 100644
---- a/test/evp_extra_test.c
-+++ b/test/evp_extra_test.c
-@@ -6528,6 +6528,142 @@ static int test_aes_rc4_keylen_change_cve_2023_5363(void)
- }
- #endif
- 
-+static int test_aes_gcm_siv_empty_data(void)
-+{
-+    unsigned char key[16] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
-+        0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10 };
-+    unsigned char nonce[12] = { 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x11,
-+        0x22, 0x33, 0x44, 0x55 };
-+    unsigned char aad[33] = "this AAD was never authenticated";
-+    unsigned char zero_tag[16] = { 0 };
-+    unsigned char real_tag[16];
-+    unsigned char out[16];
-+    int outl, ret = 0;
-+    EVP_CIPHER_CTX *ctx = NULL;
-+    EVP_CIPHER *c = EVP_CIPHER_fetch(NULL, "AES-128-GCM-SIV", NULL);
-+
-+    if (c == NULL) {
-+        return TEST_skip("AES-128-GCM-SIV cipher is not available");
-+    }
-+
-+    /* Compute the CORRECT tag for (key,nonce,aad,pt="") via encrypt */
-+    ctx = EVP_CIPHER_CTX_new();
-+    if (!TEST_ptr(ctx)
-+        || !TEST_true(EVP_EncryptInit_ex2(ctx, c, key, nonce, NULL))
-+        || !TEST_true(EVP_EncryptUpdate(ctx, NULL, &outl, aad, sizeof(aad))) /* AAD */
-+        || !TEST_true(EVP_EncryptUpdate(ctx, out, &outl, aad, 0)) /* empty PT, out!=NULL */
-+        || !TEST_true(EVP_EncryptFinal_ex(ctx, out, &outl))
-+        || !TEST_true(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_GET_TAG, 16, real_tag)))
-+        goto err;
-+    EVP_CIPHER_CTX_free(ctx);
-+
-+    /* SANITY: decrypt with CORRECT tag and an explicit empty-PT Update */
-+    ctx = EVP_CIPHER_CTX_new();
-+    if (!TEST_ptr(ctx)
-+        || !TEST_true(EVP_DecryptInit_ex2(ctx, c, key, nonce, NULL))
-+        || !TEST_true(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG, 16, real_tag))
-+        || !TEST_true(EVP_DecryptUpdate(ctx, NULL, &outl, aad, sizeof(aad)))
-+        || !TEST_true(EVP_DecryptUpdate(ctx, out, &outl, aad, 0)) /* force aes_gcm_siv_decrypt(len=0) */
-+        || !TEST_true(EVP_DecryptFinal_ex(ctx, out, &outl)))
-+        goto err;
-+    EVP_CIPHER_CTX_free(ctx);
-+
-+    /* FORGERY A: AAD only, NO ciphertext Update, ALL-ZERO tag */
-+    ctx = EVP_CIPHER_CTX_new();
-+    if (!TEST_ptr(ctx)
-+        || !TEST_true(EVP_DecryptInit_ex2(ctx, c, key, nonce, NULL))
-+        || !TEST_true(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG, 16, zero_tag))
-+        || !TEST_true(EVP_DecryptUpdate(ctx, NULL, &outl, aad, sizeof(aad))) /* AAD only, out==NULL */
-+        || !TEST_false(EVP_DecryptFinal_ex(ctx, out, &outl)))
-+        goto err;
-+    EVP_CIPHER_CTX_free(ctx);
-+
-+    /* FORGERY B: no AAD, no Update at all, ALL-ZERO tag */
-+    ctx = EVP_CIPHER_CTX_new();
-+    if (!TEST_ptr(ctx)
-+        || !TEST_true(EVP_DecryptInit_ex2(ctx, c, key, nonce, NULL))
-+        || !TEST_true(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG, 16, zero_tag))
-+        || !TEST_false(EVP_DecryptFinal_ex(ctx, out, &outl)))
-+        goto err;
-+    EVP_CIPHER_CTX_free(ctx);
-+
-+    /* CONTROL: AAD only, NO ciphertext Update, CORRECT tag */
-+    ctx = EVP_CIPHER_CTX_new();
-+    if (!TEST_ptr(ctx)
-+        || !TEST_true(EVP_DecryptInit_ex2(ctx, c, key, nonce, NULL))
-+        || !TEST_true(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG, 16, real_tag))
-+        || !TEST_true(EVP_DecryptUpdate(ctx, NULL, &outl, aad, sizeof(aad)))
-+        || !TEST_true(EVP_DecryptFinal_ex(ctx, out, &outl)))
-+        goto err;
-+    EVP_CIPHER_CTX_free(ctx);
-+    ctx = NULL;
-+
-+    ret = 1;
-+err:
-+    EVP_CIPHER_CTX_free(ctx);
-+
-+    EVP_CIPHER_free(c);
-+    return ret;
-+}
-+
-+/*
-+ * AES-SIV reuse-without-rekey:
-+ *   msg1: legit non-empty CT, tag verifies, final_ret=0
-+ *   msg2: no reinit (or reinit with key=NULL), set forged tag,
-+ *         AAD only, DecryptFinal -> does stale final_ret leak through?
-+ */
-+static int test_aes_siv_ctx_reuse(void)
-+{
-+    unsigned char key[32] = { 7 }; /* AES-128-SIV => 2*16 */
-+    unsigned char pt[9] = "payload!";
-+    unsigned char ct[9], tagbuf[16], out[16], zero16[16] = { 0 };
-+    unsigned char aad[14] = "forged header";
-+    int outl, ret = 0;
-+    EVP_CIPHER_CTX *e = NULL, *d = NULL;
-+    EVP_CIPHER *c = EVP_CIPHER_fetch(NULL, "AES-128-SIV", NULL);
-+
-+    if (c == NULL) {
-+        return TEST_skip("AES-128-SIV cipher is not available");
-+    }
-+
-+    /* produce a valid (ct,tag) for msg1 */
-+    e = EVP_CIPHER_CTX_new();
-+    if (!TEST_ptr(e)
-+        || !TEST_true(EVP_EncryptInit_ex2(e, c, key, NULL, NULL))
-+        || !TEST_true(EVP_EncryptUpdate(e, NULL, &outl, (unsigned char *)"hdr1", 4))
-+        || !TEST_true(EVP_EncryptUpdate(e, ct, &outl, pt, sizeof(pt)))
-+        || !TEST_true(EVP_EncryptFinal_ex(e, out, &outl))
-+        || !TEST_true(EVP_CIPHER_CTX_ctrl(e, EVP_CTRL_AEAD_GET_TAG, 16, tagbuf))) {
-+        EVP_CIPHER_CTX_free(e);
-+        goto err;
-+    }
-+    EVP_CIPHER_CTX_free(e);
-+
-+    /* msg1 decrypt */
-+    d = EVP_CIPHER_CTX_new();
-+    if (!TEST_ptr(d)
-+        || !TEST_true(EVP_DecryptInit_ex2(d, c, key, NULL, NULL))
-+        || !TEST_true(EVP_CIPHER_CTX_ctrl(d, EVP_CTRL_AEAD_SET_TAG, 16, tagbuf))
-+        || !TEST_true(EVP_DecryptUpdate(d, NULL, &outl, (unsigned char *)"hdr1", 4))
-+        || !TEST_true(EVP_DecryptUpdate(d, out, &outl, ct, sizeof(ct)))
-+        || !TEST_true(EVP_DecryptFinal_ex(d, out, &outl)))
-+        goto err;
-+
-+    /* msg2 on SAME ctx, reinit with key=NULL => initkey skipped, final_ret should be reset */
-+    if (!TEST_true(EVP_DecryptInit_ex2(d, NULL, NULL, NULL, NULL))
-+        || !TEST_true(EVP_CIPHER_CTX_ctrl(d, EVP_CTRL_AEAD_SET_TAG, 16, zero16))
-+        || !TEST_true(EVP_DecryptUpdate(d, NULL, &outl, aad, sizeof(aad))) /* forged AAD */
-+        || !TEST_false(EVP_DecryptFinal_ex(d, out, &outl)))
-+        goto err;
-+
-+    ret = 1;
-+
-+err:
-+    EVP_CIPHER_CTX_free(d);
-+    EVP_CIPHER_free(c);
-+    return ret;
-+}
-+
- static int test_invalid_ctx_for_digest(void)
- {
-     int ret;
-@@ -7251,6 +7387,9 @@ int setup_tests(void)
- #endif
- 
-     ADD_ALL_TESTS(test_aead_oneshot_roundtrip, 2 * OSSL_NELEM(aead_oneshot_cfgs));
-+    /* Test cases for CVE-2026-45446 */
-+    ADD_TEST(test_aes_gcm_siv_empty_data);
-+    ADD_TEST(test_aes_siv_ctx_reuse);
- 
-     ADD_TEST(test_invalid_ctx_for_digest);
- 
diff -Nru openssl-3.5.6/debian/patches/Fix-NULL-dereference-in-QUIC-address-validation.patch openssl-3.5.7/debian/patches/Fix-NULL-dereference-in-QUIC-address-validation.patch
--- openssl-3.5.6/debian/patches/Fix-NULL-dereference-in-QUIC-address-validation.patch	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/patches/Fix-NULL-dereference-in-QUIC-address-validation.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,32 +0,0 @@
-From: Alexandr Nedvedicky <sashan@openssl.org>
-Date: Tue, 12 May 2026 16:12:40 +0200
-Subject: Fix NULL dereference in QUIC address validation
-
-QUIC server crashes when address validation (RFC 9000, Section 8.1)
-is disabled and client sends initial packet with invalid token.
-
-Issue reported and fix submitted by Sunwoo Lee (KENTECH),
-Hyuk Lim (KENTECH) and Seunghyun Yoon (KENTECH)
-
-Fixes CVE-2026-42764
----
- ssl/quic/quic_port.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/ssl/quic/quic_port.c b/ssl/quic/quic_port.c
-index 1e247e1ec624..dc79485b96a5 100644
---- a/ssl/quic/quic_port.c
-+++ b/ssl/quic/quic_port.c
-@@ -1666,8 +1666,10 @@ static void port_default_packet_handler(QUIC_URXE *e, void *arg,
-          * forget qrx so channel can create a new one
-          * with valid initial encryption level keys.
-          */
--        qrx_src = qrx;
--        qrx = NULL;
-+        if (qrx != NULL) {
-+            qrx_src = qrx;
-+            qrx = NULL;
-+        }
-     }
- 
-     port_bind_channel(port, &e->peer, &scid, &hdr.dst_conn_id,
diff -Nru openssl-3.5.6/debian/patches/Fix-possible-use-after-free-in-OpenSSL-PKCS7_verify.patch openssl-3.5.7/debian/patches/Fix-possible-use-after-free-in-OpenSSL-PKCS7_verify.patch
--- openssl-3.5.6/debian/patches/Fix-possible-use-after-free-in-OpenSSL-PKCS7_verify.patch	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/patches/Fix-possible-use-after-free-in-OpenSSL-PKCS7_verify.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,36 +0,0 @@
-From: Igor Ustinov <igus@openssl.foundation>
-Date: Sat, 16 May 2026 08:16:23 +0200
-Subject: Fix possible use-after-free in OpenSSL PKCS7_verify()
-
-Fixes CVE-2026-45447
----
- crypto/pkcs7/pk7_smime.c | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/crypto/pkcs7/pk7_smime.c b/crypto/pkcs7/pk7_smime.c
-index 97f20058979f..dc003ee2affd 100644
---- a/crypto/pkcs7/pk7_smime.c
-+++ b/crypto/pkcs7/pk7_smime.c
-@@ -222,6 +222,7 @@ int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store,
-     int i, j = 0, k, ret = 0;
-     BIO *p7bio = NULL;
-     BIO *tmpout = NULL;
-+    BIO *next = NULL;
-     const PKCS7_CTX *p7_ctx;
- 
-     if (p7 == NULL) {
-@@ -352,9 +353,11 @@ int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store,
-         BIO_free(tmpout);
-     X509_STORE_CTX_free(cert_ctx);
-     OPENSSL_free(buf);
--    if (indata != NULL)
--        BIO_pop(p7bio);
--    BIO_free_all(p7bio);
-+    while (p7bio != NULL && p7bio != indata) {
-+        next = BIO_pop(p7bio);
-+        BIO_free(p7bio);
-+        p7bio = next;
-+    }
-     sk_X509_free(signers);
-     sk_X509_free(untrusted);
-     return ret;
diff -Nru openssl-3.5.6/debian/patches/Fix-potential-NULL-dereference-in-OSSL_CRMF_ENCRYPTEDVALU.patch openssl-3.5.7/debian/patches/Fix-potential-NULL-dereference-in-OSSL_CRMF_ENCRYPTEDVALU.patch
--- openssl-3.5.6/debian/patches/Fix-potential-NULL-dereference-in-OSSL_CRMF_ENCRYPTEDVALU.patch	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/patches/Fix-potential-NULL-dereference-in-OSSL_CRMF_ENCRYPTEDVALU.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,41 +0,0 @@
-From: Igor Ustinov <igus@openssl.foundation>
-Date: Mon, 11 May 2026 16:29:47 +0200
-Subject: Fix potential NULL dereference in OSSL_CRMF_ENCRYPTEDVALUE_decrypt()
-
-Check that 'parameter' != NULL before dereferencing in
-OSSL_CRMF_ENCRYPTEDVALUE_decrypt().
-
-Fixes CVE-2026-42767
----
- crypto/crmf/crmf_lib.c | 10 ++++++----
- 1 file changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/crypto/crmf/crmf_lib.c b/crypto/crmf/crmf_lib.c
-index d5c8983b2fd4..34477d52662d 100644
---- a/crypto/crmf/crmf_lib.c
-+++ b/crypto/crmf/crmf_lib.c
-@@ -766,6 +766,7 @@ unsigned char *OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *
-     EVP_CIPHER *cipher = NULL; /* used cipher */
-     int cikeysize = 0; /* key size from cipher */
-     unsigned char *iv = NULL; /* initial vector for symmetric encryption */
-+    int iv_len; /* iv length */
-     unsigned char *out = NULL; /* decryption output buffer */
-     int n, ret = 0;
-     EVP_PKEY_CTX *pkctx = NULL; /* private key context */
-@@ -820,11 +821,12 @@ unsigned char *OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *
-     } else {
-         goto end;
-     }
--    if ((iv = OPENSSL_malloc(EVP_CIPHER_get_iv_length(cipher))) == NULL)
-+    iv_len = EVP_CIPHER_get_iv_length(cipher);
-+    if ((iv = OPENSSL_malloc(iv_len)) == NULL)
-         goto end;
--    if (ASN1_TYPE_get_octetstring(enc->symmAlg->parameter, iv,
--            EVP_CIPHER_get_iv_length(cipher))
--        != EVP_CIPHER_get_iv_length(cipher)) {
-+    if (enc->symmAlg->parameter == NULL
-+        || ASN1_TYPE_get_octetstring(enc->symmAlg->parameter, iv, iv_len)
-+            != iv_len) {
-         ERR_raise(ERR_LIB_CRMF, CRMF_R_MALFORMED_IV);
-         goto end;
-     }
diff -Nru openssl-3.5.6/debian/patches/Fix-potential-NULL-dereference-processing-CMS-PasswordRec.patch openssl-3.5.7/debian/patches/Fix-potential-NULL-dereference-processing-CMS-PasswordRec.patch
--- openssl-3.5.6/debian/patches/Fix-potential-NULL-dereference-processing-CMS-PasswordRec.patch	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/patches/Fix-potential-NULL-dereference-processing-CMS-PasswordRec.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,28 +0,0 @@
-From: Igor Ustinov <igus@openssl.foundation>
-Date: Thu, 21 May 2026 08:36:54 +0200
-Subject: Fix potential NULL dereference processing CMS PasswordRecipientInfo
-
-Avoid NULL dereferencing when keyDerivationAlgorithm is absent
-in CMS PasswordRecipientInfo.
-
-Fixes CVE-2026-42766
----
- crypto/cms/cms_pwri.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/crypto/cms/cms_pwri.c b/crypto/cms/cms_pwri.c
-index 4bb06b406eb7..faf6a164669b 100644
---- a/crypto/cms/cms_pwri.c
-+++ b/crypto/cms/cms_pwri.c
-@@ -367,6 +367,11 @@ int ossl_cms_RecipientInfo_pwri_crypt(const CMS_ContentInfo *cms,
- 
-     /* Finish password based key derivation to setup key in "ctx" */
- 
-+    if (algtmp == NULL) {
-+        ERR_raise_data(ERR_LIB_CMS, CMS_R_INVALID_KEY_ENCRYPTION_PARAMETER,
-+            "Missing KeyDerivationAlgorithm");
-+        goto err;
-+    }
-     if (!EVP_PBE_CipherInit_ex(algtmp->algorithm,
-             (char *)pwri->pass, (int)pwri->passlen,
-             algtmp->parameter, kekctx, en_de,
diff -Nru openssl-3.5.6/debian/patches/Match-the-local-q-DHX-parameter-against-the-peer-s-q.patch openssl-3.5.7/debian/patches/Match-the-local-q-DHX-parameter-against-the-peer-s-q.patch
--- openssl-3.5.6/debian/patches/Match-the-local-q-DHX-parameter-against-the-peer-s-q.patch	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/patches/Match-the-local-q-DHX-parameter-against-the-peer-s-q.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,36 +0,0 @@
-From: Norbert Pocs <norbertp@openssl.org>
-Date: Tue, 12 May 2026 15:16:04 +0200
-Subject: Match the local q DHX parameter against the peer's q
-
-As FFC/DH peer public key validation uses the peer's q value instead
-of checking against the local q, we must also check that these
-q values match when setting the peer's public key.
-
-Fixes CVE-2026-42770
-
-Signed-off-by: Norbert Pocs <norbertp@openssl.org>
----
- providers/implementations/exchange/dh_exch.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/providers/implementations/exchange/dh_exch.c b/providers/implementations/exchange/dh_exch.c
-index 94d4254ed5d2..2bfefc0aedf4 100644
---- a/providers/implementations/exchange/dh_exch.c
-+++ b/providers/implementations/exchange/dh_exch.c
-@@ -146,12 +146,15 @@ static int dh_init(void *vpdhctx, void *vdh, const OSSL_PARAM params[])
- static int dh_match_params(DH *priv, DH *peer)
- {
-     int ret;
-+    int ignore_q = 1;
-     FFC_PARAMS *dhparams_priv = ossl_dh_get0_params(priv);
-     FFC_PARAMS *dhparams_peer = ossl_dh_get0_params(peer);
- 
-+    if (dhparams_priv != NULL && dhparams_priv->q != NULL)
-+        ignore_q = 0;
-     ret = dhparams_priv != NULL
-         && dhparams_peer != NULL
--        && ossl_ffc_params_cmp(dhparams_priv, dhparams_peer, 1);
-+        && ossl_ffc_params_cmp(dhparams_priv, dhparams_peer, ignore_q);
-     if (!ret)
-         ERR_raise(ERR_LIB_PROV, PROV_R_MISMATCHING_DOMAIN_PARAMETERS);
-     return ret;
diff -Nru openssl-3.5.6/debian/patches/pkcs12-verify-that-the-pbmac1-key-length-is-safe.patch openssl-3.5.7/debian/patches/pkcs12-verify-that-the-pbmac1-key-length-is-safe.patch
--- openssl-3.5.6/debian/patches/pkcs12-verify-that-the-pbmac1-key-length-is-safe.patch	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/patches/pkcs12-verify-that-the-pbmac1-key-length-is-safe.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,81 +0,0 @@
-From: Alicja Kario <hkario@redhat.com>
-Date: Wed, 29 Apr 2026 16:29:35 +0200
-Subject: pkcs12: verify that the pbmac1 key length is safe
-
-Short mac keys (as short as 1 byte) can be used to probe the
-system under attack to accept a PKCS#12 file created by an attacker
-even if the attacker doesn't know the password used for MAC protection.
-
-Fixes CVE-2026-34181
-
-(also update the reference to the PBMAC1 PKCS#12 RFC)
-
-Signed-off-by: Alicja Kario <hkario@redhat.com>
----
- crypto/pkcs12/p12_mutl.c      |  8 +++++---
- test/recipes/80-test_pkcs12.t | 13 ++++++++-----
- 2 files changed, 13 insertions(+), 8 deletions(-)
-
-diff --git a/crypto/pkcs12/p12_mutl.c b/crypto/pkcs12/p12_mutl.c
-index 01956252df76..15072e12f26b 100644
---- a/crypto/pkcs12/p12_mutl.c
-+++ b/crypto/pkcs12/p12_mutl.c
-@@ -144,11 +144,13 @@ static int PBMAC1_PBKDF2_HMAC(OSSL_LIB_CTX *ctx, const char *propq,
-     }
-     pbkdf2_salt = pbkdf2_param->salt->value.octet_string;
- 
--    /* RFC 9579 specifies missing key length as invalid */
-+    /* RFC 9879 specifies missing key length as invalid */
-     if (pbkdf2_param->keylength != NULL)
-         keylen = ASN1_INTEGER_get(pbkdf2_param->keylength);
--    if (keylen <= 0 || keylen > EVP_MAX_MD_SIZE) {
--        ERR_raise(ERR_LIB_PKCS12, PKCS12_R_PARSE_ERROR);
-+    /* RFC 9879 specifies too short key length as untrustworthy too */
-+    if (keylen < 20 || keylen > EVP_MAX_MD_SIZE) {
-+        ERR_raise_data(ERR_LIB_PKCS12, PKCS12_R_PARSE_ERROR,
-+            "Invalid Key length (%d is not in the range 20..64)", keylen);
-         goto err;
-     }
- 
-diff --git a/test/recipes/80-test_pkcs12.t b/test/recipes/80-test_pkcs12.t
-index d258b7eb0e47..56ab93803e7a 100644
---- a/test/recipes/80-test_pkcs12.t
-+++ b/test/recipes/80-test_pkcs12.t
-@@ -56,7 +56,7 @@ $ENV{OPENSSL_WIN32_UTF8}=1;
- 
- my $no_fips = disabled('fips') || ($ENV{NO_FIPS} // 0);
- 
--plan tests => $no_fips ? 53 : 59;
-+plan tests => $no_fips ? 55 : 61;
- 
- # Test different PKCS#12 formats
- ok(run(test(["pkcs12_format_test"])), "test pkcs12 formats");
-@@ -205,8 +205,11 @@ for my $instance (sort keys %pbmac1_tests) {
-     }
- }
- 
--# Test pbmac1 pkcs12 good files, RFC 9579
--for my $file ("pbmac1_256_256.good.p12", "pbmac1_512_256.good.p12", "pbmac1_512_512.good.p12")
-+# Test pbmac1 pkcs12 good files, RFC 9579, and one extra with shorter key
-+# length
-+for my $file ("pbmac1_256_256.good.p12", "pbmac1_512_256.good.p12",
-+              "pbmac1_512_512.good.p12",
-+              "pbmac1_256_256.good-shorter-key-len.p12")
- {
-     my $path = srctop_file("test", "recipes", "80-test_pkcs12_data", $file);
-     ok(run(app(["openssl", "pkcs12", "-in", $path, "-password", "pass:1234", "-noenc"])),
-@@ -235,12 +238,12 @@ unless ($no_fips) {
-     }
- }
- 
--# Test pbmac1 pkcs12 bad files, RFC 9579 and CVE-2025-11187
-+# Test pbmac1 pkcs12 bad files, RFC 9579, CVE-2025-11187 and CVE-2026-34181
- for my $file ("pbmac1_256_256.bad-iter.p12", "pbmac1_256_256.bad-salt.p12",
-               "pbmac1_256_256.no-len.p12", "pbmac1_256_256.bad-len.p12",
-               "pbmac1_256_256.bad-salt-type.p12", "pbmac1_256_256.negative-len.p12",
-               "pbmac1_256_256.no-salt.p12", "pbmac1_256_256.very-big-len.p12",
--              "pbmac1_256_256.zero-len.p12")
-+              "pbmac1_256_256.zero-len.p12", "pbmac1_256_256.bad-key-len.p12")
- {
-     my $path = srctop_file("test", "recipes", "80-test_pkcs12_data", $file);
-     with({ exit_checker => sub { return shift == 1; } },
diff -Nru openssl-3.5.6/debian/patches/QUIC-stack-must-limit-the-number-of-PATH_CHALLENGE-frames.patch openssl-3.5.7/debian/patches/QUIC-stack-must-limit-the-number-of-PATH_CHALLENGE-frames.patch
--- openssl-3.5.6/debian/patches/QUIC-stack-must-limit-the-number-of-PATH_CHALLENGE-frames.patch	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/patches/QUIC-stack-must-limit-the-number-of-PATH_CHALLENGE-frames.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,341 +0,0 @@
-From: Alexandr Nedvedicky <sashan@openssl.org>
-Date: Thu, 26 Mar 2026 14:24:32 +0100
-Subject: QUIC stack must limit the number of PATH_CHALLENGE frames processed
- in RX
-
-Currently local QUIC stack allocates PATH_RESPONSE frame for every
-PATH_CHALLENGE frame it receives in single packet from its remote peer.
-The memory with PATH_RESPONSE frame is released after local QUIC stack
-receives an ACK which confirms reception of PATH_RESPONSE by remote peer.
-This gives remote peer too much control over memory resources local
-QUIC stack may consume.
-
-Quoting RFC 9000 section 9.2.1:
-	...an endpoint SHOULD NOT send multiple
-	PATH_CHALLENGE frames in a single packet.
-
-Limiting the number of PATCH_CHALLENGE frames to 1 per QUIC packet received
-helps to reduce heap memory overhead required to process PATH_CHALLENGE
-frame.
-
-Currently QUIC ACKM (ACK-manager) keeps all frames in retransmission
-buffer until ACK is received. It can be changed such frames which
-don't need to be ACKed don't need to be kept in retrans buffer,
-those can be released right after transmission.
-
-Fixes CVE-2026-34183
----
- include/internal/quic_cfq.h     |  1 +
- include/internal/quic_channel.h |  1 +
- include/internal/quic_fifd.h    |  1 +
- ssl/quic/quic_cfq.c             | 15 +++++++++++
- ssl/quic/quic_channel.c         |  6 +++++
- ssl/quic/quic_channel_local.h   | 39 +++++++++++++++++++++++++++
- ssl/quic/quic_fifd.c            | 43 +++++++++++++++++++++++++++++
- ssl/quic/quic_rx_depack.c       | 60 ++++++++++++++++++++++++-----------------
- ssl/quic/quic_txp.c             |  2 ++
- 9 files changed, 144 insertions(+), 24 deletions(-)
-
-diff --git a/include/internal/quic_cfq.h b/include/internal/quic_cfq.h
-index 0b2a3a4cb2d6..96c8d89eb600 100644
---- a/include/internal/quic_cfq.h
-+++ b/include/internal/quic_cfq.h
-@@ -149,6 +149,7 @@ QUIC_CFQ_ITEM *ossl_quic_cfq_get_priority_head(const QUIC_CFQ *cfq,
- QUIC_CFQ_ITEM *ossl_quic_cfq_item_get_priority_next(const QUIC_CFQ_ITEM *item,
-     uint32_t pn_space);
- 
-+int ossl_quic_cfq_discard_unreliable(QUIC_CFQ *cfq, QUIC_CFQ_ITEM *item);
- #endif
- 
- #endif
-diff --git a/include/internal/quic_channel.h b/include/internal/quic_channel.h
-index b917b966abeb..cfaeab728178 100644
---- a/include/internal/quic_channel.h
-+++ b/include/internal/quic_channel.h
-@@ -468,6 +468,7 @@ int ossl_quic_bind_channel(QUIC_CHANNEL *ch, const BIO_ADDR *peer,
-     const QUIC_CONN_ID *scid, const QUIC_CONN_ID *dcid,
-     const QUIC_CONN_ID *odcid);
- 
-+void ossl_ch_reset_rx_state(QUIC_CHANNEL *ch);
- #endif
- 
- #endif
-diff --git a/include/internal/quic_fifd.h b/include/internal/quic_fifd.h
-index 4ea7a2e0d226..afa330cbc4a2 100644
---- a/include/internal/quic_fifd.h
-+++ b/include/internal/quic_fifd.h
-@@ -83,6 +83,7 @@ int ossl_quic_fifd_pkt_commit(QUIC_FIFD *fifd, QUIC_TXPIM_PKT *pkt);
- void ossl_quic_fifd_set_qlog_cb(QUIC_FIFD *fifd, QLOG *(*get_qlog_cb)(void *arg),
-     void *arg);
- 
-+void ossl_quic_fifd_pkt_discard_unreliable(QUIC_FIFD *fifd, QUIC_TXPIM_PKT *tpkt);
- #endif
- 
- #endif
-diff --git a/ssl/quic/quic_cfq.c b/ssl/quic/quic_cfq.c
-index 3c59234ff0ff..16818e55f57d 100644
---- a/ssl/quic/quic_cfq.c
-+++ b/ssl/quic/quic_cfq.c
-@@ -7,6 +7,7 @@
-  * https://www.openssl.org/source/license.html
-  */
- 
-+#include "internal/quic_channel.h"
- #include "internal/quic_cfq.h"
- #include "internal/numbers.h"
- 
-@@ -307,6 +308,20 @@ void ossl_quic_cfq_mark_lost(QUIC_CFQ *cfq, QUIC_CFQ_ITEM *item,
-     }
- }
- 
-+int ossl_quic_cfq_discard_unreliable(QUIC_CFQ *cfq, QUIC_CFQ_ITEM *item)
-+{
-+    int discarded;
-+
-+    if (ossl_quic_cfq_item_is_unreliable(item)) {
-+        ossl_quic_cfq_release(cfq, item);
-+        discarded = 1;
-+    } else {
-+        discarded = 0;
-+    }
-+
-+    return discarded;
-+}
-+
- /*
-  * Releases a CFQ item. The item may be in either state (NEW or TX) prior to the
-  * call. The QUIC_CFQ_ITEM pointer must not be used following this call.
-diff --git a/ssl/quic/quic_channel.c b/ssl/quic/quic_channel.c
-index 13692e5bd09e..5f81a8560d5f 100644
---- a/ssl/quic/quic_channel.c
-+++ b/ssl/quic/quic_channel.c
-@@ -2213,6 +2213,12 @@ static void ch_rx_check_forged_pkt_limit(QUIC_CHANNEL *ch)
-         "forgery limit");
- }
- 
-+void ossl_ch_reset_rx_state(QUIC_CHANNEL *ch)
-+{
-+    ch->did_crypto_frame = 0;
-+    ch->seen_path_challenge = 0;
-+}
-+
- /* Process queued incoming packets and handle frames, if any. */
- static int ch_rx(QUIC_CHANNEL *ch, int channel_only, int *notify_other_threads)
- {
-diff --git a/ssl/quic/quic_channel_local.h b/ssl/quic/quic_channel_local.h
-index ae443fccca1e..e40b4901cbc7 100644
---- a/ssl/quic/quic_channel_local.h
-+++ b/ssl/quic/quic_channel_local.h
-@@ -12,6 +12,28 @@
- #include "internal/quic_stream_map.h"
- #include "internal/quic_tls.h"
- 
-+/*
-+ * This is a part of PATH_CHALLENGE flood [1] mitigation. This limits the
-+ * number of PATH_CHALLENGE frames  QUIC stack is willing to process for
-+ * connection. Local QUIC stack creates PATH_RESPONSE frame for PATH_CHALLENGE
-+ * frame it receives from remote peer. The response frame is put Control Frame
-+ * Queue waiting to be dispatched. The PATH_RESPONSE frame is removed from CFQ
-+ * after it is dispatched. The QUIC_PATH_RESPONSE_QLEN limits the number of
-+ * PATH_RESPONSE frames waiting to be dispatched. No new PATH_RESPONSE frames
-+ * are inserted into CFQ if queue limit is exceeded.
-+ *
-+ * QUIC implementations use different limits for PATH_RESPONSE queue lengths:
-+ *    quic-go defines maxPathResponses as 256
-+ *    quiche from cloadflare sets DEFAULT_MAX_PATH_CHALLENGE_RX_QUEUE_LEN to 3
-+ *    t-quic from tencent chooses MAX_PATH_CHALS_RECV to be 8
-+ *
-+ * OpenSSL here introduces QUIC_PATH_RESPONSE_QLEN as 32.
-+ *
-+ * [1] https://www.ietf.org/archive/id/draft-chen-quic-logical-vuln-mitigations-00.txt
-+ *     (section 4.2)
-+ */
-+#define QUIC_PATH_RESPONSE_QLEN 32
-+
- /*
-  * QUIC Channel Structure
-  * ======================
-@@ -457,6 +479,18 @@ struct quic_channel_st {
- 
-     /* Has qlog been requested? */
-     unsigned int is_tserver_ch : 1;
-+    /*
-+     * RFC 9000 Section 9.2.1 says:
-+     *      However, an endpoint SHOULD NOT send multiple
-+     *      PATH_CHALLENGE frames in a single packet.
-+     * The counter here allows us to detect multiple presence
-+     * of PATH_CHALLENGE frame in packet. We process only the
-+     * first PATH_CHALLENGE frame found in packet. Remaining PATH_CHALLENGE
-+     * frames are ignored.
-+     * seen_path_challenge flag is always reset before
-+     * ossl_quic_handle_frames() gets called.
-+     */
-+    unsigned int seen_path_challenge : 1;
- 
-     /* Saved error stack in case permanent error was encountered */
-     ERR_STATE *err_state;
-@@ -467,6 +501,11 @@ struct quic_channel_st {
- 
-     /* Title for qlog purposes. We own this copy. */
-     char *qlog_title;
-+    /*
-+     * number of path responses waiting to be dispatched
-+     * from control frame queue (CFQ)
-+     */
-+    unsigned int path_response_limit;
- };
- 
- #endif
-diff --git a/ssl/quic/quic_fifd.c b/ssl/quic/quic_fifd.c
-index 03b8cebd3057..e80483b501d7 100644
---- a/ssl/quic/quic_fifd.c
-+++ b/ssl/quic/quic_fifd.c
-@@ -310,3 +310,46 @@ void ossl_quic_fifd_set_qlog_cb(QUIC_FIFD *fifd, QLOG *(*get_qlog_cb)(void *arg)
-     fifd->get_qlog_cb = get_qlog_cb;
-     fifd->get_qlog_cb_arg = get_qlog_cb_arg;
- }
-+
-+static void txpim_pkt_remove_cfq_item(QUIC_TXPIM_PKT *pkt, QUIC_CFQ_ITEM *cfq_item)
-+{
-+    QUIC_CFQ_ITEM *prev = cfq_item->pkt_prev;
-+
-+    if (prev != NULL) {
-+        prev->pkt_next = cfq_item->pkt_next;
-+    } else {
-+        pkt->retx_head = cfq_item->pkt_next;
-+    }
-+
-+    if (cfq_item->pkt_next != NULL)
-+        cfq_item->pkt_next->pkt_prev = prev;
-+
-+    cfq_item->pkt_prev = NULL;
-+    cfq_item->pkt_next = NULL;
-+}
-+
-+void ossl_quic_fifd_pkt_discard_unreliable(QUIC_FIFD *fifd, QUIC_TXPIM_PKT *pkt)
-+{
-+    QUIC_CFQ_ITEM *cfq_item, *cfq_next;
-+
-+    /*
-+     * The packet has been written to network. We can discard frames we don't
-+     * retransmit when loss is detected.
-+     */
-+    cfq_item = pkt->retx_head;
-+    while (cfq_item != NULL) {
-+        /*
-+         * Discarded items are moved to free list. If item
-+         * got moved to free list we must also remove it from
-+         * cfq list kept in pkt, so ACKM does not find it when
-+         * receives an ACK for pkt.
-+         */
-+        if (ossl_quic_cfq_discard_unreliable(fifd->cfq, cfq_item)) {
-+            cfq_next = cfq_item->pkt_next;
-+            txpim_pkt_remove_cfq_item(pkt, cfq_item);
-+            cfq_item = cfq_next;
-+        } else {
-+            cfq_item = cfq_item->pkt_next;
-+        }
-+    }
-+}
-diff --git a/ssl/quic/quic_rx_depack.c b/ssl/quic/quic_rx_depack.c
-index 786af9b4c221..1bdb43b7d639 100644
---- a/ssl/quic/quic_rx_depack.c
-+++ b/ssl/quic/quic_rx_depack.c
-@@ -931,6 +931,12 @@ static int depack_do_frame_retire_conn_id(PACKET *pkt,
- 
- static void free_path_response(unsigned char *buf, size_t buf_len, void *arg)
- {
-+    QUIC_CHANNEL *ch = (QUIC_CHANNEL *)arg;
-+
-+    assert(ch->path_response_limit > 0);
-+
-+    ch->path_response_limit--;
-+
-     OPENSSL_free(buf);
- }
- 
-@@ -951,33 +957,39 @@ static int depack_do_frame_path_challenge(PACKET *pkt,
-         return 0;
-     }
- 
--    /*
--     * RFC 9000 s. 8.2.2: On receiving a PATH_CHALLENGE frame, an endpoint MUST
--     * respond by echoing the data contained in the PATH_CHALLENGE frame in a
--     * PATH_RESPONSE frame.
--     *
--     * TODO(QUIC FUTURE): We should try to avoid allocation here in the future.
--     */
--    encoded_len = sizeof(uint64_t) + 1;
--    if ((encoded = OPENSSL_malloc(encoded_len)) == NULL)
--        goto err;
-+    if (ch->seen_path_challenge == 0
-+        && ch->path_response_limit < QUIC_PATH_RESPONSE_QLEN) {
-+        /*
-+         * RFC 9000 s. 8.2.2: On receiving a PATH_CHALLENGE frame, an endpoint
-+         * MUST respond by echoing the data contained in the PATH_CHALLENGE
-+         * frame in a PATH_RESPONSE frame.
-+         *
-+         * TODO(QUIC FUTURE): We should try to avoid allocation here in the
-+         * future.
-+         */
-+        encoded_len = sizeof(uint64_t) + 1;
-+        if ((encoded = OPENSSL_malloc(encoded_len)) == NULL)
-+            goto err;
- 
--    if (!WPACKET_init_static_len(&wpkt, encoded, encoded_len, 0))
--        goto err;
-+        if (!WPACKET_init_static_len(&wpkt, encoded, encoded_len, 0))
-+            goto err;
- 
--    if (!ossl_quic_wire_encode_frame_path_response(&wpkt, frame_data)) {
--        WPACKET_cleanup(&wpkt);
--        goto err;
--    }
-+        if (!ossl_quic_wire_encode_frame_path_response(&wpkt, frame_data)) {
-+            WPACKET_cleanup(&wpkt);
-+            goto err;
-+        }
- 
--    WPACKET_finish(&wpkt);
-+        WPACKET_finish(&wpkt);
- 
--    if (!ossl_quic_cfq_add_frame(ch->cfq, 0, QUIC_PN_SPACE_APP,
--            OSSL_QUIC_FRAME_TYPE_PATH_RESPONSE,
--            QUIC_CFQ_ITEM_FLAG_UNRELIABLE,
--            encoded, encoded_len,
--            free_path_response, NULL))
--        goto err;
-+        if (!ossl_quic_cfq_add_frame(ch->cfq, 0, QUIC_PN_SPACE_APP,
-+                OSSL_QUIC_FRAME_TYPE_PATH_RESPONSE,
-+                QUIC_CFQ_ITEM_FLAG_UNRELIABLE,
-+                encoded, encoded_len,
-+                free_path_response, ch))
-+            goto err;
-+        ch->seen_path_challenge = 1;
-+        ch->path_response_limit++;
-+    }
- 
-     return 1;
- 
-@@ -1432,7 +1444,7 @@ int ossl_quic_handle_frames(QUIC_CHANNEL *ch, OSSL_QRX_PKT *qpacket)
-     if (ch == NULL)
-         return 0;
- 
--    ch->did_crypto_frame = 0;
-+    ossl_ch_reset_rx_state(ch);
- 
-     /* Initialize |ackm_data| (and reinitialize |ok|)*/
-     memset(&ackm_data, 0, sizeof(ackm_data));
-diff --git a/ssl/quic/quic_txp.c b/ssl/quic/quic_txp.c
-index 44aaad868d2f..b2565c1a9fee 100644
---- a/ssl/quic/quic_txp.c
-+++ b/ssl/quic/quic_txp.c
-@@ -3133,6 +3133,8 @@ static int txp_pkt_commit(OSSL_QUIC_TX_PACKETISER *txp,
-             --probe_info->pto[pn_space];
-     }
- 
-+    ossl_quic_fifd_pkt_discard_unreliable(&txp->fifd, tpkt);
-+
-     return rc;
- }
- 
diff -Nru openssl-3.5.6/debian/patches/Reject-oversized-inputs-in-ASN1_mbstring_ncopy.patch openssl-3.5.7/debian/patches/Reject-oversized-inputs-in-ASN1_mbstring_ncopy.patch
--- openssl-3.5.6/debian/patches/Reject-oversized-inputs-in-ASN1_mbstring_ncopy.patch	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/patches/Reject-oversized-inputs-in-ASN1_mbstring_ncopy.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,103 +0,0 @@
-From: Viktor Dukhovni <viktor@openssl.org>
-Date: Wed, 29 Apr 2026 18:23:24 +1000
-Subject: Reject oversized inputs in ASN1_mbstring_ncopy()
-
-In ASN1_mbstring_ncopy() the destination size for BMPSTRING and
-UNIVERSALSTRING output was computed by a signed left shift on an
-int:
-
-    outlen = nchar << 1;        /* MBSTRING_BMP  */
-    outlen = nchar << 2;        /* MBSTRING_UNIV */
-
-For nchar large enough the result is not representable in int.  In
-the worst case (nchar == 0x40000000) nchar << 2 wraps to zero,
-OPENSSL_malloc(1) is called, and traverse_string() then writes
-4*nchar bytes into the one-byte allocation: a heap buffer
-overflow.  The MBSTRING_UTF8 path computes outlen by summing
-per-character byte counts in out_utf8(), and that sum can overflow
-the same int under similarly large inputs.
-
-Neither path is reachable from code that processes X.509
-certificates through the DIRSTRING_TYPE mask used by
-ASN1_STRING_set_by_NID(): UNIVERSALSTRING is absent from that
-mask, and the UTF-8 sum requires inputs on the order of half a
-gigabyte.  Reaching them needs an application that calls
-ASN1_mbstring_copy()/ASN1_mbstring_ncopy() directly, or registers
-a custom NID via ASN1_STRING_TABLE_add(), with an oversized
-attacker-controlled input.
-
-Add range checks before each shift and in out_utf8(), raising
-ASN1_R_STRING_TOO_LONG at the point of detection.  Move the
-existing ASN1_R_INVALID_UTF8STRING raise into out_utf8() too so
-the two failure modes report distinct codes; the MBSTRING_UTF8
-caller is left with cleanup only and now frees dest on error,
-matching the BMP/UNIV branches.
-
-Fixes CVE-2026-7383
----
- crypto/asn1/a_mbstr.c | 31 ++++++++++++++++++++++++++++---
- 1 file changed, 28 insertions(+), 3 deletions(-)
-
-diff --git a/crypto/asn1/a_mbstr.c b/crypto/asn1/a_mbstr.c
-index 2270e63d51d4..962e19b2ceaa 100644
---- a/crypto/asn1/a_mbstr.c
-+++ b/crypto/asn1/a_mbstr.c
-@@ -174,11 +174,27 @@ int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
-         break;
- 
-     case MBSTRING_BMP:
-+        if (nchar > INT_MAX / 2) {
-+            ERR_raise(ERR_LIB_ASN1, ASN1_R_STRING_TOO_LONG);
-+            if (free_out) {
-+                ASN1_STRING_free(dest);
-+                *out = NULL;
-+            }
-+            return -1;
-+        }
-         outlen = nchar << 1;
-         cpyfunc = cpy_bmp;
-         break;
- 
-     case MBSTRING_UNIV:
-+        if (nchar > INT_MAX / 4) {
-+            ERR_raise(ERR_LIB_ASN1, ASN1_R_STRING_TOO_LONG);
-+            if (free_out) {
-+                ASN1_STRING_free(dest);
-+                *out = NULL;
-+            }
-+            return -1;
-+        }
-         outlen = nchar << 2;
-         cpyfunc = cpy_univ;
-         break;
-@@ -186,8 +202,11 @@ int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
-     case MBSTRING_UTF8:
-         outlen = 0;
-         ret = traverse_string(in, len, inform, out_utf8, &outlen);
--        if (ret < 0) {
--            ERR_raise(ERR_LIB_ASN1, ASN1_R_INVALID_UTF8STRING);
-+        if (ret < 0) { /* error already raised in out_utf8() */
-+            if (free_out) {
-+                ASN1_STRING_free(dest);
-+                *out = NULL;
-+            }
-             return -1;
-         }
-         cpyfunc = cpy_utf8;
-@@ -270,9 +289,15 @@ static int out_utf8(unsigned long value, void *arg)
-     int *outlen, len;
- 
-     len = UTF8_putc(NULL, -1, value);
--    if (len <= 0)
-+    if (len <= 0) {
-+        ERR_raise(ERR_LIB_ASN1, ASN1_R_INVALID_UTF8STRING);
-         return len;
-+    }
-     outlen = arg;
-+    if (*outlen > INT_MAX - len) {
-+        ERR_raise(ERR_LIB_ASN1, ASN1_R_STRING_TOO_LONG);
-+        return -1;
-+    }
-     *outlen += len;
-     return 1;
- }
diff -Nru openssl-3.5.6/debian/patches/Reject-potentially-forged-encrypted-CMS-AuthEnvelopedData.patch openssl-3.5.7/debian/patches/Reject-potentially-forged-encrypted-CMS-AuthEnvelopedData.patch
--- openssl-3.5.6/debian/patches/Reject-potentially-forged-encrypted-CMS-AuthEnvelopedData.patch	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/patches/Reject-potentially-forged-encrypted-CMS-AuthEnvelopedData.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,53 +0,0 @@
-From: Neil Horman <nhorman@openssl.org>
-Date: Fri, 17 Apr 2026 13:21:50 -0400
-Subject: Reject potentially forged encrypted CMS AuthEnvelopedData messages
-
-1. Adjust ossl_cms_EncryptedContent_init_bio to not accept non-AEAD
-ciphers.
-
-If a forged CMS message with AuthEnvelopedData is received with
-a non-AEAD cipher specified, we silently accept that and decrypt
-the message, skipping any authentication, which violates RFC 5083.
-
-We also add checks to ensure we fail if we try to encrypt
-AuthEnvelopedData without using an AEAD cipher.
-
-2. Ensure that tag lengths on cms AEAD data is the recommended size.
-
-RFC 5084 recommends that mac tags be at least 12 bytes for AES-GCM
-and 4 bytes for AES-CCM on AuthEnvelopedData. As this code is not
-algorith-specific we add a check for a minimal size and just use the
-lower limit which is sufficient to prevent this attack.
-
-Without this check, its possible to set the tag length to 1 and within
-256 guesses, forge a CMS message.
-
-Fixes CVE-2026-34182
----
- crypto/cms/cms_enc.c | 10 ++++++----
- 1 file changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/crypto/cms/cms_enc.c b/crypto/cms/cms_enc.c
-index 08afb5ab114b..ba7082cebd72 100644
---- a/crypto/cms/cms_enc.c
-+++ b/crypto/cms/cms_enc.c
-@@ -109,13 +109,15 @@ BIO *ossl_cms_EncryptedContent_init_bio(CMS_EncryptedContentInfo *ec,
-                 goto err;
-             }
-             piv = aparams.iv;
--            if (ec->taglen > 0
--                && EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG,
--                       ec->taglen, ec->tag)
--                    <= 0) {
-+
-+            if (ec->taglen < 4 || ec->taglen > 16
-+                || EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG, (int)ec->taglen, ec->tag) <= 0) {
-                 ERR_raise(ERR_LIB_CMS, CMS_R_CIPHER_AEAD_SET_TAG_ERROR);
-                 goto err;
-             }
-+        } else if (auth) {
-+            ERR_raise(ERR_LIB_CMS, CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM);
-+            goto err;
-         }
-     }
-     len = EVP_CIPHER_CTX_get_key_length(ctx);
diff -Nru openssl-3.5.6/debian/patches/series openssl-3.5.7/debian/patches/series
--- openssl-3.5.6/debian/patches/series	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/patches/series	2026-07-18 21:20:05.000000000 +0200
@@ -5,23 +5,3 @@
 c_rehash-compat.patch
 Configure-allow-to-enable-ktls-if-target-does-not-start-w.patch
 conf-Serialize-allocation-free-of-ssl_names.patch
-Reject-oversized-inputs-in-ASN1_mbstring_ncopy.patch
-cms-kek_unwrap_key-Fix-out-of-bounds-read-in-check-byte-v.patch
-cms-kek_unwrap_key-test-for-fix-out-of-bounds-read-in-che.patch
-Avoid-length-truncation-in-ASN1_STRING_set.patch
-pkcs12-verify-that-the-pbmac1-key-length-is-safe.patch
-Reject-potentially-forged-encrypted-CMS-AuthEnvelopedData.patch
-Add-tests-for-CVE-2026-34182.patch
-QUIC-stack-must-limit-the-number-of-PATH_CHALLENGE-frames.patch
-Add-test-for-path-challenge-flood-mitigation.patch
-Fix-NULL-dereference-in-QUIC-address-validation.patch
-Fix-potential-NULL-dereference-processing-CMS-PasswordRec.patch
-Test-for-CVE-2026-42766.patch
-Fix-potential-NULL-dereference-in-OSSL_CRMF_ENCRYPTEDVALU.patch
-Enforce-implicit-rejection-for-CMS-PKCS-7-decryption.patch
-Use-the-correct-issuer-when-validating-rootCAKeyUpdate.patch
-Match-the-local-q-DHX-parameter-against-the-peer-s-q.patch
-Apply-the-buffered-IV-on-the-AES-OCB-EVP_Cipher-path.patch
-Fix-handling-of-empty-ciphertext-messages-in-AES-GCM-SIV-.patch
-Fix-possible-use-after-free-in-OpenSSL-PKCS7_verify.patch
-Test-for-CVE-2026-45447-UAF-in-PKCS7_verify.patch
diff -Nru openssl-3.5.6/debian/patches/Test-for-CVE-2026-42766.patch openssl-3.5.7/debian/patches/Test-for-CVE-2026-42766.patch
--- openssl-3.5.6/debian/patches/Test-for-CVE-2026-42766.patch	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/patches/Test-for-CVE-2026-42766.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,194 +0,0 @@
-From: Igor Ustinov <igus@openssl.foundation>
-Date: Wed, 20 May 2026 20:02:43 +0200
-Subject: Test for CVE-2026-42766
-
-The script make_missing_kdf_der.py was developed by Mayank Jangid
-and Kushal Khemka.
-
-Co-Authored-by: Mayank Jangid <mayank.jangid.moon@gmail.com>
-Co-Authored-by: Kushal Khemka <kushalkhemka559@gmail.com>
----
- test/cms-msg/make_missing_kdf_der.py | 137 +++++++++++++++++++++++++++++++++++
- test/recipes/80-test_cms.t           |  21 +++++-
- 2 files changed, 157 insertions(+), 1 deletion(-)
- create mode 100755 test/cms-msg/make_missing_kdf_der.py
-
-diff --git a/test/cms-msg/make_missing_kdf_der.py b/test/cms-msg/make_missing_kdf_der.py
-new file mode 100755
-index 000000000000..5b3fc0f6eeda
---- /dev/null
-+++ b/test/cms-msg/make_missing_kdf_der.py
-@@ -0,0 +1,137 @@
-+#!/usr/bin/env python3
-+
-+# Copyright 2026 The OpenSSL Project Authors. All Rights Reserved.
-+#
-+# Licensed under the Apache License 2.0 (the "License").  You may not use
-+# this file except in compliance with the License.  You can obtain a copy
-+# in the file LICENSE in the source distribution or at
-+# https://www.openssl.org/source/license.html
-+
-+# This script generates missing-kdf.der - a password-encrypted CMS message
-+# without the keyDerivationAlgorithm field, which is used in the
-+# “PWRI missing keyDerivationAlgorithm regression” test.
-+#
-+# Usage: python3 make_missing_kdf_der.py valid.der missing-kdf.der
-+
-+from __future__ import annotations
-+
-+import argparse
-+import sys
-+from dataclasses import dataclass
-+from pathlib import Path
-+
-+
-+@dataclass
-+class Node:
-+    off: int
-+    tag: int
-+    hdr_len: int
-+    length: int
-+    end: int
-+    children: list["Node"]
-+
-+
-+def read_len(data: bytes, off: int) -> tuple[int, int]:
-+    first = data[off]
-+    if first < 0x80:
-+        return first, 1
-+    n = first & 0x7F
-+    if n == 0 or n > 4:
-+        raise ValueError(f"unsupported DER length form at {off}")
-+    val = 0
-+    for b in data[off + 1 : off + 1 + n]:
-+        val = (val << 8) | b
-+    return val, 1 + n
-+
-+
-+def parse_node(data: bytes, off: int) -> Node:
-+    tag = data[off]
-+    length, len_len = read_len(data, off + 1)
-+    hdr_len = 1 + len_len
-+    end = off + hdr_len + length
-+    children: list[Node] = []
-+    if tag & 0x20:
-+        cur = off + hdr_len
-+        while cur < end:
-+            child = parse_node(data, cur)
-+            children.append(child)
-+            cur = child.end
-+        if cur != end:
-+            raise ValueError(f"child parse ended at {cur}, expected {end}")
-+    return Node(off=off, tag=tag, hdr_len=hdr_len, length=length, end=end, children=children)
-+
-+
-+def encode_len(length: int, existing_len_len: int) -> bytes:
-+    if existing_len_len == 1:
-+        if length >= 0x80:
-+            raise ValueError("new length no longer fits in short-form DER")
-+        return bytes([length])
-+    payload_len = existing_len_len - 1
-+    max_len = (1 << (payload_len * 8)) - 1
-+    if length > max_len:
-+        raise ValueError("new length no longer fits in existing long-form DER")
-+    out = bytearray([0x80 | payload_len])
-+    for shift in range((payload_len - 1) * 8, -8, -8):
-+        out.append((length >> shift) & 0xFF)
-+    return bytes(out)
-+
-+
-+def patch_length_field(buf: bytearray, node: Node, delta: int) -> None:
-+    new_len = node.length + delta
-+    if new_len < 0:
-+        raise ValueError("negative patched length")
-+    len_bytes = encode_len(new_len, node.hdr_len - 1)
-+    start = node.off + 1
-+    end = start + len(node.hdr_len.to_bytes(1, "big")) - 1  # unused, kept for clarity
-+    buf[start : start + len(len_bytes)] = len_bytes
-+
-+
-+def main() -> int:
-+    ap = argparse.ArgumentParser(description="Remove PWRI keyDerivationAlgorithm from a CMS DER blob.")
-+    ap.add_argument("input_der")
-+    ap.add_argument("output_der")
-+    args = ap.parse_args()
-+
-+    data = Path(args.input_der).read_bytes()
-+    root = parse_node(data, 0)
-+
-+    # CMS structure we expect:
-+    # SEQUENCE { OID envelopedData, [0] SEQUENCE { version, SET recipientInfos, ... } }
-+    ed_wrapper = root.children[1]
-+    env_seq = ed_wrapper.children[0]
-+    recipient_set = env_seq.children[1]
-+    pwri_choice = recipient_set.children[0]  # [3]
-+
-+    if pwri_choice.tag != 0xA3:
-+        raise ValueError(f"expected PWRI choice tag 0xA3, found 0x{pwri_choice.tag:02x}")
-+    if len(pwri_choice.children) < 3:
-+        raise ValueError("unexpected PWRI child count")
-+
-+    version = pwri_choice.children[0]
-+    maybe_kdf = pwri_choice.children[1]
-+    keyenc = pwri_choice.children[2]
-+    if version.tag != 0x02:
-+        raise ValueError("PWRI version is not INTEGER")
-+    if maybe_kdf.tag != 0xA0:
-+        raise ValueError(f"PWRI child after version is not [0] keyDerivationAlgorithm: 0x{maybe_kdf.tag:02x}")
-+    if keyenc.tag != 0x30:
-+        raise ValueError("PWRI keyEncryptionAlgorithm is not SEQUENCE")
-+
-+    remove_start = maybe_kdf.off
-+    remove_end = maybe_kdf.end
-+    remove_len = remove_end - remove_start
-+
-+    out = bytearray(data)
-+    del out[remove_start:remove_end]
-+
-+    # Adjust ancestors whose length spans the removed field.
-+    for node in [root, ed_wrapper, env_seq, recipient_set, pwri_choice]:
-+        patch_length_field(out, node, -remove_len)
-+
-+    Path(args.output_der).write_bytes(out)
-+    print(f"removed {remove_len} bytes at [{remove_start}, {remove_end})")
-+    return 0
-+
-+
-+if __name__ == "__main__":
-+    sys.exit(main())
-diff --git a/test/recipes/80-test_cms.t b/test/recipes/80-test_cms.t
-index d3adf2d1af77..5900807f4d97 100644
---- a/test/recipes/80-test_cms.t
-+++ b/test/recipes/80-test_cms.t
-@@ -53,7 +53,7 @@ my ($no_des, $no_dh, $no_dsa, $no_ec, $no_ec2m, $no_rc2, $no_zlib)
- 
- $no_rc2 = 1 if disabled("legacy");
- 
--plan tests => 34;
-+plan tests => 35;
- 
- ok(run(test(["pkcs7_test"])), "test pkcs7");
- 
-@@ -1533,3 +1533,22 @@ subtest "SLH-DSA tests for CMS" => sub {
-            "accept CMS verify with SLH-DSA-SHAKE-256s");
-     }
- };
-+
-+# Regression test for NULL dereference in PWRI decrypt path
-+# when optional keyDerivationAlgorithm is omitted.
-+subtest "PWRI missing keyDerivationAlgorithm regression" => sub {
-+    plan tests => 1;
-+
-+    with({ exit_checker => sub { return shift == 4; } }, sub {
-+        ok(run(app([
-+            "openssl", "cms", @prov,
-+            "-decrypt",
-+            "-inform", "DER",
-+            "-in",
-+            srctop_file('test', 'cms-msg', 'missing-kdf.der'),
-+            "-out", "pwri-out.txt",
-+            "-pwri_password", "secret"])),
-+        "missing keyDerivationAlgorithm is rejected");
-+    });
-+};
-+
diff -Nru openssl-3.5.6/debian/patches/Test-for-CVE-2026-45447-UAF-in-PKCS7_verify.patch openssl-3.5.7/debian/patches/Test-for-CVE-2026-45447-UAF-in-PKCS7_verify.patch
--- openssl-3.5.6/debian/patches/Test-for-CVE-2026-45447-UAF-in-PKCS7_verify.patch	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/patches/Test-for-CVE-2026-45447-UAF-in-PKCS7_verify.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,100 +0,0 @@
-From: Igor Ustinov <igus@openssl.foundation>
-Date: Sat, 16 May 2026 08:22:53 +0200
-Subject: Test for CVE-2026-45447 (UAF in PKCS7_verify)
-
-The test data were created with a tool developed by
-Thai Duong <thai@calif.io>.
----
- test/recipes/80-test_cms.t                | 19 ++++++++++++-
- test/smime-eml/pkcs7-empty-digest-set.eml | 45 +++++++++++++++++++++++++++++++
- 2 files changed, 63 insertions(+), 1 deletion(-)
- create mode 100644 test/smime-eml/pkcs7-empty-digest-set.eml
-
-diff --git a/test/recipes/80-test_cms.t b/test/recipes/80-test_cms.t
-index 5900807f4d97..ab86ef4bf2f6 100644
---- a/test/recipes/80-test_cms.t
-+++ b/test/recipes/80-test_cms.t
-@@ -53,7 +53,7 @@ my ($no_des, $no_dh, $no_dsa, $no_ec, $no_ec2m, $no_rc2, $no_zlib)
- 
- $no_rc2 = 1 if disabled("legacy");
- 
--plan tests => 35;
-+plan tests => 36;
- 
- ok(run(test(["pkcs7_test"])), "test pkcs7");
- 
-@@ -1247,6 +1247,23 @@ subtest "CMS code signing test" => sub {
-        "fail verify CMS signature with code signing certificate for purpose smime_sign");
- };
- 
-+# Regression test for PKCS7_verify() ownership handling when
-+# digestAlgorithms is an empty SET.
-+# The malformed structure must fail cleanly without crashing or
-+# triggering use-after-free behaviour.
-+with({ exit_checker => sub { return shift == 4; } },
-+    sub {
-+        ok(run(app([
-+                'openssl', 'smime',
-+                '-verify',
-+                '-noverify',
-+                '-in',
-+                srctop_file('test', 'smime-eml',
-+                            'pkcs7-empty-digest-set.eml'),
-+            ])),
-+           "Check empty digestAlgorithms SET is handled safely");
-+    });
-+
- # Test case for missing MD algorithm (must not segfault)
- 
- with({ exit_checker => sub { return shift == 4; } },
-diff --git a/test/smime-eml/pkcs7-empty-digest-set.eml b/test/smime-eml/pkcs7-empty-digest-set.eml
-new file mode 100644
-index 000000000000..a6db2c38adfa
---- /dev/null
-+++ b/test/smime-eml/pkcs7-empty-digest-set.eml
-@@ -0,0 +1,45 @@
-+MIME-Version: 1.0
-+Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----E0314CC5D732C92AE2D7A3BACDCDCFCE"
-+
-+This is an S/MIME signed message
-+
-+------E0314CC5D732C92AE2D7A3BACDCDCFCE
-+This is the content to be signed.
-+
-+------E0314CC5D732C92AE2D7A3BACDCDCFCE
-+Content-Type: application/x-pkcs7-signature; name="smime.p7s"
-+Content-Transfer-Encoding: base64
-+Content-Disposition: attachment; filename="smime.p7s"
-+
-+MIIFWgYJKoZIhvcNAQcCoIIFSzCCBUcCAQExADALBgkqhkiG9w0BBwGgggLuMIIC
-+6jCCAdKgAwIBAgIUL5E46FxyhsT7C3G1NS27OtR7XAowDQYJKoZIhvcNAQELBQAw
-+FTETMBEGA1UEAwwKUG9DIFNpZ25lcjAeFw0yNjA1MDgxMDIwNDhaFw0yNzA1MDgx
-+MDIwNDhaMBUxEzARBgNVBAMMClBvQyBTaWduZXIwggEiMA0GCSqGSIb3DQEBAQUA
-+A4IBDwAwggEKAoIBAQDSSu/gupmIlclvmTMHiqOrCqmB8NRTjAMoI//MPJrnFXYp
-+FjDPMk7Y/kCcHztudaIvADkowaFtOm4oMinQFhjwCNCo5K5WrrlAitnpcd5QH2nA
-+iVZXjjohQUJEd7n33AGqTwo5EGaCK+alAZL7tA7bdhNi/aZ33L3bUNYqoHbXiNsE
-+u1tj8frLfIjduOt0TMPSOrrFjjEsrL3T3tg+HmxpalDHz7E6o9zJu0wlk8bcR2Xk
-+mpX8RdYCu7K9m39N1F2WKa9WJh24NQLpWRfwD213jaIFK2EXy/XHePDUeiMYtVOV
-+oovCSmY7OqowupA7J+4dcsnRjFqgZECctHhAfk+PAgMBAAGjMjAwMB0GA1UdDgQW
-+BBRZlupXNYq4fny0SE76sr/CdQ2DUTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3
-+DQEBCwUAA4IBAQANOlttTWVz620JNTrPzhiR4x9+5UiF4GSqv8BRJQFj3Xh7fsUp
-++3GDs9M27f4FVh3utJsjt7Sa9ZWLpBVdgjGBwGLAtPsoYMjhnUgZTUvwEk5+aXyv
-+zJxn4I7mMbDhlNCMHcVtGdtA+2UOEuvdGfuEilpzPsV8DzM1K3xU5bSWoo0BRFKK
-+srHkyEfxCFPAQOcX80ZbMO6zdcXeJjC6mQXGqy2aqeQob0vuSZJ7QHZBlRjY5YHR
-+wWlIqG8G3Eist16iTqdX2PQFZT1/QAEQ/LnXARTUUjUroccdci8YNASoeHDpcjRL
-+MBrN+QBNZVt5qLhDogwZb2ZwqKfZ8Aqg3oAkMYICPzCCAjsCAQEwLTAVMRMwEQYD
-+VQQDDApQb0MgU2lnbmVyAhQvkTjoXHKGxPsLcbU1Lbs61HtcCjANBglghkgBZQME
-+AgEFAKCB5DAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEP
-+Fw0yNjA1MDgxMDIwNDhaMC8GCSqGSIb3DQEJBDEiBCAvyoHfycLqb8UzVPizy1uA
-+o3h7tza3HebeiJaSnpIJHzB5BgkqhkiG9w0BCQ8xbDBqMAsGCWCGSAFlAwQBKjAL
-+BglghkgBZQMEARYwCwYJYIZIAWUDBAECMAoGCCqGSIb3DQMHMA4GCCqGSIb3DQMC
-+AgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDANBgkq
-+hkiG9w0BAQEFAASCAQBIpl7U2j4YiU1vdZHyx2dCK41ZahtTVOB4RVJcrmopgans
-+fICdkSTfb0dVqc13++bYn4i1b2R2os5YIkoGxdrM5aZB7KF9r1xwgrendTF4/BwP
-+gQq2khNtKebv9Yr0kOPynFIsgx5BHk99wrzfwidJUFuJJgQ9W0YOf7EGkbnZvPT+
-+hV0aeLmJAb5jjWhbDciqUjR3O23JQhzVj4U3vo2TeN7VYmNJsX+fA4sZzIbYSei9
-+ps7GZruiRcKgqgUj1l8HjIGMHqd9lccchk/BYyAGxAbgGisntvfJdPZO09wG8rHh
-+eS6FYkkXAKBO49WbhE9aVLJH0zgA6gTfyEvOOOS1
-+
-+------E0314CC5D732C92AE2D7A3BACDCDCFCE--
-+
diff -Nru openssl-3.5.6/debian/patches/Use-the-correct-issuer-when-validating-rootCAKeyUpdate.patch openssl-3.5.7/debian/patches/Use-the-correct-issuer-when-validating-rootCAKeyUpdate.patch
--- openssl-3.5.6/debian/patches/Use-the-correct-issuer-when-validating-rootCAKeyUpdate.patch	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/patches/Use-the-correct-issuer-when-validating-rootCAKeyUpdate.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,47 +0,0 @@
-From: Bob Beck <beck@openssl.org>
-Date: Fri, 17 Apr 2026 14:09:52 -0600
-Subject: Use the correct issuer when validating rootCAKeyUpdate
-
-This correctly uses the existing root, and not the same certificate
-as the root of the chain to validate.
-
-While we are here, we also turn on self signed certificate signature
-checking as this case is actually bringing in trust anchors as
-self signed certs, and fix a possible NULL deref.
-
-Fixes CVE-2026-42769
----
- crypto/cmp/cmp_genm.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/crypto/cmp/cmp_genm.c b/crypto/cmp/cmp_genm.c
-index bcc121f14695..ec1f03d20c1a 100644
---- a/crypto/cmp/cmp_genm.c
-+++ b/crypto/cmp/cmp_genm.c
-@@ -202,7 +202,7 @@ static int selfsigned_verify_cb(int ok, X509_STORE_CTX *store_ctx)
-         for (i = 0; i < sk_X509_num(trust); i++) {
-             issuer = sk_X509_value(trust, i);
-             if ((*check_issued)(store_ctx, cert, issuer)) {
--                if (X509_add_cert(chain, cert, X509_ADD_FLAG_UP_REF))
-+                if (X509_add_cert(chain, issuer, X509_ADD_FLAG_UP_REF))
-                     ok = 1;
-                 break;
-             }
-@@ -235,6 +235,7 @@ static int verify_ss_cert(OSSL_LIB_CTX *libctx, const char *propq,
-     if ((csc = X509_STORE_CTX_new_ex(libctx, propq)) == NULL
-         || !X509_STORE_CTX_init(csc, ts, target, untrusted))
-         goto err;
-+    X509_STORE_CTX_set_flags(csc, X509_V_FLAG_CHECK_SS_SIGNATURE);
-     X509_STORE_CTX_set_verify_cb(csc, selfsigned_verify_cb);
-     ok = X509_verify_cert(csc) > 0;
- 
-@@ -253,7 +254,8 @@ verify_ss_cert_trans(OSSL_CMP_CTX *ctx, X509 *trusted /* may be NULL */,
-     int res = 0;
- 
-     if (trusted != NULL) {
--        X509_VERIFY_PARAM *vpm = X509_STORE_get0_param(ts);
-+        X509_VERIFY_PARAM *vpm = (ts == NULL) ? NULL
-+                                              : X509_STORE_get0_param(ts);
- 
-         if ((ts = X509_STORE_new()) == NULL)
-             return 0;
diff -Nru openssl-3.5.6/debian/rules openssl-3.5.7/debian/rules
--- openssl-3.5.6/debian/rules	2026-06-06 21:55:35.000000000 +0200
+++ openssl-3.5.7/debian/rules	2026-07-18 22:55:34.000000000 +0200
@@ -53,7 +53,6 @@
 	dh $@ --without autoreconf
 
 override_dh_auto_configure:
-	tar xf debian/binary.tar
 	test -z "$(OPTS)" || for opt in $(OPTS); \
 	do \
 		set -xe; \
diff -Nru openssl-3.5.6/debian/source/include-binaries openssl-3.5.7/debian/source/include-binaries
--- openssl-3.5.6/debian/source/include-binaries	2026-06-06 16:02:10.000000000 +0200
+++ openssl-3.5.7/debian/source/include-binaries	1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-debian/binary.tar
diff -Nru openssl-3.5.6/debian/upstream/signing-key.asc openssl-3.5.7/debian/upstream/signing-key.asc
--- openssl-3.5.6/debian/upstream/signing-key.asc	2026-06-06 16:02:10.000000000 +0200
+++ openssl-3.5.7/debian/upstream/signing-key.asc	2026-07-18 22:55:34.000000000 +0200
@@ -24,6 +24,54 @@
 +5dNZt5syyVgpNd4mPZMFb9TXqoFrhrZfLGZ2I3GQ7tLX2boHhBXNl32a1sb2Qsv
 9fbz++sFbYrfDhsjH5eEwBjW7o4Kkd/cTMJGufLczy3Cb+RyrjyBrSwfMQf0xHkp
 QKidfWOKv9j+yeEhGVCHaIPilYNVeZFRHzL1H9oIkda2BZamj7iYveVnnDBjgpN7
-k6YNfbUM
-=Hw5D
+k6YNfbUMiQJUBBMBCgA+AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAFiEEulRz
+orBYewf7J88tIWCU39DLge8FAmm32LQFCQQanA0ACgkQIWCU39DLge/gtg//Wx0u
+LwyDL8Kgf9OS4wAEl8uAGgBbPUF5CVkjahwsOctd+5vX5uUO3TkUJ+e5Bv+Vjlp+
+EIcBdVF0P03ApCEL+uhNoWVPTLJKfO0mE8nNa6YnQsjy9rVvfOe3OeEXdmjs5zwa
+fStDrTcAWjhueBLO+dRtcbRuhhTIEV7mzF9kve4H7c822migQYnLYHu/PS+5vx0L
+QYI1n5ljOacVRhNCIgwgeJwlZTocqWEPTMqtaCuq1Wf7jkqlX2etx8NiPdfmk4Ef
+XjP2N9myhnA1QOpCn6mpQlsDXt7EO+1XcDuhkQIlwsDui1+YCTJlDk3DHhNTEF5o
+Zq4z6wQnTi+xGbK/cTiKeyUXlyHoCn9rWKQ7Q1QgQ9FcpB84PpGbnO29KIn/VunZ
+FhtlL5L9F1bKE0la7aB1p4yEThi9bRC3e2QZ2kEkAOruS7IwdSzT+X1MhM5DjNbZ
+cChKRsCWbn2RIV0odiG9qBo4FDO1BZYGdZp0MAk+kRyPjunuBoOFsrU6M10hO9FQ
+PSfuRSDeHciYzY3PzWpwolPMVPFqiGmzEg1ncMOchzRyiLrpn3LaSpsLz7EshVNn
+q2RnQVQoY/HrjDr9wHCEgA6ccgfUG7idejWmgTp6HwRMH5ivVALC0PmGP6Cb59ar
+N3sSXx9H7HR/yPqZlVNPW4nh6XnARUknZFlW2a+JAlQEEwEKAD4CGwMFCwkIBwIG
+FQoJCAsCBBYCAwECHgECF4AWIQS6VHOisFh7B/snzy0hYJTf0MuB7wUCaillAQUJ
+BIwoWgAKCRAhYJTf0MuB78LYD/9/OtvWHmwEU5JuOLsi90nS+rFGl1ieKsF8fDoU
+4o9vpk8etl3bG5XDOJBf4L3ZwRoqq7VpVqZCPfV2P9pgRNEFEAJp8i0kyakUnN1o
+tHW3//kQrCFfzYLfYvpNfSgNXMXs8YhmiG/WMuclekoTEbRI/7AW6e2o12l+6ftB
+1sz+vFsh4h7iOAJ0hMKw3GvZjVFOwXQ8cUXOudiPg0bxLrhMKCcalC0CJX42YQhr
+wA3VtJJOU3uvuCql0gP1V8vS1zec9gMDKqW4jG7UglHBPkvESV7L43qpQVgtsQmt
+wIkTDpM07xeTGkhE+LZYUA4rv91bU1oRCl1EuBVTodIq1ZaVWlcbc3mHWi9+Zf3L
+8ItN1kbEABI37pPruDLmMbcGTyngvkagZYwlFmbopVAcO+rYCmm+22mkRkIpzN0M
+vRG0h+jCM6agnwTZl5jy0USJ3Hh2pcPPnm2t5Uc9DTeaxQJy71GggYb/C30Q6Y1C
+pgTuxROjzlZNP2pWDFMpe0kLaiDSehTyavwmK1MHBYUkQMwKGhdf66J4gB4N0nPk
+7Sj++SczyQpwQfyQYF1tJkQZ3j4ZH108fl0sF7a0zgdhoum0O3qwvRO7Ioro6RQI
+NR+bQPgnhQjRd8DWTdvVa5WM9JVbJuX4C5+SDNDVFCK1YFl7r7AW0XQhePE0WZfI
+cKcvs4kCMwQQAQoAHRYhBO/ApGfWE8uDx+1tMNiU4s6LPXn1BQJmE+RAAAoJENiU
+4s6LPXn1CJkP/1NqbSz9FE1tngPrUv4ZWdebkOTaSKmeN1HkgQRx46gnOBqRP8lS
+jol513HZr6BmrVOB39B8KS4ECa7uG9VXZag40v1aOdLazG9+eiENSkvct7bKi0U3
+KA+p4a6I+/hHimhtm01aE/gFlxScDt0KXSNAdpBP7UTrE1NigPUxP35vEpRydSs6
+9CS/KRzWQA9ggR08FjA6HQR1VONp6ydRulhKE7BWi74ItL8kcRietOBKzorup4Rd
+KsbQqn8Ev9N7x/ZpG3O73gnJkyLA47938iwQ7vRWII2PZd748Z6TzLlkf8PB977b
+YtXZ3jV8mPI6GgZ05ZBDPk4bYxBQnjB4BDF2vRMpHrD+A+Nz01MmeVpysnEr49LJ
+4XiRPS2Wfuj/bnF8bGASZsUdcAC2HTXm+SL/XsLsZMNt2dBq8uMpZa9NclE7NkEc
+iutwJ1S0yXiB6liddkbryg+3MFBt+Mf1EAP+EImpIjakoTMQpcnu69r/nEhQlbt0
+dTZDrUk32zA1bH1haFZxycDgzxCCKonf1zVycxPKTOUk0fXnDbxDxptI+jfwNIs+
+tjjW7GdVnyhfr41l4Wu0x3n9LF9LPBV+6tFE4oGzU1vfD6lDcBeO2ENqoSMmcaNh
+VyeDKhAk1kWHP8hJPaRmj7vXjZpbMgdPncAzZT3ehtPn5bktmqPdLre1iQIzBBAB
+CgAdFiEEeVOsH7w9yLOykjk+1enkP3357owFAmYT5J8ACgkQ1enkP3357owp0A/+
+O70ATUZTJKcKhSh9vrFD/arY2hAW5VI2/wEgmre57OSv25mHbKc0IZquKJPcAJml
+IXmP5gqPTbIF3ZS4m937+P5FI+LtQgtJxPZjzvNq9mGttygAIyIJ+Cxky59USurI
+ARbeH1GcuUgaBEaWrN0DliLONEZ+Mr/N0WdgFr6OHhYPhDRfW/iGTXsuUSmS8o2t
+XIimiECLHAIEG11uxySkXlipK9wLU6eTh+1iDrHw9OHAYUTeJrEqc+BuxbnGeAZA
+wSqE/J4G/VJsUL9z9xJYwl16thG9ycmZdysRhCQrEoYT6vvGLE0wH7inMPdd3oNO
+NVdayB11D5gPcKz42VNpa9o3YZiZ143Fx0BYDtRRMWRQJyOw0IjopAh8APlZe4N0
+EPTMZN8vIvk3xoZnnuGLIZiq9xpfJ4LqbfEnPFibW3SIo8yzkLNL6Ht79Jpk5Bdd
+3tgIhwh8Fk3NKhkN8Pwg1AmqHouJU6BnLJ0/OAg21afTQQRKEENwoaW0TeUYhlfP
+Mqzu0Cltc2bBncrUXWW4AdE1qO0xRUIr4DJtJQajvq1SflCwvZyJsvz3PSrAIipi
+lS6eZRPszQSKuBXmmh3BefxQdiavp10RUf3cAK5/lfs1H837c6fFXgBep0beJHqA
+DqNn8TiHF46hwRztXIHH9pCfwEmjxDDF/oWILWKPDtI=
+=Unlh
 -----END PGP PUBLIC KEY BLOCK-----
diff -Nru openssl-3.5.6/demos/cipher/aeskeywrap.c openssl-3.5.7/demos/cipher/aeskeywrap.c
--- openssl-3.5.6/demos/cipher/aeskeywrap.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/demos/cipher/aeskeywrap.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -27,102 +27,24 @@
 
 /* Unique initialisation vector */
 static const unsigned char wrap_iv[] = {
-    0x99,
-    0xaa,
-    0x3e,
-    0x68,
-    0xed,
-    0x81,
-    0x73,
-    0xa0,
-    0xee,
-    0xd0,
-    0x66,
-    0x84,
-    0x99,
-    0xaa,
-    0x3e,
-    0x68,
+    0x99, 0xaa, 0x3e, 0x68, 0xed, 0x81, 0x73, 0xa0, 0xee, 0xd0,
+    0x66, 0x84, 0x99, 0xaa, 0x3e, 0x68
 };
 
 /* Example plaintext to encrypt */
 static const unsigned char wrap_pt[] = {
-    0xad,
-    0x4f,
-    0xc9,
-    0xfc,
-    0x77,
-    0x69,
-    0xc9,
-    0xea,
-    0xfc,
-    0xdf,
-    0x00,
-    0xac,
-    0x34,
-    0xec,
-    0x40,
-    0xbc,
-    0x28,
-    0x3f,
-    0xa4,
-    0x5e,
-    0xd8,
-    0x99,
-    0xe4,
-    0x5d,
-    0x5e,
-    0x7a,
-    0xc4,
-    0xe6,
-    0xca,
-    0x7b,
-    0xa5,
-    0xb7,
+    0xad, 0x4f, 0xc9, 0xfc, 0x77, 0x69, 0xc9, 0xea, 0xfc, 0xdf,
+    0x00, 0xac, 0x34, 0xec, 0x40, 0xbc, 0x28, 0x3f, 0xa4, 0x5e,
+    0xd8, 0x99, 0xe4, 0x5d, 0x5e, 0x7a, 0xc4, 0xe6, 0xca, 0x7b,
+    0xa5, 0xb7
 };
 
 /* Expected ciphertext value */
 static const unsigned char wrap_ct[] = {
-    0x97,
-    0x99,
-    0x55,
-    0xca,
-    0xf6,
-    0x3e,
-    0x95,
-    0x54,
-    0x39,
-    0xd6,
-    0xaf,
-    0x63,
-    0xff,
-    0x2c,
-    0xe3,
-    0x96,
-    0xf7,
-    0x0d,
-    0x2c,
-    0x9c,
-    0xc7,
-    0x43,
-    0xc0,
-    0xb6,
-    0x31,
-    0x43,
-    0xb9,
-    0x20,
-    0xac,
-    0x6b,
-    0xd3,
-    0x67,
-    0xad,
-    0x01,
-    0xaf,
-    0xa7,
-    0x32,
-    0x74,
-    0x26,
-    0x92,
+    0x97, 0x99, 0x55, 0xca, 0xf6, 0x3e, 0x95, 0x54, 0x39, 0xd6,
+    0xaf, 0x63, 0xff, 0x2c, 0xe3, 0x96, 0xf7, 0x0d, 0x2c, 0x9c,
+    0xc7, 0x43, 0xc0, 0xb6, 0x31, 0x43, 0xb9, 0x20, 0xac, 0x6b,
+    0xd3, 0x67, 0xad, 0x01, 0xaf, 0xa7, 0x32, 0x74, 0x26, 0x92
 };
 
 /*
diff -Nru openssl-3.5.6/demos/cipher/ariacbc.c openssl-3.5.7/demos/cipher/ariacbc.c
--- openssl-3.5.6/demos/cipher/ariacbc.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/demos/cipher/ariacbc.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2012-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2012-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -27,22 +27,8 @@
 
 /* Unique initialisation vector */
 static const unsigned char cbc_iv[] = {
-    0x99,
-    0xaa,
-    0x3e,
-    0x68,
-    0xed,
-    0x81,
-    0x73,
-    0xa0,
-    0xee,
-    0xd0,
-    0x66,
-    0x84,
-    0x99,
-    0xaa,
-    0x3e,
-    0x68,
+    0x99, 0xaa, 0x3e, 0x68, 0xed, 0x81, 0x73, 0xa0, 0xee, 0xd0,
+    0x66, 0x84, 0x99, 0xaa, 0x3e, 0x68
 };
 
 /* Example plaintext to encrypt */
diff -Nru openssl-3.5.6/demos/digest/EVP_MD_demo.c openssl-3.5.7/demos/digest/EVP_MD_demo.c
--- openssl-3.5.6/demos/digest/EVP_MD_demo.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/demos/digest/EVP_MD_demo.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*-
- * Copyright 2021-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2021-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -62,70 +62,13 @@
 
 /* The known value of the SHA3-512 digest of the above soliloqy */
 static const unsigned char known_answer[] = {
-    0xbb,
-    0x69,
-    0xf8,
-    0x09,
-    0x9c,
-    0x2e,
-    0x00,
-    0x3d,
-    0xa4,
-    0x29,
-    0x5f,
-    0x59,
-    0x4b,
-    0x89,
-    0xe4,
-    0xd9,
-    0xdb,
-    0xa2,
-    0xe5,
-    0xaf,
-    0xa5,
-    0x87,
-    0x73,
-    0x9d,
-    0x83,
-    0x72,
-    0xcf,
-    0xea,
-    0x84,
-    0x66,
-    0xc1,
-    0xf9,
-    0xc9,
-    0x78,
-    0xef,
-    0xba,
-    0x3d,
-    0xe9,
-    0xc1,
-    0xff,
-    0xa3,
-    0x75,
-    0xc7,
-    0x58,
-    0x74,
-    0x8e,
-    0x9c,
-    0x1d,
-    0x14,
-    0xd9,
-    0xdd,
-    0xd1,
-    0xfd,
-    0x24,
-    0x30,
-    0xd6,
-    0x81,
-    0xca,
-    0x8f,
-    0x78,
-    0x29,
-    0x19,
-    0x9a,
-    0xfe,
+    0xbb, 0x69, 0xf8, 0x09, 0x9c, 0x2e, 0x00, 0x3d, 0xa4, 0x29,
+    0x5f, 0x59, 0x4b, 0x89, 0xe4, 0xd9, 0xdb, 0xa2, 0xe5, 0xaf,
+    0xa5, 0x87, 0x73, 0x9d, 0x83, 0x72, 0xcf, 0xea, 0x84, 0x66,
+    0xc1, 0xf9, 0xc9, 0x78, 0xef, 0xba, 0x3d, 0xe9, 0xc1, 0xff,
+    0xa3, 0x75, 0xc7, 0x58, 0x74, 0x8e, 0x9c, 0x1d, 0x14, 0xd9,
+    0xdd, 0xd1, 0xfd, 0x24, 0x30, 0xd6, 0x81, 0xca, 0x8f, 0x78,
+    0x29, 0x19, 0x9a, 0xfe
 };
 
 static int demonstrate_digest(void)
diff -Nru openssl-3.5.6/demos/encrypt/rsa_encrypt.h openssl-3.5.7/demos/encrypt/rsa_encrypt.h
--- openssl-3.5.6/demos/encrypt/rsa_encrypt.h	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/demos/encrypt/rsa_encrypt.h	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*-
- * Copyright 2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2021-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -9,1494 +9,158 @@
 
 /* Private RSA key used for decryption */
 static const unsigned char priv_key_der[] = {
-    0x30,
-    0x82,
-    0x04,
-    0xa4,
-    0x02,
-    0x01,
-    0x00,
-    0x02,
-    0x82,
-    0x01,
-    0x01,
-    0x00,
-    0xc2,
-    0x44,
-    0xbc,
-    0xcf,
-    0x5b,
-    0xca,
-    0xcd,
-    0x80,
-    0x77,
-    0xae,
-    0xf9,
-    0x7a,
-    0x34,
-    0xbb,
-    0x37,
-    0x6f,
-    0x5c,
-    0x76,
-    0x4c,
-    0xe4,
-    0xbb,
-    0x0c,
-    0x1d,
-    0xe7,
-    0xfe,
-    0x0f,
-    0xda,
-    0xcf,
-    0x8c,
-    0x56,
-    0x65,
-    0x72,
-    0x6e,
-    0x2c,
-    0xf9,
-    0xfd,
-    0x87,
-    0x43,
-    0xeb,
-    0x4c,
-    0x26,
-    0xb1,
-    0xd3,
-    0xf0,
-    0x87,
-    0xb1,
-    0x18,
-    0x68,
-    0x14,
-    0x7d,
-    0x3c,
-    0x2a,
-    0xfa,
-    0xc2,
-    0x5d,
-    0x70,
-    0x19,
-    0x11,
-    0x00,
-    0x2e,
-    0xb3,
-    0x9c,
-    0x8e,
-    0x38,
-    0x08,
-    0xbe,
-    0xe3,
-    0xeb,
-    0x7d,
-    0x6e,
-    0xc7,
-    0x19,
-    0xc6,
-    0x7f,
-    0x59,
-    0x48,
-    0x84,
-    0x1b,
-    0xe3,
-    0x27,
-    0x30,
-    0x46,
-    0x30,
-    0xd3,
-    0xfc,
-    0xfc,
-    0xb3,
-    0x35,
-    0x75,
-    0xc4,
-    0x31,
-    0x1a,
-    0xc0,
-    0xc2,
-    0x4c,
-    0x0b,
-    0xc7,
-    0x01,
-    0x95,
-    0xb2,
-    0xdc,
-    0x17,
-    0x77,
-    0x9b,
-    0x09,
-    0x15,
-    0x04,
-    0xbc,
-    0xdb,
-    0x57,
-    0x0b,
-    0x26,
-    0xda,
-    0x59,
-    0x54,
-    0x0d,
-    0x6e,
-    0xb7,
-    0x89,
-    0xbc,
-    0x53,
-    0x9d,
-    0x5f,
-    0x8c,
-    0xad,
-    0x86,
-    0x97,
-    0xd2,
-    0x48,
-    0x4f,
-    0x5c,
-    0x94,
-    0xdd,
-    0x30,
-    0x2f,
-    0xcf,
-    0xfc,
-    0xde,
-    0x20,
-    0x31,
-    0x25,
-    0x9d,
-    0x29,
-    0x25,
-    0x78,
-    0xb7,
-    0xd2,
-    0x5b,
-    0x5d,
-    0x99,
-    0x5b,
-    0x08,
-    0x12,
-    0x81,
-    0x79,
-    0x89,
-    0xa0,
-    0xcf,
-    0x8f,
-    0x40,
-    0xb1,
-    0x77,
-    0x72,
-    0x3b,
-    0x13,
-    0xfc,
-    0x55,
-    0x43,
-    0x70,
-    0x29,
-    0xd5,
-    0x41,
-    0xed,
-    0x31,
-    0x4b,
-    0x2d,
-    0x6c,
-    0x7d,
-    0xcf,
-    0x99,
-    0x5f,
-    0xd1,
-    0x72,
-    0x9f,
-    0x8b,
-    0x32,
-    0x96,
-    0xde,
-    0x5d,
-    0x8b,
-    0x19,
-    0x77,
-    0x75,
-    0xff,
-    0x09,
-    0xbf,
-    0x26,
-    0xe9,
-    0xd7,
-    0x3d,
-    0xc7,
-    0x1a,
-    0x81,
-    0xcf,
-    0x05,
-    0x1b,
-    0x89,
-    0xbf,
-    0x45,
-    0x32,
-    0xbf,
-    0x5e,
-    0xc9,
-    0xe3,
-    0x5c,
-    0x33,
-    0x4a,
-    0x72,
-    0x47,
-    0xf4,
-    0x24,
-    0xae,
-    0x9b,
-    0x38,
-    0x24,
-    0x76,
-    0x9a,
-    0xa2,
-    0x9a,
-    0x50,
-    0x50,
-    0x49,
-    0xf5,
-    0x26,
-    0xb9,
-    0x55,
-    0xa6,
-    0x47,
-    0xc9,
-    0x14,
-    0xa2,
-    0xca,
-    0xd4,
-    0xa8,
-    0x8a,
-    0x9f,
-    0xe9,
-    0x5a,
-    0x5a,
-    0x12,
-    0xaa,
-    0x30,
-    0xd5,
-    0x78,
-    0x8b,
-    0x39,
-    0x02,
-    0x03,
-    0x01,
-    0x00,
-    0x01,
-    0x02,
-    0x82,
-    0x01,
-    0x00,
-    0x22,
-    0x5d,
-    0xb9,
-    0x8e,
-    0xef,
-    0x1c,
-    0x91,
-    0xbd,
-    0x03,
-    0xaf,
-    0x1a,
-    0xe8,
-    0x00,
-    0xf3,
-    0x0b,
-    0x8b,
-    0xf2,
-    0x2d,
-    0xe5,
-    0x4d,
-    0x63,
-    0x3f,
-    0x71,
-    0xfc,
-    0xeb,
-    0xc7,
-    0x4f,
-    0x3c,
-    0x7f,
-    0x05,
-    0x7b,
-    0x9d,
-    0xc2,
-    0x1a,
-    0xc7,
-    0xc0,
-    0x8f,
-    0x50,
-    0xb7,
-    0x0b,
-    0xba,
-    0x1e,
-    0xa4,
-    0x30,
-    0xfd,
-    0x38,
-    0x19,
-    0x6a,
-    0xb4,
-    0x11,
-    0x31,
-    0x77,
-    0x22,
-    0xf4,
-    0x06,
-    0x46,
-    0x81,
-    0xd0,
-    0xad,
-    0x99,
-    0x15,
-    0x62,
-    0x01,
-    0x10,
-    0xad,
-    0x8f,
-    0x63,
-    0x4f,
-    0x71,
-    0xd9,
-    0x8a,
-    0x74,
-    0x27,
-    0x56,
-    0xb8,
-    0xeb,
-    0x28,
-    0x9f,
-    0xac,
-    0x4f,
-    0xee,
-    0xec,
-    0xc3,
-    0xcf,
-    0x84,
-    0x86,
-    0x09,
-    0x87,
-    0xd0,
-    0x04,
-    0xfc,
-    0x70,
-    0xd0,
-    0x9f,
-    0xae,
-    0x87,
-    0x38,
-    0xd5,
-    0xb1,
-    0x6f,
-    0x3a,
-    0x1b,
-    0x16,
-    0xa8,
-    0x00,
-    0xf3,
-    0xcc,
-    0x6a,
-    0x42,
-    0x5d,
-    0x04,
-    0x16,
-    0x83,
-    0xf2,
-    0xe0,
-    0x79,
-    0x1d,
-    0xd8,
-    0x6f,
-    0x0f,
-    0xb7,
-    0x34,
-    0xf4,
-    0x45,
-    0xb5,
-    0x1e,
-    0xc5,
-    0xb5,
-    0x78,
-    0xa7,
-    0xd3,
-    0xa3,
-    0x23,
-    0x35,
-    0xbc,
-    0x7b,
-    0x01,
-    0x59,
-    0x7d,
-    0xee,
-    0xb9,
-    0x4f,
-    0xda,
-    0x28,
-    0xad,
-    0x5d,
-    0x25,
-    0xab,
-    0x66,
-    0x6a,
-    0xb0,
-    0x61,
-    0xf6,
-    0x12,
-    0xa7,
-    0xee,
-    0xd1,
-    0xe7,
-    0xb1,
-    0x8b,
-    0x91,
-    0x29,
-    0xba,
-    0xb5,
-    0xf8,
-    0x78,
-    0xc8,
-    0x6b,
-    0x76,
-    0x67,
-    0x32,
-    0xe8,
-    0xf3,
-    0x4e,
-    0x59,
-    0xba,
-    0xc1,
-    0x44,
-    0xc0,
-    0xec,
-    0x8d,
-    0x7c,
-    0x63,
-    0xb2,
-    0x6e,
-    0x0c,
-    0xb9,
-    0x33,
-    0x42,
-    0x0c,
-    0x8d,
-    0xae,
-    0x4e,
-    0x54,
-    0xc8,
-    0x8a,
-    0xef,
-    0xf9,
-    0x47,
-    0xc8,
-    0x99,
-    0x84,
-    0xc8,
-    0x46,
-    0xf6,
-    0xa6,
-    0x53,
-    0x59,
-    0xf8,
-    0x60,
-    0xe3,
-    0xd7,
-    0x1d,
-    0x10,
-    0x95,
-    0xf5,
-    0x6d,
-    0xf4,
-    0xa3,
-    0x18,
-    0x40,
-    0xd7,
-    0x14,
-    0x04,
-    0xac,
-    0x8c,
-    0x69,
-    0xd6,
-    0x14,
-    0xdc,
-    0xd8,
-    0xcc,
-    0xbc,
-    0x1c,
-    0xac,
-    0xd7,
-    0x21,
-    0x2b,
-    0x7e,
-    0x29,
-    0x88,
-    0x06,
-    0xa0,
-    0xf4,
-    0x06,
-    0x08,
-    0x14,
-    0x04,
-    0x4d,
-    0x32,
-    0x33,
-    0x84,
-    0x9c,
-    0x20,
-    0x8e,
-    0xcf,
-    0x02,
-    0x81,
-    0x81,
-    0x00,
-    0xf3,
-    0xf9,
-    0xbd,
-    0xd5,
-    0x43,
-    0x6f,
-    0x27,
-    0x4a,
-    0x92,
-    0xd6,
-    0x18,
-    0x3d,
-    0x4b,
-    0xf1,
-    0x77,
-    0x7c,
-    0xaf,
-    0xce,
-    0x01,
-    0x17,
-    0x98,
-    0xcb,
-    0xbe,
-    0x06,
-    0x86,
-    0x3a,
-    0x13,
-    0x72,
-    0x4b,
-    0x7c,
-    0x81,
-    0x51,
-    0x24,
-    0x5d,
-    0xc3,
-    0xe9,
-    0xa2,
-    0x63,
-    0x1e,
-    0x4a,
-    0xeb,
-    0x66,
-    0xae,
-    0x01,
-    0x5e,
-    0xa4,
-    0xa4,
-    0x74,
-    0x9e,
-    0xee,
-    0x32,
-    0xe5,
-    0x59,
-    0x1b,
-    0x37,
-    0xef,
-    0x7d,
-    0xb3,
-    0x42,
-    0x8c,
-    0x93,
-    0x8b,
-    0xd3,
-    0x1e,
-    0x83,
-    0x43,
-    0xb5,
-    0x88,
-    0x3e,
-    0x24,
-    0xeb,
-    0xdc,
-    0x92,
-    0x2d,
-    0xcc,
-    0x9a,
-    0x9d,
-    0xf1,
-    0x7d,
-    0x16,
-    0x71,
-    0xcb,
-    0x25,
-    0x47,
-    0x36,
-    0xb0,
-    0xc4,
-    0x6b,
-    0xc8,
-    0x53,
-    0x4a,
-    0x25,
-    0x80,
-    0x47,
-    0x77,
-    0xdb,
-    0x97,
-    0x13,
-    0x15,
-    0x0f,
-    0x4a,
-    0xfa,
-    0x0c,
-    0x6c,
-    0x44,
-    0x13,
-    0x2f,
-    0xbc,
-    0x9a,
-    0x6b,
-    0x13,
-    0x57,
-    0xfc,
-    0x42,
-    0xb9,
-    0xe9,
-    0xd3,
-    0x2e,
-    0xd2,
-    0x11,
-    0xf4,
-    0xc5,
-    0x84,
-    0x55,
-    0xd2,
-    0xdf,
-    0x1d,
-    0xa7,
-    0x02,
-    0x81,
-    0x81,
-    0x00,
-    0xcb,
-    0xd7,
-    0xd6,
-    0x9d,
-    0x71,
-    0xb3,
-    0x86,
-    0xbe,
-    0x68,
-    0xed,
-    0x67,
-    0xe1,
-    0x51,
-    0x92,
-    0x17,
-    0x60,
-    0x58,
-    0xb3,
-    0x2a,
-    0x56,
-    0xfd,
-    0x18,
-    0xfb,
-    0x39,
-    0x4b,
-    0x14,
-    0xc6,
-    0xf6,
-    0x67,
-    0x0e,
-    0x31,
-    0xe3,
-    0xb3,
-    0x2f,
-    0x1f,
-    0xec,
-    0x16,
-    0x1c,
-    0x23,
-    0x2b,
-    0x60,
-    0x36,
-    0xd1,
-    0xcb,
-    0x4a,
-    0x03,
-    0x6a,
-    0x3a,
-    0x4c,
-    0x8c,
-    0xf2,
-    0x73,
-    0x08,
-    0x23,
-    0x29,
-    0xda,
-    0xcb,
-    0xf7,
-    0xb6,
-    0x18,
-    0x97,
-    0xc6,
-    0xfe,
-    0xd4,
-    0x40,
-    0x06,
-    0x87,
-    0x9d,
-    0x6e,
-    0xbb,
-    0x5d,
-    0x14,
-    0x44,
-    0xc8,
-    0x19,
-    0xfa,
-    0x7f,
-    0x0c,
-    0xc5,
-    0x02,
-    0x92,
-    0x00,
-    0xbb,
-    0x2e,
-    0x4f,
-    0x50,
-    0xb0,
-    0x71,
-    0x9f,
-    0xf3,
-    0x94,
-    0x12,
-    0xb8,
-    0x6c,
-    0x5f,
-    0xe1,
-    0x83,
-    0x7b,
-    0xbc,
-    0x8c,
-    0x0a,
-    0x6f,
-    0x09,
-    0x6a,
-    0x35,
-    0x4f,
-    0xf9,
-    0xa4,
-    0x92,
-    0x93,
-    0xe3,
-    0xad,
-    0x36,
-    0x25,
-    0x28,
-    0x90,
-    0x85,
-    0xd2,
-    0x9f,
-    0x86,
-    0xfd,
-    0xd9,
-    0xa8,
-    0x61,
-    0xe9,
-    0xb2,
-    0xec,
-    0x1f,
-    0x02,
-    0x81,
-    0x81,
-    0x00,
-    0xdd,
-    0x1c,
-    0x52,
-    0xda,
-    0x2b,
-    0xc2,
-    0x5a,
-    0x26,
-    0xb0,
-    0xcb,
-    0x0d,
-    0xae,
-    0xc7,
-    0xdb,
-    0xf0,
-    0x41,
-    0x75,
-    0x87,
-    0x4a,
-    0xe0,
-    0x1a,
-    0xdf,
-    0x53,
-    0xb9,
-    0xcf,
-    0xfe,
-    0x64,
-    0x4f,
-    0x6a,
-    0x70,
-    0x4d,
-    0x36,
-    0xbf,
-    0xb1,
-    0xa6,
-    0xf3,
-    0x5f,
-    0xf3,
-    0x5a,
-    0xa9,
-    0xe5,
-    0x8b,
-    0xea,
-    0x59,
-    0x5d,
-    0x6f,
-    0xf3,
-    0x87,
-    0xa9,
-    0xde,
-    0x11,
-    0x0c,
-    0x60,
-    0x64,
-    0x55,
-    0x9e,
-    0x5c,
-    0x1a,
-    0x91,
-    0x4e,
-    0x9c,
-    0x0d,
-    0xd5,
-    0xe9,
-    0x4a,
-    0x67,
-    0x9b,
-    0xe6,
-    0xfd,
-    0x03,
-    0x33,
-    0x2b,
-    0x74,
-    0xe3,
-    0xc3,
-    0x11,
-    0xc1,
-    0xe0,
-    0xf1,
-    0x4f,
-    0xdd,
-    0x13,
-    0x92,
-    0x16,
-    0x67,
-    0x4f,
-    0x6e,
-    0xc4,
-    0x8c,
-    0x0a,
-    0x48,
-    0x21,
-    0x92,
-    0x8f,
-    0xb2,
-    0xe5,
-    0xb5,
-    0x96,
-    0x5a,
-    0xb8,
-    0xc0,
-    0x67,
-    0xbb,
-    0xc8,
-    0x87,
-    0x2d,
-    0xa8,
-    0x4e,
-    0xd2,
-    0xd8,
-    0x05,
-    0xf0,
-    0xf0,
-    0xb3,
-    0x7c,
-    0x90,
-    0x98,
-    0x8f,
-    0x4f,
-    0x5d,
-    0x6c,
-    0xab,
-    0x71,
-    0x92,
-    0xe2,
-    0x88,
-    0xc8,
-    0xf3,
-    0x02,
-    0x81,
-    0x81,
-    0x00,
-    0x99,
-    0x27,
-    0x5a,
-    0x00,
-    0x81,
-    0x65,
-    0x39,
-    0x5f,
-    0xe6,
-    0xc6,
-    0x38,
-    0xbe,
-    0x79,
-    0xe3,
-    0x21,
-    0xdd,
-    0x29,
-    0xc7,
-    0xb3,
-    0x90,
-    0x18,
-    0x29,
-    0xa4,
-    0xd7,
-    0xaf,
-    0x29,
-    0xb5,
-    0x33,
-    0x7c,
-    0xca,
-    0x95,
-    0x81,
-    0x57,
-    0x27,
-    0x98,
-    0xfc,
-    0x70,
-    0xc0,
-    0x43,
-    0x4c,
-    0x5b,
-    0xc5,
-    0xd4,
-    0x6a,
-    0xc0,
-    0xf9,
-    0x3f,
-    0xde,
-    0xfd,
-    0x95,
-    0x08,
-    0xb4,
-    0x94,
-    0xf0,
-    0x96,
-    0x89,
-    0xe5,
-    0xa6,
-    0x00,
-    0x13,
-    0x0a,
-    0x36,
-    0x61,
-    0x50,
-    0x67,
-    0xaa,
-    0x80,
-    0x4a,
-    0x30,
-    0xe0,
-    0x65,
-    0x56,
-    0xcd,
-    0x36,
-    0xeb,
-    0x0d,
-    0xe2,
-    0x57,
-    0x5d,
-    0xce,
-    0x48,
-    0x94,
-    0x74,
-    0x0e,
-    0x9f,
-    0x59,
-    0x28,
-    0xb8,
-    0xb6,
-    0x4c,
-    0xf4,
-    0x7b,
-    0xfc,
-    0x44,
-    0xb0,
-    0xe5,
-    0x67,
-    0x3c,
-    0x98,
-    0xb5,
-    0x3f,
-    0x41,
-    0x9d,
-    0xf9,
-    0x46,
-    0x85,
-    0x08,
-    0x34,
-    0x36,
-    0x4d,
-    0x17,
-    0x4b,
-    0x14,
-    0xdb,
-    0x66,
-    0x56,
-    0xef,
-    0xb5,
-    0x08,
-    0x57,
-    0x0c,
-    0x73,
-    0x74,
-    0xa7,
-    0xdc,
-    0x46,
-    0xaa,
-    0x51,
-    0x02,
-    0x81,
-    0x80,
-    0x1e,
-    0x50,
-    0x4c,
-    0xde,
-    0x9c,
-    0x60,
-    0x6d,
-    0xd7,
-    0x31,
-    0xf6,
-    0xd8,
-    0x4f,
-    0xc2,
-    0x25,
-    0x7d,
-    0x83,
-    0xb3,
-    0xe7,
-    0xed,
-    0x92,
-    0xe7,
-    0x28,
-    0x1e,
-    0xb3,
-    0x9b,
-    0xcb,
-    0xf2,
-    0x86,
-    0xa4,
-    0x49,
-    0x45,
-    0x5e,
-    0xba,
-    0x1d,
-    0xdb,
-    0x21,
-    0x5d,
-    0xdf,
-    0xeb,
-    0x3c,
-    0x5e,
-    0x01,
-    0xc6,
-    0x68,
-    0x25,
-    0x28,
-    0xe6,
-    0x1a,
-    0xbf,
-    0xc1,
-    0xa1,
-    0xc5,
-    0x92,
-    0x0b,
-    0x08,
-    0x43,
-    0x0e,
-    0x5a,
-    0xa3,
-    0x85,
-    0x8a,
-    0x65,
-    0xb4,
-    0x54,
-    0xa1,
-    0x4c,
-    0x20,
-    0xa2,
-    0x5a,
-    0x08,
-    0xf6,
-    0x90,
-    0x0d,
-    0x9a,
-    0xd7,
-    0x20,
-    0xf1,
-    0x10,
-    0x66,
-    0x28,
-    0x4c,
-    0x22,
-    0x56,
-    0xa6,
-    0xb9,
-    0xff,
-    0xd0,
-    0x6a,
-    0x62,
-    0x8c,
-    0x9f,
-    0xf8,
-    0x7c,
-    0xf4,
-    0xad,
-    0xd7,
-    0xe8,
-    0xf9,
-    0x87,
-    0x43,
-    0xbf,
-    0x73,
-    0x5b,
-    0x04,
-    0xc7,
-    0xd0,
-    0x77,
-    0xcc,
-    0xe3,
-    0xbe,
-    0xda,
-    0xc2,
-    0x07,
-    0xed,
-    0x8d,
-    0x2a,
-    0x15,
-    0x77,
-    0x1d,
-    0x53,
-    0x47,
-    0xe0,
-    0xa2,
-    0x11,
-    0x41,
-    0x0d,
-    0xe2,
-    0xe7,
+    0x30, 0x82, 0x04, 0xa4, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01,
+    0x01, 0x00, 0xc2, 0x44, 0xbc, 0xcf, 0x5b, 0xca, 0xcd, 0x80,
+    0x77, 0xae, 0xf9, 0x7a, 0x34, 0xbb, 0x37, 0x6f, 0x5c, 0x76,
+    0x4c, 0xe4, 0xbb, 0x0c, 0x1d, 0xe7, 0xfe, 0x0f, 0xda, 0xcf,
+    0x8c, 0x56, 0x65, 0x72, 0x6e, 0x2c, 0xf9, 0xfd, 0x87, 0x43,
+    0xeb, 0x4c, 0x26, 0xb1, 0xd3, 0xf0, 0x87, 0xb1, 0x18, 0x68,
+    0x14, 0x7d, 0x3c, 0x2a, 0xfa, 0xc2, 0x5d, 0x70, 0x19, 0x11,
+    0x00, 0x2e, 0xb3, 0x9c, 0x8e, 0x38, 0x08, 0xbe, 0xe3, 0xeb,
+    0x7d, 0x6e, 0xc7, 0x19, 0xc6, 0x7f, 0x59, 0x48, 0x84, 0x1b,
+    0xe3, 0x27, 0x30, 0x46, 0x30, 0xd3, 0xfc, 0xfc, 0xb3, 0x35,
+    0x75, 0xc4, 0x31, 0x1a, 0xc0, 0xc2, 0x4c, 0x0b, 0xc7, 0x01,
+    0x95, 0xb2, 0xdc, 0x17, 0x77, 0x9b, 0x09, 0x15, 0x04, 0xbc,
+    0xdb, 0x57, 0x0b, 0x26, 0xda, 0x59, 0x54, 0x0d, 0x6e, 0xb7,
+    0x89, 0xbc, 0x53, 0x9d, 0x5f, 0x8c, 0xad, 0x86, 0x97, 0xd2,
+    0x48, 0x4f, 0x5c, 0x94, 0xdd, 0x30, 0x2f, 0xcf, 0xfc, 0xde,
+    0x20, 0x31, 0x25, 0x9d, 0x29, 0x25, 0x78, 0xb7, 0xd2, 0x5b,
+    0x5d, 0x99, 0x5b, 0x08, 0x12, 0x81, 0x79, 0x89, 0xa0, 0xcf,
+    0x8f, 0x40, 0xb1, 0x77, 0x72, 0x3b, 0x13, 0xfc, 0x55, 0x43,
+    0x70, 0x29, 0xd5, 0x41, 0xed, 0x31, 0x4b, 0x2d, 0x6c, 0x7d,
+    0xcf, 0x99, 0x5f, 0xd1, 0x72, 0x9f, 0x8b, 0x32, 0x96, 0xde,
+    0x5d, 0x8b, 0x19, 0x77, 0x75, 0xff, 0x09, 0xbf, 0x26, 0xe9,
+    0xd7, 0x3d, 0xc7, 0x1a, 0x81, 0xcf, 0x05, 0x1b, 0x89, 0xbf,
+    0x45, 0x32, 0xbf, 0x5e, 0xc9, 0xe3, 0x5c, 0x33, 0x4a, 0x72,
+    0x47, 0xf4, 0x24, 0xae, 0x9b, 0x38, 0x24, 0x76, 0x9a, 0xa2,
+    0x9a, 0x50, 0x50, 0x49, 0xf5, 0x26, 0xb9, 0x55, 0xa6, 0x47,
+    0xc9, 0x14, 0xa2, 0xca, 0xd4, 0xa8, 0x8a, 0x9f, 0xe9, 0x5a,
+    0x5a, 0x12, 0xaa, 0x30, 0xd5, 0x78, 0x8b, 0x39, 0x02, 0x03,
+    0x01, 0x00, 0x01, 0x02, 0x82, 0x01, 0x00, 0x22, 0x5d, 0xb9,
+    0x8e, 0xef, 0x1c, 0x91, 0xbd, 0x03, 0xaf, 0x1a, 0xe8, 0x00,
+    0xf3, 0x0b, 0x8b, 0xf2, 0x2d, 0xe5, 0x4d, 0x63, 0x3f, 0x71,
+    0xfc, 0xeb, 0xc7, 0x4f, 0x3c, 0x7f, 0x05, 0x7b, 0x9d, 0xc2,
+    0x1a, 0xc7, 0xc0, 0x8f, 0x50, 0xb7, 0x0b, 0xba, 0x1e, 0xa4,
+    0x30, 0xfd, 0x38, 0x19, 0x6a, 0xb4, 0x11, 0x31, 0x77, 0x22,
+    0xf4, 0x06, 0x46, 0x81, 0xd0, 0xad, 0x99, 0x15, 0x62, 0x01,
+    0x10, 0xad, 0x8f, 0x63, 0x4f, 0x71, 0xd9, 0x8a, 0x74, 0x27,
+    0x56, 0xb8, 0xeb, 0x28, 0x9f, 0xac, 0x4f, 0xee, 0xec, 0xc3,
+    0xcf, 0x84, 0x86, 0x09, 0x87, 0xd0, 0x04, 0xfc, 0x70, 0xd0,
+    0x9f, 0xae, 0x87, 0x38, 0xd5, 0xb1, 0x6f, 0x3a, 0x1b, 0x16,
+    0xa8, 0x00, 0xf3, 0xcc, 0x6a, 0x42, 0x5d, 0x04, 0x16, 0x83,
+    0xf2, 0xe0, 0x79, 0x1d, 0xd8, 0x6f, 0x0f, 0xb7, 0x34, 0xf4,
+    0x45, 0xb5, 0x1e, 0xc5, 0xb5, 0x78, 0xa7, 0xd3, 0xa3, 0x23,
+    0x35, 0xbc, 0x7b, 0x01, 0x59, 0x7d, 0xee, 0xb9, 0x4f, 0xda,
+    0x28, 0xad, 0x5d, 0x25, 0xab, 0x66, 0x6a, 0xb0, 0x61, 0xf6,
+    0x12, 0xa7, 0xee, 0xd1, 0xe7, 0xb1, 0x8b, 0x91, 0x29, 0xba,
+    0xb5, 0xf8, 0x78, 0xc8, 0x6b, 0x76, 0x67, 0x32, 0xe8, 0xf3,
+    0x4e, 0x59, 0xba, 0xc1, 0x44, 0xc0, 0xec, 0x8d, 0x7c, 0x63,
+    0xb2, 0x6e, 0x0c, 0xb9, 0x33, 0x42, 0x0c, 0x8d, 0xae, 0x4e,
+    0x54, 0xc8, 0x8a, 0xef, 0xf9, 0x47, 0xc8, 0x99, 0x84, 0xc8,
+    0x46, 0xf6, 0xa6, 0x53, 0x59, 0xf8, 0x60, 0xe3, 0xd7, 0x1d,
+    0x10, 0x95, 0xf5, 0x6d, 0xf4, 0xa3, 0x18, 0x40, 0xd7, 0x14,
+    0x04, 0xac, 0x8c, 0x69, 0xd6, 0x14, 0xdc, 0xd8, 0xcc, 0xbc,
+    0x1c, 0xac, 0xd7, 0x21, 0x2b, 0x7e, 0x29, 0x88, 0x06, 0xa0,
+    0xf4, 0x06, 0x08, 0x14, 0x04, 0x4d, 0x32, 0x33, 0x84, 0x9c,
+    0x20, 0x8e, 0xcf, 0x02, 0x81, 0x81, 0x00, 0xf3, 0xf9, 0xbd,
+    0xd5, 0x43, 0x6f, 0x27, 0x4a, 0x92, 0xd6, 0x18, 0x3d, 0x4b,
+    0xf1, 0x77, 0x7c, 0xaf, 0xce, 0x01, 0x17, 0x98, 0xcb, 0xbe,
+    0x06, 0x86, 0x3a, 0x13, 0x72, 0x4b, 0x7c, 0x81, 0x51, 0x24,
+    0x5d, 0xc3, 0xe9, 0xa2, 0x63, 0x1e, 0x4a, 0xeb, 0x66, 0xae,
+    0x01, 0x5e, 0xa4, 0xa4, 0x74, 0x9e, 0xee, 0x32, 0xe5, 0x59,
+    0x1b, 0x37, 0xef, 0x7d, 0xb3, 0x42, 0x8c, 0x93, 0x8b, 0xd3,
+    0x1e, 0x83, 0x43, 0xb5, 0x88, 0x3e, 0x24, 0xeb, 0xdc, 0x92,
+    0x2d, 0xcc, 0x9a, 0x9d, 0xf1, 0x7d, 0x16, 0x71, 0xcb, 0x25,
+    0x47, 0x36, 0xb0, 0xc4, 0x6b, 0xc8, 0x53, 0x4a, 0x25, 0x80,
+    0x47, 0x77, 0xdb, 0x97, 0x13, 0x15, 0x0f, 0x4a, 0xfa, 0x0c,
+    0x6c, 0x44, 0x13, 0x2f, 0xbc, 0x9a, 0x6b, 0x13, 0x57, 0xfc,
+    0x42, 0xb9, 0xe9, 0xd3, 0x2e, 0xd2, 0x11, 0xf4, 0xc5, 0x84,
+    0x55, 0xd2, 0xdf, 0x1d, 0xa7, 0x02, 0x81, 0x81, 0x00, 0xcb,
+    0xd7, 0xd6, 0x9d, 0x71, 0xb3, 0x86, 0xbe, 0x68, 0xed, 0x67,
+    0xe1, 0x51, 0x92, 0x17, 0x60, 0x58, 0xb3, 0x2a, 0x56, 0xfd,
+    0x18, 0xfb, 0x39, 0x4b, 0x14, 0xc6, 0xf6, 0x67, 0x0e, 0x31,
+    0xe3, 0xb3, 0x2f, 0x1f, 0xec, 0x16, 0x1c, 0x23, 0x2b, 0x60,
+    0x36, 0xd1, 0xcb, 0x4a, 0x03, 0x6a, 0x3a, 0x4c, 0x8c, 0xf2,
+    0x73, 0x08, 0x23, 0x29, 0xda, 0xcb, 0xf7, 0xb6, 0x18, 0x97,
+    0xc6, 0xfe, 0xd4, 0x40, 0x06, 0x87, 0x9d, 0x6e, 0xbb, 0x5d,
+    0x14, 0x44, 0xc8, 0x19, 0xfa, 0x7f, 0x0c, 0xc5, 0x02, 0x92,
+    0x00, 0xbb, 0x2e, 0x4f, 0x50, 0xb0, 0x71, 0x9f, 0xf3, 0x94,
+    0x12, 0xb8, 0x6c, 0x5f, 0xe1, 0x83, 0x7b, 0xbc, 0x8c, 0x0a,
+    0x6f, 0x09, 0x6a, 0x35, 0x4f, 0xf9, 0xa4, 0x92, 0x93, 0xe3,
+    0xad, 0x36, 0x25, 0x28, 0x90, 0x85, 0xd2, 0x9f, 0x86, 0xfd,
+    0xd9, 0xa8, 0x61, 0xe9, 0xb2, 0xec, 0x1f, 0x02, 0x81, 0x81,
+    0x00, 0xdd, 0x1c, 0x52, 0xda, 0x2b, 0xc2, 0x5a, 0x26, 0xb0,
+    0xcb, 0x0d, 0xae, 0xc7, 0xdb, 0xf0, 0x41, 0x75, 0x87, 0x4a,
+    0xe0, 0x1a, 0xdf, 0x53, 0xb9, 0xcf, 0xfe, 0x64, 0x4f, 0x6a,
+    0x70, 0x4d, 0x36, 0xbf, 0xb1, 0xa6, 0xf3, 0x5f, 0xf3, 0x5a,
+    0xa9, 0xe5, 0x8b, 0xea, 0x59, 0x5d, 0x6f, 0xf3, 0x87, 0xa9,
+    0xde, 0x11, 0x0c, 0x60, 0x64, 0x55, 0x9e, 0x5c, 0x1a, 0x91,
+    0x4e, 0x9c, 0x0d, 0xd5, 0xe9, 0x4a, 0x67, 0x9b, 0xe6, 0xfd,
+    0x03, 0x33, 0x2b, 0x74, 0xe3, 0xc3, 0x11, 0xc1, 0xe0, 0xf1,
+    0x4f, 0xdd, 0x13, 0x92, 0x16, 0x67, 0x4f, 0x6e, 0xc4, 0x8c,
+    0x0a, 0x48, 0x21, 0x92, 0x8f, 0xb2, 0xe5, 0xb5, 0x96, 0x5a,
+    0xb8, 0xc0, 0x67, 0xbb, 0xc8, 0x87, 0x2d, 0xa8, 0x4e, 0xd2,
+    0xd8, 0x05, 0xf0, 0xf0, 0xb3, 0x7c, 0x90, 0x98, 0x8f, 0x4f,
+    0x5d, 0x6c, 0xab, 0x71, 0x92, 0xe2, 0x88, 0xc8, 0xf3, 0x02,
+    0x81, 0x81, 0x00, 0x99, 0x27, 0x5a, 0x00, 0x81, 0x65, 0x39,
+    0x5f, 0xe6, 0xc6, 0x38, 0xbe, 0x79, 0xe3, 0x21, 0xdd, 0x29,
+    0xc7, 0xb3, 0x90, 0x18, 0x29, 0xa4, 0xd7, 0xaf, 0x29, 0xb5,
+    0x33, 0x7c, 0xca, 0x95, 0x81, 0x57, 0x27, 0x98, 0xfc, 0x70,
+    0xc0, 0x43, 0x4c, 0x5b, 0xc5, 0xd4, 0x6a, 0xc0, 0xf9, 0x3f,
+    0xde, 0xfd, 0x95, 0x08, 0xb4, 0x94, 0xf0, 0x96, 0x89, 0xe5,
+    0xa6, 0x00, 0x13, 0x0a, 0x36, 0x61, 0x50, 0x67, 0xaa, 0x80,
+    0x4a, 0x30, 0xe0, 0x65, 0x56, 0xcd, 0x36, 0xeb, 0x0d, 0xe2,
+    0x57, 0x5d, 0xce, 0x48, 0x94, 0x74, 0x0e, 0x9f, 0x59, 0x28,
+    0xb8, 0xb6, 0x4c, 0xf4, 0x7b, 0xfc, 0x44, 0xb0, 0xe5, 0x67,
+    0x3c, 0x98, 0xb5, 0x3f, 0x41, 0x9d, 0xf9, 0x46, 0x85, 0x08,
+    0x34, 0x36, 0x4d, 0x17, 0x4b, 0x14, 0xdb, 0x66, 0x56, 0xef,
+    0xb5, 0x08, 0x57, 0x0c, 0x73, 0x74, 0xa7, 0xdc, 0x46, 0xaa,
+    0x51, 0x02, 0x81, 0x80, 0x1e, 0x50, 0x4c, 0xde, 0x9c, 0x60,
+    0x6d, 0xd7, 0x31, 0xf6, 0xd8, 0x4f, 0xc2, 0x25, 0x7d, 0x83,
+    0xb3, 0xe7, 0xed, 0x92, 0xe7, 0x28, 0x1e, 0xb3, 0x9b, 0xcb,
+    0xf2, 0x86, 0xa4, 0x49, 0x45, 0x5e, 0xba, 0x1d, 0xdb, 0x21,
+    0x5d, 0xdf, 0xeb, 0x3c, 0x5e, 0x01, 0xc6, 0x68, 0x25, 0x28,
+    0xe6, 0x1a, 0xbf, 0xc1, 0xa1, 0xc5, 0x92, 0x0b, 0x08, 0x43,
+    0x0e, 0x5a, 0xa3, 0x85, 0x8a, 0x65, 0xb4, 0x54, 0xa1, 0x4c,
+    0x20, 0xa2, 0x5a, 0x08, 0xf6, 0x90, 0x0d, 0x9a, 0xd7, 0x20,
+    0xf1, 0x10, 0x66, 0x28, 0x4c, 0x22, 0x56, 0xa6, 0xb9, 0xff,
+    0xd0, 0x6a, 0x62, 0x8c, 0x9f, 0xf8, 0x7c, 0xf4, 0xad, 0xd7,
+    0xe8, 0xf9, 0x87, 0x43, 0xbf, 0x73, 0x5b, 0x04, 0xc7, 0xd0,
+    0x77, 0xcc, 0xe3, 0xbe, 0xda, 0xc2, 0x07, 0xed, 0x8d, 0x2a,
+    0x15, 0x77, 0x1d, 0x53, 0x47, 0xe0, 0xa2, 0x11, 0x41, 0x0d,
+    0xe2, 0xe7
 };
 
 /* The matching public key used for encryption*/
 static const unsigned char pub_key_der[] = {
-    0x30,
-    0x82,
-    0x01,
-    0x22,
-    0x30,
-    0x0d,
-    0x06,
-    0x09,
-    0x2a,
-    0x86,
-    0x48,
-    0x86,
-    0xf7,
-    0x0d,
-    0x01,
-    0x01,
-    0x01,
-    0x05,
-    0x00,
-    0x03,
-    0x82,
-    0x01,
-    0x0f,
-    0x00,
-    0x30,
-    0x82,
-    0x01,
-    0x0a,
-    0x02,
-    0x82,
-    0x01,
-    0x01,
-    0x00,
-    0xc2,
-    0x44,
-    0xbc,
-    0xcf,
-    0x5b,
-    0xca,
-    0xcd,
-    0x80,
-    0x77,
-    0xae,
-    0xf9,
-    0x7a,
-    0x34,
-    0xbb,
-    0x37,
-    0x6f,
-    0x5c,
-    0x76,
-    0x4c,
-    0xe4,
-    0xbb,
-    0x0c,
-    0x1d,
-    0xe7,
-    0xfe,
-    0x0f,
-    0xda,
-    0xcf,
-    0x8c,
-    0x56,
-    0x65,
-    0x72,
-    0x6e,
-    0x2c,
-    0xf9,
-    0xfd,
-    0x87,
-    0x43,
-    0xeb,
-    0x4c,
-    0x26,
-    0xb1,
-    0xd3,
-    0xf0,
-    0x87,
-    0xb1,
-    0x18,
-    0x68,
-    0x14,
-    0x7d,
-    0x3c,
-    0x2a,
-    0xfa,
-    0xc2,
-    0x5d,
-    0x70,
-    0x19,
-    0x11,
-    0x00,
-    0x2e,
-    0xb3,
-    0x9c,
-    0x8e,
-    0x38,
-    0x08,
-    0xbe,
-    0xe3,
-    0xeb,
-    0x7d,
-    0x6e,
-    0xc7,
-    0x19,
-    0xc6,
-    0x7f,
-    0x59,
-    0x48,
-    0x84,
-    0x1b,
-    0xe3,
-    0x27,
-    0x30,
-    0x46,
-    0x30,
-    0xd3,
-    0xfc,
-    0xfc,
-    0xb3,
-    0x35,
-    0x75,
-    0xc4,
-    0x31,
-    0x1a,
-    0xc0,
-    0xc2,
-    0x4c,
-    0x0b,
-    0xc7,
-    0x01,
-    0x95,
-    0xb2,
-    0xdc,
-    0x17,
-    0x77,
-    0x9b,
-    0x09,
-    0x15,
-    0x04,
-    0xbc,
-    0xdb,
-    0x57,
-    0x0b,
-    0x26,
-    0xda,
-    0x59,
-    0x54,
-    0x0d,
-    0x6e,
-    0xb7,
-    0x89,
-    0xbc,
-    0x53,
-    0x9d,
-    0x5f,
-    0x8c,
-    0xad,
-    0x86,
-    0x97,
-    0xd2,
-    0x48,
-    0x4f,
-    0x5c,
-    0x94,
-    0xdd,
-    0x30,
-    0x2f,
-    0xcf,
-    0xfc,
-    0xde,
-    0x20,
-    0x31,
-    0x25,
-    0x9d,
-    0x29,
-    0x25,
-    0x78,
-    0xb7,
-    0xd2,
-    0x5b,
-    0x5d,
-    0x99,
-    0x5b,
-    0x08,
-    0x12,
-    0x81,
-    0x79,
-    0x89,
-    0xa0,
-    0xcf,
-    0x8f,
-    0x40,
-    0xb1,
-    0x77,
-    0x72,
-    0x3b,
-    0x13,
-    0xfc,
-    0x55,
-    0x43,
-    0x70,
-    0x29,
-    0xd5,
-    0x41,
-    0xed,
-    0x31,
-    0x4b,
-    0x2d,
-    0x6c,
-    0x7d,
-    0xcf,
-    0x99,
-    0x5f,
-    0xd1,
-    0x72,
-    0x9f,
-    0x8b,
-    0x32,
-    0x96,
-    0xde,
-    0x5d,
-    0x8b,
-    0x19,
-    0x77,
-    0x75,
-    0xff,
-    0x09,
-    0xbf,
-    0x26,
-    0xe9,
-    0xd7,
-    0x3d,
-    0xc7,
-    0x1a,
-    0x81,
-    0xcf,
-    0x05,
-    0x1b,
-    0x89,
-    0xbf,
-    0x45,
-    0x32,
-    0xbf,
-    0x5e,
-    0xc9,
-    0xe3,
-    0x5c,
-    0x33,
-    0x4a,
-    0x72,
-    0x47,
-    0xf4,
-    0x24,
-    0xae,
-    0x9b,
-    0x38,
-    0x24,
-    0x76,
-    0x9a,
-    0xa2,
-    0x9a,
-    0x50,
-    0x50,
-    0x49,
-    0xf5,
-    0x26,
-    0xb9,
-    0x55,
-    0xa6,
-    0x47,
-    0xc9,
-    0x14,
-    0xa2,
-    0xca,
-    0xd4,
-    0xa8,
-    0x8a,
-    0x9f,
-    0xe9,
-    0x5a,
-    0x5a,
-    0x12,
-    0xaa,
-    0x30,
-    0xd5,
-    0x78,
-    0x8b,
-    0x39,
-    0x02,
-    0x03,
-    0x01,
-    0x00,
-    0x01,
+    0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
+    0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03,
+    0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82,
+    0x01, 0x01, 0x00, 0xc2, 0x44, 0xbc, 0xcf, 0x5b, 0xca, 0xcd,
+    0x80, 0x77, 0xae, 0xf9, 0x7a, 0x34, 0xbb, 0x37, 0x6f, 0x5c,
+    0x76, 0x4c, 0xe4, 0xbb, 0x0c, 0x1d, 0xe7, 0xfe, 0x0f, 0xda,
+    0xcf, 0x8c, 0x56, 0x65, 0x72, 0x6e, 0x2c, 0xf9, 0xfd, 0x87,
+    0x43, 0xeb, 0x4c, 0x26, 0xb1, 0xd3, 0xf0, 0x87, 0xb1, 0x18,
+    0x68, 0x14, 0x7d, 0x3c, 0x2a, 0xfa, 0xc2, 0x5d, 0x70, 0x19,
+    0x11, 0x00, 0x2e, 0xb3, 0x9c, 0x8e, 0x38, 0x08, 0xbe, 0xe3,
+    0xeb, 0x7d, 0x6e, 0xc7, 0x19, 0xc6, 0x7f, 0x59, 0x48, 0x84,
+    0x1b, 0xe3, 0x27, 0x30, 0x46, 0x30, 0xd3, 0xfc, 0xfc, 0xb3,
+    0x35, 0x75, 0xc4, 0x31, 0x1a, 0xc0, 0xc2, 0x4c, 0x0b, 0xc7,
+    0x01, 0x95, 0xb2, 0xdc, 0x17, 0x77, 0x9b, 0x09, 0x15, 0x04,
+    0xbc, 0xdb, 0x57, 0x0b, 0x26, 0xda, 0x59, 0x54, 0x0d, 0x6e,
+    0xb7, 0x89, 0xbc, 0x53, 0x9d, 0x5f, 0x8c, 0xad, 0x86, 0x97,
+    0xd2, 0x48, 0x4f, 0x5c, 0x94, 0xdd, 0x30, 0x2f, 0xcf, 0xfc,
+    0xde, 0x20, 0x31, 0x25, 0x9d, 0x29, 0x25, 0x78, 0xb7, 0xd2,
+    0x5b, 0x5d, 0x99, 0x5b, 0x08, 0x12, 0x81, 0x79, 0x89, 0xa0,
+    0xcf, 0x8f, 0x40, 0xb1, 0x77, 0x72, 0x3b, 0x13, 0xfc, 0x55,
+    0x43, 0x70, 0x29, 0xd5, 0x41, 0xed, 0x31, 0x4b, 0x2d, 0x6c,
+    0x7d, 0xcf, 0x99, 0x5f, 0xd1, 0x72, 0x9f, 0x8b, 0x32, 0x96,
+    0xde, 0x5d, 0x8b, 0x19, 0x77, 0x75, 0xff, 0x09, 0xbf, 0x26,
+    0xe9, 0xd7, 0x3d, 0xc7, 0x1a, 0x81, 0xcf, 0x05, 0x1b, 0x89,
+    0xbf, 0x45, 0x32, 0xbf, 0x5e, 0xc9, 0xe3, 0x5c, 0x33, 0x4a,
+    0x72, 0x47, 0xf4, 0x24, 0xae, 0x9b, 0x38, 0x24, 0x76, 0x9a,
+    0xa2, 0x9a, 0x50, 0x50, 0x49, 0xf5, 0x26, 0xb9, 0x55, 0xa6,
+    0x47, 0xc9, 0x14, 0xa2, 0xca, 0xd4, 0xa8, 0x8a, 0x9f, 0xe9,
+    0x5a, 0x5a, 0x12, 0xaa, 0x30, 0xd5, 0x78, 0x8b, 0x39, 0x02,
+    0x03, 0x01, 0x00, 0x01
 };
diff -Nru openssl-3.5.6/demos/mac/cmac-aes256.c openssl-3.5.7/demos/mac/cmac-aes256.c
--- openssl-3.5.6/demos/mac/cmac-aes256.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/demos/mac/cmac-aes256.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*-
- * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -26,38 +26,10 @@
  * It is done here solely for educational purposes.
  */
 static unsigned char key[] = {
-    0x6c,
-    0xde,
-    0x14,
-    0xf5,
-    0xd5,
-    0x2a,
-    0x4a,
-    0xdf,
-    0x12,
-    0x39,
-    0x1e,
-    0xbf,
-    0x36,
-    0xf9,
-    0x6a,
-    0x46,
-    0x48,
-    0xd0,
-    0xb6,
-    0x51,
-    0x89,
-    0xfc,
-    0x24,
-    0x85,
-    0xa8,
-    0x8d,
-    0xdf,
-    0x7e,
-    0x80,
-    0x14,
-    0xc8,
-    0xce,
+    0x6c, 0xde, 0x14, 0xf5, 0xd5, 0x2a, 0x4a, 0xdf, 0x12, 0x39,
+    0x1e, 0xbf, 0x36, 0xf9, 0x6a, 0x46, 0x48, 0xd0, 0xb6, 0x51,
+    0x89, 0xfc, 0x24, 0x85, 0xa8, 0x8d, 0xdf, 0x7e, 0x80, 0x14,
+    0xc8, 0xce
 };
 
 static const unsigned char data[] = "To be, or not to be, that is the question,\n"
@@ -80,22 +52,8 @@
 
 /* The known value of the CMAC/AES256 MAC of the above soliloqy */
 static const unsigned char expected_output[] = {
-    0x67,
-    0x92,
-    0x32,
-    0x23,
-    0x50,
-    0x3d,
-    0xc5,
-    0xba,
-    0x78,
-    0xd4,
-    0x6d,
-    0x63,
-    0xf2,
-    0x2b,
-    0xe9,
-    0x56,
+    0x67, 0x92, 0x32, 0x23, 0x50, 0x3d, 0xc5, 0xba, 0x78, 0xd4,
+    0x6d, 0x63, 0xf2, 0x2b, 0xe9, 0x56
 };
 
 /*
diff -Nru openssl-3.5.6/demos/mac/hmac-sha512.c openssl-3.5.7/demos/mac/hmac-sha512.c
--- openssl-3.5.6/demos/mac/hmac-sha512.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/demos/mac/hmac-sha512.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*-
- * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -26,70 +26,13 @@
  * It is done here solely for educational purposes.
  */
 static unsigned char key[] = {
-    0x25,
-    0xfd,
-    0x12,
-    0x99,
-    0xdf,
-    0xad,
-    0x1a,
-    0x03,
-    0x0a,
-    0x81,
-    0x3c,
-    0x2d,
-    0xcc,
-    0x05,
-    0xd1,
-    0x5c,
-    0x17,
-    0x7a,
-    0x36,
-    0x73,
-    0x17,
-    0xef,
-    0x41,
-    0x75,
-    0x71,
-    0x18,
-    0xe0,
-    0x1a,
-    0xda,
-    0x99,
-    0xc3,
-    0x61,
-    0x38,
-    0xb5,
-    0xb1,
-    0xe0,
-    0x82,
-    0x2c,
-    0x70,
-    0xa4,
-    0xc0,
-    0x8e,
-    0x5e,
-    0xf9,
-    0x93,
-    0x9f,
-    0xcf,
-    0xf7,
-    0x32,
-    0x4d,
-    0x0c,
-    0xbd,
-    0x31,
-    0x12,
-    0x0f,
-    0x9a,
-    0x15,
-    0xee,
-    0x82,
-    0xdb,
-    0x8d,
-    0x29,
-    0x54,
-    0x14,
+    0x25, 0xfd, 0x12, 0x99, 0xdf, 0xad, 0x1a, 0x03, 0x0a, 0x81,
+    0x3c, 0x2d, 0xcc, 0x05, 0xd1, 0x5c, 0x17, 0x7a, 0x36, 0x73,
+    0x17, 0xef, 0x41, 0x75, 0x71, 0x18, 0xe0, 0x1a, 0xda, 0x99,
+    0xc3, 0x61, 0x38, 0xb5, 0xb1, 0xe0, 0x82, 0x2c, 0x70, 0xa4,
+    0xc0, 0x8e, 0x5e, 0xf9, 0x93, 0x9f, 0xcf, 0xf7, 0x32, 0x4d,
+    0x0c, 0xbd, 0x31, 0x12, 0x0f, 0x9a, 0x15, 0xee, 0x82, 0xdb,
+    0x8d, 0x29, 0x54, 0x14
 };
 
 static const unsigned char data[] = "To be, or not to be, that is the question,\n"
@@ -112,70 +55,13 @@
 
 /* The known value of the HMAC/SHA3-512 MAC of the above soliloqy */
 static const unsigned char expected_output[] = {
-    0x3b,
-    0x77,
-    0x5f,
-    0xf1,
-    0x4f,
-    0x9e,
-    0xb9,
-    0x23,
-    0x8f,
-    0xdc,
-    0xa0,
-    0x68,
-    0x15,
-    0x7b,
-    0x8a,
-    0xf1,
-    0x96,
-    0x23,
-    0xaa,
-    0x3c,
-    0x1f,
-    0xe9,
-    0xdc,
-    0x89,
-    0x11,
-    0x7d,
-    0x58,
-    0x07,
-    0xe7,
-    0x96,
-    0x17,
-    0xe3,
-    0x44,
-    0x8b,
-    0x03,
-    0x37,
-    0x91,
-    0xc0,
-    0x6e,
-    0x06,
-    0x7c,
-    0x54,
-    0xe4,
-    0xa4,
-    0xcc,
-    0xd5,
-    0x16,
-    0xbb,
-    0x5e,
-    0x4d,
-    0x64,
-    0x7d,
-    0x88,
-    0x23,
-    0xc9,
-    0xb7,
-    0x25,
-    0xda,
-    0xbe,
-    0x4b,
-    0xe4,
-    0xd5,
-    0x34,
-    0x30,
+    0x3b, 0x77, 0x5f, 0xf1, 0x4f, 0x9e, 0xb9, 0x23, 0x8f, 0xdc,
+    0xa0, 0x68, 0x15, 0x7b, 0x8a, 0xf1, 0x96, 0x23, 0xaa, 0x3c,
+    0x1f, 0xe9, 0xdc, 0x89, 0x11, 0x7d, 0x58, 0x07, 0xe7, 0x96,
+    0x17, 0xe3, 0x44, 0x8b, 0x03, 0x37, 0x91, 0xc0, 0x6e, 0x06,
+    0x7c, 0x54, 0xe4, 0xa4, 0xcc, 0xd5, 0x16, 0xbb, 0x5e, 0x4d,
+    0x64, 0x7d, 0x88, 0x23, 0xc9, 0xb7, 0x25, 0xda, 0xbe, 0x4b,
+    0xe4, 0xd5, 0x34, 0x30
 };
 
 /*
diff -Nru openssl-3.5.6/demos/signature/EVP_EC_Signature_demo.h openssl-3.5.7/demos/signature/EVP_EC_Signature_demo.h
--- openssl-3.5.6/demos/signature/EVP_EC_Signature_demo.h	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/demos/signature/EVP_EC_Signature_demo.h	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*-
- * Copyright 2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2021-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -9,707 +9,79 @@
 
 /* Signers private EC key */
 static const unsigned char priv_key_der[] = {
-    0x30,
-    0x82,
-    0x01,
-    0x68,
-    0x02,
-    0x01,
-    0x01,
-    0x04,
-    0x20,
-    0x51,
-    0x77,
-    0xae,
-    0xf4,
-    0x18,
-    0xf4,
-    0x6b,
-    0xc4,
-    0xe5,
-    0xbb,
-    0xe9,
-    0xe6,
-    0x9e,
-    0x6d,
-    0xb0,
-    0xea,
-    0x12,
-    0xf9,
-    0xf3,
-    0xdb,
-    0x9d,
-    0x56,
-    0x59,
-    0xf7,
-    0x5a,
-    0x17,
-    0xd7,
-    0xd1,
-    0xe4,
-    0xd7,
-    0x47,
-    0x28,
-    0xa0,
-    0x81,
-    0xfa,
-    0x30,
-    0x81,
-    0xf7,
-    0x02,
-    0x01,
-    0x01,
-    0x30,
-    0x2c,
-    0x06,
-    0x07,
-    0x2a,
-    0x86,
-    0x48,
-    0xce,
-    0x3d,
-    0x01,
-    0x01,
-    0x02,
-    0x21,
-    0x00,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0x00,
-    0x00,
-    0x00,
-    0x01,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0x30,
-    0x5b,
-    0x04,
-    0x20,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0x00,
-    0x00,
-    0x00,
-    0x01,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xfc,
-    0x04,
-    0x20,
-    0x5a,
-    0xc6,
-    0x35,
-    0xd8,
-    0xaa,
-    0x3a,
-    0x93,
-    0xe7,
-    0xb3,
-    0xeb,
-    0xbd,
-    0x55,
-    0x76,
-    0x98,
-    0x86,
-    0xbc,
-    0x65,
-    0x1d,
-    0x06,
-    0xb0,
-    0xcc,
-    0x53,
-    0xb0,
-    0xf6,
-    0x3b,
-    0xce,
-    0x3c,
-    0x3e,
-    0x27,
-    0xd2,
-    0x60,
-    0x4b,
-    0x03,
-    0x15,
-    0x00,
-    0xc4,
-    0x9d,
-    0x36,
-    0x08,
-    0x86,
-    0xe7,
-    0x04,
-    0x93,
-    0x6a,
-    0x66,
-    0x78,
-    0xe1,
-    0x13,
-    0x9d,
-    0x26,
-    0xb7,
-    0x81,
-    0x9f,
-    0x7e,
-    0x90,
-    0x04,
-    0x41,
-    0x04,
-    0x6b,
-    0x17,
-    0xd1,
-    0xf2,
-    0xe1,
-    0x2c,
-    0x42,
-    0x47,
-    0xf8,
-    0xbc,
-    0xe6,
-    0xe5,
-    0x63,
-    0xa4,
-    0x40,
-    0xf2,
-    0x77,
-    0x03,
-    0x7d,
-    0x81,
-    0x2d,
-    0xeb,
-    0x33,
-    0xa0,
-    0xf4,
-    0xa1,
-    0x39,
-    0x45,
-    0xd8,
-    0x98,
-    0xc2,
-    0x96,
-    0x4f,
-    0xe3,
-    0x42,
-    0xe2,
-    0xfe,
-    0x1a,
-    0x7f,
-    0x9b,
-    0x8e,
-    0xe7,
-    0xeb,
-    0x4a,
-    0x7c,
-    0x0f,
-    0x9e,
-    0x16,
-    0x2b,
-    0xce,
-    0x33,
-    0x57,
-    0x6b,
-    0x31,
-    0x5e,
-    0xce,
-    0xcb,
-    0xb6,
-    0x40,
-    0x68,
-    0x37,
-    0xbf,
-    0x51,
-    0xf5,
-    0x02,
-    0x21,
-    0x00,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xbc,
-    0xe6,
-    0xfa,
-    0xad,
-    0xa7,
-    0x17,
-    0x9e,
-    0x84,
-    0xf3,
-    0xb9,
-    0xca,
-    0xc2,
-    0xfc,
-    0x63,
-    0x25,
-    0x51,
-    0x02,
-    0x01,
-    0x01,
-    0xa1,
-    0x44,
-    0x03,
-    0x42,
-    0x00,
-    0x04,
-    0x4f,
-    0xe7,
-    0x7b,
-    0xb6,
-    0xbb,
-    0x54,
-    0x42,
-    0x39,
-    0xed,
-    0x5d,
-    0xe5,
-    0x40,
-    0xc8,
-    0xd8,
-    0x71,
-    0xca,
-    0x6d,
-    0x83,
-    0x71,
-    0xd1,
-    0x88,
-    0x2a,
-    0x65,
-    0x00,
-    0x6c,
-    0xc6,
-    0x2f,
-    0x01,
-    0x31,
-    0x49,
-    0xbe,
-    0x76,
-    0x7a,
-    0x67,
-    0x6a,
-    0x28,
-    0x33,
-    0xc7,
-    0x5b,
-    0xb9,
-    0x24,
-    0x45,
-    0x24,
-    0x6e,
-    0xf0,
-    0x6d,
-    0x2f,
-    0x34,
-    0x06,
-    0x53,
-    0x73,
-    0x6a,
-    0xff,
-    0x90,
-    0x90,
-    0xc1,
-    0x6d,
-    0x9b,
-    0x94,
-    0x0d,
-    0x0e,
-    0x1f,
-    0x95,
-    0x65,
+    0x30, 0x82, 0x01, 0x68, 0x02, 0x01, 0x01, 0x04, 0x20, 0x51,
+    0x77, 0xae, 0xf4, 0x18, 0xf4, 0x6b, 0xc4, 0xe5, 0xbb, 0xe9,
+    0xe6, 0x9e, 0x6d, 0xb0, 0xea, 0x12, 0xf9, 0xf3, 0xdb, 0x9d,
+    0x56, 0x59, 0xf7, 0x5a, 0x17, 0xd7, 0xd1, 0xe4, 0xd7, 0x47,
+    0x28, 0xa0, 0x81, 0xfa, 0x30, 0x81, 0xf7, 0x02, 0x01, 0x01,
+    0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x01,
+    0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
+    0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x30, 0x5b, 0x04, 0x20,
+    0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xfc, 0x04, 0x20, 0x5a, 0xc6, 0x35, 0xd8, 0xaa, 0x3a,
+    0x93, 0xe7, 0xb3, 0xeb, 0xbd, 0x55, 0x76, 0x98, 0x86, 0xbc,
+    0x65, 0x1d, 0x06, 0xb0, 0xcc, 0x53, 0xb0, 0xf6, 0x3b, 0xce,
+    0x3c, 0x3e, 0x27, 0xd2, 0x60, 0x4b, 0x03, 0x15, 0x00, 0xc4,
+    0x9d, 0x36, 0x08, 0x86, 0xe7, 0x04, 0x93, 0x6a, 0x66, 0x78,
+    0xe1, 0x13, 0x9d, 0x26, 0xb7, 0x81, 0x9f, 0x7e, 0x90, 0x04,
+    0x41, 0x04, 0x6b, 0x17, 0xd1, 0xf2, 0xe1, 0x2c, 0x42, 0x47,
+    0xf8, 0xbc, 0xe6, 0xe5, 0x63, 0xa4, 0x40, 0xf2, 0x77, 0x03,
+    0x7d, 0x81, 0x2d, 0xeb, 0x33, 0xa0, 0xf4, 0xa1, 0x39, 0x45,
+    0xd8, 0x98, 0xc2, 0x96, 0x4f, 0xe3, 0x42, 0xe2, 0xfe, 0x1a,
+    0x7f, 0x9b, 0x8e, 0xe7, 0xeb, 0x4a, 0x7c, 0x0f, 0x9e, 0x16,
+    0x2b, 0xce, 0x33, 0x57, 0x6b, 0x31, 0x5e, 0xce, 0xcb, 0xb6,
+    0x40, 0x68, 0x37, 0xbf, 0x51, 0xf5, 0x02, 0x21, 0x00, 0xff,
+    0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xbc, 0xe6, 0xfa, 0xad, 0xa7,
+    0x17, 0x9e, 0x84, 0xf3, 0xb9, 0xca, 0xc2, 0xfc, 0x63, 0x25,
+    0x51, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04,
+    0x4f, 0xe7, 0x7b, 0xb6, 0xbb, 0x54, 0x42, 0x39, 0xed, 0x5d,
+    0xe5, 0x40, 0xc8, 0xd8, 0x71, 0xca, 0x6d, 0x83, 0x71, 0xd1,
+    0x88, 0x2a, 0x65, 0x00, 0x6c, 0xc6, 0x2f, 0x01, 0x31, 0x49,
+    0xbe, 0x76, 0x7a, 0x67, 0x6a, 0x28, 0x33, 0xc7, 0x5b, 0xb9,
+    0x24, 0x45, 0x24, 0x6e, 0xf0, 0x6d, 0x2f, 0x34, 0x06, 0x53,
+    0x73, 0x6a, 0xff, 0x90, 0x90, 0xc1, 0x6d, 0x9b, 0x94, 0x0d,
+    0x0e, 0x1f, 0x95, 0x65
 };
 
 /* The matching public key used for verifying */
 static const unsigned char pub_key_der[] = {
-    0x30,
-    0x82,
-    0x01,
-    0x4b,
-    0x30,
-    0x82,
-    0x01,
-    0x03,
-    0x06,
-    0x07,
-    0x2a,
-    0x86,
-    0x48,
-    0xce,
-    0x3d,
-    0x02,
-    0x01,
-    0x30,
-    0x81,
-    0xf7,
-    0x02,
-    0x01,
-    0x01,
-    0x30,
-    0x2c,
-    0x06,
-    0x07,
-    0x2a,
-    0x86,
-    0x48,
-    0xce,
-    0x3d,
-    0x01,
-    0x01,
-    0x02,
-    0x21,
-    0x00,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0x00,
-    0x00,
-    0x00,
-    0x01,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0x30,
-    0x5b,
-    0x04,
-    0x20,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0x00,
-    0x00,
-    0x00,
-    0x01,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xfc,
-    0x04,
-    0x20,
-    0x5a,
-    0xc6,
-    0x35,
-    0xd8,
-    0xaa,
-    0x3a,
-    0x93,
-    0xe7,
-    0xb3,
-    0xeb,
-    0xbd,
-    0x55,
-    0x76,
-    0x98,
-    0x86,
-    0xbc,
-    0x65,
-    0x1d,
-    0x06,
-    0xb0,
-    0xcc,
-    0x53,
-    0xb0,
-    0xf6,
-    0x3b,
-    0xce,
-    0x3c,
-    0x3e,
-    0x27,
-    0xd2,
-    0x60,
-    0x4b,
-    0x03,
-    0x15,
-    0x00,
-    0xc4,
-    0x9d,
-    0x36,
-    0x08,
-    0x86,
-    0xe7,
-    0x04,
-    0x93,
-    0x6a,
-    0x66,
-    0x78,
-    0xe1,
-    0x13,
-    0x9d,
-    0x26,
-    0xb7,
-    0x81,
-    0x9f,
-    0x7e,
-    0x90,
-    0x04,
-    0x41,
-    0x04,
-    0x6b,
-    0x17,
-    0xd1,
-    0xf2,
-    0xe1,
-    0x2c,
-    0x42,
-    0x47,
-    0xf8,
-    0xbc,
-    0xe6,
-    0xe5,
-    0x63,
-    0xa4,
-    0x40,
-    0xf2,
-    0x77,
-    0x03,
-    0x7d,
-    0x81,
-    0x2d,
-    0xeb,
-    0x33,
-    0xa0,
-    0xf4,
-    0xa1,
-    0x39,
-    0x45,
-    0xd8,
-    0x98,
-    0xc2,
-    0x96,
-    0x4f,
-    0xe3,
-    0x42,
-    0xe2,
-    0xfe,
-    0x1a,
-    0x7f,
-    0x9b,
-    0x8e,
-    0xe7,
-    0xeb,
-    0x4a,
-    0x7c,
-    0x0f,
-    0x9e,
-    0x16,
-    0x2b,
-    0xce,
-    0x33,
-    0x57,
-    0x6b,
-    0x31,
-    0x5e,
-    0xce,
-    0xcb,
-    0xb6,
-    0x40,
-    0x68,
-    0x37,
-    0xbf,
-    0x51,
-    0xf5,
-    0x02,
-    0x21,
-    0x00,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xbc,
-    0xe6,
-    0xfa,
-    0xad,
-    0xa7,
-    0x17,
-    0x9e,
-    0x84,
-    0xf3,
-    0xb9,
-    0xca,
-    0xc2,
-    0xfc,
-    0x63,
-    0x25,
-    0x51,
-    0x02,
-    0x01,
-    0x01,
-    0x03,
-    0x42,
-    0x00,
-    0x04,
-    0x4f,
-    0xe7,
-    0x7b,
-    0xb6,
-    0xbb,
-    0x54,
-    0x42,
-    0x39,
-    0xed,
-    0x5d,
-    0xe5,
-    0x40,
-    0xc8,
-    0xd8,
-    0x71,
-    0xca,
-    0x6d,
-    0x83,
-    0x71,
-    0xd1,
-    0x88,
-    0x2a,
-    0x65,
-    0x00,
-    0x6c,
-    0xc6,
-    0x2f,
-    0x01,
-    0x31,
-    0x49,
-    0xbe,
-    0x76,
-    0x7a,
-    0x67,
-    0x6a,
-    0x28,
-    0x33,
-    0xc7,
-    0x5b,
-    0xb9,
-    0x24,
-    0x45,
-    0x24,
-    0x6e,
-    0xf0,
-    0x6d,
-    0x2f,
-    0x34,
-    0x06,
-    0x53,
-    0x73,
-    0x6a,
-    0xff,
-    0x90,
-    0x90,
-    0xc1,
-    0x6d,
-    0x9b,
-    0x94,
-    0x0d,
-    0x0e,
-    0x1f,
-    0x95,
-    0x65,
+    0x30, 0x82, 0x01, 0x4b, 0x30, 0x82, 0x01, 0x03, 0x06, 0x07,
+    0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x30, 0x81, 0xf7,
+    0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
+    0xce, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x30,
+    0x5b, 0x04, 0x20, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
+    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xfc, 0x04, 0x20, 0x5a, 0xc6, 0x35,
+    0xd8, 0xaa, 0x3a, 0x93, 0xe7, 0xb3, 0xeb, 0xbd, 0x55, 0x76,
+    0x98, 0x86, 0xbc, 0x65, 0x1d, 0x06, 0xb0, 0xcc, 0x53, 0xb0,
+    0xf6, 0x3b, 0xce, 0x3c, 0x3e, 0x27, 0xd2, 0x60, 0x4b, 0x03,
+    0x15, 0x00, 0xc4, 0x9d, 0x36, 0x08, 0x86, 0xe7, 0x04, 0x93,
+    0x6a, 0x66, 0x78, 0xe1, 0x13, 0x9d, 0x26, 0xb7, 0x81, 0x9f,
+    0x7e, 0x90, 0x04, 0x41, 0x04, 0x6b, 0x17, 0xd1, 0xf2, 0xe1,
+    0x2c, 0x42, 0x47, 0xf8, 0xbc, 0xe6, 0xe5, 0x63, 0xa4, 0x40,
+    0xf2, 0x77, 0x03, 0x7d, 0x81, 0x2d, 0xeb, 0x33, 0xa0, 0xf4,
+    0xa1, 0x39, 0x45, 0xd8, 0x98, 0xc2, 0x96, 0x4f, 0xe3, 0x42,
+    0xe2, 0xfe, 0x1a, 0x7f, 0x9b, 0x8e, 0xe7, 0xeb, 0x4a, 0x7c,
+    0x0f, 0x9e, 0x16, 0x2b, 0xce, 0x33, 0x57, 0x6b, 0x31, 0x5e,
+    0xce, 0xcb, 0xb6, 0x40, 0x68, 0x37, 0xbf, 0x51, 0xf5, 0x02,
+    0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbc, 0xe6,
+    0xfa, 0xad, 0xa7, 0x17, 0x9e, 0x84, 0xf3, 0xb9, 0xca, 0xc2,
+    0xfc, 0x63, 0x25, 0x51, 0x02, 0x01, 0x01, 0x03, 0x42, 0x00,
+    0x04, 0x4f, 0xe7, 0x7b, 0xb6, 0xbb, 0x54, 0x42, 0x39, 0xed,
+    0x5d, 0xe5, 0x40, 0xc8, 0xd8, 0x71, 0xca, 0x6d, 0x83, 0x71,
+    0xd1, 0x88, 0x2a, 0x65, 0x00, 0x6c, 0xc6, 0x2f, 0x01, 0x31,
+    0x49, 0xbe, 0x76, 0x7a, 0x67, 0x6a, 0x28, 0x33, 0xc7, 0x5b,
+    0xb9, 0x24, 0x45, 0x24, 0x6e, 0xf0, 0x6d, 0x2f, 0x34, 0x06,
+    0x53, 0x73, 0x6a, 0xff, 0x90, 0x90, 0xc1, 0x6d, 0x9b, 0x94,
+    0x0d, 0x0e, 0x1f, 0x95, 0x65
 };
diff -Nru openssl-3.5.6/doc/fingerprints.txt openssl-3.5.7/doc/fingerprints.txt
--- openssl-3.5.6/doc/fingerprints.txt	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/fingerprints.txt	2026-06-09 13:54:25.000000000 +0200
@@ -13,6 +13,9 @@
 currently in use to sign OpenSSL distributions:
 
 OpenSSL:
+B146 647E 45A7 B339 47AB 226B 2A2C 87D1 6169 2D40
+
+OpenSSL (old keys):
 BA54 73A2 B058 7B07 FB27 CF2D 2160 94DF D0CB 81EF
 
 Richard Levitte:
diff -Nru openssl-3.5.6/doc/internal/man3/ossl_rcu_lock_new.pod openssl-3.5.7/doc/internal/man3/ossl_rcu_lock_new.pod
--- openssl-3.5.6/doc/internal/man3/ossl_rcu_lock_new.pod	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/internal/man3/ossl_rcu_lock_new.pod	2026-06-09 13:54:25.000000000 +0200
@@ -6,6 +6,7 @@
 ossl_rcu_lock_free, ossl_rcu_read_lock,
 ossl_rcu_read_unlock, ossl_rcu_write_lock,
 ossl_rcu_write_unlock, ossl_synchronize_rcu,
+ossl_rcu_cb_item_new, ossl_rcu_cb_item_free,
 ossl_rcu_call, ossl_rcu_deref,
 ossl_rcu_assign_ptr, ossl_rcu_uptr_deref,
 ossl_rcu_assign_uptr
@@ -19,7 +20,10 @@
  void ossl_rcu_write_unlock(CRYPTO_RCU_LOCK *lock);
  void ossl_rcu_read_unlock(CRYPTO_RCU_LOCK *lock);
  void ossl_synchronize_rcu(CRYPTO_RCU_LOCK *lock);
- void ossl_rcu_call(CRYPTO_RCU_LOCK *lock, rcu_cb_fn cb, void *data);
+ CRYPTO_RCU_CB_ITEM *ossl_rcu_cb_item_new(void);
+ void ossl_rcu_cb_item_free(CRYPTO_RCU_CB_ITEM *item);
+ void ossl_rcu_call(CRYPTO_RCU_LOCK *lock, CRYPTO_RCU_CB_ITEM *item,
+                    rcu_cb_fn cb, void *data);
  void *ossl_rcu_deref(void **p);
  void ossl_rcu_uptr_deref(void **p);
  void ossl_rcu_assign_ptr(void **p, void **v);
@@ -96,10 +100,29 @@
 
 =item *
 
-ossl_rcu_call() enqueues a callback function to the lock, to be called
-when the next synchronization completes.  Note: It is not guaranteed that the
-thread which enqueued the callback will be the thread which executes the
-callback
+ossl_rcu_cb_item_new() allocates a callback item suitable for use with
+ossl_rcu_call().  Returns NULL on allocation failure.  The item is owned by
+the caller until it is passed to ossl_rcu_call(), at which point ownership
+transfers to the lock and the item must not be touched again by the caller.
+
+=item *
+
+ossl_rcu_cb_item_free() frees a callback item that was allocated by
+ossl_rcu_cb_item_new() but never passed to ossl_rcu_call().  Use this to
+release the item on the failure path of an operation that decided not to
+publish its update.
+
+=item *
+
+ossl_rcu_call() enqueues a callback function I<cb> to the lock, to be
+called with I<data> when the next synchronization completes.  The caller
+must provide a callback item I<item> previously obtained from
+ossl_rcu_cb_item_new().  After this call the lock owns the item and will
+free it after invoking the callback.  This function does not allocate and
+cannot fail, which lets callers allocate the item before performing any
+publish (assign_ptr) and bail cleanly if allocation fails.  Note: it is
+not guaranteed that the thread which enqueued the callback will be the
+thread which executes the callback.
 
 =item *
 
@@ -121,6 +144,9 @@
 
 ossl_rcu_lock_new() returns a pointer to a newly created RCU lock structure.
 
+ossl_rcu_cb_item_new() returns a pointer to a newly created callback item,
+or NULL on allocation failure.
+
 ossl_rcu_deref() and ossl_rcu_uptr_deref() return the value pointed
 to by the passed in value v.
 
@@ -152,7 +178,7 @@
 
  static void myinit(void)
  {
-     lock = ossl_rcu_lock_new(1);
+     lock = ossl_rcu_lock_new(1, NULL);
  }
 
  static int initlock(void)
@@ -162,10 +188,16 @@
      return 1;
  }
 
- static void writer_thread()
+ static void free_old_foo(void *data)
+ {
+     OPENSSL_free(data);
+ }
+
+ static int writer_thread(void)
  {
     struct foo *newfoo;
     struct foo *oldfoo;
+    CRYPTO_RCU_CB_ITEM *cbi;
 
     initlock();
 
@@ -177,48 +209,60 @@
      * 1) create a new shared object
      */
     newfoo = OPENSSL_zalloc(sizeof(struct foo));
+    if (newfoo == NULL)
+        return 0;
 
     /*
-     * acquire the write side lock
+     * 2) Pre allocate the rcu callback item before any publish.
+     */
+    cbi = ossl_rcu_cb_item_new();
+    if (cbi == NULL) {
+        OPENSSL_free(newfoo);
+        return 0;
+    }
+
+    /*
+     * 3) acquire the write side lock
      */
     ossl_rcu_write_lock(lock);
 
     /*
-     * 2) read the old pointer
+     * 4) read the old pointer
      */
     oldfoo = ossl_rcu_deref(&fooptr);
 
     /*
-     * 3) Copy the old pointer to the new object, and
+     * 5) Copy the old pointer to the new object, and
      *    make any needed adjustments
      */
     memcpy(newfoo, oldfoo, sizeof(struct foo));
     newfoo->aval++;
 
     /*
-     * 4) Update the shared pointer to the new value
+     * 6) Update the shared pointer to the new value
      */
     ossl_rcu_assign_ptr(&fooptr, &newfoo);
 
     /*
-     * 5) Release the write side lock
+     * 7) Schedule the old pointer to be freed when readers are done.
      */
-    ossl_rcu_write_unlock(lock);
+    ossl_rcu_call(lock, cbi, free_old_foo, oldfoo);
 
     /*
-     * 6) wait for any read side holds on the old data
-     *    to be released
+     * 8) Release the write side lock
      */
-    ossl_synchronize_rcu(lock);
+    ossl_rcu_write_unlock(lock);
 
     /*
-     * 7) free the old pointer, now that there are no
-     *    further readers
+     * 9) wait for any read side holds on the old data
+     *    to be released, after which free_old_foo will run
      */
-    OPENSSL_free(oldfoo);
+    ossl_synchronize_rcu(lock);
+
+    return 1;
  }
 
- static void reader_thread()
+ static void reader_thread(void)
  {
     struct foo *myfoo = NULL;
     int a;
@@ -249,7 +293,7 @@
 
 =head1 COPYRIGHT
 
-Copyright 2023-2024 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2023-2026 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff -Nru openssl-3.5.6/doc/man1/openssl-format-options.pod openssl-3.5.7/doc/man1/openssl-format-options.pod
--- openssl-3.5.6/doc/man1/openssl-format-options.pod	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/man1/openssl-format-options.pod	2026-06-09 13:54:25.000000000 +0200
@@ -84,11 +84,11 @@
 lines used to mark the start and end:
 
  Text before the BEGIN line is ignored.
- ----- BEGIN object-type -----
+ -----BEGIN object-type-----
  OT43gQKBgQC/2OHZoko6iRlNOAQ/tMVFNq7fL81GivoQ9F1U0Qr+DH3ZfaH8eIkX
  xT0ToMPJUzWAn8pZv0snA0um6SIgvkCuxO84OkANCVbttzXImIsL7pFzfcwV/ERK
  UM6j0ZuSMFOCr/lGPAoOQU0fskidGEHi1/kW+suSr28TqsyYZpwBDQ==
- ----- END object-type -----
+ -----END object-type-----
  Text after the END line is also ignored
 
 The I<object-type> must match the type of object that is expected.
diff -Nru openssl-3.5.6/doc/man1/openssl-pkcs8.pod.in openssl-3.5.7/doc/man1/openssl-pkcs8.pod.in
--- openssl-3.5.6/doc/man1/openssl-pkcs8.pod.in	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/man1/openssl-pkcs8.pod.in	2026-06-09 13:54:25.000000000 +0200
@@ -74,7 +74,7 @@
 
 =item B<-traditional>
 
-When this option is present and B<-topk8> is not a traditional format private
+When this option is present and B<-topk8> is not, a traditional format private
 key is written.
 
 =item B<-in> I<filename>
@@ -289,7 +289,7 @@
 
 =head1 COPYRIGHT
 
-Copyright 2000-2023 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2026 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff -Nru openssl-3.5.6/doc/man1/openssl-rehash.pod.in openssl-3.5.7/doc/man1/openssl-rehash.pod.in
--- openssl-3.5.6/doc/man1/openssl-rehash.pod.in	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/man1/openssl-rehash.pod.in	2026-06-09 13:54:25.000000000 +0200
@@ -49,8 +49,8 @@
 
 If any directories are named on the command line, then those are
 processed in turn. If not, then the B<SSL_CERT_DIR> environment variable
-is consulted; this should be a colon-separated list of directories,
-like the Unix B<PATH> variable.
+is consulted; this should be a colon-separated list of directories
+(or semicolon-separated on Windows), like the B<PATH> variable.
 If that is not set then the default directory (installation-specific
 but often F</usr/local/ssl/certs>) is processed.
 
@@ -149,7 +149,7 @@
 
 =head1 COPYRIGHT
 
-Copyright 2015-2025 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2015-2026 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff -Nru openssl-3.5.6/doc/man1/openssl-s_client.pod.in openssl-3.5.7/doc/man1/openssl-s_client.pod.in
--- openssl-3.5.6/doc/man1/openssl-s_client.pod.in	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/man1/openssl-s_client.pod.in	2026-06-09 13:54:25.000000000 +0200
@@ -323,6 +323,12 @@
 The URI of a store containing trusted certificates to use
 for verifying the server's certificate.
 
+When any of B<-verifyCAfile>, B<-verifyCApath>, or B<-verifyCAstore> is
+specified, they are loaded into a separate verification store (via
+L<SSL_CTX_set1_verify_cert_store(3)>) and used for server certificate
+verification instead of the store built from B<-CAfile>, B<-CApath>, and
+B<-CAstore>.
+
 =item B<-chainCAfile> I<file>
 
 A file in PEM format containing trusted certificates to use
@@ -680,9 +686,6 @@
 the client should advertise support for. The list should contain the most
 desirable protocols first.  Protocol names are printable ASCII strings,
 for example "http/1.1" or "spdy/3".
-An empty list of protocols is treated specially and will cause the
-client to advertise support for the TLS extension but disconnect just
-after receiving ServerHello with a list of server supported protocols.
 The flag B<-nextprotoneg> cannot be specified if B<-tls1_3> is used.
 
 =item B<-ct>, B<-noct>
@@ -1025,7 +1028,7 @@
 
 =head1 COPYRIGHT
 
-Copyright 2000-2025 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2026 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff -Nru openssl-3.5.6/doc/man1/openssl-smime.pod.in openssl-3.5.7/doc/man1/openssl-smime.pod.in
--- openssl-3.5.6/doc/man1/openssl-smime.pod.in	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/man1/openssl-smime.pod.in	2026-06-09 13:54:25.000000000 +0200
@@ -54,8 +54,9 @@
 
 =head1 DESCRIPTION
 
-This command handles S/MIME mail. It can encrypt, decrypt, sign
-and verify S/MIME messages.
+This command handles S/MIME according to RFC 2311 (1998) with no CMS support. 
+It can encrypt, decrypt, sign and verify S/MIME 2.0 messages. For newer messages
+use the OpenSSL CMS tool.
 
 =head1 OPTIONS
 
@@ -479,7 +480,7 @@
 
 =head1 COPYRIGHT
 
-Copyright 2000-2025 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2026 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff -Nru openssl-3.5.6/doc/man1/openssl-s_server.pod.in openssl-3.5.7/doc/man1/openssl-s_server.pod.in
--- openssl-3.5.6/doc/man1/openssl-s_server.pod.in	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/man1/openssl-s_server.pod.in	2026-06-09 13:54:25.000000000 +0200
@@ -334,8 +334,8 @@
 
 =item B<-verifyCAfile> I<filename>
 
-A file in PEM format CA containing trusted certificates to use
-for verifying client certificates.
+A file in PEM format containing trusted CA certificates (root and/or
+intermediate) used to verify the client certificate chain.
 
 =item B<-verifyCApath> I<dir>
 
@@ -349,6 +349,15 @@
 The URI of a store containing trusted certificates to use
 for verifying client certificates.
 
+When any of B<-verifyCAfile>, B<-verifyCApath>, or B<-verifyCAstore> is
+specified, they are loaded into a separate verification store (via
+L<SSL_CTX_set1_verify_cert_store(3)>) and used for client certificate
+verification instead of the store built from B<-CAfile>, B<-CApath>, and
+B<-CAstore>. Note that B<-CAfile> is the sole source of acceptable issuing
+CA names sent to the client in the Certificate Request message during the
+handshake; B<-CApath>, B<-CAstore>, and the B<-verifyCA*> options do not
+contribute to this list.
+
 =item B<-chainCAfile> I<file>
 
 A file in PEM format containing trusted certificates to use
@@ -763,6 +772,10 @@
 is forced if a session ticket is used a second or subsequent time. Any early
 data that was sent will be rejected.
 
+Note that the server manages an internal cache of session tickets. If a client
+closes the connection without sending the close_notify alert, the
+corresponding session ticket is removed and a full handshake is forced.
+
 =item B<-tfo>
 
 Enable acceptance of TCP Fast Open (RFC7413) connections.
@@ -927,7 +940,7 @@
 
 =head1 COPYRIGHT
 
-Copyright 2000-2025 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2026 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff -Nru openssl-3.5.6/doc/man3/BIO_s_bio.pod openssl-3.5.7/doc/man3/BIO_s_bio.pod
--- openssl-3.5.6/doc/man3/BIO_s_bio.pod	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/man3/BIO_s_bio.pod	2026-06-09 13:54:25.000000000 +0200
@@ -5,7 +5,8 @@
 BIO_s_bio, BIO_make_bio_pair, BIO_destroy_bio_pair, BIO_shutdown_wr,
 BIO_set_write_buf_size, BIO_get_write_buf_size, BIO_new_bio_pair,
 BIO_get_write_guarantee, BIO_ctrl_get_write_guarantee, BIO_get_read_request,
-BIO_ctrl_get_read_request, BIO_ctrl_reset_read_request - BIO pair BIO
+BIO_ctrl_get_read_request, BIO_ctrl_reset_read_request,
+BIO_nread0, BIO_nread, BIO_nwrite0, BIO_nwrite - BIO pair BIO
 
 =head1 SYNOPSIS
 
@@ -28,6 +29,11 @@
  size_t BIO_ctrl_get_read_request(BIO *b);
  int BIO_ctrl_reset_read_request(BIO *b);
 
+ int BIO_nread0(BIO *bio, char **buf);
+ int BIO_nread(BIO *bio, char **buf, int num);
+ int BIO_nwrite0(BIO *bio, char **buf);
+ int BIO_nwrite(BIO *bio, char **buf, int num);
+
 =head1 DESCRIPTION
 
 BIO_s_bio() returns the method for a BIO pair. A BIO pair is a pair of source/sink
@@ -98,6 +104,44 @@
 BIO_ctrl_reset_read_request() can also be used to reset the value returned by
 BIO_get_read_request() to zero.
 
+=head2 Non-copying Interface
+
+BIO_nread0(), BIO_nread(), BIO_nwrite0(), and BIO_nwrite() provide a non-copying
+interface for reading from and writing to BIO pairs. These functions allow
+direct access to the internal buffer, avoiding the overhead of copying data.
+
+BIO_nread0() returns in B<*buf> a pointer to the start of the available data
+in the peer's write buffer and returns the number of bytes available.
+This allows reading directly from the buffer without copying.
+It does not consume the data; a subsequent call to BIO_nread() is needed
+to advance the buffer position.
+
+BIO_nread() is similar to BIO_nread0() but also advances the read position
+by up to B<num> bytes. The actual number of bytes consumed is returned.
+The B<*buf> pointer is set to the start of the data that was consumed.
+Since the data is considered consumed after this call, the pointer returned
+by BIO_nread() should not be used afterwards unless the caller also
+controls the writing side. The typical pattern is to call BIO_nread0() first,
+use the data, and then call BIO_nread() to consume it.
+
+BIO_nwrite0() returns in B<*buf> a pointer to the start of the available
+space in the write buffer and returns the number of bytes that can be written.
+This allows writing directly to the buffer without copying.
+It does not commit the data; a subsequent call to BIO_nwrite() is needed
+to update the buffer length.
+
+BIO_nwrite() is similar to BIO_nwrite0() but also commits up to B<num> bytes
+as written. The actual number of bytes committed is returned.
+The B<*buf> pointer is set to the start of the region that was committed.
+BIO_nwrite() should only be called after the data has actually been written
+to the buffer obtained from BIO_nwrite0(), since committing signals data
+availability to the reading side.
+
+Note that due to the ring buffer implementation, if wrapping around would be
+required, BIO_nread0() and BIO_nwrite0() may return less than the total
+available space. In such cases, a second call may be needed to access the
+remaining data or space.
+
 =head1 NOTES
 
 Both halves of a BIO pair should be freed. That is even if one half is implicit
@@ -133,6 +177,17 @@
 
 [XXXXX: More return values need to be added here]
 
+BIO_nread0() returns the number of bytes available for reading, 0 if the peer
+has closed and no data remains (EOF), or -1 if no data is currently available
+(retry may be appropriate). If the BIO is not initialized, -2 is returned.
+
+BIO_nwrite0() returns the number of bytes of space available for writing, or -1
+if no space is currently available (retry may be appropriate) or the BIO has
+been closed. If the BIO is not initialized, -2 is returned.
+
+BIO_nread() and BIO_nwrite() return the number of bytes consumed or committed
+respectively, or the same error values as BIO_nread0() and BIO_nwrite0().
+
 =head1 EXAMPLES
 
 The BIO pair can be used to have full control over the network access of an
@@ -176,6 +231,30 @@
 find out, how many bytes must be written into the buffer before the
 SSL_operation() can successfully be continued.
 
+A typical usage pattern for the non-copying write interface is:
+
+ int ret;
+ char *buf;
+
+ ret = BIO_nwrite0(bio, &buf);
+ if (ret > 0) {
+     /* write up to 'ret' bytes directly to 'buf' */
+     memcpy(buf, data, len);
+     BIO_nwrite(bio, &buf, len);  /* commit the write */
+ }
+
+A typical usage pattern for the non-copying read interface is:
+
+ int ret;
+ char *buf;
+
+ ret = BIO_nread0(bio, &buf);
+ if (ret > 0) {
+     /* read up to 'ret' bytes directly from 'buf' */
+     process_data(buf, ret);
+     BIO_nread(bio, &buf, ret);  /* consume the data */
+ }
+
 =head1 WARNINGS
 
 As the data is buffered, SSL_operation() may return with an ERROR_SSL_WANT_READ
@@ -191,7 +270,7 @@
 
 =head1 COPYRIGHT
 
-Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2026 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff -Nru openssl-3.5.6/doc/man3/BN_add.pod openssl-3.5.7/doc/man3/BN_add.pod
--- openssl-3.5.6/doc/man3/BN_add.pod	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/man3/BN_add.pod	2026-06-09 13:54:25.000000000 +0200
@@ -108,8 +108,10 @@
 places the result in I<r>. I<r> may be the same B<BIGNUM> as I<a> or
 I<b>.
 
-For all functions, I<ctx> is a previously allocated B<BN_CTX> used for
-temporary variables; see L<BN_CTX_new(3)>.
+For all functions that take a I<ctx> parameter, it must be a previously
+allocated B<BN_CTX> used for temporary variables; see L<BN_CTX_new(3)>.
+Unless stated otherwise in the documentation for a specific function,
+the I<ctx> parameter must not be NULL.
 
 Unless noted otherwise, the result B<BIGNUM> must be different from
 the arguments.
@@ -135,7 +137,7 @@
 
 =head1 COPYRIGHT
 
-Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2026 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff -Nru openssl-3.5.6/doc/man3/CMS_decrypt.pod openssl-3.5.7/doc/man3/CMS_decrypt.pod
--- openssl-3.5.6/doc/man3/CMS_decrypt.pod	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/man3/CMS_decrypt.pod	2026-06-09 13:54:25.000000000 +0200
@@ -68,7 +68,7 @@
 recipient encrypted key can be decrypted B<without> generating a random
 content encryption key. Applications should use this flag with
 B<extreme caution> especially in automated gateways as it can leave them
-open to attack.
+open to attack. See L<EVP_PKEY_decrypt(3)> for more details.
 
 It is possible to determine the correct recipient key by other means (for
 example looking them up in a database) and setting them in the CMS structure
@@ -103,7 +103,7 @@
 
 =head1 SEE ALSO
 
-L<ERR_get_error(3)>, L<CMS_encrypt(3)>
+L<ERR_get_error(3)>, L<CMS_encrypt(3)>, L<EVP_PKEY_decrypt(3)>
 
 =head1 HISTORY
 
@@ -112,7 +112,7 @@
 
 =head1 COPYRIGHT
 
-Copyright 2008-2020 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2008-2026 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff -Nru openssl-3.5.6/doc/man3/d2i_X509.pod openssl-3.5.7/doc/man3/d2i_X509.pod
--- openssl-3.5.6/doc/man3/d2i_X509.pod	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/man3/d2i_X509.pod	2026-06-09 13:54:25.000000000 +0200
@@ -471,21 +471,29 @@
 within, the DER is a serialized encoding, suitable for sending over the
 network, writing to a file, and so on.
 
-B<d2i_I<TYPE>>() attempts to decode I<len> bytes at I<*ppin>. If successful a
-pointer to the B<I<TYPE>> structure is returned and I<*ppin> is incremented to
-the byte following the parsed data.  If I<a> is not NULL then a pointer
-to the returned structure is also written to I<*a>.  If an error occurred
-then NULL is returned. The caller retains ownership of the
-returned object and needs to free it when it is no longer needed, e.g.
-using X509_free() for X509 objects or DSA_SIG_free() for DSA_SIG objects.
-
-On a successful return, if I<*a> is not NULL then it is assumed that I<*a>
-contains a valid B<I<TYPE>> structure and an attempt is made to reuse it.
-For B<I<TYPE>> structures where it matters it is possible to set up a library
-context on the decoded structure this way (see the B<EXAMPLES> section).
-However using the "reuse" capability for other purposes is B<strongly
-discouraged> (see B<BUGS> below, and the discussion in the B<RETURN VALUES>
-section).
+B<d2i_I<TYPE>>() attempts to decode I<len> bytes at I<*ppin>.
+When there is no error, a pointer to a B<I<TYPE>> object is returned and I<*ppin> is
+incremented to the byte following the parsed data.
+The caller owns the returned object and needs to free it when it is no longer needed, 
+e.g., via X509_free() for B<X509> objects.
+
+If either I<a> or I<*a> is NULL, then fresh storage is allocated for the
+returned object, and if I<a> is not NULL then I<*a> is set equal to the
+returned pointer.
+
+When both I<a> and I<*a> are not NULL, I<*a> MUST be a pointer to an
+existing I<TYPE> object, which is reused to hold the decoded result.
+On error (NULL return value), the object is freed and I<*a> is set to NULL.
+
+From OpenSSL 3.x onwards, reuse is only supported when I<*a> points to a newly
+allocated, and not otherwise modified, I<TYPE> object.
+Allocation can be via one of the various _ex() routines, which make it possible
+to associate the allocated object with a chosen I<libctx> (library context)
+or I<propq> (property query), see the B<EXAMPLES> section.
+No other reuse is supported (see B<BUGS> below, and the discussion in the
+B<RETURN VALUES> section).
+The returned object is not suitable for another reuse: each reuse attempt MUST
+start with a newly allocated object.
 
 B<d2i_I<TYPE>_bio>() is similar to B<d2i_I<TYPE>>() except it attempts
 to parse data from BIO I<bp>.
@@ -761,7 +769,7 @@
 
 =head1 COPYRIGHT
 
-Copyright 1998-2025 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 1998-2026 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff -Nru openssl-3.5.6/doc/man3/EVP_EncryptInit.pod openssl-3.5.7/doc/man3/EVP_EncryptInit.pod
--- openssl-3.5.6/doc/man3/EVP_EncryptInit.pod	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/man3/EVP_EncryptInit.pod	2026-06-09 13:54:25.000000000 +0200
@@ -413,7 +413,8 @@
 For most ciphers and modes, the amount of data written can be anything
 from zero bytes to (inl + cipher_block_size - 1) bytes.
 For wrap cipher modes, the amount of data written can be anything
-from zero bytes to (inl + cipher_block_size) bytes.
+from zero bytes to (inl rounded up to cipher_block_size + cipher_block_size)
+bytes.
 For stream ciphers, the amount of data written can be anything from zero
 bytes to inl bytes.
 Thus, the buffer pointed to by I<out> must contain sufficient room for the
diff -Nru openssl-3.5.6/doc/man3/OSSL_HTTP_parse_url.pod openssl-3.5.7/doc/man3/OSSL_HTTP_parse_url.pod
--- openssl-3.5.6/doc/man3/OSSL_HTTP_parse_url.pod	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/man3/OSSL_HTTP_parse_url.pod	2026-06-09 13:54:25.000000000 +0200
@@ -32,7 +32,9 @@
 
 =head1 DESCRIPTION
 
-OSSL_HTTP_adapt_proxy() takes an optional proxy hostname I<proxy>
+OSSL_HTTP_adapt_proxy() determines whether a proxy should be used
+when connecting to the given I<server>.
+It takes an optional proxy hostname I<proxy>
 and returns it transformed according to the optional I<no_proxy> parameter,
 I<server>, I<use_ssl>, and the applicable environment variable, as follows.
 If I<proxy> is NULL, take any default value from the C<http_proxy>
@@ -40,11 +42,13 @@
 If this still does not yield a proxy hostname,
 take any further default value from the C<HTTP_PROXY>
 environment variable, or from C<HTTPS_PROXY> if I<use_ssl> is nonzero.
-If I<no_proxy> is NULL, take any default exclusion value from the C<no_proxy>
-environment variable, or else from C<NO_PROXY>.
-Return the determined proxy host unless the exclusion value,
-which is a list of proxy hosts separated by C<,> and/or whitespace,
-contains I<server>.
+Return the determined proxy host if I<server> is the empty string
+or I<server> is not in the exclusion list.
+The exclusion list is a list of server hosts separated by C<,>
+and/or whitespace.
+They may be given via the I<no_proxy> parameter.
+If it is NULL, the exclusion list is taken from the C<no_proxy>
+environment variable if set, otherwise from C<NO_PROXY>.
 Otherwise return NULL.
 When I<server> is a string delimited by C<[> and C<]>, which are used for IPv6
 addresses, the enclosing C<[> and C<]> are stripped prior to comparison.
@@ -102,7 +106,7 @@
 
 =head1 COPYRIGHT
 
-Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff -Nru openssl-3.5.6/doc/man3/OSSL_HTTP_REQ_CTX.pod openssl-3.5.7/doc/man3/OSSL_HTTP_REQ_CTX.pod
--- openssl-3.5.6/doc/man3/OSSL_HTTP_REQ_CTX.pod	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/man3/OSSL_HTTP_REQ_CTX.pod	2026-06-09 13:54:25.000000000 +0200
@@ -86,9 +86,12 @@
 an absoluteURI. In this case it indicates HTTP proxy use and provides also the
 server (and optionally the port) that the proxy shall forward the request to.
 In this case the I<server> and I<port> arguments must be NULL.
+The I<server>, I<port>, and I<path> arguments must not contain CR or LF
+characters.
 
 OSSL_HTTP_REQ_CTX_add1_header() adds header I<name> with value I<value> to the
 context I<rctx>. It can be called more than once to add multiple header lines.
+The I<name> and I<value> arguments must not contain CR or LF characters.
 For example, to add a C<Host> header for C<example.com> you would call:
 
  OSSL_HTTP_REQ_CTX_add1_header(ctx, "Host", "example.com");
@@ -143,6 +146,7 @@
 I<content_type> must be NULL if I<req> is NULL.
 If I<content_type> isn't NULL,
 the HTTP header C<Content-Type> is also added with the given string value.
+The I<content_type> argument must not contain CR or LF characters.
 The header lines are added to the internal memory B<BIO> for the request header.
 
 OSSL_HTTP_REQ_CTX_nbio() attempts to send the request prepared in I<rctx>
@@ -299,7 +303,7 @@
 
 =head1 COPYRIGHT
 
-Copyright 2015-2025 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2015-2026 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff -Nru openssl-3.5.6/doc/man3/OSSL_HTTP_transfer.pod openssl-3.5.7/doc/man3/OSSL_HTTP_transfer.pod
--- openssl-3.5.6/doc/man3/OSSL_HTTP_transfer.pod	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/man3/OSSL_HTTP_transfer.pod	2026-06-09 13:54:25.000000000 +0200
@@ -158,6 +158,7 @@
 optionally using proxy client credentials I<proxyuser> and I<proxypass>,
 to connect with TLS protection ultimately to I<server> and I<port>.
 If the I<port> argument is NULL or the empty string it defaults to "443".
+The I<server> and I<port> arguments must not contain CR or LF characters.
 If the I<timeout> parameter is > 0 this indicates the maximum number of
 seconds the connection setup is allowed to take.
 A value <= 0 enables waiting indefinitely, i.e., no timeout.
@@ -178,6 +179,8 @@
 the length of the data in I<req> does not need to be determined in advance: the
 BIO will be read on-the-fly while sending the request, which supports streaming.
 The optional list I<headers> may contain additional custom HTTP header lines.
+The I<path>, I<headers> names and values, and I<content_type> must not contain
+CR or LF characters.
 The I<max_resp_len> parameter specifies the maximum allowed
 response content length, where the value 0 indicates no limit.
 For the meaning of the I<expected_content_type>, I<expect_asn1>, I<timeout>,
@@ -275,7 +278,7 @@
 
 =head1 COPYRIGHT
 
-Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff -Nru openssl-3.5.6/doc/man3/PKCS7_decrypt.pod openssl-3.5.7/doc/man3/PKCS7_decrypt.pod
--- openssl-3.5.6/doc/man3/PKCS7_decrypt.pod	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/man3/PKCS7_decrypt.pod	2026-06-09 13:54:25.000000000 +0200
@@ -22,6 +22,14 @@
 Although the recipients certificate is not needed to decrypt the data it is needed
 to locate the appropriate (of possible several) recipients in the PKCS#7 structure.
 
+When RSA PKCS#1 v1.5 Key Transport is in use, the invoked EVP_PKEY_decrypt()
+will use implicit rejection mechanism. It always returns the result of RSA
+decryption of the symmetric key to avoid Marvin attack. This result is
+deterministic and can happen to match the symmetric cipher used for the content
+encryption. In case when the certificate is not provided, the last
+RecipientInfo producing the key looking valid will be used. It may cause
+getting garbage content on decryption.
+
 The following flags can be passed in the B<flags> parameter.
 
 If the B<PKCS7_TEXT> flag is set MIME headers for type B<text/plain> are deleted
@@ -38,16 +46,13 @@
 PKCS7_decrypt() must be passed the correct recipient key and certificate. It would
 be better if it could look up the correct key and certificate from a database.
 
-The lack of single pass processing and need to hold all data in memory as
-mentioned in PKCS7_sign() also applies to PKCS7_verify().
-
 =head1 SEE ALSO
 
-L<ERR_get_error(3)>, L<PKCS7_encrypt(3)>
+L<ERR_get_error(3)>, L<PKCS7_encrypt(3)>, L<EVP_PKEY_decrypt(3)>
 
 =head1 COPYRIGHT
 
-Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2002-2026 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff -Nru openssl-3.5.6/doc/man3/SSL_CTX_set_session_cache_mode.pod openssl-3.5.7/doc/man3/SSL_CTX_set_session_cache_mode.pod
--- openssl-3.5.6/doc/man3/SSL_CTX_set_session_cache_mode.pod	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/man3/SSL_CTX_set_session_cache_mode.pod	2026-06-09 13:54:25.000000000 +0200
@@ -8,8 +8,8 @@
 
  #include <openssl/ssl.h>
 
- long SSL_CTX_set_session_cache_mode(SSL_CTX ctx, long mode);
- long SSL_CTX_get_session_cache_mode(SSL_CTX ctx);
+ long SSL_CTX_set_session_cache_mode(SSL_CTX *ctx, long mode);
+ long SSL_CTX_get_session_cache_mode(SSL_CTX *ctx);
 
 =head1 DESCRIPTION
 
@@ -136,7 +136,7 @@
 
 =head1 COPYRIGHT
 
-Copyright 2001-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2001-2026 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff -Nru openssl-3.5.6/doc/man3/SSL_CTX_set_session_id_context.pod openssl-3.5.7/doc/man3/SSL_CTX_set_session_id_context.pod
--- openssl-3.5.6/doc/man3/SSL_CTX_set_session_id_context.pod	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/man3/SSL_CTX_set_session_id_context.pod	2026-06-09 13:54:25.000000000 +0200
@@ -38,9 +38,6 @@
 SSL_set_session_id_context() functions are therefore only useful on the
 server side.
 
-OpenSSL clients will check the session id context returned by the server
-when reusing a session.
-
 The maximum length of the B<sid_ctx> is limited to
 B<SSL_MAX_SID_CTX_LENGTH>.
 
@@ -51,11 +48,24 @@
 will not be reused but a fatal error will be flagged and the handshake
 will fail.
 
-If a server returns a different session id context to an OpenSSL client
-when reusing a session, an error will be flagged and the handshake will
-fail. OpenSSL servers will always return the correct session id context,
-as an OpenSSL server checks the session id context itself before reusing
-a session as described above.
+If a client attempts to resume a session and the server detects that the session
+id context associated with the session is different to the current session id
+context then the resumption will fail. The handshake will continue normally but
+no resumption will occur.
+
+It is vital that the session id context is set before any session resumption
+occurs. Sessions get created early in the handshake. If the session id context
+is not set by the time the session gets created then the session will be
+associated with an empty session id context. The already created session will
+not get updated if the  session id context is later set. In particular the
+callback set via the L<SSL_CTX_set_tlsext_servername_callback(3)> function will
+be invoked after the session gets created, so if the session id context is set
+in the callback then this will be too late for the current handshake and the
+session id context setting will be ignored with respect to resumption. Typically
+the session id context should be set before the TLS handshake starts, but it may
+occur as late as in the callback set via the L<SSL_CTX_set_client_hello_cb(3)>
+function.
+
 
 =head1 RETURN VALUES
 
@@ -82,7 +92,7 @@
 
 =head1 COPYRIGHT
 
-Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2001-2026 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff -Nru openssl-3.5.6/doc/man3/SSL_CTX_set_tlsext_servername_callback.pod openssl-3.5.7/doc/man3/SSL_CTX_set_tlsext_servername_callback.pod
--- openssl-3.5.6/doc/man3/SSL_CTX_set_tlsext_servername_callback.pod	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/man3/SSL_CTX_set_tlsext_servername_callback.pod	2026-06-09 13:54:25.000000000 +0200
@@ -29,7 +29,11 @@
 SSL_CTX_set_tlsext_servername_callback() sets the application callback B<cb>
 used by a server to perform any actions or configuration required based on
 the servername extension received in the incoming connection. When B<cb>
-is NULL, SNI is not used.
+is NULL, SNI is not used. Note that this callback occurs late in the processing
+of the ClientHello message. In particular it happens after session resumption
+has occurred, and so typically this callback should not call functions such
+as L<SSL_set_session_id_context(3)> since it is too late to affect the session
+resumption for the current handshake.
 
 The servername callback should return one of the following values:
 
@@ -169,7 +173,7 @@
 
 =head1 COPYRIGHT
 
-Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2017-2026 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff -Nru openssl-3.5.6/doc/man7/EVP_CIPHER-AES.pod openssl-3.5.7/doc/man7/EVP_CIPHER-AES.pod
--- openssl-3.5.6/doc/man7/EVP_CIPHER-AES.pod	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/man7/EVP_CIPHER-AES.pod	2026-06-09 13:54:25.000000000 +0200
@@ -69,6 +69,10 @@
 means to obtain correct results there can be only one L<EVP_EncryptUpdate(3)>
 or L<EVP_DecryptUpdate(3)> call after the initialization of the context.
 
+When wrapping with AES-WRAP-PAD ciphers, the output buffer must be at least
+I<inl> rounded up to the cipher block size (8 bytes) plus the block size.
+That is, the minimum output buffer size is C<((inl + 7) / 8) * 8 + 8> bytes.
+
 The AES-XTS implementations allow streaming to be performed, but each
 L<EVP_EncryptUpdate(3)> or L<EVP_DecryptUpdate(3)> call requires each input
 to be a multiple of the blocksize. Only the final EVP_EncryptUpdate() or
@@ -86,7 +90,7 @@
 
 =head1 COPYRIGHT
 
-Copyright 2021-2023 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2021-2026 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff -Nru openssl-3.5.6/doc/man7/openssl-env.pod openssl-3.5.7/doc/man7/openssl-env.pod
--- openssl-3.5.6/doc/man7/openssl-env.pod	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/man7/openssl-env.pod	2026-06-09 13:54:25.000000000 +0200
@@ -168,6 +168,8 @@
 =item B<SSL_CERT_DIR>, B<SSL_CERT_FILE>
 
 Specify the default directory or file containing CA certificates.
+B<SSL_CERT_DIR> can contain multiple directories separated by colons
+(or semicolons on Windows).
 See L<SSL_CTX_load_verify_locations(3)>.
 
 =item B<TSGET>
diff -Nru openssl-3.5.6/doc/man7/provider-asym_cipher.pod openssl-3.5.7/doc/man7/provider-asym_cipher.pod
--- openssl-3.5.6/doc/man7/provider-asym_cipher.pod	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/man7/provider-asym_cipher.pod	2026-06-09 13:54:25.000000000 +0200
@@ -38,9 +38,9 @@
 
  /* Asymmetric Cipher parameters */
  int OSSL_FUNC_asym_cipher_get_ctx_params(void *ctx, OSSL_PARAM params[]);
- const OSSL_PARAM *OSSL_FUNC_asym_cipher_gettable_ctx_params(void *provctx);
+ const OSSL_PARAM *OSSL_FUNC_asym_cipher_gettable_ctx_params(void *ctx, void *provctx);
  int OSSL_FUNC_asym_cipher_set_ctx_params(void *ctx, const OSSL_PARAM params[]);
- const OSSL_PARAM *OSSL_FUNC_asym_cipher_settable_ctx_params(void *provctx);
+ const OSSL_PARAM *OSSL_FUNC_asym_cipher_settable_ctx_params(void *ctx, void *provctx);
 
 =head1 DESCRIPTION
 
@@ -291,7 +291,7 @@
 
 =head1 COPYRIGHT
 
-Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff -Nru openssl-3.5.6/doc/man7/provider-signature.pod openssl-3.5.7/doc/man7/provider-signature.pod
--- openssl-3.5.6/doc/man7/provider-signature.pod	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/doc/man7/provider-signature.pod	2026-06-09 13:54:25.000000000 +0200
@@ -269,7 +269,6 @@
 as well as the "md_params" functions.
 
 The OSSL_FUNC_signature_dupctx() function is optional.
-It is not yet used by OpenSSL.
 
 The OSSL_FUNC_signature_query_key_types() function is optional.
 When present, it should return a NULL-terminated array of strings
@@ -708,7 +707,7 @@
 
 =head1 COPYRIGHT
 
-Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff -Nru openssl-3.5.6/fuzz/dtlsserver.c openssl-3.5.7/fuzz/dtlsserver.c
--- openssl-3.5.6/fuzz/dtlsserver.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/fuzz/dtlsserver.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -50,1328 +50,172 @@
 -----END CERTIFICATE-----
  */
 static const uint8_t RSACertificatePEM[] = {
-    0x2d,
-    0x2d,
-    0x2d,
-    0x2d,
-    0x2d,
-    0x42,
-    0x45,
-    0x47,
-    0x49,
-    0x4e,
-    0x20,
-    0x43,
-    0x45,
-    0x52,
-    0x54,
-    0x49,
-    0x46,
-    0x49,
-    0x43,
-    0x41,
-    0x54,
-    0x45,
-    0x2d,
-    0x2d,
-    0x2d,
-    0x2d,
-    0x2d,
-    0x0a,
-    0x4d,
-    0x49,
-    0x49,
-    0x44,
-    0x6f,
-    0x7a,
-    0x43,
-    0x43,
-    0x41,
-    0x6f,
-    0x75,
-    0x67,
-    0x41,
-    0x77,
-    0x49,
-    0x42,
-    0x41,
-    0x67,
-    0x49,
-    0x55,
-    0x53,
-    0x4b,
-    0x77,
-    0x51,
-    0x44,
-    0x31,
-    0x71,
-    0x52,
-    0x74,
-    0x53,
-    0x2b,
-    0x6c,
-    0x72,
-    0x69,
-    0x64,
-    0x61,
-    0x77,
-    0x6d,
-    0x61,
-    0x59,
-    0x4b,
-    0x36,
-    0x63,
-    0x65,
-    0x6a,
-    0x32,
-    0x6b,
-    0x77,
-    0x44,
-    0x51,
-    0x59,
-    0x4a,
-    0x4b,
-    0x6f,
-    0x5a,
-    0x49,
-    0x68,
-    0x76,
-    0x63,
-    0x4e,
-    0x41,
-    0x51,
-    0x45,
-    0x4c,
-    0x0a,
-    0x42,
-    0x51,
-    0x41,
-    0x77,
-    0x59,
-    0x54,
-    0x45,
-    0x4c,
-    0x4d,
-    0x41,
-    0x6b,
-    0x47,
-    0x41,
-    0x31,
-    0x55,
-    0x45,
-    0x42,
-    0x68,
-    0x4d,
-    0x43,
-    0x62,
-    0x6d,
-    0x38,
-    0x78,
-    0x43,
-    0x7a,
-    0x41,
-    0x4a,
-    0x42,
-    0x67,
-    0x4e,
-    0x56,
-    0x42,
-    0x41,
-    0x67,
-    0x4d,
-    0x41,
-    0x6d,
-    0x35,
-    0x76,
-    0x4d,
-    0x51,
-    0x73,
-    0x77,
-    0x43,
-    0x51,
-    0x59,
-    0x44,
-    0x56,
-    0x51,
-    0x51,
-    0x48,
-    0x44,
-    0x41,
-    0x4a,
-    0x75,
-    0x62,
-    0x7a,
-    0x45,
-    0x4c,
-    0x4d,
-    0x41,
-    0x6b,
-    0x47,
-    0x0a,
-    0x41,
-    0x31,
-    0x55,
-    0x45,
-    0x43,
-    0x67,
-    0x77,
-    0x43,
-    0x62,
-    0x6d,
-    0x38,
-    0x78,
-    0x43,
-    0x7a,
-    0x41,
-    0x4a,
-    0x42,
-    0x67,
-    0x4e,
-    0x56,
-    0x42,
-    0x41,
-    0x73,
-    0x4d,
-    0x41,
-    0x6d,
-    0x35,
-    0x76,
-    0x4d,
-    0x51,
-    0x73,
-    0x77,
-    0x43,
-    0x51,
-    0x59,
-    0x44,
-    0x56,
-    0x51,
-    0x51,
-    0x44,
-    0x44,
-    0x41,
-    0x4a,
-    0x75,
-    0x62,
-    0x7a,
-    0x45,
-    0x52,
-    0x4d,
-    0x41,
-    0x38,
-    0x47,
-    0x43,
-    0x53,
-    0x71,
-    0x47,
-    0x53,
-    0x49,
-    0x62,
-    0x33,
-    0x44,
-    0x51,
-    0x45,
-    0x4a,
-    0x0a,
-    0x41,
-    0x52,
-    0x59,
-    0x43,
-    0x62,
-    0x6d,
-    0x38,
-    0x77,
-    0x48,
-    0x68,
-    0x63,
-    0x4e,
-    0x4d,
-    0x6a,
-    0x51,
-    0x77,
-    0x4d,
-    0x6a,
-    0x49,
-    0x34,
-    0x4d,
-    0x54,
-    0x6b,
-    0x7a,
-    0x4e,
-    0x7a,
-    0x45,
-    0x77,
-    0x57,
-    0x68,
-    0x63,
-    0x4e,
-    0x4d,
-    0x6a,
-    0x55,
-    0x77,
-    0x4d,
-    0x6a,
-    0x49,
-    0x33,
-    0x4d,
-    0x54,
-    0x6b,
-    0x7a,
-    0x4e,
-    0x7a,
-    0x45,
-    0x77,
-    0x57,
-    0x6a,
-    0x42,
-    0x68,
-    0x4d,
-    0x51,
-    0x73,
-    0x77,
-    0x43,
-    0x51,
-    0x59,
-    0x44,
-    0x56,
-    0x51,
-    0x51,
-    0x47,
-    0x0a,
-    0x45,
-    0x77,
-    0x4a,
-    0x75,
-    0x62,
-    0x7a,
-    0x45,
-    0x4c,
-    0x4d,
-    0x41,
-    0x6b,
-    0x47,
-    0x41,
-    0x31,
-    0x55,
-    0x45,
-    0x43,
-    0x41,
-    0x77,
-    0x43,
-    0x62,
-    0x6d,
-    0x38,
-    0x78,
-    0x43,
-    0x7a,
-    0x41,
-    0x4a,
-    0x42,
-    0x67,
-    0x4e,
-    0x56,
-    0x42,
-    0x41,
-    0x63,
-    0x4d,
-    0x41,
-    0x6d,
-    0x35,
-    0x76,
-    0x4d,
-    0x51,
-    0x73,
-    0x77,
-    0x43,
-    0x51,
-    0x59,
-    0x44,
-    0x56,
-    0x51,
-    0x51,
-    0x4b,
-    0x44,
-    0x41,
-    0x4a,
-    0x75,
-    0x62,
-    0x7a,
-    0x45,
-    0x4c,
-    0x4d,
-    0x41,
-    0x6b,
-    0x47,
-    0x0a,
-    0x41,
-    0x31,
-    0x55,
-    0x45,
-    0x43,
-    0x77,
-    0x77,
-    0x43,
-    0x62,
-    0x6d,
-    0x38,
-    0x78,
-    0x43,
-    0x7a,
-    0x41,
-    0x4a,
-    0x42,
-    0x67,
-    0x4e,
-    0x56,
-    0x42,
-    0x41,
-    0x4d,
-    0x4d,
-    0x41,
-    0x6d,
-    0x35,
-    0x76,
-    0x4d,
-    0x52,
-    0x45,
-    0x77,
-    0x44,
-    0x77,
-    0x59,
-    0x4a,
-    0x4b,
-    0x6f,
-    0x5a,
-    0x49,
-    0x68,
-    0x76,
-    0x63,
-    0x4e,
-    0x41,
-    0x51,
-    0x6b,
-    0x42,
-    0x46,
-    0x67,
-    0x4a,
-    0x75,
-    0x62,
-    0x7a,
-    0x43,
-    0x43,
-    0x41,
-    0x53,
-    0x49,
-    0x77,
-    0x44,
-    0x51,
-    0x59,
-    0x4a,
-    0x0a,
-    0x4b,
-    0x6f,
-    0x5a,
-    0x49,
-    0x68,
-    0x76,
-    0x63,
-    0x4e,
-    0x41,
-    0x51,
-    0x45,
-    0x42,
-    0x42,
-    0x51,
-    0x41,
-    0x44,
-    0x67,
-    0x67,
-    0x45,
-    0x50,
-    0x41,
-    0x44,
-    0x43,
-    0x43,
-    0x41,
-    0x51,
-    0x6f,
-    0x43,
-    0x67,
-    0x67,
-    0x45,
-    0x42,
-    0x41,
-    0x4c,
-    0x57,
-    0x5a,
-    0x42,
-    0x39,
-    0x4d,
-    0x74,
-    0x61,
-    0x73,
-    0x30,
-    0x56,
-    0x39,
-    0x53,
-    0x79,
-    0x61,
-    0x2b,
-    0x55,
-    0x68,
-    0x45,
-    0x61,
-    0x62,
-    0x77,
-    0x7a,
-    0x73,
-    0x33,
-    0x45,
-    0x6f,
-    0x6c,
-    0x2b,
-    0x2f,
-    0x4d,
-    0x0a,
-    0x68,
-    0x77,
-    0x55,
-    0x46,
-    0x57,
-    0x49,
-    0x46,
-    0x72,
-    0x72,
-    0x38,
-    0x74,
-    0x56,
-    0x79,
-    0x59,
-    0x76,
-    0x67,
-    0x38,
-    0x58,
-    0x73,
-    0x2f,
-    0x4b,
-    0x6e,
-    0x43,
-    0x32,
-    0x56,
-    0x61,
-    0x45,
-    0x70,
-    0x6e,
-    0x45,
-    0x6c,
-    0x74,
-    0x42,
-    0x4e,
-    0x4c,
-    0x61,
-    0x4f,
-    0x41,
-    0x44,
-    0x5a,
-    0x47,
-    0x55,
-    0x75,
-    0x58,
-    0x7a,
-    0x7a,
-    0x35,
-    0x45,
-    0x62,
-    0x63,
-    0x63,
-    0x62,
-    0x32,
-    0x69,
-    0x31,
-    0x38,
-    0x67,
-    0x68,
-    0x76,
-    0x4d,
-    0x44,
-    0x58,
-    0x35,
-    0x6f,
-    0x0a,
-    0x4f,
-    0x77,
-    0x41,
-    0x41,
-    0x69,
-    0x64,
-    0x4c,
-    0x33,
-    0x74,
-    0x76,
-    0x36,
-    0x6c,
-    0x68,
-    0x38,
-    0x2f,
-    0x56,
-    0x75,
-    0x6a,
-    0x38,
-    0x74,
-    0x70,
-    0x4c,
-    0x41,
-    0x35,
-    0x33,
-    0x53,
-    0x44,
-    0x52,
-    0x35,
-    0x56,
-    0x54,
-    0x51,
-    0x63,
-    0x78,
-    0x69,
-    0x74,
-    0x69,
-    0x70,
-    0x73,
-    0x63,
-    0x63,
-    0x6a,
-    0x61,
-    0x63,
-    0x48,
-    0x44,
-    0x66,
-    0x74,
-    0x54,
-    0x71,
-    0x44,
-    0x41,
-    0x37,
-    0x2b,
-    0x39,
-    0x34,
-    0x53,
-    0x54,
-    0x54,
-    0x38,
-    0x51,
-    0x53,
-    0x48,
-    0x74,
-    0x0a,
-    0x57,
-    0x75,
-    0x35,
-    0x46,
-    0x6d,
-    0x58,
-    0x50,
-    0x4b,
-    0x76,
-    0x4a,
-    0x4c,
-    0x6d,
-    0x50,
-    0x75,
-    0x4b,
-    0x51,
-    0x4a,
-    0x4d,
-    0x62,
-    0x4f,
-    0x4a,
-    0x53,
-    0x47,
-    0x44,
-    0x4a,
-    0x4c,
-    0x76,
-    0x64,
-    0x54,
-    0x2f,
-    0x30,
-    0x64,
-    0x79,
-    0x4d,
-    0x39,
-    0x61,
-    0x55,
-    0x33,
-    0x78,
-    0x4b,
-    0x77,
-    0x36,
-    0x34,
-    0x69,
-    0x76,
-    0x37,
-    0x53,
-    0x33,
-    0x6c,
-    0x61,
-    0x45,
-    0x52,
-    0x57,
-    0x79,
-    0x57,
-    0x34,
-    0x2f,
-    0x4f,
-    0x65,
-    0x6d,
-    0x4d,
-    0x51,
-    0x58,
-    0x73,
-    0x0a,
-    0x69,
-    0x2b,
-    0x6b,
-    0x62,
-    0x61,
-    0x6e,
-    0x70,
-    0x56,
-    0x4e,
-    0x4a,
-    0x56,
-    0x6d,
-    0x71,
-    0x54,
-    0x74,
-    0x53,
-    0x2b,
-    0x71,
-    0x2f,
-    0x46,
-    0x79,
-    0x59,
-    0x76,
-    0x76,
-    0x72,
-    0x31,
-    0x4e,
-    0x70,
-    0x58,
-    0x30,
-    0x4f,
-    0x63,
-    0x2f,
-    0x41,
-    0x35,
-    0x48,
-    0x32,
-    0x48,
-    0x59,
-    0x51,
-    0x36,
-    0x66,
-    0x36,
-    0x50,
-    0x33,
-    0x6e,
-    0x76,
-    0x4a,
-    0x32,
-    0x32,
-    0x49,
-    0x4f,
-    0x58,
-    0x6f,
-    0x49,
-    0x63,
-    0x4e,
-    0x6a,
-    0x49,
-    0x31,
-    0x46,
-    0x6d,
-    0x4b,
-    0x62,
-    0x0a,
-    0x58,
-    0x33,
-    0x4e,
-    0x4a,
-    0x48,
-    0x65,
-    0x74,
-    0x48,
-    0x58,
-    0x74,
-    0x79,
-    0x5a,
-    0x4b,
-    0x58,
-    0x63,
-    0x66,
-    0x70,
-    0x69,
-    0x7a,
-    0x6c,
-    0x6a,
-    0x73,
-    0x4e,
-    0x76,
-    0x62,
-    0x66,
-    0x66,
-    0x73,
-    0x4c,
-    0x36,
-    0x74,
-    0x77,
-    0x78,
-    0x6a,
-    0x6a,
-    0x43,
-    0x52,
-    0x33,
-    0x4a,
-    0x64,
-    0x55,
-    0x71,
-    0x50,
-    0x31,
-    0x78,
-    0x45,
-    0x43,
-    0x65,
-    0x75,
-    0x6f,
-    0x4c,
-    0x42,
-    0x4d,
-    0x7a,
-    0x6b,
-    0x43,
-    0x41,
-    0x77,
-    0x45,
-    0x41,
-    0x41,
-    0x61,
-    0x4e,
-    0x54,
-    0x0a,
-    0x4d,
-    0x46,
-    0x45,
-    0x77,
-    0x48,
-    0x51,
-    0x59,
-    0x44,
-    0x56,
-    0x52,
-    0x30,
-    0x4f,
-    0x42,
-    0x42,
-    0x59,
-    0x45,
-    0x46,
-    0x4b,
-    0x5a,
-    0x32,
-    0x62,
-    0x39,
-    0x49,
-    0x4a,
-    0x33,
-    0x59,
-    0x57,
-    0x43,
-    0x59,
-    0x79,
-    0x4d,
-    0x6b,
-    0x52,
-    0x4f,
-    0x6a,
-    0x74,
-    0x6a,
-    0x46,
-    0x37,
-    0x43,
-    0x78,
-    0x73,
-    0x66,
-    0x61,
-    0x4d,
-    0x42,
-    0x38,
-    0x47,
-    0x41,
-    0x31,
-    0x55,
-    0x64,
-    0x49,
-    0x77,
-    0x51,
-    0x59,
-    0x4d,
-    0x42,
-    0x61,
-    0x41,
-    0x46,
-    0x4b,
-    0x5a,
-    0x32,
-    0x0a,
-    0x62,
-    0x39,
-    0x49,
-    0x4a,
-    0x33,
-    0x59,
-    0x57,
-    0x43,
-    0x59,
-    0x79,
-    0x4d,
-    0x6b,
-    0x52,
-    0x4f,
-    0x6a,
-    0x74,
-    0x6a,
-    0x46,
-    0x37,
-    0x43,
-    0x78,
-    0x73,
-    0x66,
-    0x61,
-    0x4d,
-    0x41,
-    0x38,
-    0x47,
-    0x41,
-    0x31,
-    0x55,
-    0x64,
-    0x45,
-    0x77,
-    0x45,
-    0x42,
-    0x2f,
-    0x77,
-    0x51,
-    0x46,
-    0x4d,
-    0x41,
-    0x4d,
-    0x42,
-    0x41,
-    0x66,
-    0x38,
-    0x77,
-    0x44,
-    0x51,
-    0x59,
-    0x4a,
-    0x4b,
-    0x6f,
-    0x5a,
-    0x49,
-    0x68,
-    0x76,
-    0x63,
-    0x4e,
-    0x41,
-    0x51,
-    0x45,
-    0x4c,
-    0x0a,
-    0x42,
-    0x51,
-    0x41,
-    0x44,
-    0x67,
-    0x67,
-    0x45,
-    0x42,
-    0x41,
-    0x47,
-    0x4a,
-    0x6f,
-    0x48,
-    0x44,
-    0x54,
-    0x73,
-    0x41,
-    0x69,
-    0x75,
-    0x52,
-    0x74,
-    0x41,
-    0x43,
-    0x54,
-    0x47,
-    0x69,
-    0x47,
-    0x7a,
-    0x2f,
-    0x6f,
-    0x79,
-    0x4e,
-    0x5a,
-    0x66,
-    0x48,
-    0x2f,
-    0x4f,
-    0x55,
-    0x4a,
-    0x61,
-    0x69,
-    0x6a,
-    0x55,
-    0x4d,
-    0x61,
-    0x4c,
-    0x62,
-    0x48,
-    0x64,
-    0x2f,
-    0x4a,
-    0x47,
-    0x32,
-    0x4c,
-    0x36,
-    0x67,
-    0x74,
-    0x70,
-    0x41,
-    0x43,
-    0x59,
-    0x59,
-    0x32,
-    0x62,
-    0x0a,
-    0x41,
-    0x6f,
-    0x4c,
-    0x6b,
-    0x49,
-    0x63,
-    0x43,
-    0x6c,
-    0x33,
-    0x38,
-    0x6e,
-    0x73,
-    0x4c,
-    0x59,
-    0x4d,
-    0x4c,
-    0x5a,
-    0x33,
-    0x32,
-    0x42,
-    0x62,
-    0x63,
-    0x35,
-    0x6a,
-    0x6e,
-    0x50,
-    0x2f,
-    0x51,
-    0x79,
-    0x33,
-    0x64,
-    0x32,
-    0x48,
-    0x4b,
-    0x73,
-    0x54,
-    0x4a,
-    0x35,
-    0x49,
-    0x74,
-    0x34,
-    0x71,
-    0x78,
-    0x44,
-    0x67,
-    0x74,
-    0x62,
-    0x74,
-    0x70,
-    0x55,
-    0x38,
-    0x65,
-    0x35,
-    0x4d,
-    0x68,
-    0x45,
-    0x65,
-    0x4a,
-    0x6f,
-    0x65,
-    0x4d,
-    0x48,
-    0x4f,
-    0x43,
-    0x0a,
-    0x66,
-    0x69,
-    0x7a,
-    0x62,
-    0x63,
-    0x57,
-    0x63,
-    0x37,
-    0x57,
-    0x37,
-    0x6d,
-    0x32,
-    0x53,
-    0x4c,
-    0x66,
-    0x70,
-    0x65,
-    0x51,
-    0x4a,
-    0x57,
-    0x4d,
-    0x67,
-    0x75,
-    0x32,
-    0x44,
-    0x61,
-    0x30,
-    0x48,
-    0x59,
-    0x45,
-    0x44,
-    0x53,
-    0x2f,
-    0x78,
-    0x7a,
-    0x4c,
-    0x6e,
-    0x37,
-    0x70,
-    0x78,
-    0x51,
-    0x67,
-    0x5a,
-    0x70,
-    0x4f,
-    0x72,
-    0x4d,
-    0x51,
-    0x37,
-    0x49,
-    0x68,
-    0x69,
-    0x31,
-    0x6a,
-    0x77,
-    0x58,
-    0x66,
-    0x4b,
-    0x46,
-    0x71,
-    0x49,
-    0x49,
-    0x61,
-    0x6c,
-    0x0a,
-    0x67,
-    0x36,
-    0x53,
-    0x69,
-    0x6a,
-    0x52,
-    0x47,
-    0x58,
-    0x68,
-    0x37,
-    0x6f,
-    0x6e,
-    0x45,
-    0x41,
-    0x78,
-    0x45,
-    0x6d,
-    0x4b,
-    0x4c,
-    0x6b,
-    0x70,
-    0x56,
-    0x51,
-    0x52,
-    0x71,
-    0x36,
-    0x33,
-    0x33,
-    0x42,
-    0x59,
-    0x50,
-    0x56,
-    0x36,
-    0x6f,
-    0x64,
-    0x78,
-    0x74,
-    0x58,
-    0x44,
-    0x68,
-    0x78,
-    0x79,
-    0x4a,
-    0x4b,
-    0x79,
-    0x47,
-    0x6a,
-    0x53,
-    0x4a,
-    0x73,
-    0x51,
-    0x6f,
-    0x4b,
-    0x76,
-    0x39,
-    0x6f,
-    0x43,
-    0x46,
-    0x32,
-    0x6b,
-    0x41,
-    0x64,
-    0x41,
-    0x69,
-    0x0a,
-    0x43,
-    0x76,
-    0x76,
-    0x61,
-    0x74,
-    0x71,
-    0x52,
-    0x57,
-    0x52,
-    0x77,
-    0x67,
-    0x49,
-    0x65,
-    0x6c,
-    0x6e,
-    0x31,
-    0x53,
-    0x77,
-    0x39,
-    0x45,
-    0x65,
-    0x36,
-    0x63,
-    0x54,
-    0x59,
-    0x5a,
-    0x43,
-    0x47,
-    0x32,
-    0x55,
-    0x2b,
-    0x2f,
-    0x55,
-    0x66,
-    0x2b,
-    0x4c,
-    0x73,
-    0x37,
-    0x66,
-    0x6a,
-    0x4e,
-    0x38,
-    0x74,
-    0x72,
-    0x62,
-    0x2f,
-    0x53,
-    0x68,
-    0x6d,
-    0x78,
-    0x6f,
-    0x38,
-    0x64,
-    0x6f,
-    0x2f,
-    0x6e,
-    0x70,
-    0x42,
-    0x6e,
-    0x7a,
-    0x38,
-    0x6a,
-    0x2b,
-    0x31,
-    0x0a,
-    0x61,
-    0x32,
-    0x76,
-    0x62,
-    0x7a,
-    0x33,
-    0x67,
-    0x70,
-    0x4f,
-    0x73,
-    0x6c,
-    0x38,
-    0x37,
-    0x55,
-    0x30,
-    0x63,
-    0x30,
-    0x31,
-    0x4a,
-    0x43,
-    0x6c,
-    0x39,
-    0x53,
-    0x5a,
-    0x58,
-    0x44,
-    0x53,
-    0x4f,
-    0x30,
-    0x39,
-    0x77,
-    0x3d,
-    0x0a,
-    0x2d,
-    0x2d,
-    0x2d,
-    0x2d,
-    0x2d,
-    0x45,
-    0x4e,
-    0x44,
-    0x20,
-    0x43,
-    0x45,
-    0x52,
-    0x54,
-    0x49,
-    0x46,
-    0x49,
-    0x43,
-    0x41,
-    0x54,
-    0x45,
-    0x2d,
-    0x2d,
-    0x2d,
-    0x2d,
-    0x2d,
-    0x0a,
+    0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47,
+    0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49,
+    0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d,
+    0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44,
+    0x6f, 0x7a, 0x43, 0x43, 0x41, 0x6f, 0x75, 0x67,
+    0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x55,
+    0x53, 0x4b, 0x77, 0x51, 0x44, 0x31, 0x71, 0x52,
+    0x74, 0x53, 0x2b, 0x6c, 0x72, 0x69, 0x64, 0x61,
+    0x77, 0x6d, 0x61, 0x59, 0x4b, 0x36, 0x63, 0x65,
+    0x6a, 0x32, 0x6b, 0x77, 0x44, 0x51, 0x59, 0x4a,
+    0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e,
+    0x41, 0x51, 0x45, 0x4c, 0x0a, 0x42, 0x51, 0x41,
+    0x77, 0x59, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b,
+    0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d,
+    0x43, 0x62, 0x6d, 0x38, 0x78, 0x43, 0x7a, 0x41,
+    0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x67,
+    0x4d, 0x41, 0x6d, 0x35, 0x76, 0x4d, 0x51, 0x73,
+    0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51,
+    0x48, 0x44, 0x41, 0x4a, 0x75, 0x62, 0x7a, 0x45,
+    0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x0a, 0x41, 0x31,
+    0x55, 0x45, 0x43, 0x67, 0x77, 0x43, 0x62, 0x6d,
+    0x38, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67,
+    0x4e, 0x56, 0x42, 0x41, 0x73, 0x4d, 0x41, 0x6d,
+    0x35, 0x76, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51,
+    0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x41,
+    0x4a, 0x75, 0x62, 0x7a, 0x45, 0x52, 0x4d, 0x41,
+    0x38, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49,
+    0x62, 0x33, 0x44, 0x51, 0x45, 0x4a, 0x0a, 0x41,
+    0x52, 0x59, 0x43, 0x62, 0x6d, 0x38, 0x77, 0x48,
+    0x68, 0x63, 0x4e, 0x4d, 0x6a, 0x51, 0x77, 0x4d,
+    0x6a, 0x49, 0x34, 0x4d, 0x54, 0x6b, 0x7a, 0x4e,
+    0x7a, 0x45, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4d,
+    0x6a, 0x55, 0x77, 0x4d, 0x6a, 0x49, 0x33, 0x4d,
+    0x54, 0x6b, 0x7a, 0x4e, 0x7a, 0x45, 0x77, 0x57,
+    0x6a, 0x42, 0x68, 0x4d, 0x51, 0x73, 0x77, 0x43,
+    0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a,
+    0x45, 0x77, 0x4a, 0x75, 0x62, 0x7a, 0x45, 0x4c,
+    0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45,
+    0x43, 0x41, 0x77, 0x43, 0x62, 0x6d, 0x38, 0x78,
+    0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56,
+    0x42, 0x41, 0x63, 0x4d, 0x41, 0x6d, 0x35, 0x76,
+    0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44,
+    0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x4a, 0x75,
+    0x62, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47,
+    0x0a, 0x41, 0x31, 0x55, 0x45, 0x43, 0x77, 0x77,
+    0x43, 0x62, 0x6d, 0x38, 0x78, 0x43, 0x7a, 0x41,
+    0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d,
+    0x4d, 0x41, 0x6d, 0x35, 0x76, 0x4d, 0x52, 0x45,
+    0x77, 0x44, 0x77, 0x59, 0x4a, 0x4b, 0x6f, 0x5a,
+    0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x6b,
+    0x42, 0x46, 0x67, 0x4a, 0x75, 0x62, 0x7a, 0x43,
+    0x43, 0x41, 0x53, 0x49, 0x77, 0x44, 0x51, 0x59,
+    0x4a, 0x0a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76,
+    0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51,
+    0x41, 0x44, 0x67, 0x67, 0x45, 0x50, 0x41, 0x44,
+    0x43, 0x43, 0x41, 0x51, 0x6f, 0x43, 0x67, 0x67,
+    0x45, 0x42, 0x41, 0x4c, 0x57, 0x5a, 0x42, 0x39,
+    0x4d, 0x74, 0x61, 0x73, 0x30, 0x56, 0x39, 0x53,
+    0x79, 0x61, 0x2b, 0x55, 0x68, 0x45, 0x61, 0x62,
+    0x77, 0x7a, 0x73, 0x33, 0x45, 0x6f, 0x6c, 0x2b,
+    0x2f, 0x4d, 0x0a, 0x68, 0x77, 0x55, 0x46, 0x57,
+    0x49, 0x46, 0x72, 0x72, 0x38, 0x74, 0x56, 0x79,
+    0x59, 0x76, 0x67, 0x38, 0x58, 0x73, 0x2f, 0x4b,
+    0x6e, 0x43, 0x32, 0x56, 0x61, 0x45, 0x70, 0x6e,
+    0x45, 0x6c, 0x74, 0x42, 0x4e, 0x4c, 0x61, 0x4f,
+    0x41, 0x44, 0x5a, 0x47, 0x55, 0x75, 0x58, 0x7a,
+    0x7a, 0x35, 0x45, 0x62, 0x63, 0x63, 0x62, 0x32,
+    0x69, 0x31, 0x38, 0x67, 0x68, 0x76, 0x4d, 0x44,
+    0x58, 0x35, 0x6f, 0x0a, 0x4f, 0x77, 0x41, 0x41,
+    0x69, 0x64, 0x4c, 0x33, 0x74, 0x76, 0x36, 0x6c,
+    0x68, 0x38, 0x2f, 0x56, 0x75, 0x6a, 0x38, 0x74,
+    0x70, 0x4c, 0x41, 0x35, 0x33, 0x53, 0x44, 0x52,
+    0x35, 0x56, 0x54, 0x51, 0x63, 0x78, 0x69, 0x74,
+    0x69, 0x70, 0x73, 0x63, 0x63, 0x6a, 0x61, 0x63,
+    0x48, 0x44, 0x66, 0x74, 0x54, 0x71, 0x44, 0x41,
+    0x37, 0x2b, 0x39, 0x34, 0x53, 0x54, 0x54, 0x38,
+    0x51, 0x53, 0x48, 0x74, 0x0a, 0x57, 0x75, 0x35,
+    0x46, 0x6d, 0x58, 0x50, 0x4b, 0x76, 0x4a, 0x4c,
+    0x6d, 0x50, 0x75, 0x4b, 0x51, 0x4a, 0x4d, 0x62,
+    0x4f, 0x4a, 0x53, 0x47, 0x44, 0x4a, 0x4c, 0x76,
+    0x64, 0x54, 0x2f, 0x30, 0x64, 0x79, 0x4d, 0x39,
+    0x61, 0x55, 0x33, 0x78, 0x4b, 0x77, 0x36, 0x34,
+    0x69, 0x76, 0x37, 0x53, 0x33, 0x6c, 0x61, 0x45,
+    0x52, 0x57, 0x79, 0x57, 0x34, 0x2f, 0x4f, 0x65,
+    0x6d, 0x4d, 0x51, 0x58, 0x73, 0x0a, 0x69, 0x2b,
+    0x6b, 0x62, 0x61, 0x6e, 0x70, 0x56, 0x4e, 0x4a,
+    0x56, 0x6d, 0x71, 0x54, 0x74, 0x53, 0x2b, 0x71,
+    0x2f, 0x46, 0x79, 0x59, 0x76, 0x76, 0x72, 0x31,
+    0x4e, 0x70, 0x58, 0x30, 0x4f, 0x63, 0x2f, 0x41,
+    0x35, 0x48, 0x32, 0x48, 0x59, 0x51, 0x36, 0x66,
+    0x36, 0x50, 0x33, 0x6e, 0x76, 0x4a, 0x32, 0x32,
+    0x49, 0x4f, 0x58, 0x6f, 0x49, 0x63, 0x4e, 0x6a,
+    0x49, 0x31, 0x46, 0x6d, 0x4b, 0x62, 0x0a, 0x58,
+    0x33, 0x4e, 0x4a, 0x48, 0x65, 0x74, 0x48, 0x58,
+    0x74, 0x79, 0x5a, 0x4b, 0x58, 0x63, 0x66, 0x70,
+    0x69, 0x7a, 0x6c, 0x6a, 0x73, 0x4e, 0x76, 0x62,
+    0x66, 0x66, 0x73, 0x4c, 0x36, 0x74, 0x77, 0x78,
+    0x6a, 0x6a, 0x43, 0x52, 0x33, 0x4a, 0x64, 0x55,
+    0x71, 0x50, 0x31, 0x78, 0x45, 0x43, 0x65, 0x75,
+    0x6f, 0x4c, 0x42, 0x4d, 0x7a, 0x6b, 0x43, 0x41,
+    0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x54, 0x0a,
+    0x4d, 0x46, 0x45, 0x77, 0x48, 0x51, 0x59, 0x44,
+    0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45,
+    0x46, 0x4b, 0x5a, 0x32, 0x62, 0x39, 0x49, 0x4a,
+    0x33, 0x59, 0x57, 0x43, 0x59, 0x79, 0x4d, 0x6b,
+    0x52, 0x4f, 0x6a, 0x74, 0x6a, 0x46, 0x37, 0x43,
+    0x78, 0x73, 0x66, 0x61, 0x4d, 0x42, 0x38, 0x47,
+    0x41, 0x31, 0x55, 0x64, 0x49, 0x77, 0x51, 0x59,
+    0x4d, 0x42, 0x61, 0x41, 0x46, 0x4b, 0x5a, 0x32,
+    0x0a, 0x62, 0x39, 0x49, 0x4a, 0x33, 0x59, 0x57,
+    0x43, 0x59, 0x79, 0x4d, 0x6b, 0x52, 0x4f, 0x6a,
+    0x74, 0x6a, 0x46, 0x37, 0x43, 0x78, 0x73, 0x66,
+    0x61, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55,
+    0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51,
+    0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38,
+    0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a,
+    0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45,
+    0x4c, 0x0a, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67,
+    0x45, 0x42, 0x41, 0x47, 0x4a, 0x6f, 0x48, 0x44,
+    0x54, 0x73, 0x41, 0x69, 0x75, 0x52, 0x74, 0x41,
+    0x43, 0x54, 0x47, 0x69, 0x47, 0x7a, 0x2f, 0x6f,
+    0x79, 0x4e, 0x5a, 0x66, 0x48, 0x2f, 0x4f, 0x55,
+    0x4a, 0x61, 0x69, 0x6a, 0x55, 0x4d, 0x61, 0x4c,
+    0x62, 0x48, 0x64, 0x2f, 0x4a, 0x47, 0x32, 0x4c,
+    0x36, 0x67, 0x74, 0x70, 0x41, 0x43, 0x59, 0x59,
+    0x32, 0x62, 0x0a, 0x41, 0x6f, 0x4c, 0x6b, 0x49,
+    0x63, 0x43, 0x6c, 0x33, 0x38, 0x6e, 0x73, 0x4c,
+    0x59, 0x4d, 0x4c, 0x5a, 0x33, 0x32, 0x42, 0x62,
+    0x63, 0x35, 0x6a, 0x6e, 0x50, 0x2f, 0x51, 0x79,
+    0x33, 0x64, 0x32, 0x48, 0x4b, 0x73, 0x54, 0x4a,
+    0x35, 0x49, 0x74, 0x34, 0x71, 0x78, 0x44, 0x67,
+    0x74, 0x62, 0x74, 0x70, 0x55, 0x38, 0x65, 0x35,
+    0x4d, 0x68, 0x45, 0x65, 0x4a, 0x6f, 0x65, 0x4d,
+    0x48, 0x4f, 0x43, 0x0a, 0x66, 0x69, 0x7a, 0x62,
+    0x63, 0x57, 0x63, 0x37, 0x57, 0x37, 0x6d, 0x32,
+    0x53, 0x4c, 0x66, 0x70, 0x65, 0x51, 0x4a, 0x57,
+    0x4d, 0x67, 0x75, 0x32, 0x44, 0x61, 0x30, 0x48,
+    0x59, 0x45, 0x44, 0x53, 0x2f, 0x78, 0x7a, 0x4c,
+    0x6e, 0x37, 0x70, 0x78, 0x51, 0x67, 0x5a, 0x70,
+    0x4f, 0x72, 0x4d, 0x51, 0x37, 0x49, 0x68, 0x69,
+    0x31, 0x6a, 0x77, 0x58, 0x66, 0x4b, 0x46, 0x71,
+    0x49, 0x49, 0x61, 0x6c, 0x0a, 0x67, 0x36, 0x53,
+    0x69, 0x6a, 0x52, 0x47, 0x58, 0x68, 0x37, 0x6f,
+    0x6e, 0x45, 0x41, 0x78, 0x45, 0x6d, 0x4b, 0x4c,
+    0x6b, 0x70, 0x56, 0x51, 0x52, 0x71, 0x36, 0x33,
+    0x33, 0x42, 0x59, 0x50, 0x56, 0x36, 0x6f, 0x64,
+    0x78, 0x74, 0x58, 0x44, 0x68, 0x78, 0x79, 0x4a,
+    0x4b, 0x79, 0x47, 0x6a, 0x53, 0x4a, 0x73, 0x51,
+    0x6f, 0x4b, 0x76, 0x39, 0x6f, 0x43, 0x46, 0x32,
+    0x6b, 0x41, 0x64, 0x41, 0x69, 0x0a, 0x43, 0x76,
+    0x76, 0x61, 0x74, 0x71, 0x52, 0x57, 0x52, 0x77,
+    0x67, 0x49, 0x65, 0x6c, 0x6e, 0x31, 0x53, 0x77,
+    0x39, 0x45, 0x65, 0x36, 0x63, 0x54, 0x59, 0x5a,
+    0x43, 0x47, 0x32, 0x55, 0x2b, 0x2f, 0x55, 0x66,
+    0x2b, 0x4c, 0x73, 0x37, 0x66, 0x6a, 0x4e, 0x38,
+    0x74, 0x72, 0x62, 0x2f, 0x53, 0x68, 0x6d, 0x78,
+    0x6f, 0x38, 0x64, 0x6f, 0x2f, 0x6e, 0x70, 0x42,
+    0x6e, 0x7a, 0x38, 0x6a, 0x2b, 0x31, 0x0a, 0x61,
+    0x32, 0x76, 0x62, 0x7a, 0x33, 0x67, 0x70, 0x4f,
+    0x73, 0x6c, 0x38, 0x37, 0x55, 0x30, 0x63, 0x30,
+    0x31, 0x4a, 0x43, 0x6c, 0x39, 0x53, 0x5a, 0x58,
+    0x44, 0x53, 0x4f, 0x30, 0x39, 0x77, 0x3d, 0x0a,
+    0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44,
+    0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49,
+    0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d,
+    0x2d, 0x0a
 };
 
 #ifndef OPENSSL_NO_DEPRECATED_3_0
@@ -1406,1710 +250,219 @@
 -----END PRIVATE KEY-----
  */
 static const uint8_t RSAPrivateKeyPEM[] = {
-    0x2d,
-    0x2d,
-    0x2d,
-    0x2d,
-    0x2d,
-    0x42,
-    0x45,
-    0x47,
-    0x49,
-    0x4e,
-    0x20,
-    0x50,
-    0x52,
-    0x49,
-    0x56,
-    0x41,
-    0x54,
-    0x45,
-    0x20,
-    0x4b,
-    0x45,
-    0x59,
-    0x2d,
-    0x2d,
-    0x2d,
-    0x2d,
-    0x2d,
-    0x0a,
-    0x4d,
-    0x49,
-    0x49,
-    0x45,
-    0x76,
-    0x67,
-    0x49,
-    0x42,
-    0x41,
-    0x44,
-    0x41,
-    0x4e,
-    0x42,
-    0x67,
-    0x6b,
-    0x71,
-    0x68,
-    0x6b,
-    0x69,
-    0x47,
-    0x39,
-    0x77,
-    0x30,
-    0x42,
-    0x41,
-    0x51,
-    0x45,
-    0x46,
-    0x41,
-    0x41,
-    0x53,
-    0x43,
-    0x42,
-    0x4b,
-    0x67,
-    0x77,
-    0x67,
-    0x67,
-    0x53,
-    0x6b,
-    0x41,
-    0x67,
-    0x45,
-    0x41,
-    0x41,
-    0x6f,
-    0x49,
-    0x42,
-    0x41,
-    0x51,
-    0x43,
-    0x31,
-    0x6d,
-    0x51,
-    0x66,
-    0x54,
-    0x4c,
-    0x57,
-    0x72,
-    0x4e,
-    0x46,
-    0x66,
-    0x55,
-    0x73,
-    0x0a,
-    0x6d,
-    0x76,
-    0x6c,
-    0x49,
-    0x52,
-    0x47,
-    0x6d,
-    0x38,
-    0x4d,
-    0x37,
-    0x4e,
-    0x78,
-    0x4b,
-    0x4a,
-    0x66,
-    0x76,
-    0x7a,
-    0x49,
-    0x63,
-    0x46,
-    0x42,
-    0x56,
-    0x69,
-    0x42,
-    0x61,
-    0x36,
-    0x2f,
-    0x4c,
-    0x56,
-    0x63,
-    0x6d,
-    0x4c,
-    0x34,
-    0x50,
-    0x46,
-    0x37,
-    0x50,
-    0x79,
-    0x70,
-    0x77,
-    0x74,
-    0x6c,
-    0x57,
-    0x68,
-    0x4b,
-    0x5a,
-    0x78,
-    0x4a,
-    0x62,
-    0x51,
-    0x54,
-    0x53,
-    0x32,
-    0x6a,
-    0x67,
-    0x41,
-    0x32,
-    0x52,
-    0x6c,
-    0x4c,
-    0x6c,
-    0x38,
-    0x38,
-    0x2b,
-    0x0a,
-    0x52,
-    0x47,
-    0x33,
-    0x48,
-    0x47,
-    0x39,
-    0x6f,
-    0x74,
-    0x66,
-    0x49,
-    0x49,
-    0x62,
-    0x7a,
-    0x41,
-    0x31,
-    0x2b,
-    0x61,
-    0x44,
-    0x73,
-    0x41,
-    0x41,
-    0x49,
-    0x6e,
-    0x53,
-    0x39,
-    0x37,
-    0x62,
-    0x2b,
-    0x70,
-    0x59,
-    0x66,
-    0x50,
-    0x31,
-    0x62,
-    0x6f,
-    0x2f,
-    0x4c,
-    0x61,
-    0x53,
-    0x77,
-    0x4f,
-    0x64,
-    0x30,
-    0x67,
-    0x30,
-    0x65,
-    0x56,
-    0x55,
-    0x30,
-    0x48,
-    0x4d,
-    0x59,
-    0x72,
-    0x59,
-    0x71,
-    0x62,
-    0x48,
-    0x48,
-    0x49,
-    0x32,
-    0x6e,
-    0x42,
-    0x77,
-    0x33,
-    0x0a,
-    0x37,
-    0x55,
-    0x36,
-    0x67,
-    0x77,
-    0x4f,
-    0x2f,
-    0x76,
-    0x65,
-    0x45,
-    0x6b,
-    0x30,
-    0x2f,
-    0x45,
-    0x45,
-    0x68,
-    0x37,
-    0x56,
-    0x72,
-    0x75,
-    0x52,
-    0x5a,
-    0x6c,
-    0x7a,
-    0x79,
-    0x72,
-    0x79,
-    0x53,
-    0x35,
-    0x6a,
-    0x37,
-    0x69,
-    0x6b,
-    0x43,
-    0x54,
-    0x47,
-    0x7a,
-    0x69,
-    0x55,
-    0x68,
-    0x67,
-    0x79,
-    0x53,
-    0x37,
-    0x33,
-    0x55,
-    0x2f,
-    0x39,
-    0x48,
-    0x63,
-    0x6a,
-    0x50,
-    0x57,
-    0x6c,
-    0x4e,
-    0x38,
-    0x53,
-    0x73,
-    0x4f,
-    0x75,
-    0x49,
-    0x72,
-    0x2b,
-    0x30,
-    0x0a,
-    0x74,
-    0x35,
-    0x57,
-    0x68,
-    0x45,
-    0x56,
-    0x73,
-    0x6c,
-    0x75,
-    0x50,
-    0x7a,
-    0x6e,
-    0x70,
-    0x6a,
-    0x45,
-    0x46,
-    0x37,
-    0x49,
-    0x76,
-    0x70,
-    0x47,
-    0x32,
-    0x70,
-    0x36,
-    0x56,
-    0x54,
-    0x53,
-    0x56,
-    0x5a,
-    0x71,
-    0x6b,
-    0x37,
-    0x55,
-    0x76,
-    0x71,
-    0x76,
-    0x78,
-    0x63,
-    0x6d,
-    0x4c,
-    0x37,
-    0x36,
-    0x39,
-    0x54,
-    0x61,
-    0x56,
-    0x39,
-    0x44,
-    0x6e,
-    0x50,
-    0x77,
-    0x4f,
-    0x52,
-    0x39,
-    0x68,
-    0x32,
-    0x45,
-    0x4f,
-    0x6e,
-    0x2b,
-    0x6a,
-    0x39,
-    0x35,
-    0x37,
-    0x0a,
-    0x79,
-    0x64,
-    0x74,
-    0x69,
-    0x44,
-    0x6c,
-    0x36,
-    0x43,
-    0x48,
-    0x44,
-    0x59,
-    0x79,
-    0x4e,
-    0x52,
-    0x5a,
-    0x69,
-    0x6d,
-    0x31,
-    0x39,
-    0x7a,
-    0x53,
-    0x52,
-    0x33,
-    0x72,
-    0x52,
-    0x31,
-    0x37,
-    0x63,
-    0x6d,
-    0x53,
-    0x6c,
-    0x33,
-    0x48,
-    0x36,
-    0x59,
-    0x73,
-    0x35,
-    0x59,
-    0x37,
-    0x44,
-    0x62,
-    0x32,
-    0x33,
-    0x33,
-    0x37,
-    0x43,
-    0x2b,
-    0x72,
-    0x63,
-    0x4d,
-    0x59,
-    0x34,
-    0x77,
-    0x6b,
-    0x64,
-    0x79,
-    0x58,
-    0x56,
-    0x4b,
-    0x6a,
-    0x39,
-    0x63,
-    0x52,
-    0x41,
-    0x0a,
-    0x6e,
-    0x72,
-    0x71,
-    0x43,
-    0x77,
-    0x54,
-    0x4d,
-    0x35,
-    0x41,
-    0x67,
-    0x4d,
-    0x42,
-    0x41,
-    0x41,
-    0x45,
-    0x43,
-    0x67,
-    0x67,
-    0x45,
-    0x41,
-    0x46,
-    0x4f,
-    0x44,
-    0x2b,
-    0x58,
-    0x46,
-    0x4a,
-    0x5a,
-    0x65,
-    0x44,
-    0x44,
-    0x78,
-    0x47,
-    0x6d,
-    0x72,
-    0x4c,
-    0x42,
-    0x48,
-    0x73,
-    0x52,
-    0x4b,
-    0x52,
-    0x6c,
-    0x4d,
-    0x70,
-    0x56,
-    0x4d,
-    0x45,
-    0x66,
-    0x51,
-    0x61,
-    0x6e,
-    0x38,
-    0x33,
-    0x54,
-    0x55,
-    0x34,
-    0x7a,
-    0x52,
-    0x74,
-    0x5a,
-    0x74,
-    0x52,
-    0x37,
-    0x0a,
-    0x4d,
-    0x73,
-    0x44,
-    0x76,
-    0x49,
-    0x72,
-    0x74,
-    0x31,
-    0x64,
-    0x72,
-    0x59,
-    0x51,
-    0x44,
-    0x46,
-    0x4b,
-    0x4c,
-    0x62,
-    0x49,
-    0x6e,
-    0x44,
-    0x52,
-    0x7a,
-    0x62,
-    0x64,
-    0x76,
-    0x34,
-    0x4d,
-    0x32,
-    0x66,
-    0x46,
-    0x46,
-    0x38,
-    0x2b,
-    0x32,
-    0x7a,
-    0x45,
-    0x72,
-    0x6d,
-    0x4c,
-    0x4f,
-    0x5a,
-    0x2f,
-    0x4a,
-    0x72,
-    0x78,
-    0x79,
-    0x52,
-    0x6a,
-    0x33,
-    0x4d,
-    0x66,
-    0x42,
-    0x47,
-    0x4e,
-    0x50,
-    0x33,
-    0x42,
-    0x4c,
-    0x47,
-    0x45,
-    0x63,
-    0x61,
-    0x79,
-    0x34,
-    0x0a,
-    0x65,
-    0x37,
-    0x58,
-    0x59,
-    0x44,
-    0x78,
-    0x47,
-    0x42,
-    0x59,
-    0x4e,
-    0x32,
-    0x57,
-    0x52,
-    0x67,
-    0x4b,
-    0x37,
-    0x2b,
-    0x6b,
-    0x39,
-    0x70,
-    0x48,
-    0x45,
-    0x6f,
-    0x2f,
-    0x71,
-    0x47,
-    0x76,
-    0x52,
-    0x32,
-    0x65,
-    0x4f,
-    0x43,
-    0x2f,
-    0x77,
-    0x38,
-    0x69,
-    0x76,
-    0x69,
-    0x72,
-    0x51,
-    0x71,
-    0x31,
-    0x6a,
-    0x4b,
-    0x47,
-    0x66,
-    0x52,
-    0x79,
-    0x7a,
-    0x4b,
-    0x4c,
-    0x4d,
-    0x6c,
-    0x4a,
-    0x36,
-    0x64,
-    0x38,
-    0x51,
-    0x6b,
-    0x37,
-    0x4f,
-    0x79,
-    0x78,
-    0x5a,
-    0x0a,
-    0x6e,
-    0x30,
-    0x75,
-    0x33,
-    0x76,
-    0x32,
-    0x45,
-    0x4a,
-    0x39,
-    0x43,
-    0x57,
-    0x6f,
-    0x4e,
-    0x44,
-    0x67,
-    0x55,
-    0x48,
-    0x34,
-    0x65,
-    0x78,
-    0x43,
-    0x69,
-    0x6c,
-    0x2f,
-    0x4f,
-    0x65,
-    0x34,
-    0x68,
-    0x35,
-    0x57,
-    0x41,
-    0x35,
-    0x39,
-    0x78,
-    0x54,
-    0x35,
-    0x4e,
-    0x41,
-    0x6b,
-    0x78,
-    0x34,
-    0x52,
-    0x55,
-    0x6f,
-    0x6a,
-    0x73,
-    0x4a,
-    0x69,
-    0x45,
-    0x78,
-    0x57,
-    0x5a,
-    0x70,
-    0x7a,
-    0x54,
-    0x2f,
-    0x56,
-    0x58,
-    0x31,
-    0x64,
-    0x32,
-    0x31,
-    0x6d,
-    0x4e,
-    0x0a,
-    0x57,
-    0x4d,
-    0x62,
-    0x35,
-    0x45,
-    0x4f,
-    0x38,
-    0x65,
-    0x79,
-    0x69,
-    0x36,
-    0x46,
-    0x79,
-    0x5a,
-    0x6c,
-    0x41,
-    0x63,
-    0x62,
-    0x39,
-    0x4d,
-    0x49,
-    0x44,
-    0x30,
-    0x6b,
-    0x4d,
-    0x46,
-    0x36,
-    0x51,
-    0x33,
-    0x68,
-    0x55,
-    0x76,
-    0x2b,
-    0x6a,
-    0x54,
-    0x77,
-    0x2b,
-    0x58,
-    0x39,
-    0x79,
-    0x69,
-    0x67,
-    0x2b,
-    0x33,
-    0x42,
-    0x39,
-    0x62,
-    0x67,
-    0x32,
-    0x5a,
-    0x30,
-    0x49,
-    0x2b,
-    0x49,
-    0x4b,
-    0x48,
-    0x6c,
-    0x39,
-    0x49,
-    0x6e,
-    0x53,
-    0x68,
-    0x6b,
-    0x43,
-    0x0a,
-    0x6e,
-    0x64,
-    0x59,
-    0x6e,
-    0x34,
-    0x61,
-    0x64,
-    0x30,
-    0x7a,
-    0x64,
-    0x2f,
-    0x67,
-    0x67,
-    0x4d,
-    0x56,
-    0x6b,
-    0x6c,
-    0x6f,
-    0x6f,
-    0x6d,
-    0x68,
-    0x34,
-    0x75,
-    0x61,
-    0x53,
-    0x71,
-    0x5a,
-    0x78,
-    0x55,
-    0x69,
-    0x33,
-    0x79,
-    0x77,
-    0x74,
-    0x73,
-    0x7a,
-    0x5a,
-    0x6b,
-    0x52,
-    0x62,
-    0x7a,
-    0x51,
-    0x4b,
-    0x42,
-    0x67,
-    0x51,
-    0x44,
-    0x37,
-    0x50,
-    0x76,
-    0x78,
-    0x31,
-    0x45,
-    0x72,
-    0x4b,
-    0x6d,
-    0x35,
-    0x6c,
-    0x5a,
-    0x44,
-    0x41,
-    0x53,
-    0x32,
-    0x62,
-    0x0a,
-    0x62,
-    0x34,
-    0x72,
-    0x6c,
-    0x74,
-    0x7a,
-    0x71,
-    0x4a,
-    0x52,
-    0x55,
-    0x45,
-    0x4b,
-    0x79,
-    0x45,
-    0x71,
-    0x6a,
-    0x71,
-    0x7a,
-    0x50,
-    0x7a,
-    0x67,
-    0x61,
-    0x73,
-    0x4f,
-    0x61,
-    0x30,
-    0x6a,
-    0x57,
-    0x45,
-    0x71,
-    0x2f,
-    0x66,
-    0x78,
-    0x75,
-    0x47,
-    0x63,
-    0x2f,
-    0x62,
-    0x69,
-    0x78,
-    0x67,
-    0x2f,
-    0x45,
-    0x42,
-    0x61,
-    0x51,
-    0x38,
-    0x79,
-    0x79,
-    0x54,
-    0x47,
-    0x59,
-    0x64,
-    0x49,
-    0x59,
-    0x79,
-    0x72,
-    0x37,
-    0x44,
-    0x4b,
-    0x59,
-    0x59,
-    0x6a,
-    0x43,
-    0x0a,
-    0x30,
-    0x41,
-    0x47,
-    0x56,
-    0x6e,
-    0x42,
-    0x43,
-    0x68,
-    0x30,
-    0x2b,
-    0x54,
-    0x46,
-    0x55,
-    0x44,
-    0x42,
-    0x31,
-    0x6b,
-    0x66,
-    0x77,
-    0x6b,
-    0x62,
-    0x65,
-    0x66,
-    0x32,
-    0x62,
-    0x38,
-    0x79,
-    0x75,
-    0x66,
-    0x51,
-    0x2f,
-    0x76,
-    0x4a,
-    0x77,
-    0x63,
-    0x4f,
-    0x4a,
-    0x2b,
-    0x35,
-    0x6b,
-    0x42,
-    0x58,
-    0x51,
-    0x5a,
-    0x78,
-    0x38,
-    0x2b,
-    0x4c,
-    0x38,
-    0x55,
-    0x39,
-    0x69,
-    0x57,
-    0x4b,
-    0x41,
-    0x4e,
-    0x58,
-    0x78,
-    0x6b,
-    0x45,
-    0x65,
-    0x43,
-    0x58,
-    0x32,
-    0x0a,
-    0x69,
-    0x57,
-    0x50,
-    0x5a,
-    0x50,
-    0x7a,
-    0x35,
-    0x32,
-    0x70,
-    0x54,
-    0x54,
-    0x59,
-    0x6c,
-    0x66,
-    0x39,
-    0x30,
-    0x50,
-    0x4c,
-    0x7a,
-    0x45,
-    0x57,
-    0x36,
-    0x51,
-    0x79,
-    0x44,
-    0x77,
-    0x4b,
-    0x42,
-    0x67,
-    0x51,
-    0x43,
-    0x35,
-    0x43,
-    0x4b,
-    0x79,
-    0x66,
-    0x55,
-    0x77,
-    0x78,
-    0x33,
-    0x42,
-    0x61,
-    0x32,
-    0x69,
-    0x58,
-    0x74,
-    0x66,
-    0x49,
-    0x72,
-    0x65,
-    0x79,
-    0x50,
-    0x71,
-    0x44,
-    0x6f,
-    0x62,
-    0x62,
-    0x79,
-    0x62,
-    0x79,
-    0x54,
-    0x45,
-    0x59,
-    0x6b,
-    0x0a,
-    0x61,
-    0x79,
-    0x41,
-    0x32,
-    0x6f,
-    0x45,
-    0x6c,
-    0x53,
-    0x64,
-    0x65,
-    0x6a,
-    0x67,
-    0x56,
-    0x6b,
-    0x57,
-    0x77,
-    0x4a,
-    0x2b,
-    0x71,
-    0x37,
-    0x37,
-    0x67,
-    0x77,
-    0x72,
-    0x6e,
-    0x46,
-    0x35,
-    0x50,
-    0x65,
-    0x39,
-    0x7a,
-    0x62,
-    0x70,
-    0x55,
-    0x42,
-    0x6f,
-    0x63,
-    0x37,
-    0x56,
-    0x4a,
-    0x6a,
-    0x72,
-    0x52,
-    0x68,
-    0x55,
-    0x6f,
-    0x6a,
-    0x49,
-    0x37,
-    0x4c,
-    0x4f,
-    0x79,
-    0x53,
-    0x79,
-    0x74,
-    0x6f,
-    0x33,
-    0x57,
-    0x59,
-    0x59,
-    0x6f,
-    0x63,
-    0x7a,
-    0x58,
-    0x0a,
-    0x4c,
-    0x70,
-    0x72,
-    0x7a,
-    0x50,
-    0x6e,
-    0x6a,
-    0x32,
-    0x79,
-    0x45,
-    0x56,
-    0x65,
-    0x56,
-    0x32,
-    0x6c,
-    0x72,
-    0x54,
-    0x53,
-    0x36,
-    0x6c,
-    0x4b,
-    0x4e,
-    0x70,
-    0x64,
-    0x72,
-    0x61,
-    0x4f,
-    0x38,
-    0x51,
-    0x5a,
-    0x63,
-    0x53,
-    0x44,
-    0x37,
-    0x6d,
-    0x55,
-    0x55,
-    0x6d,
-    0x69,
-    0x4e,
-    0x52,
-    0x5a,
-    0x6e,
-    0x6f,
-    0x50,
-    0x4b,
-    0x31,
-    0x36,
-    0x4d,
-    0x6d,
-    0x39,
-    0x71,
-    0x6a,
-    0x6b,
-    0x6b,
-    0x32,
-    0x39,
-    0x48,
-    0x6e,
-    0x59,
-    0x37,
-    0x4d,
-    0x73,
-    0x71,
-    0x0a,
-    0x70,
-    0x6b,
-    0x69,
-    0x4f,
-    0x67,
-    0x34,
-    0x68,
-    0x75,
-    0x4e,
-    0x77,
-    0x4b,
-    0x42,
-    0x67,
-    0x51,
-    0x43,
-    0x6b,
-    0x68,
-    0x32,
-    0x48,
-    0x42,
-    0x74,
-    0x4f,
-    0x58,
-    0x6a,
-    0x48,
-    0x2f,
-    0x47,
-    0x62,
-    0x58,
-    0x56,
-    0x6b,
-    0x6c,
-    0x63,
-    0x63,
-    0x30,
-    0x4f,
-    0x6b,
-    0x34,
-    0x65,
-    0x30,
-    0x76,
-    0x76,
-    0x4a,
-    0x53,
-    0x41,
-    0x6b,
-    0x6e,
-    0x47,
-    0x6c,
-    0x6d,
-    0x57,
-    0x6c,
-    0x37,
-    0x2b,
-    0x4d,
-    0x35,
-    0x78,
-    0x51,
-    0x33,
-    0x6b,
-    0x69,
-    0x6b,
-    0x59,
-    0x38,
-    0x0a,
-    0x44,
-    0x37,
-    0x78,
-    0x4e,
-    0x46,
-    0x32,
-    0x58,
-    0x73,
-    0x63,
-    0x59,
-    0x2f,
-    0x51,
-    0x73,
-    0x61,
-    0x44,
-    0x76,
-    0x54,
-    0x41,
-    0x75,
-    0x37,
-    0x58,
-    0x34,
-    0x74,
-    0x47,
-    0x42,
-    0x41,
-    0x47,
-    0x4d,
-    0x39,
-    0x6f,
-    0x51,
-    0x64,
-    0x74,
-    0x79,
-    0x4e,
-    0x69,
-    0x65,
-    0x74,
-    0x6e,
-    0x31,
-    0x62,
-    0x35,
-    0x4a,
-    0x66,
-    0x6d,
-    0x42,
-    0x79,
-    0x7a,
-    0x30,
-    0x55,
-    0x37,
-    0x42,
-    0x2b,
-    0x47,
-    0x73,
-    0x76,
-    0x32,
-    0x5a,
-    0x53,
-    0x37,
-    0x4b,
-    0x31,
-    0x44,
-    0x55,
-    0x0a,
-    0x39,
-    0x73,
-    0x54,
-    0x4c,
-    0x41,
-    0x32,
-    0x45,
-    0x38,
-    0x68,
-    0x4d,
-    0x6d,
-    0x37,
-    0x33,
-    0x44,
-    0x70,
-    0x51,
-    0x31,
-    0x55,
-    0x78,
-    0x38,
-    0x42,
-    0x62,
-    0x65,
-    0x43,
-    0x4b,
-    0x69,
-    0x56,
-    0x79,
-    0x35,
-    0x4d,
-    0x39,
-    0x50,
-    0x66,
-    0x44,
-    0x63,
-    0x7a,
-    0x33,
-    0x42,
-    0x4f,
-    0x6d,
-    0x6c,
-    0x4a,
-    0x64,
-    0x66,
-    0x77,
-    0x68,
-    0x4b,
-    0x51,
-    0x5a,
-    0x76,
-    0x6e,
-    0x69,
-    0x79,
-    0x48,
-    0x52,
-    0x6c,
-    0x42,
-    0x77,
-    0x4b,
-    0x42,
-    0x67,
-    0x51,
-    0x43,
-    0x48,
-    0x0a,
-    0x2f,
-    0x73,
-    0x41,
-    0x68,
-    0x4f,
-    0x63,
-    0x44,
-    0x6e,
-    0x6d,
-    0x64,
-    0x7a,
-    0x4d,
-    0x67,
-    0x6a,
-    0x6a,
-    0x47,
-    0x33,
-    0x6b,
-    0x34,
-    0x49,
-    0x4a,
-    0x2f,
-    0x54,
-    0x4e,
-    0x52,
-    0x52,
-    0x79,
-    0x79,
-    0x36,
-    0x53,
-    0x79,
-    0x45,
-    0x68,
-    0x39,
-    0x66,
-    0x64,
-    0x54,
-    0x6d,
-    0x47,
-    0x56,
-    0x6f,
-    0x65,
-    0x50,
-    0x50,
-    0x50,
-    0x70,
-    0x6c,
-    0x70,
-    0x70,
-    0x32,
-    0x7a,
-    0x33,
-    0x51,
-    0x7a,
-    0x62,
-    0x65,
-    0x74,
-    0x73,
-    0x62,
-    0x36,
-    0x56,
-    0x47,
-    0x63,
-    0x33,
-    0x0a,
-    0x61,
-    0x48,
-    0x57,
-    0x32,
-    0x54,
-    0x35,
-    0x54,
-    0x6d,
-    0x77,
-    0x32,
-    0x51,
-    0x41,
-    0x51,
-    0x39,
-    0x45,
-    0x56,
-    0x48,
-    0x43,
-    0x50,
-    0x57,
-    0x33,
-    0x7a,
-    0x6a,
-    0x41,
-    0x6b,
-    0x6a,
-    0x6a,
-    0x2f,
-    0x30,
-    0x61,
-    0x76,
-    0x6b,
-    0x57,
-    0x2f,
-    0x53,
-    0x32,
-    0x34,
-    0x79,
-    0x75,
-    0x30,
-    0x39,
-    0x65,
-    0x31,
-    0x47,
-    0x4d,
-    0x61,
-    0x6a,
-    0x68,
-    0x6e,
-    0x4a,
-    0x43,
-    0x30,
-    0x41,
-    0x78,
-    0x71,
-    0x37,
-    0x7a,
-    0x32,
-    0x75,
-    0x51,
-    0x61,
-    0x67,
-    0x54,
-    0x47,
-    0x0a,
-    0x32,
-    0x5a,
-    0x66,
-    0x6b,
-    0x55,
-    0x38,
-    0x31,
-    0x55,
-    0x52,
-    0x39,
-    0x75,
-    0x65,
-    0x76,
-    0x54,
-    0x6f,
-    0x6a,
-    0x6e,
-    0x66,
-    0x34,
-    0x56,
-    0x71,
-    0x77,
-    0x35,
-    0x55,
-    0x76,
-    0x63,
-    0x72,
-    0x77,
-    0x6a,
-    0x4e,
-    0x6d,
-    0x6d,
-    0x4e,
-    0x79,
-    0x45,
-    0x4d,
-    0x33,
-    0x63,
-    0x2f,
-    0x67,
-    0x63,
-    0x51,
-    0x4b,
-    0x42,
-    0x67,
-    0x48,
-    0x61,
-    0x32,
-    0x64,
-    0x54,
-    0x35,
-    0x73,
-    0x76,
-    0x7a,
-    0x4d,
-    0x31,
-    0x6a,
-    0x52,
-    0x65,
-    0x69,
-    0x4f,
-    0x33,
-    0x56,
-    0x74,
-    0x0a,
-    0x64,
-    0x41,
-    0x55,
-    0x44,
-    0x7a,
-    0x74,
-    0x47,
-    0x4b,
-    0x55,
-    0x45,
-    0x33,
-    0x63,
-    0x6c,
-    0x50,
-    0x56,
-    0x33,
-    0x35,
-    0x4c,
-    0x32,
-    0x78,
-    0x6d,
-    0x4a,
-    0x65,
-    0x4a,
-    0x44,
-    0x58,
-    0x50,
-    0x4f,
-    0x71,
-    0x43,
-    0x4c,
-    0x33,
-    0x71,
-    0x6f,
-    0x5a,
-    0x39,
-    0x41,
-    0x36,
-    0x68,
-    0x48,
-    0x6d,
-    0x44,
-    0x77,
-    0x36,
-    0x67,
-    0x6d,
-    0x67,
-    0x38,
-    0x32,
-    0x67,
-    0x51,
-    0x44,
-    0x51,
-    0x65,
-    0x4a,
-    0x62,
-    0x4c,
-    0x2f,
-    0x2b,
-    0x6a,
-    0x4b,
-    0x6b,
-    0x6f,
-    0x6e,
-    0x0a,
-    0x65,
-    0x36,
-    0x61,
-    0x74,
-    0x48,
-    0x2f,
-    0x44,
-    0x66,
-    0x72,
-    0x2b,
-    0x4d,
-    0x34,
-    0x6e,
-    0x50,
-    0x66,
-    0x74,
-    0x39,
-    0x4c,
-    0x74,
-    0x34,
-    0x66,
-    0x4f,
-    0x41,
-    0x57,
-    0x4f,
-    0x51,
-    0x33,
-    0x74,
-    0x44,
-    0x73,
-    0x44,
-    0x75,
-    0x43,
-    0x6b,
-    0x4f,
-    0x4d,
-    0x6a,
-    0x53,
-    0x54,
-    0x6e,
-    0x38,
-    0x63,
-    0x4c,
-    0x4d,
-    0x5a,
-    0x4c,
-    0x47,
-    0x63,
-    0x77,
-    0x54,
-    0x32,
-    0x48,
-    0x31,
-    0x48,
-    0x32,
-    0x76,
-    0x42,
-    0x6f,
-    0x63,
-    0x4d,
-    0x2b,
-    0x55,
-    0x54,
-    0x64,
-    0x0a,
-    0x68,
-    0x6c,
-    0x6a,
-    0x41,
-    0x56,
-    0x6e,
-    0x42,
-    0x39,
-    0x76,
-    0x36,
-    0x4e,
-    0x4d,
-    0x66,
-    0x63,
-    0x52,
-    0x45,
-    0x52,
-    0x54,
-    0x78,
-    0x31,
-    0x30,
-    0x53,
-    0x55,
-    0x63,
-    0x0a,
-    0x2d,
-    0x2d,
-    0x2d,
-    0x2d,
-    0x2d,
-    0x45,
-    0x4e,
-    0x44,
-    0x20,
-    0x50,
-    0x52,
-    0x49,
-    0x56,
-    0x41,
-    0x54,
-    0x45,
-    0x20,
-    0x4b,
-    0x45,
-    0x59,
-    0x2d,
-    0x2d,
-    0x2d,
-    0x2d,
-    0x2d,
-    0x0a,
+    0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47,
+    0x49, 0x4e, 0x20, 0x50, 0x52, 0x49, 0x56, 0x41,
+    0x54, 0x45, 0x20, 0x4b, 0x45, 0x59, 0x2d, 0x2d,
+    0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x45,
+    0x76, 0x67, 0x49, 0x42, 0x41, 0x44, 0x41, 0x4e,
+    0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47,
+    0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46,
+    0x41, 0x41, 0x53, 0x43, 0x42, 0x4b, 0x67, 0x77,
+    0x67, 0x67, 0x53, 0x6b, 0x41, 0x67, 0x45, 0x41,
+    0x41, 0x6f, 0x49, 0x42, 0x41, 0x51, 0x43, 0x31,
+    0x6d, 0x51, 0x66, 0x54, 0x4c, 0x57, 0x72, 0x4e,
+    0x46, 0x66, 0x55, 0x73, 0x0a, 0x6d, 0x76, 0x6c,
+    0x49, 0x52, 0x47, 0x6d, 0x38, 0x4d, 0x37, 0x4e,
+    0x78, 0x4b, 0x4a, 0x66, 0x76, 0x7a, 0x49, 0x63,
+    0x46, 0x42, 0x56, 0x69, 0x42, 0x61, 0x36, 0x2f,
+    0x4c, 0x56, 0x63, 0x6d, 0x4c, 0x34, 0x50, 0x46,
+    0x37, 0x50, 0x79, 0x70, 0x77, 0x74, 0x6c, 0x57,
+    0x68, 0x4b, 0x5a, 0x78, 0x4a, 0x62, 0x51, 0x54,
+    0x53, 0x32, 0x6a, 0x67, 0x41, 0x32, 0x52, 0x6c,
+    0x4c, 0x6c, 0x38, 0x38, 0x2b, 0x0a, 0x52, 0x47,
+    0x33, 0x48, 0x47, 0x39, 0x6f, 0x74, 0x66, 0x49,
+    0x49, 0x62, 0x7a, 0x41, 0x31, 0x2b, 0x61, 0x44,
+    0x73, 0x41, 0x41, 0x49, 0x6e, 0x53, 0x39, 0x37,
+    0x62, 0x2b, 0x70, 0x59, 0x66, 0x50, 0x31, 0x62,
+    0x6f, 0x2f, 0x4c, 0x61, 0x53, 0x77, 0x4f, 0x64,
+    0x30, 0x67, 0x30, 0x65, 0x56, 0x55, 0x30, 0x48,
+    0x4d, 0x59, 0x72, 0x59, 0x71, 0x62, 0x48, 0x48,
+    0x49, 0x32, 0x6e, 0x42, 0x77, 0x33, 0x0a, 0x37,
+    0x55, 0x36, 0x67, 0x77, 0x4f, 0x2f, 0x76, 0x65,
+    0x45, 0x6b, 0x30, 0x2f, 0x45, 0x45, 0x68, 0x37,
+    0x56, 0x72, 0x75, 0x52, 0x5a, 0x6c, 0x7a, 0x79,
+    0x72, 0x79, 0x53, 0x35, 0x6a, 0x37, 0x69, 0x6b,
+    0x43, 0x54, 0x47, 0x7a, 0x69, 0x55, 0x68, 0x67,
+    0x79, 0x53, 0x37, 0x33, 0x55, 0x2f, 0x39, 0x48,
+    0x63, 0x6a, 0x50, 0x57, 0x6c, 0x4e, 0x38, 0x53,
+    0x73, 0x4f, 0x75, 0x49, 0x72, 0x2b, 0x30, 0x0a,
+    0x74, 0x35, 0x57, 0x68, 0x45, 0x56, 0x73, 0x6c,
+    0x75, 0x50, 0x7a, 0x6e, 0x70, 0x6a, 0x45, 0x46,
+    0x37, 0x49, 0x76, 0x70, 0x47, 0x32, 0x70, 0x36,
+    0x56, 0x54, 0x53, 0x56, 0x5a, 0x71, 0x6b, 0x37,
+    0x55, 0x76, 0x71, 0x76, 0x78, 0x63, 0x6d, 0x4c,
+    0x37, 0x36, 0x39, 0x54, 0x61, 0x56, 0x39, 0x44,
+    0x6e, 0x50, 0x77, 0x4f, 0x52, 0x39, 0x68, 0x32,
+    0x45, 0x4f, 0x6e, 0x2b, 0x6a, 0x39, 0x35, 0x37,
+    0x0a, 0x79, 0x64, 0x74, 0x69, 0x44, 0x6c, 0x36,
+    0x43, 0x48, 0x44, 0x59, 0x79, 0x4e, 0x52, 0x5a,
+    0x69, 0x6d, 0x31, 0x39, 0x7a, 0x53, 0x52, 0x33,
+    0x72, 0x52, 0x31, 0x37, 0x63, 0x6d, 0x53, 0x6c,
+    0x33, 0x48, 0x36, 0x59, 0x73, 0x35, 0x59, 0x37,
+    0x44, 0x62, 0x32, 0x33, 0x33, 0x37, 0x43, 0x2b,
+    0x72, 0x63, 0x4d, 0x59, 0x34, 0x77, 0x6b, 0x64,
+    0x79, 0x58, 0x56, 0x4b, 0x6a, 0x39, 0x63, 0x52,
+    0x41, 0x0a, 0x6e, 0x72, 0x71, 0x43, 0x77, 0x54,
+    0x4d, 0x35, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41,
+    0x45, 0x43, 0x67, 0x67, 0x45, 0x41, 0x46, 0x4f,
+    0x44, 0x2b, 0x58, 0x46, 0x4a, 0x5a, 0x65, 0x44,
+    0x44, 0x78, 0x47, 0x6d, 0x72, 0x4c, 0x42, 0x48,
+    0x73, 0x52, 0x4b, 0x52, 0x6c, 0x4d, 0x70, 0x56,
+    0x4d, 0x45, 0x66, 0x51, 0x61, 0x6e, 0x38, 0x33,
+    0x54, 0x55, 0x34, 0x7a, 0x52, 0x74, 0x5a, 0x74,
+    0x52, 0x37, 0x0a, 0x4d, 0x73, 0x44, 0x76, 0x49,
+    0x72, 0x74, 0x31, 0x64, 0x72, 0x59, 0x51, 0x44,
+    0x46, 0x4b, 0x4c, 0x62, 0x49, 0x6e, 0x44, 0x52,
+    0x7a, 0x62, 0x64, 0x76, 0x34, 0x4d, 0x32, 0x66,
+    0x46, 0x46, 0x38, 0x2b, 0x32, 0x7a, 0x45, 0x72,
+    0x6d, 0x4c, 0x4f, 0x5a, 0x2f, 0x4a, 0x72, 0x78,
+    0x79, 0x52, 0x6a, 0x33, 0x4d, 0x66, 0x42, 0x47,
+    0x4e, 0x50, 0x33, 0x42, 0x4c, 0x47, 0x45, 0x63,
+    0x61, 0x79, 0x34, 0x0a, 0x65, 0x37, 0x58, 0x59,
+    0x44, 0x78, 0x47, 0x42, 0x59, 0x4e, 0x32, 0x57,
+    0x52, 0x67, 0x4b, 0x37, 0x2b, 0x6b, 0x39, 0x70,
+    0x48, 0x45, 0x6f, 0x2f, 0x71, 0x47, 0x76, 0x52,
+    0x32, 0x65, 0x4f, 0x43, 0x2f, 0x77, 0x38, 0x69,
+    0x76, 0x69, 0x72, 0x51, 0x71, 0x31, 0x6a, 0x4b,
+    0x47, 0x66, 0x52, 0x79, 0x7a, 0x4b, 0x4c, 0x4d,
+    0x6c, 0x4a, 0x36, 0x64, 0x38, 0x51, 0x6b, 0x37,
+    0x4f, 0x79, 0x78, 0x5a, 0x0a, 0x6e, 0x30, 0x75,
+    0x33, 0x76, 0x32, 0x45, 0x4a, 0x39, 0x43, 0x57,
+    0x6f, 0x4e, 0x44, 0x67, 0x55, 0x48, 0x34, 0x65,
+    0x78, 0x43, 0x69, 0x6c, 0x2f, 0x4f, 0x65, 0x34,
+    0x68, 0x35, 0x57, 0x41, 0x35, 0x39, 0x78, 0x54,
+    0x35, 0x4e, 0x41, 0x6b, 0x78, 0x34, 0x52, 0x55,
+    0x6f, 0x6a, 0x73, 0x4a, 0x69, 0x45, 0x78, 0x57,
+    0x5a, 0x70, 0x7a, 0x54, 0x2f, 0x56, 0x58, 0x31,
+    0x64, 0x32, 0x31, 0x6d, 0x4e, 0x0a, 0x57, 0x4d,
+    0x62, 0x35, 0x45, 0x4f, 0x38, 0x65, 0x79, 0x69,
+    0x36, 0x46, 0x79, 0x5a, 0x6c, 0x41, 0x63, 0x62,
+    0x39, 0x4d, 0x49, 0x44, 0x30, 0x6b, 0x4d, 0x46,
+    0x36, 0x51, 0x33, 0x68, 0x55, 0x76, 0x2b, 0x6a,
+    0x54, 0x77, 0x2b, 0x58, 0x39, 0x79, 0x69, 0x67,
+    0x2b, 0x33, 0x42, 0x39, 0x62, 0x67, 0x32, 0x5a,
+    0x30, 0x49, 0x2b, 0x49, 0x4b, 0x48, 0x6c, 0x39,
+    0x49, 0x6e, 0x53, 0x68, 0x6b, 0x43, 0x0a, 0x6e,
+    0x64, 0x59, 0x6e, 0x34, 0x61, 0x64, 0x30, 0x7a,
+    0x64, 0x2f, 0x67, 0x67, 0x4d, 0x56, 0x6b, 0x6c,
+    0x6f, 0x6f, 0x6d, 0x68, 0x34, 0x75, 0x61, 0x53,
+    0x71, 0x5a, 0x78, 0x55, 0x69, 0x33, 0x79, 0x77,
+    0x74, 0x73, 0x7a, 0x5a, 0x6b, 0x52, 0x62, 0x7a,
+    0x51, 0x4b, 0x42, 0x67, 0x51, 0x44, 0x37, 0x50,
+    0x76, 0x78, 0x31, 0x45, 0x72, 0x4b, 0x6d, 0x35,
+    0x6c, 0x5a, 0x44, 0x41, 0x53, 0x32, 0x62, 0x0a,
+    0x62, 0x34, 0x72, 0x6c, 0x74, 0x7a, 0x71, 0x4a,
+    0x52, 0x55, 0x45, 0x4b, 0x79, 0x45, 0x71, 0x6a,
+    0x71, 0x7a, 0x50, 0x7a, 0x67, 0x61, 0x73, 0x4f,
+    0x61, 0x30, 0x6a, 0x57, 0x45, 0x71, 0x2f, 0x66,
+    0x78, 0x75, 0x47, 0x63, 0x2f, 0x62, 0x69, 0x78,
+    0x67, 0x2f, 0x45, 0x42, 0x61, 0x51, 0x38, 0x79,
+    0x79, 0x54, 0x47, 0x59, 0x64, 0x49, 0x59, 0x79,
+    0x72, 0x37, 0x44, 0x4b, 0x59, 0x59, 0x6a, 0x43,
+    0x0a, 0x30, 0x41, 0x47, 0x56, 0x6e, 0x42, 0x43,
+    0x68, 0x30, 0x2b, 0x54, 0x46, 0x55, 0x44, 0x42,
+    0x31, 0x6b, 0x66, 0x77, 0x6b, 0x62, 0x65, 0x66,
+    0x32, 0x62, 0x38, 0x79, 0x75, 0x66, 0x51, 0x2f,
+    0x76, 0x4a, 0x77, 0x63, 0x4f, 0x4a, 0x2b, 0x35,
+    0x6b, 0x42, 0x58, 0x51, 0x5a, 0x78, 0x38, 0x2b,
+    0x4c, 0x38, 0x55, 0x39, 0x69, 0x57, 0x4b, 0x41,
+    0x4e, 0x58, 0x78, 0x6b, 0x45, 0x65, 0x43, 0x58,
+    0x32, 0x0a, 0x69, 0x57, 0x50, 0x5a, 0x50, 0x7a,
+    0x35, 0x32, 0x70, 0x54, 0x54, 0x59, 0x6c, 0x66,
+    0x39, 0x30, 0x50, 0x4c, 0x7a, 0x45, 0x57, 0x36,
+    0x51, 0x79, 0x44, 0x77, 0x4b, 0x42, 0x67, 0x51,
+    0x43, 0x35, 0x43, 0x4b, 0x79, 0x66, 0x55, 0x77,
+    0x78, 0x33, 0x42, 0x61, 0x32, 0x69, 0x58, 0x74,
+    0x66, 0x49, 0x72, 0x65, 0x79, 0x50, 0x71, 0x44,
+    0x6f, 0x62, 0x62, 0x79, 0x62, 0x79, 0x54, 0x45,
+    0x59, 0x6b, 0x0a, 0x61, 0x79, 0x41, 0x32, 0x6f,
+    0x45, 0x6c, 0x53, 0x64, 0x65, 0x6a, 0x67, 0x56,
+    0x6b, 0x57, 0x77, 0x4a, 0x2b, 0x71, 0x37, 0x37,
+    0x67, 0x77, 0x72, 0x6e, 0x46, 0x35, 0x50, 0x65,
+    0x39, 0x7a, 0x62, 0x70, 0x55, 0x42, 0x6f, 0x63,
+    0x37, 0x56, 0x4a, 0x6a, 0x72, 0x52, 0x68, 0x55,
+    0x6f, 0x6a, 0x49, 0x37, 0x4c, 0x4f, 0x79, 0x53,
+    0x79, 0x74, 0x6f, 0x33, 0x57, 0x59, 0x59, 0x6f,
+    0x63, 0x7a, 0x58, 0x0a, 0x4c, 0x70, 0x72, 0x7a,
+    0x50, 0x6e, 0x6a, 0x32, 0x79, 0x45, 0x56, 0x65,
+    0x56, 0x32, 0x6c, 0x72, 0x54, 0x53, 0x36, 0x6c,
+    0x4b, 0x4e, 0x70, 0x64, 0x72, 0x61, 0x4f, 0x38,
+    0x51, 0x5a, 0x63, 0x53, 0x44, 0x37, 0x6d, 0x55,
+    0x55, 0x6d, 0x69, 0x4e, 0x52, 0x5a, 0x6e, 0x6f,
+    0x50, 0x4b, 0x31, 0x36, 0x4d, 0x6d, 0x39, 0x71,
+    0x6a, 0x6b, 0x6b, 0x32, 0x39, 0x48, 0x6e, 0x59,
+    0x37, 0x4d, 0x73, 0x71, 0x0a, 0x70, 0x6b, 0x69,
+    0x4f, 0x67, 0x34, 0x68, 0x75, 0x4e, 0x77, 0x4b,
+    0x42, 0x67, 0x51, 0x43, 0x6b, 0x68, 0x32, 0x48,
+    0x42, 0x74, 0x4f, 0x58, 0x6a, 0x48, 0x2f, 0x47,
+    0x62, 0x58, 0x56, 0x6b, 0x6c, 0x63, 0x63, 0x30,
+    0x4f, 0x6b, 0x34, 0x65, 0x30, 0x76, 0x76, 0x4a,
+    0x53, 0x41, 0x6b, 0x6e, 0x47, 0x6c, 0x6d, 0x57,
+    0x6c, 0x37, 0x2b, 0x4d, 0x35, 0x78, 0x51, 0x33,
+    0x6b, 0x69, 0x6b, 0x59, 0x38, 0x0a, 0x44, 0x37,
+    0x78, 0x4e, 0x46, 0x32, 0x58, 0x73, 0x63, 0x59,
+    0x2f, 0x51, 0x73, 0x61, 0x44, 0x76, 0x54, 0x41,
+    0x75, 0x37, 0x58, 0x34, 0x74, 0x47, 0x42, 0x41,
+    0x47, 0x4d, 0x39, 0x6f, 0x51, 0x64, 0x74, 0x79,
+    0x4e, 0x69, 0x65, 0x74, 0x6e, 0x31, 0x62, 0x35,
+    0x4a, 0x66, 0x6d, 0x42, 0x79, 0x7a, 0x30, 0x55,
+    0x37, 0x42, 0x2b, 0x47, 0x73, 0x76, 0x32, 0x5a,
+    0x53, 0x37, 0x4b, 0x31, 0x44, 0x55, 0x0a, 0x39,
+    0x73, 0x54, 0x4c, 0x41, 0x32, 0x45, 0x38, 0x68,
+    0x4d, 0x6d, 0x37, 0x33, 0x44, 0x70, 0x51, 0x31,
+    0x55, 0x78, 0x38, 0x42, 0x62, 0x65, 0x43, 0x4b,
+    0x69, 0x56, 0x79, 0x35, 0x4d, 0x39, 0x50, 0x66,
+    0x44, 0x63, 0x7a, 0x33, 0x42, 0x4f, 0x6d, 0x6c,
+    0x4a, 0x64, 0x66, 0x77, 0x68, 0x4b, 0x51, 0x5a,
+    0x76, 0x6e, 0x69, 0x79, 0x48, 0x52, 0x6c, 0x42,
+    0x77, 0x4b, 0x42, 0x67, 0x51, 0x43, 0x48, 0x0a,
+    0x2f, 0x73, 0x41, 0x68, 0x4f, 0x63, 0x44, 0x6e,
+    0x6d, 0x64, 0x7a, 0x4d, 0x67, 0x6a, 0x6a, 0x47,
+    0x33, 0x6b, 0x34, 0x49, 0x4a, 0x2f, 0x54, 0x4e,
+    0x52, 0x52, 0x79, 0x79, 0x36, 0x53, 0x79, 0x45,
+    0x68, 0x39, 0x66, 0x64, 0x54, 0x6d, 0x47, 0x56,
+    0x6f, 0x65, 0x50, 0x50, 0x50, 0x70, 0x6c, 0x70,
+    0x70, 0x32, 0x7a, 0x33, 0x51, 0x7a, 0x62, 0x65,
+    0x74, 0x73, 0x62, 0x36, 0x56, 0x47, 0x63, 0x33,
+    0x0a, 0x61, 0x48, 0x57, 0x32, 0x54, 0x35, 0x54,
+    0x6d, 0x77, 0x32, 0x51, 0x41, 0x51, 0x39, 0x45,
+    0x56, 0x48, 0x43, 0x50, 0x57, 0x33, 0x7a, 0x6a,
+    0x41, 0x6b, 0x6a, 0x6a, 0x2f, 0x30, 0x61, 0x76,
+    0x6b, 0x57, 0x2f, 0x53, 0x32, 0x34, 0x79, 0x75,
+    0x30, 0x39, 0x65, 0x31, 0x47, 0x4d, 0x61, 0x6a,
+    0x68, 0x6e, 0x4a, 0x43, 0x30, 0x41, 0x78, 0x71,
+    0x37, 0x7a, 0x32, 0x75, 0x51, 0x61, 0x67, 0x54,
+    0x47, 0x0a, 0x32, 0x5a, 0x66, 0x6b, 0x55, 0x38,
+    0x31, 0x55, 0x52, 0x39, 0x75, 0x65, 0x76, 0x54,
+    0x6f, 0x6a, 0x6e, 0x66, 0x34, 0x56, 0x71, 0x77,
+    0x35, 0x55, 0x76, 0x63, 0x72, 0x77, 0x6a, 0x4e,
+    0x6d, 0x6d, 0x4e, 0x79, 0x45, 0x4d, 0x33, 0x63,
+    0x2f, 0x67, 0x63, 0x51, 0x4b, 0x42, 0x67, 0x48,
+    0x61, 0x32, 0x64, 0x54, 0x35, 0x73, 0x76, 0x7a,
+    0x4d, 0x31, 0x6a, 0x52, 0x65, 0x69, 0x4f, 0x33,
+    0x56, 0x74, 0x0a, 0x64, 0x41, 0x55, 0x44, 0x7a,
+    0x74, 0x47, 0x4b, 0x55, 0x45, 0x33, 0x63, 0x6c,
+    0x50, 0x56, 0x33, 0x35, 0x4c, 0x32, 0x78, 0x6d,
+    0x4a, 0x65, 0x4a, 0x44, 0x58, 0x50, 0x4f, 0x71,
+    0x43, 0x4c, 0x33, 0x71, 0x6f, 0x5a, 0x39, 0x41,
+    0x36, 0x68, 0x48, 0x6d, 0x44, 0x77, 0x36, 0x67,
+    0x6d, 0x67, 0x38, 0x32, 0x67, 0x51, 0x44, 0x51,
+    0x65, 0x4a, 0x62, 0x4c, 0x2f, 0x2b, 0x6a, 0x4b,
+    0x6b, 0x6f, 0x6e, 0x0a, 0x65, 0x36, 0x61, 0x74,
+    0x48, 0x2f, 0x44, 0x66, 0x72, 0x2b, 0x4d, 0x34,
+    0x6e, 0x50, 0x66, 0x74, 0x39, 0x4c, 0x74, 0x34,
+    0x66, 0x4f, 0x41, 0x57, 0x4f, 0x51, 0x33, 0x74,
+    0x44, 0x73, 0x44, 0x75, 0x43, 0x6b, 0x4f, 0x4d,
+    0x6a, 0x53, 0x54, 0x6e, 0x38, 0x63, 0x4c, 0x4d,
+    0x5a, 0x4c, 0x47, 0x63, 0x77, 0x54, 0x32, 0x48,
+    0x31, 0x48, 0x32, 0x76, 0x42, 0x6f, 0x63, 0x4d,
+    0x2b, 0x55, 0x54, 0x64, 0x0a, 0x68, 0x6c, 0x6a,
+    0x41, 0x56, 0x6e, 0x42, 0x39, 0x76, 0x36, 0x4e,
+    0x4d, 0x66, 0x63, 0x52, 0x45, 0x52, 0x54, 0x78,
+    0x31, 0x30, 0x53, 0x55, 0x63, 0x0a, 0x2d, 0x2d,
+    0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x50,
+    0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x20, 0x4b,
+    0x45, 0x59, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a
 };
 #endif
 
diff -Nru openssl-3.5.6/fuzz/server.c openssl-3.5.7/fuzz/server.c
--- openssl-3.5.6/fuzz/server.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/fuzz/server.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -26,1974 +26,257 @@
 #include "fuzzer.h"
 
 static const uint8_t kCertificateDER[] = {
-    0x30,
-    0x82,
-    0x02,
-    0xff,
-    0x30,
-    0x82,
-    0x01,
-    0xe7,
-    0xa0,
-    0x03,
-    0x02,
-    0x01,
-    0x02,
-    0x02,
-    0x11,
-    0x00,
-    0xb1,
-    0x84,
-    0xee,
-    0x34,
-    0x99,
-    0x98,
-    0x76,
-    0xfb,
-    0x6f,
-    0xb2,
-    0x15,
-    0xc8,
-    0x47,
-    0x79,
-    0x05,
-    0x9b,
-    0x30,
-    0x0d,
-    0x06,
-    0x09,
-    0x2a,
-    0x86,
-    0x48,
-    0x86,
-    0xf7,
-    0x0d,
-    0x01,
-    0x01,
-    0x0b,
-    0x05,
-    0x00,
-    0x30,
-    0x12,
-    0x31,
-    0x10,
-    0x30,
-    0x0e,
-    0x06,
-    0x03,
-    0x55,
-    0x04,
-    0x0a,
-    0x13,
-    0x07,
-    0x41,
-    0x63,
-    0x6d,
-    0x65,
-    0x20,
-    0x43,
-    0x6f,
-    0x30,
-    0x1e,
-    0x17,
-    0x0d,
-    0x31,
-    0x35,
-    0x31,
-    0x31,
-    0x30,
-    0x37,
-    0x30,
-    0x30,
-    0x32,
-    0x34,
-    0x35,
-    0x36,
-    0x5a,
-    0x17,
-    0x0d,
-    0x31,
-    0x36,
-    0x31,
-    0x31,
-    0x30,
-    0x36,
-    0x30,
-    0x30,
-    0x32,
-    0x34,
-    0x35,
-    0x36,
-    0x5a,
-    0x30,
-    0x12,
-    0x31,
-    0x10,
-    0x30,
-    0x0e,
-    0x06,
-    0x03,
-    0x55,
-    0x04,
-    0x0a,
-    0x13,
-    0x07,
-    0x41,
-    0x63,
-    0x6d,
-    0x65,
-    0x20,
-    0x43,
-    0x6f,
-    0x30,
-    0x82,
-    0x01,
-    0x22,
-    0x30,
-    0x0d,
-    0x06,
-    0x09,
-    0x2a,
-    0x86,
-    0x48,
-    0x86,
-    0xf7,
-    0x0d,
-    0x01,
-    0x01,
-    0x01,
-    0x05,
-    0x00,
-    0x03,
-    0x82,
-    0x01,
-    0x0f,
-    0x00,
-    0x30,
-    0x82,
-    0x01,
-    0x0a,
-    0x02,
-    0x82,
-    0x01,
-    0x01,
-    0x00,
-    0xce,
-    0x47,
-    0xcb,
-    0x11,
-    0xbb,
-    0xd2,
-    0x9d,
-    0x8e,
-    0x9e,
-    0xd2,
-    0x1e,
-    0x14,
-    0xaf,
-    0xc7,
-    0xea,
-    0xb6,
-    0xc9,
-    0x38,
-    0x2a,
-    0x6f,
-    0xb3,
-    0x7e,
-    0xfb,
-    0xbc,
-    0xfc,
-    0x59,
-    0x42,
-    0xb9,
-    0x56,
-    0xf0,
-    0x4c,
-    0x3f,
-    0xf7,
-    0x31,
-    0x84,
-    0xbe,
-    0xac,
-    0x03,
-    0x9e,
-    0x71,
-    0x91,
-    0x85,
-    0xd8,
-    0x32,
-    0xbd,
-    0x00,
-    0xea,
-    0xac,
-    0x65,
-    0xf6,
-    0x03,
-    0xc8,
-    0x0f,
-    0x8b,
-    0xfd,
-    0x6e,
-    0x58,
-    0x88,
-    0x04,
-    0x41,
-    0x92,
-    0x74,
-    0xa6,
-    0x57,
-    0x2e,
-    0x8e,
-    0x88,
-    0xd5,
-    0x3d,
-    0xda,
-    0x14,
-    0x3e,
-    0x63,
-    0x88,
-    0x22,
-    0xe3,
-    0x53,
-    0xe9,
-    0xba,
-    0x39,
-    0x09,
-    0xac,
-    0xfb,
-    0xd0,
-    0x4c,
-    0xf2,
-    0x3c,
-    0x20,
-    0xd6,
-    0x97,
-    0xe6,
-    0xed,
-    0xf1,
-    0x62,
-    0x1e,
-    0xe5,
-    0xc9,
-    0x48,
-    0xa0,
-    0xca,
-    0x2e,
-    0x3c,
-    0x14,
-    0x5a,
-    0x82,
-    0xd4,
-    0xed,
-    0xb1,
-    0xe3,
-    0x43,
-    0xc1,
-    0x2a,
-    0x59,
-    0xa5,
-    0xb9,
-    0xc8,
-    0x48,
-    0xa7,
-    0x39,
-    0x23,
-    0x74,
-    0xa7,
-    0x37,
-    0xb0,
-    0x6f,
-    0xc3,
-    0x64,
-    0x99,
-    0x6c,
-    0xa2,
-    0x82,
-    0xc8,
-    0xf6,
-    0xdb,
-    0x86,
-    0x40,
-    0xce,
-    0xd1,
-    0x85,
-    0x9f,
-    0xce,
-    0x69,
-    0xf4,
-    0x15,
-    0x2a,
-    0x23,
-    0xca,
-    0xea,
-    0xb7,
-    0x7b,
-    0xdf,
-    0xfb,
-    0x43,
-    0x5f,
-    0xff,
-    0x7a,
-    0x49,
-    0x49,
-    0x0e,
-    0xe7,
-    0x02,
-    0x51,
-    0x45,
-    0x13,
-    0xe8,
-    0x90,
-    0x64,
-    0x21,
-    0x0c,
-    0x26,
-    0x2b,
-    0x5d,
-    0xfc,
-    0xe4,
-    0xb5,
-    0x86,
-    0x89,
-    0x43,
-    0x22,
-    0x4c,
-    0xf3,
-    0x3b,
-    0xf3,
-    0x09,
-    0xc4,
-    0xa4,
-    0x10,
-    0x80,
-    0xf2,
-    0x46,
-    0xe2,
-    0x46,
-    0x8f,
-    0x76,
-    0x50,
-    0xbf,
-    0xaf,
-    0x2b,
-    0x90,
-    0x1b,
-    0x78,
-    0xc7,
-    0xcf,
-    0xc1,
-    0x77,
-    0xd0,
-    0xfb,
-    0xa9,
-    0xfb,
-    0xc9,
-    0x66,
-    0x5a,
-    0xc5,
-    0x9b,
-    0x31,
-    0x41,
-    0x67,
-    0x01,
-    0xbe,
-    0x33,
-    0x10,
-    0xba,
-    0x05,
-    0x58,
-    0xed,
-    0x76,
-    0x53,
-    0xde,
-    0x5d,
-    0xc1,
-    0xe8,
-    0xbb,
-    0x9f,
-    0xf1,
-    0xcd,
-    0xfb,
-    0xdf,
-    0x64,
-    0x7f,
-    0xd7,
-    0x18,
-    0xab,
-    0x0f,
-    0x94,
-    0x28,
-    0x95,
-    0x4a,
-    0xcc,
-    0x6a,
-    0xa9,
-    0x50,
-    0xc7,
-    0x05,
-    0x47,
-    0x10,
-    0x41,
-    0x02,
-    0x03,
-    0x01,
-    0x00,
-    0x01,
-    0xa3,
-    0x50,
-    0x30,
-    0x4e,
-    0x30,
-    0x0e,
-    0x06,
-    0x03,
-    0x55,
-    0x1d,
-    0x0f,
-    0x01,
-    0x01,
-    0xff,
-    0x04,
-    0x04,
-    0x03,
-    0x02,
-    0x05,
-    0xa0,
-    0x30,
-    0x13,
-    0x06,
-    0x03,
-    0x55,
-    0x1d,
-    0x25,
-    0x04,
-    0x0c,
-    0x30,
-    0x0a,
-    0x06,
-    0x08,
-    0x2b,
-    0x06,
-    0x01,
-    0x05,
-    0x05,
-    0x07,
-    0x03,
-    0x01,
-    0x30,
-    0x0c,
-    0x06,
-    0x03,
-    0x55,
-    0x1d,
-    0x13,
-    0x01,
-    0x01,
-    0xff,
-    0x04,
-    0x02,
-    0x30,
-    0x00,
-    0x30,
-    0x19,
-    0x06,
-    0x03,
-    0x55,
-    0x1d,
-    0x11,
-    0x04,
-    0x12,
-    0x30,
-    0x10,
-    0x82,
-    0x0e,
-    0x66,
-    0x75,
-    0x7a,
-    0x7a,
-    0x2e,
-    0x62,
-    0x6f,
-    0x72,
-    0x69,
-    0x6e,
-    0x67,
-    0x73,
-    0x73,
-    0x6c,
-    0x30,
-    0x0d,
-    0x06,
-    0x09,
-    0x2a,
-    0x86,
-    0x48,
-    0x86,
-    0xf7,
-    0x0d,
-    0x01,
-    0x01,
-    0x0b,
-    0x05,
-    0x00,
-    0x03,
-    0x82,
-    0x01,
-    0x01,
-    0x00,
-    0x92,
-    0xde,
-    0xef,
-    0x96,
-    0x06,
-    0x7b,
-    0xff,
-    0x71,
-    0x7d,
-    0x4e,
-    0xa0,
-    0x7d,
-    0xae,
-    0xb8,
-    0x22,
-    0xb4,
-    0x2c,
-    0xf7,
-    0x96,
-    0x9c,
-    0x37,
-    0x1d,
-    0x8f,
-    0xe7,
-    0xd9,
-    0x47,
-    0xff,
-    0x3f,
-    0xe9,
-    0x35,
-    0x95,
-    0x0e,
-    0xdd,
-    0xdc,
-    0x7f,
-    0xc8,
-    0x8a,
-    0x1e,
-    0x36,
-    0x1d,
-    0x38,
-    0x47,
-    0xfc,
-    0x76,
-    0xd2,
-    0x1f,
-    0x98,
-    0xa1,
-    0x36,
-    0xac,
-    0xc8,
-    0x70,
-    0x38,
-    0x0a,
-    0x3d,
-    0x51,
-    0x8d,
-    0x0f,
-    0x03,
-    0x1b,
-    0xef,
-    0x62,
-    0xa1,
-    0xcb,
-    0x2b,
-    0x4a,
-    0x8c,
-    0x12,
-    0x2b,
-    0x54,
-    0x50,
-    0x9a,
-    0x6b,
-    0xfe,
-    0xaf,
-    0xd9,
-    0xf6,
-    0xbf,
-    0x58,
-    0x11,
-    0x58,
-    0x5e,
-    0xe5,
-    0x86,
-    0x1e,
-    0x3b,
-    0x6b,
-    0x30,
-    0x7e,
-    0x72,
-    0x89,
-    0xe8,
-    0x6b,
-    0x7b,
-    0xb7,
-    0xaf,
-    0xef,
-    0x8b,
-    0xa9,
-    0x3e,
-    0xb0,
-    0xcd,
-    0x0b,
-    0xef,
-    0xb0,
-    0x0c,
-    0x96,
-    0x2b,
-    0xc5,
-    0x3b,
-    0xd5,
-    0xf1,
-    0xc2,
-    0xae,
-    0x3a,
-    0x60,
-    0xd9,
-    0x0f,
-    0x75,
-    0x37,
-    0x55,
-    0x4d,
-    0x62,
-    0xd2,
-    0xed,
-    0x96,
-    0xac,
-    0x30,
-    0x6b,
-    0xda,
-    0xa1,
-    0x48,
-    0x17,
-    0x96,
-    0x23,
-    0x85,
-    0x9a,
-    0x57,
-    0x77,
-    0xe9,
-    0x22,
-    0xa2,
-    0x37,
-    0x03,
-    0xba,
-    0x49,
-    0x77,
-    0x40,
-    0x3b,
-    0x76,
-    0x4b,
-    0xda,
-    0xc1,
-    0x04,
-    0x57,
-    0x55,
-    0x34,
-    0x22,
-    0x83,
-    0x45,
-    0x29,
-    0xab,
-    0x2e,
-    0x11,
-    0xff,
-    0x0d,
-    0xab,
-    0x55,
-    0xb1,
-    0xa7,
-    0x58,
-    0x59,
-    0x05,
-    0x25,
-    0xf9,
-    0x1e,
-    0x3d,
-    0xb7,
-    0xac,
-    0x04,
-    0x39,
-    0x2c,
-    0xf9,
-    0xaf,
-    0xb8,
-    0x68,
-    0xfb,
-    0x8e,
-    0x35,
-    0x71,
-    0x32,
-    0xff,
-    0x70,
-    0xe9,
-    0x46,
-    0x6d,
-    0x5c,
-    0x06,
-    0x90,
-    0x88,
-    0x23,
-    0x48,
-    0x0c,
-    0x50,
-    0xeb,
-    0x0a,
-    0xa9,
-    0xae,
-    0xe8,
-    0xfc,
-    0xbe,
-    0xa5,
-    0x76,
-    0x94,
-    0xd7,
-    0x64,
-    0x22,
-    0x38,
-    0x98,
-    0x17,
-    0xa4,
-    0x3a,
-    0xa7,
-    0x59,
-    0x9f,
-    0x1d,
-    0x3b,
-    0x75,
-    0x90,
-    0x1a,
-    0x81,
-    0xef,
-    0x19,
-    0xfb,
-    0x2b,
-    0xb7,
-    0xa7,
-    0x64,
-    0x61,
-    0x22,
-    0xa4,
-    0x6f,
-    0x7b,
-    0xfa,
-    0x58,
-    0xbb,
-    0x8c,
-    0x4e,
-    0x77,
-    0x67,
-    0xd0,
-    0x5d,
-    0x58,
-    0x76,
-    0x8a,
-    0xbb,
+    0x30, 0x82, 0x02, 0xff, 0x30, 0x82, 0x01, 0xe7,
+    0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x11, 0x00,
+    0xb1, 0x84, 0xee, 0x34, 0x99, 0x98, 0x76, 0xfb,
+    0x6f, 0xb2, 0x15, 0xc8, 0x47, 0x79, 0x05, 0x9b,
+    0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
+    0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30,
+    0x12, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55,
+    0x04, 0x0a, 0x13, 0x07, 0x41, 0x63, 0x6d, 0x65,
+    0x20, 0x43, 0x6f, 0x30, 0x1e, 0x17, 0x0d, 0x31,
+    0x35, 0x31, 0x31, 0x30, 0x37, 0x30, 0x30, 0x32,
+    0x34, 0x35, 0x36, 0x5a, 0x17, 0x0d, 0x31, 0x36,
+    0x31, 0x31, 0x30, 0x36, 0x30, 0x30, 0x32, 0x34,
+    0x35, 0x36, 0x5a, 0x30, 0x12, 0x31, 0x10, 0x30,
+    0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x07,
+    0x41, 0x63, 0x6d, 0x65, 0x20, 0x43, 0x6f, 0x30,
+    0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a,
+    0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
+    0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30,
+    0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00,
+    0xce, 0x47, 0xcb, 0x11, 0xbb, 0xd2, 0x9d, 0x8e,
+    0x9e, 0xd2, 0x1e, 0x14, 0xaf, 0xc7, 0xea, 0xb6,
+    0xc9, 0x38, 0x2a, 0x6f, 0xb3, 0x7e, 0xfb, 0xbc,
+    0xfc, 0x59, 0x42, 0xb9, 0x56, 0xf0, 0x4c, 0x3f,
+    0xf7, 0x31, 0x84, 0xbe, 0xac, 0x03, 0x9e, 0x71,
+    0x91, 0x85, 0xd8, 0x32, 0xbd, 0x00, 0xea, 0xac,
+    0x65, 0xf6, 0x03, 0xc8, 0x0f, 0x8b, 0xfd, 0x6e,
+    0x58, 0x88, 0x04, 0x41, 0x92, 0x74, 0xa6, 0x57,
+    0x2e, 0x8e, 0x88, 0xd5, 0x3d, 0xda, 0x14, 0x3e,
+    0x63, 0x88, 0x22, 0xe3, 0x53, 0xe9, 0xba, 0x39,
+    0x09, 0xac, 0xfb, 0xd0, 0x4c, 0xf2, 0x3c, 0x20,
+    0xd6, 0x97, 0xe6, 0xed, 0xf1, 0x62, 0x1e, 0xe5,
+    0xc9, 0x48, 0xa0, 0xca, 0x2e, 0x3c, 0x14, 0x5a,
+    0x82, 0xd4, 0xed, 0xb1, 0xe3, 0x43, 0xc1, 0x2a,
+    0x59, 0xa5, 0xb9, 0xc8, 0x48, 0xa7, 0x39, 0x23,
+    0x74, 0xa7, 0x37, 0xb0, 0x6f, 0xc3, 0x64, 0x99,
+    0x6c, 0xa2, 0x82, 0xc8, 0xf6, 0xdb, 0x86, 0x40,
+    0xce, 0xd1, 0x85, 0x9f, 0xce, 0x69, 0xf4, 0x15,
+    0x2a, 0x23, 0xca, 0xea, 0xb7, 0x7b, 0xdf, 0xfb,
+    0x43, 0x5f, 0xff, 0x7a, 0x49, 0x49, 0x0e, 0xe7,
+    0x02, 0x51, 0x45, 0x13, 0xe8, 0x90, 0x64, 0x21,
+    0x0c, 0x26, 0x2b, 0x5d, 0xfc, 0xe4, 0xb5, 0x86,
+    0x89, 0x43, 0x22, 0x4c, 0xf3, 0x3b, 0xf3, 0x09,
+    0xc4, 0xa4, 0x10, 0x80, 0xf2, 0x46, 0xe2, 0x46,
+    0x8f, 0x76, 0x50, 0xbf, 0xaf, 0x2b, 0x90, 0x1b,
+    0x78, 0xc7, 0xcf, 0xc1, 0x77, 0xd0, 0xfb, 0xa9,
+    0xfb, 0xc9, 0x66, 0x5a, 0xc5, 0x9b, 0x31, 0x41,
+    0x67, 0x01, 0xbe, 0x33, 0x10, 0xba, 0x05, 0x58,
+    0xed, 0x76, 0x53, 0xde, 0x5d, 0xc1, 0xe8, 0xbb,
+    0x9f, 0xf1, 0xcd, 0xfb, 0xdf, 0x64, 0x7f, 0xd7,
+    0x18, 0xab, 0x0f, 0x94, 0x28, 0x95, 0x4a, 0xcc,
+    0x6a, 0xa9, 0x50, 0xc7, 0x05, 0x47, 0x10, 0x41,
+    0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x50, 0x30,
+    0x4e, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f,
+    0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x05,
+    0xa0, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1d, 0x25,
+    0x04, 0x0c, 0x30, 0x0a, 0x06, 0x08, 0x2b, 0x06,
+    0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x30, 0x0c,
+    0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff,
+    0x04, 0x02, 0x30, 0x00, 0x30, 0x19, 0x06, 0x03,
+    0x55, 0x1d, 0x11, 0x04, 0x12, 0x30, 0x10, 0x82,
+    0x0e, 0x66, 0x75, 0x7a, 0x7a, 0x2e, 0x62, 0x6f,
+    0x72, 0x69, 0x6e, 0x67, 0x73, 0x73, 0x6c, 0x30,
+    0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
+    0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82,
+    0x01, 0x01, 0x00, 0x92, 0xde, 0xef, 0x96, 0x06,
+    0x7b, 0xff, 0x71, 0x7d, 0x4e, 0xa0, 0x7d, 0xae,
+    0xb8, 0x22, 0xb4, 0x2c, 0xf7, 0x96, 0x9c, 0x37,
+    0x1d, 0x8f, 0xe7, 0xd9, 0x47, 0xff, 0x3f, 0xe9,
+    0x35, 0x95, 0x0e, 0xdd, 0xdc, 0x7f, 0xc8, 0x8a,
+    0x1e, 0x36, 0x1d, 0x38, 0x47, 0xfc, 0x76, 0xd2,
+    0x1f, 0x98, 0xa1, 0x36, 0xac, 0xc8, 0x70, 0x38,
+    0x0a, 0x3d, 0x51, 0x8d, 0x0f, 0x03, 0x1b, 0xef,
+    0x62, 0xa1, 0xcb, 0x2b, 0x4a, 0x8c, 0x12, 0x2b,
+    0x54, 0x50, 0x9a, 0x6b, 0xfe, 0xaf, 0xd9, 0xf6,
+    0xbf, 0x58, 0x11, 0x58, 0x5e, 0xe5, 0x86, 0x1e,
+    0x3b, 0x6b, 0x30, 0x7e, 0x72, 0x89, 0xe8, 0x6b,
+    0x7b, 0xb7, 0xaf, 0xef, 0x8b, 0xa9, 0x3e, 0xb0,
+    0xcd, 0x0b, 0xef, 0xb0, 0x0c, 0x96, 0x2b, 0xc5,
+    0x3b, 0xd5, 0xf1, 0xc2, 0xae, 0x3a, 0x60, 0xd9,
+    0x0f, 0x75, 0x37, 0x55, 0x4d, 0x62, 0xd2, 0xed,
+    0x96, 0xac, 0x30, 0x6b, 0xda, 0xa1, 0x48, 0x17,
+    0x96, 0x23, 0x85, 0x9a, 0x57, 0x77, 0xe9, 0x22,
+    0xa2, 0x37, 0x03, 0xba, 0x49, 0x77, 0x40, 0x3b,
+    0x76, 0x4b, 0xda, 0xc1, 0x04, 0x57, 0x55, 0x34,
+    0x22, 0x83, 0x45, 0x29, 0xab, 0x2e, 0x11, 0xff,
+    0x0d, 0xab, 0x55, 0xb1, 0xa7, 0x58, 0x59, 0x05,
+    0x25, 0xf9, 0x1e, 0x3d, 0xb7, 0xac, 0x04, 0x39,
+    0x2c, 0xf9, 0xaf, 0xb8, 0x68, 0xfb, 0x8e, 0x35,
+    0x71, 0x32, 0xff, 0x70, 0xe9, 0x46, 0x6d, 0x5c,
+    0x06, 0x90, 0x88, 0x23, 0x48, 0x0c, 0x50, 0xeb,
+    0x0a, 0xa9, 0xae, 0xe8, 0xfc, 0xbe, 0xa5, 0x76,
+    0x94, 0xd7, 0x64, 0x22, 0x38, 0x98, 0x17, 0xa4,
+    0x3a, 0xa7, 0x59, 0x9f, 0x1d, 0x3b, 0x75, 0x90,
+    0x1a, 0x81, 0xef, 0x19, 0xfb, 0x2b, 0xb7, 0xa7,
+    0x64, 0x61, 0x22, 0xa4, 0x6f, 0x7b, 0xfa, 0x58,
+    0xbb, 0x8c, 0x4e, 0x77, 0x67, 0xd0, 0x5d, 0x58,
+    0x76, 0x8a, 0xbb
 };
 
 #ifndef OPENSSL_NO_DEPRECATED_3_0
 static const uint8_t kRSAPrivateKeyDER[] = {
-    0x30,
-    0x82,
-    0x04,
-    0xa5,
-    0x02,
-    0x01,
-    0x00,
-    0x02,
-    0x82,
-    0x01,
-    0x01,
-    0x00,
-    0xce,
-    0x47,
-    0xcb,
-    0x11,
-    0xbb,
-    0xd2,
-    0x9d,
-    0x8e,
-    0x9e,
-    0xd2,
-    0x1e,
-    0x14,
-    0xaf,
-    0xc7,
-    0xea,
-    0xb6,
-    0xc9,
-    0x38,
-    0x2a,
-    0x6f,
-    0xb3,
-    0x7e,
-    0xfb,
-    0xbc,
-    0xfc,
-    0x59,
-    0x42,
-    0xb9,
-    0x56,
-    0xf0,
-    0x4c,
-    0x3f,
-    0xf7,
-    0x31,
-    0x84,
-    0xbe,
-    0xac,
-    0x03,
-    0x9e,
-    0x71,
-    0x91,
-    0x85,
-    0xd8,
-    0x32,
-    0xbd,
-    0x00,
-    0xea,
-    0xac,
-    0x65,
-    0xf6,
-    0x03,
-    0xc8,
-    0x0f,
-    0x8b,
-    0xfd,
-    0x6e,
-    0x58,
-    0x88,
-    0x04,
-    0x41,
-    0x92,
-    0x74,
-    0xa6,
-    0x57,
-    0x2e,
-    0x8e,
-    0x88,
-    0xd5,
-    0x3d,
-    0xda,
-    0x14,
-    0x3e,
-    0x63,
-    0x88,
-    0x22,
-    0xe3,
-    0x53,
-    0xe9,
-    0xba,
-    0x39,
-    0x09,
-    0xac,
-    0xfb,
-    0xd0,
-    0x4c,
-    0xf2,
-    0x3c,
-    0x20,
-    0xd6,
-    0x97,
-    0xe6,
-    0xed,
-    0xf1,
-    0x62,
-    0x1e,
-    0xe5,
-    0xc9,
-    0x48,
-    0xa0,
-    0xca,
-    0x2e,
-    0x3c,
-    0x14,
-    0x5a,
-    0x82,
-    0xd4,
-    0xed,
-    0xb1,
-    0xe3,
-    0x43,
-    0xc1,
-    0x2a,
-    0x59,
-    0xa5,
-    0xb9,
-    0xc8,
-    0x48,
-    0xa7,
-    0x39,
-    0x23,
-    0x74,
-    0xa7,
-    0x37,
-    0xb0,
-    0x6f,
-    0xc3,
-    0x64,
-    0x99,
-    0x6c,
-    0xa2,
-    0x82,
-    0xc8,
-    0xf6,
-    0xdb,
-    0x86,
-    0x40,
-    0xce,
-    0xd1,
-    0x85,
-    0x9f,
-    0xce,
-    0x69,
-    0xf4,
-    0x15,
-    0x2a,
-    0x23,
-    0xca,
-    0xea,
-    0xb7,
-    0x7b,
-    0xdf,
-    0xfb,
-    0x43,
-    0x5f,
-    0xff,
-    0x7a,
-    0x49,
-    0x49,
-    0x0e,
-    0xe7,
-    0x02,
-    0x51,
-    0x45,
-    0x13,
-    0xe8,
-    0x90,
-    0x64,
-    0x21,
-    0x0c,
-    0x26,
-    0x2b,
-    0x5d,
-    0xfc,
-    0xe4,
-    0xb5,
-    0x86,
-    0x89,
-    0x43,
-    0x22,
-    0x4c,
-    0xf3,
-    0x3b,
-    0xf3,
-    0x09,
-    0xc4,
-    0xa4,
-    0x10,
-    0x80,
-    0xf2,
-    0x46,
-    0xe2,
-    0x46,
-    0x8f,
-    0x76,
-    0x50,
-    0xbf,
-    0xaf,
-    0x2b,
-    0x90,
-    0x1b,
-    0x78,
-    0xc7,
-    0xcf,
-    0xc1,
-    0x77,
-    0xd0,
-    0xfb,
-    0xa9,
-    0xfb,
-    0xc9,
-    0x66,
-    0x5a,
-    0xc5,
-    0x9b,
-    0x31,
-    0x41,
-    0x67,
-    0x01,
-    0xbe,
-    0x33,
-    0x10,
-    0xba,
-    0x05,
-    0x58,
-    0xed,
-    0x76,
-    0x53,
-    0xde,
-    0x5d,
-    0xc1,
-    0xe8,
-    0xbb,
-    0x9f,
-    0xf1,
-    0xcd,
-    0xfb,
-    0xdf,
-    0x64,
-    0x7f,
-    0xd7,
-    0x18,
-    0xab,
-    0x0f,
-    0x94,
-    0x28,
-    0x95,
-    0x4a,
-    0xcc,
-    0x6a,
-    0xa9,
-    0x50,
-    0xc7,
-    0x05,
-    0x47,
-    0x10,
-    0x41,
-    0x02,
-    0x03,
-    0x01,
-    0x00,
-    0x01,
-    0x02,
-    0x82,
-    0x01,
-    0x01,
-    0x00,
-    0xa8,
-    0x47,
-    0xb9,
-    0x4a,
-    0x06,
-    0x47,
-    0x93,
-    0x71,
-    0x3d,
-    0xef,
-    0x7b,
-    0xca,
-    0xb4,
-    0x7c,
-    0x0a,
-    0xe6,
-    0x82,
-    0xd0,
-    0xe7,
-    0x0d,
-    0xa9,
-    0x08,
-    0xf6,
-    0xa4,
-    0xfd,
-    0xd8,
-    0x73,
-    0xae,
-    0x6f,
-    0x56,
-    0x29,
-    0x5e,
-    0x25,
-    0x72,
-    0xa8,
-    0x30,
-    0x44,
-    0x73,
-    0xcf,
-    0x56,
-    0x26,
-    0xb9,
-    0x61,
-    0xde,
-    0x42,
-    0x81,
-    0xf4,
-    0xf0,
-    0x1f,
-    0x5d,
-    0xcb,
-    0x47,
-    0xf2,
-    0x26,
-    0xe9,
-    0xe0,
-    0x93,
-    0x28,
-    0xa3,
-    0x10,
-    0x3b,
-    0x42,
-    0x1e,
-    0x51,
-    0x11,
-    0x12,
-    0x06,
-    0x5e,
-    0xaf,
-    0xce,
-    0xb0,
-    0xa5,
-    0x14,
-    0xdd,
-    0x82,
-    0x58,
-    0xa1,
-    0xa4,
-    0x12,
-    0xdf,
-    0x65,
-    0x1d,
-    0x51,
-    0x70,
-    0x64,
-    0xd5,
-    0x58,
-    0x68,
-    0x11,
-    0xa8,
-    0x6a,
-    0x23,
-    0xc2,
-    0xbf,
-    0xa1,
-    0x25,
-    0x24,
-    0x47,
-    0xb3,
-    0xa4,
-    0x3c,
-    0x83,
-    0x96,
-    0xb7,
-    0x1f,
-    0xf4,
-    0x44,
-    0xd4,
-    0xd1,
-    0xe9,
-    0xfc,
-    0x33,
-    0x68,
-    0x5e,
-    0xe2,
-    0x68,
-    0x99,
-    0x9c,
-    0x91,
-    0xe8,
-    0x72,
-    0xc9,
-    0xd7,
-    0x8c,
-    0x80,
-    0x20,
-    0x8e,
-    0x77,
-    0x83,
-    0x4d,
-    0xe4,
-    0xab,
-    0xf9,
-    0x74,
-    0xa1,
-    0xdf,
-    0xd3,
-    0xc0,
-    0x0d,
-    0x5b,
-    0x05,
-    0x51,
-    0xc2,
-    0x6f,
-    0xb2,
-    0x91,
-    0x02,
-    0xec,
-    0xc0,
-    0x02,
-    0x1a,
-    0x5c,
-    0x91,
-    0x05,
-    0xf1,
-    0xe3,
-    0xfa,
-    0x65,
-    0xc2,
-    0xad,
-    0x24,
-    0xe6,
-    0xe5,
-    0x3c,
-    0xb6,
-    0x16,
-    0xf1,
-    0xa1,
-    0x67,
-    0x1a,
-    0x9d,
-    0x37,
-    0x56,
-    0xbf,
-    0x01,
-    0xd7,
-    0x3b,
-    0x35,
-    0x30,
-    0x57,
-    0x73,
-    0xf4,
-    0xf0,
-    0x5e,
-    0xa7,
-    0xe8,
-    0x0a,
-    0xc1,
-    0x94,
-    0x17,
-    0xcf,
-    0x0a,
-    0xbd,
-    0xf5,
-    0x31,
-    0xa7,
-    0x2d,
-    0xf7,
-    0xf5,
-    0xd9,
-    0x8c,
-    0xc2,
-    0x01,
-    0xbd,
-    0xda,
-    0x16,
-    0x8e,
-    0xb9,
-    0x30,
-    0x40,
-    0xa6,
-    0x6e,
-    0xbd,
-    0xcd,
-    0x4d,
-    0x84,
-    0x67,
-    0x4e,
-    0x0b,
-    0xce,
-    0xd5,
-    0xef,
-    0xf8,
-    0x08,
-    0x63,
-    0x02,
-    0xc6,
-    0xc7,
-    0xf7,
-    0x67,
-    0x92,
-    0xe2,
-    0x23,
-    0x9d,
-    0x27,
-    0x22,
-    0x1d,
-    0xc6,
-    0x67,
-    0x5e,
-    0x66,
-    0xbf,
-    0x03,
-    0xb8,
-    0xa9,
-    0x67,
-    0xd4,
-    0x39,
-    0xd8,
-    0x75,
-    0xfa,
-    0xe8,
-    0xed,
-    0x56,
-    0xb8,
-    0x81,
-    0x02,
-    0x81,
-    0x81,
-    0x00,
-    0xf7,
-    0x46,
-    0x68,
-    0xc6,
-    0x13,
-    0xf8,
-    0xba,
-    0x0f,
-    0x83,
-    0xdb,
-    0x05,
-    0xa8,
-    0x25,
-    0x00,
-    0x70,
-    0x9c,
-    0x9e,
-    0x8b,
-    0x12,
-    0x34,
-    0x0d,
-    0x96,
-    0xcf,
-    0x0d,
-    0x98,
-    0x9b,
-    0x8d,
-    0x9c,
-    0x96,
-    0x78,
-    0xd1,
-    0x3c,
-    0x01,
-    0x8c,
-    0xb9,
-    0x35,
-    0x5c,
-    0x20,
-    0x42,
-    0xb4,
-    0x38,
-    0xe3,
-    0xd6,
-    0x54,
-    0xe7,
-    0x55,
-    0xd6,
-    0x26,
-    0x8a,
-    0x0c,
-    0xf6,
-    0x1f,
-    0xe0,
-    0x04,
-    0xc1,
-    0x22,
-    0x42,
-    0x19,
-    0x61,
-    0xc4,
-    0x94,
-    0x7c,
-    0x07,
-    0x2e,
-    0x80,
-    0x52,
-    0xfe,
-    0x8d,
-    0xe6,
-    0x92,
-    0x3a,
-    0x91,
-    0xfe,
-    0x72,
-    0x99,
-    0xe1,
-    0x2a,
-    0x73,
-    0x76,
-    0xb1,
-    0x24,
-    0x20,
-    0x67,
-    0xde,
-    0x28,
-    0xcb,
-    0x0e,
-    0xe6,
-    0x52,
-    0xb5,
-    0xfa,
-    0xfb,
-    0x8b,
-    0x1e,
-    0x6a,
-    0x1d,
-    0x09,
-    0x26,
-    0xb9,
-    0xa7,
-    0x61,
-    0xba,
-    0xf8,
-    0x79,
-    0xd2,
-    0x66,
-    0x57,
-    0x28,
-    0xd7,
-    0x31,
-    0xb5,
-    0x0b,
-    0x27,
-    0x19,
-    0x1e,
-    0x6f,
-    0x46,
-    0xfc,
-    0x54,
-    0x95,
-    0xeb,
-    0x78,
-    0x01,
-    0xb6,
-    0xd9,
-    0x79,
-    0x5a,
-    0x4d,
-    0x02,
-    0x81,
-    0x81,
-    0x00,
-    0xd5,
-    0x8f,
-    0x16,
-    0x53,
-    0x2f,
-    0x57,
-    0x93,
-    0xbf,
-    0x09,
-    0x75,
-    0xbf,
-    0x63,
-    0x40,
-    0x3d,
-    0x27,
-    0xfd,
-    0x23,
-    0x21,
-    0xde,
-    0x9b,
-    0xe9,
-    0x73,
-    0x3f,
-    0x49,
-    0x02,
-    0xd2,
-    0x38,
-    0x96,
-    0xcf,
-    0xc3,
-    0xba,
-    0x92,
-    0x07,
-    0x87,
-    0x52,
-    0xa9,
-    0x35,
-    0xe3,
-    0x0c,
-    0xe4,
-    0x2f,
-    0x05,
-    0x7b,
-    0x37,
-    0xa5,
-    0x40,
-    0x9c,
-    0x3b,
-    0x94,
-    0xf7,
-    0xad,
-    0xa0,
-    0xee,
-    0x3a,
-    0xa8,
-    0xfb,
-    0x1f,
-    0x11,
-    0x1f,
-    0xd8,
-    0x9a,
-    0x80,
-    0x42,
-    0x3d,
-    0x7f,
-    0xa4,
-    0xb8,
-    0x9a,
-    0xaa,
-    0xea,
-    0x72,
-    0xc1,
-    0xe3,
-    0xed,
-    0x06,
-    0x60,
-    0x92,
-    0x37,
-    0xf9,
-    0xba,
-    0xfb,
-    0x9e,
-    0xed,
-    0x05,
-    0xa6,
-    0xd4,
-    0x72,
-    0x68,
-    0x4f,
-    0x63,
-    0xfe,
-    0xd6,
-    0x10,
-    0x0d,
-    0x4f,
-    0x0a,
-    0x93,
-    0xc6,
-    0xb9,
-    0xd7,
-    0xaf,
-    0xfd,
-    0xd9,
-    0x57,
-    0x7d,
-    0xcb,
-    0x75,
-    0xe8,
-    0x93,
-    0x2b,
-    0xae,
-    0x4f,
-    0xea,
-    0xd7,
-    0x30,
-    0x0b,
-    0x58,
-    0x44,
-    0x82,
-    0x0f,
-    0x84,
-    0x5d,
-    0x62,
-    0x11,
-    0x78,
-    0xea,
-    0x5f,
-    0xc5,
-    0x02,
-    0x81,
-    0x81,
-    0x00,
-    0x82,
-    0x0c,
-    0xc1,
-    0xe6,
-    0x0b,
-    0x72,
-    0xf1,
-    0x48,
-    0x5f,
-    0xac,
-    0xbd,
-    0x98,
-    0xe5,
-    0x7d,
-    0x09,
-    0xbd,
-    0x15,
-    0x95,
-    0x47,
-    0x09,
-    0xa1,
-    0x6c,
-    0x03,
-    0x91,
-    0xbf,
-    0x05,
-    0x70,
-    0xc1,
-    0x3e,
-    0x52,
-    0x64,
-    0x99,
-    0x0e,
-    0xa7,
-    0x98,
-    0x70,
-    0xfb,
-    0xf6,
-    0xeb,
-    0x9e,
-    0x25,
-    0x9d,
-    0x8e,
-    0x88,
-    0x30,
-    0xf2,
-    0xf0,
-    0x22,
-    0x6c,
-    0xd0,
-    0xcc,
-    0x51,
-    0x8f,
-    0x5c,
-    0x70,
-    0xc7,
-    0x37,
-    0xc4,
-    0x69,
-    0xab,
-    0x1d,
-    0xfc,
-    0xed,
-    0x3a,
-    0x03,
-    0xbb,
-    0xa2,
-    0xad,
-    0xb6,
-    0xea,
-    0x89,
-    0x6b,
-    0x67,
-    0x4b,
-    0x96,
-    0xaa,
-    0xd9,
-    0xcc,
-    0xc8,
-    0x4b,
-    0xfa,
-    0x18,
-    0x21,
-    0x08,
-    0xb2,
-    0xa3,
-    0xb9,
-    0x3e,
-    0x61,
-    0x99,
-    0xdc,
-    0x5a,
-    0x97,
-    0x9c,
-    0x73,
-    0x6a,
-    0xb9,
-    0xf9,
-    0x68,
-    0x03,
-    0x24,
-    0x5f,
-    0x55,
-    0x77,
-    0x9c,
-    0xb4,
-    0xbe,
-    0x7a,
-    0x78,
-    0x53,
-    0x68,
-    0x48,
-    0x69,
-    0x53,
-    0xc8,
-    0xb1,
-    0xf5,
-    0xbf,
-    0x98,
-    0x2d,
-    0x11,
-    0x1e,
-    0x98,
-    0xa8,
-    0x36,
-    0x50,
-    0xa0,
-    0xb1,
-    0x02,
-    0x81,
-    0x81,
-    0x00,
-    0x90,
-    0x88,
-    0x30,
-    0x71,
-    0xc7,
-    0xfe,
-    0x9b,
-    0x6d,
-    0x95,
-    0x37,
-    0x6d,
-    0x79,
-    0xfc,
-    0x85,
-    0xe7,
-    0x44,
-    0x78,
-    0xbc,
-    0x79,
-    0x6e,
-    0x47,
-    0x86,
-    0xc9,
-    0xf3,
-    0xdd,
-    0xc6,
-    0xec,
-    0xa9,
-    0x94,
-    0x9f,
-    0x40,
-    0xeb,
-    0x87,
-    0xd0,
-    0xdb,
-    0xee,
-    0xcd,
-    0x1b,
-    0x87,
-    0x23,
-    0xff,
-    0x76,
-    0xd4,
-    0x37,
-    0x8a,
-    0xcd,
-    0xb9,
-    0x6e,
-    0xd1,
-    0x98,
-    0xf6,
-    0x97,
-    0x8d,
-    0xe3,
-    0x81,
-    0x6d,
-    0xc3,
-    0x4e,
-    0xd1,
-    0xa0,
-    0xc4,
-    0x9f,
-    0xbd,
-    0x34,
-    0xe5,
-    0xe8,
-    0x53,
-    0x4f,
-    0xca,
-    0x10,
-    0xb5,
-    0xed,
-    0xe7,
-    0x16,
-    0x09,
-    0x54,
-    0xde,
-    0x60,
-    0xa7,
-    0xd1,
-    0x16,
-    0x6e,
-    0x2e,
-    0xb7,
-    0xbe,
-    0x7a,
-    0xd5,
-    0x9b,
-    0x26,
-    0xef,
-    0xe4,
-    0x0e,
-    0x77,
-    0xfa,
-    0xa9,
-    0xdd,
-    0xdc,
-    0xb9,
-    0x88,
-    0x19,
-    0x23,
-    0x70,
-    0xc7,
-    0xe1,
-    0x60,
-    0xaf,
-    0x8c,
-    0x73,
-    0x04,
-    0xf7,
-    0x71,
-    0x17,
-    0x81,
-    0x36,
-    0x75,
-    0xbb,
-    0x97,
-    0xd7,
-    0x75,
-    0xb6,
-    0x8e,
-    0xbc,
-    0xac,
-    0x9c,
-    0x6a,
-    0x9b,
-    0x24,
-    0x89,
-    0x02,
-    0x81,
-    0x80,
-    0x5a,
-    0x2b,
-    0xc7,
-    0x6b,
-    0x8c,
-    0x65,
-    0xdb,
-    0x04,
-    0x73,
-    0xab,
-    0x25,
-    0xe1,
-    0x5b,
-    0xbc,
-    0x3c,
-    0xcf,
-    0x5a,
-    0x3c,
-    0x04,
-    0xae,
-    0x97,
-    0x2e,
-    0xfd,
-    0xa4,
-    0x97,
-    0x1f,
-    0x05,
-    0x17,
-    0x27,
-    0xac,
-    0x7c,
-    0x30,
-    0x85,
-    0xb4,
-    0x82,
-    0x3f,
-    0x5b,
-    0xb7,
-    0x94,
-    0x3b,
-    0x7f,
-    0x6c,
-    0x0c,
-    0xc7,
-    0x16,
-    0xc6,
-    0xa0,
-    0xbd,
-    0x80,
-    0xb0,
-    0x81,
-    0xde,
-    0xa0,
-    0x23,
-    0xa6,
-    0xf6,
-    0x75,
-    0x33,
-    0x51,
-    0x35,
-    0xa2,
-    0x75,
-    0x55,
-    0x70,
-    0x4d,
-    0x42,
-    0xbb,
-    0xcf,
-    0x54,
-    0xe4,
-    0xdb,
-    0x2d,
-    0x88,
-    0xa0,
-    0x7a,
-    0xf2,
-    0x17,
-    0xa7,
-    0xdd,
-    0x13,
-    0x44,
-    0x9f,
-    0x5f,
-    0x6b,
-    0x2c,
-    0x42,
-    0x42,
-    0x8b,
-    0x13,
-    0x4d,
-    0xf9,
-    0x5b,
-    0xf8,
-    0x33,
-    0x42,
-    0xd9,
-    0x9e,
-    0x50,
-    0x1c,
-    0x7c,
-    0xbc,
-    0xfa,
-    0x62,
-    0x85,
-    0x0b,
-    0xcf,
-    0x99,
-    0xda,
-    0x9e,
-    0x04,
-    0x90,
-    0xb2,
-    0xc6,
-    0xb2,
-    0x0a,
-    0x2a,
-    0x7c,
-    0x6d,
-    0x6a,
-    0x40,
-    0xfc,
-    0xf5,
-    0x50,
-    0x98,
-    0x46,
-    0x89,
-    0x82,
-    0x40,
+    0x30, 0x82, 0x04, 0xa5, 0x02, 0x01, 0x00, 0x02,
+    0x82, 0x01, 0x01, 0x00, 0xce, 0x47, 0xcb, 0x11,
+    0xbb, 0xd2, 0x9d, 0x8e, 0x9e, 0xd2, 0x1e, 0x14,
+    0xaf, 0xc7, 0xea, 0xb6, 0xc9, 0x38, 0x2a, 0x6f,
+    0xb3, 0x7e, 0xfb, 0xbc, 0xfc, 0x59, 0x42, 0xb9,
+    0x56, 0xf0, 0x4c, 0x3f, 0xf7, 0x31, 0x84, 0xbe,
+    0xac, 0x03, 0x9e, 0x71, 0x91, 0x85, 0xd8, 0x32,
+    0xbd, 0x00, 0xea, 0xac, 0x65, 0xf6, 0x03, 0xc8,
+    0x0f, 0x8b, 0xfd, 0x6e, 0x58, 0x88, 0x04, 0x41,
+    0x92, 0x74, 0xa6, 0x57, 0x2e, 0x8e, 0x88, 0xd5,
+    0x3d, 0xda, 0x14, 0x3e, 0x63, 0x88, 0x22, 0xe3,
+    0x53, 0xe9, 0xba, 0x39, 0x09, 0xac, 0xfb, 0xd0,
+    0x4c, 0xf2, 0x3c, 0x20, 0xd6, 0x97, 0xe6, 0xed,
+    0xf1, 0x62, 0x1e, 0xe5, 0xc9, 0x48, 0xa0, 0xca,
+    0x2e, 0x3c, 0x14, 0x5a, 0x82, 0xd4, 0xed, 0xb1,
+    0xe3, 0x43, 0xc1, 0x2a, 0x59, 0xa5, 0xb9, 0xc8,
+    0x48, 0xa7, 0x39, 0x23, 0x74, 0xa7, 0x37, 0xb0,
+    0x6f, 0xc3, 0x64, 0x99, 0x6c, 0xa2, 0x82, 0xc8,
+    0xf6, 0xdb, 0x86, 0x40, 0xce, 0xd1, 0x85, 0x9f,
+    0xce, 0x69, 0xf4, 0x15, 0x2a, 0x23, 0xca, 0xea,
+    0xb7, 0x7b, 0xdf, 0xfb, 0x43, 0x5f, 0xff, 0x7a,
+    0x49, 0x49, 0x0e, 0xe7, 0x02, 0x51, 0x45, 0x13,
+    0xe8, 0x90, 0x64, 0x21, 0x0c, 0x26, 0x2b, 0x5d,
+    0xfc, 0xe4, 0xb5, 0x86, 0x89, 0x43, 0x22, 0x4c,
+    0xf3, 0x3b, 0xf3, 0x09, 0xc4, 0xa4, 0x10, 0x80,
+    0xf2, 0x46, 0xe2, 0x46, 0x8f, 0x76, 0x50, 0xbf,
+    0xaf, 0x2b, 0x90, 0x1b, 0x78, 0xc7, 0xcf, 0xc1,
+    0x77, 0xd0, 0xfb, 0xa9, 0xfb, 0xc9, 0x66, 0x5a,
+    0xc5, 0x9b, 0x31, 0x41, 0x67, 0x01, 0xbe, 0x33,
+    0x10, 0xba, 0x05, 0x58, 0xed, 0x76, 0x53, 0xde,
+    0x5d, 0xc1, 0xe8, 0xbb, 0x9f, 0xf1, 0xcd, 0xfb,
+    0xdf, 0x64, 0x7f, 0xd7, 0x18, 0xab, 0x0f, 0x94,
+    0x28, 0x95, 0x4a, 0xcc, 0x6a, 0xa9, 0x50, 0xc7,
+    0x05, 0x47, 0x10, 0x41, 0x02, 0x03, 0x01, 0x00,
+    0x01, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa8, 0x47,
+    0xb9, 0x4a, 0x06, 0x47, 0x93, 0x71, 0x3d, 0xef,
+    0x7b, 0xca, 0xb4, 0x7c, 0x0a, 0xe6, 0x82, 0xd0,
+    0xe7, 0x0d, 0xa9, 0x08, 0xf6, 0xa4, 0xfd, 0xd8,
+    0x73, 0xae, 0x6f, 0x56, 0x29, 0x5e, 0x25, 0x72,
+    0xa8, 0x30, 0x44, 0x73, 0xcf, 0x56, 0x26, 0xb9,
+    0x61, 0xde, 0x42, 0x81, 0xf4, 0xf0, 0x1f, 0x5d,
+    0xcb, 0x47, 0xf2, 0x26, 0xe9, 0xe0, 0x93, 0x28,
+    0xa3, 0x10, 0x3b, 0x42, 0x1e, 0x51, 0x11, 0x12,
+    0x06, 0x5e, 0xaf, 0xce, 0xb0, 0xa5, 0x14, 0xdd,
+    0x82, 0x58, 0xa1, 0xa4, 0x12, 0xdf, 0x65, 0x1d,
+    0x51, 0x70, 0x64, 0xd5, 0x58, 0x68, 0x11, 0xa8,
+    0x6a, 0x23, 0xc2, 0xbf, 0xa1, 0x25, 0x24, 0x47,
+    0xb3, 0xa4, 0x3c, 0x83, 0x96, 0xb7, 0x1f, 0xf4,
+    0x44, 0xd4, 0xd1, 0xe9, 0xfc, 0x33, 0x68, 0x5e,
+    0xe2, 0x68, 0x99, 0x9c, 0x91, 0xe8, 0x72, 0xc9,
+    0xd7, 0x8c, 0x80, 0x20, 0x8e, 0x77, 0x83, 0x4d,
+    0xe4, 0xab, 0xf9, 0x74, 0xa1, 0xdf, 0xd3, 0xc0,
+    0x0d, 0x5b, 0x05, 0x51, 0xc2, 0x6f, 0xb2, 0x91,
+    0x02, 0xec, 0xc0, 0x02, 0x1a, 0x5c, 0x91, 0x05,
+    0xf1, 0xe3, 0xfa, 0x65, 0xc2, 0xad, 0x24, 0xe6,
+    0xe5, 0x3c, 0xb6, 0x16, 0xf1, 0xa1, 0x67, 0x1a,
+    0x9d, 0x37, 0x56, 0xbf, 0x01, 0xd7, 0x3b, 0x35,
+    0x30, 0x57, 0x73, 0xf4, 0xf0, 0x5e, 0xa7, 0xe8,
+    0x0a, 0xc1, 0x94, 0x17, 0xcf, 0x0a, 0xbd, 0xf5,
+    0x31, 0xa7, 0x2d, 0xf7, 0xf5, 0xd9, 0x8c, 0xc2,
+    0x01, 0xbd, 0xda, 0x16, 0x8e, 0xb9, 0x30, 0x40,
+    0xa6, 0x6e, 0xbd, 0xcd, 0x4d, 0x84, 0x67, 0x4e,
+    0x0b, 0xce, 0xd5, 0xef, 0xf8, 0x08, 0x63, 0x02,
+    0xc6, 0xc7, 0xf7, 0x67, 0x92, 0xe2, 0x23, 0x9d,
+    0x27, 0x22, 0x1d, 0xc6, 0x67, 0x5e, 0x66, 0xbf,
+    0x03, 0xb8, 0xa9, 0x67, 0xd4, 0x39, 0xd8, 0x75,
+    0xfa, 0xe8, 0xed, 0x56, 0xb8, 0x81, 0x02, 0x81,
+    0x81, 0x00, 0xf7, 0x46, 0x68, 0xc6, 0x13, 0xf8,
+    0xba, 0x0f, 0x83, 0xdb, 0x05, 0xa8, 0x25, 0x00,
+    0x70, 0x9c, 0x9e, 0x8b, 0x12, 0x34, 0x0d, 0x96,
+    0xcf, 0x0d, 0x98, 0x9b, 0x8d, 0x9c, 0x96, 0x78,
+    0xd1, 0x3c, 0x01, 0x8c, 0xb9, 0x35, 0x5c, 0x20,
+    0x42, 0xb4, 0x38, 0xe3, 0xd6, 0x54, 0xe7, 0x55,
+    0xd6, 0x26, 0x8a, 0x0c, 0xf6, 0x1f, 0xe0, 0x04,
+    0xc1, 0x22, 0x42, 0x19, 0x61, 0xc4, 0x94, 0x7c,
+    0x07, 0x2e, 0x80, 0x52, 0xfe, 0x8d, 0xe6, 0x92,
+    0x3a, 0x91, 0xfe, 0x72, 0x99, 0xe1, 0x2a, 0x73,
+    0x76, 0xb1, 0x24, 0x20, 0x67, 0xde, 0x28, 0xcb,
+    0x0e, 0xe6, 0x52, 0xb5, 0xfa, 0xfb, 0x8b, 0x1e,
+    0x6a, 0x1d, 0x09, 0x26, 0xb9, 0xa7, 0x61, 0xba,
+    0xf8, 0x79, 0xd2, 0x66, 0x57, 0x28, 0xd7, 0x31,
+    0xb5, 0x0b, 0x27, 0x19, 0x1e, 0x6f, 0x46, 0xfc,
+    0x54, 0x95, 0xeb, 0x78, 0x01, 0xb6, 0xd9, 0x79,
+    0x5a, 0x4d, 0x02, 0x81, 0x81, 0x00, 0xd5, 0x8f,
+    0x16, 0x53, 0x2f, 0x57, 0x93, 0xbf, 0x09, 0x75,
+    0xbf, 0x63, 0x40, 0x3d, 0x27, 0xfd, 0x23, 0x21,
+    0xde, 0x9b, 0xe9, 0x73, 0x3f, 0x49, 0x02, 0xd2,
+    0x38, 0x96, 0xcf, 0xc3, 0xba, 0x92, 0x07, 0x87,
+    0x52, 0xa9, 0x35, 0xe3, 0x0c, 0xe4, 0x2f, 0x05,
+    0x7b, 0x37, 0xa5, 0x40, 0x9c, 0x3b, 0x94, 0xf7,
+    0xad, 0xa0, 0xee, 0x3a, 0xa8, 0xfb, 0x1f, 0x11,
+    0x1f, 0xd8, 0x9a, 0x80, 0x42, 0x3d, 0x7f, 0xa4,
+    0xb8, 0x9a, 0xaa, 0xea, 0x72, 0xc1, 0xe3, 0xed,
+    0x06, 0x60, 0x92, 0x37, 0xf9, 0xba, 0xfb, 0x9e,
+    0xed, 0x05, 0xa6, 0xd4, 0x72, 0x68, 0x4f, 0x63,
+    0xfe, 0xd6, 0x10, 0x0d, 0x4f, 0x0a, 0x93, 0xc6,
+    0xb9, 0xd7, 0xaf, 0xfd, 0xd9, 0x57, 0x7d, 0xcb,
+    0x75, 0xe8, 0x93, 0x2b, 0xae, 0x4f, 0xea, 0xd7,
+    0x30, 0x0b, 0x58, 0x44, 0x82, 0x0f, 0x84, 0x5d,
+    0x62, 0x11, 0x78, 0xea, 0x5f, 0xc5, 0x02, 0x81,
+    0x81, 0x00, 0x82, 0x0c, 0xc1, 0xe6, 0x0b, 0x72,
+    0xf1, 0x48, 0x5f, 0xac, 0xbd, 0x98, 0xe5, 0x7d,
+    0x09, 0xbd, 0x15, 0x95, 0x47, 0x09, 0xa1, 0x6c,
+    0x03, 0x91, 0xbf, 0x05, 0x70, 0xc1, 0x3e, 0x52,
+    0x64, 0x99, 0x0e, 0xa7, 0x98, 0x70, 0xfb, 0xf6,
+    0xeb, 0x9e, 0x25, 0x9d, 0x8e, 0x88, 0x30, 0xf2,
+    0xf0, 0x22, 0x6c, 0xd0, 0xcc, 0x51, 0x8f, 0x5c,
+    0x70, 0xc7, 0x37, 0xc4, 0x69, 0xab, 0x1d, 0xfc,
+    0xed, 0x3a, 0x03, 0xbb, 0xa2, 0xad, 0xb6, 0xea,
+    0x89, 0x6b, 0x67, 0x4b, 0x96, 0xaa, 0xd9, 0xcc,
+    0xc8, 0x4b, 0xfa, 0x18, 0x21, 0x08, 0xb2, 0xa3,
+    0xb9, 0x3e, 0x61, 0x99, 0xdc, 0x5a, 0x97, 0x9c,
+    0x73, 0x6a, 0xb9, 0xf9, 0x68, 0x03, 0x24, 0x5f,
+    0x55, 0x77, 0x9c, 0xb4, 0xbe, 0x7a, 0x78, 0x53,
+    0x68, 0x48, 0x69, 0x53, 0xc8, 0xb1, 0xf5, 0xbf,
+    0x98, 0x2d, 0x11, 0x1e, 0x98, 0xa8, 0x36, 0x50,
+    0xa0, 0xb1, 0x02, 0x81, 0x81, 0x00, 0x90, 0x88,
+    0x30, 0x71, 0xc7, 0xfe, 0x9b, 0x6d, 0x95, 0x37,
+    0x6d, 0x79, 0xfc, 0x85, 0xe7, 0x44, 0x78, 0xbc,
+    0x79, 0x6e, 0x47, 0x86, 0xc9, 0xf3, 0xdd, 0xc6,
+    0xec, 0xa9, 0x94, 0x9f, 0x40, 0xeb, 0x87, 0xd0,
+    0xdb, 0xee, 0xcd, 0x1b, 0x87, 0x23, 0xff, 0x76,
+    0xd4, 0x37, 0x8a, 0xcd, 0xb9, 0x6e, 0xd1, 0x98,
+    0xf6, 0x97, 0x8d, 0xe3, 0x81, 0x6d, 0xc3, 0x4e,
+    0xd1, 0xa0, 0xc4, 0x9f, 0xbd, 0x34, 0xe5, 0xe8,
+    0x53, 0x4f, 0xca, 0x10, 0xb5, 0xed, 0xe7, 0x16,
+    0x09, 0x54, 0xde, 0x60, 0xa7, 0xd1, 0x16, 0x6e,
+    0x2e, 0xb7, 0xbe, 0x7a, 0xd5, 0x9b, 0x26, 0xef,
+    0xe4, 0x0e, 0x77, 0xfa, 0xa9, 0xdd, 0xdc, 0xb9,
+    0x88, 0x19, 0x23, 0x70, 0xc7, 0xe1, 0x60, 0xaf,
+    0x8c, 0x73, 0x04, 0xf7, 0x71, 0x17, 0x81, 0x36,
+    0x75, 0xbb, 0x97, 0xd7, 0x75, 0xb6, 0x8e, 0xbc,
+    0xac, 0x9c, 0x6a, 0x9b, 0x24, 0x89, 0x02, 0x81,
+    0x80, 0x5a, 0x2b, 0xc7, 0x6b, 0x8c, 0x65, 0xdb,
+    0x04, 0x73, 0xab, 0x25, 0xe1, 0x5b, 0xbc, 0x3c,
+    0xcf, 0x5a, 0x3c, 0x04, 0xae, 0x97, 0x2e, 0xfd,
+    0xa4, 0x97, 0x1f, 0x05, 0x17, 0x27, 0xac, 0x7c,
+    0x30, 0x85, 0xb4, 0x82, 0x3f, 0x5b, 0xb7, 0x94,
+    0x3b, 0x7f, 0x6c, 0x0c, 0xc7, 0x16, 0xc6, 0xa0,
+    0xbd, 0x80, 0xb0, 0x81, 0xde, 0xa0, 0x23, 0xa6,
+    0xf6, 0x75, 0x33, 0x51, 0x35, 0xa2, 0x75, 0x55,
+    0x70, 0x4d, 0x42, 0xbb, 0xcf, 0x54, 0xe4, 0xdb,
+    0x2d, 0x88, 0xa0, 0x7a, 0xf2, 0x17, 0xa7, 0xdd,
+    0x13, 0x44, 0x9f, 0x5f, 0x6b, 0x2c, 0x42, 0x42,
+    0x8b, 0x13, 0x4d, 0xf9, 0x5b, 0xf8, 0x33, 0x42,
+    0xd9, 0x9e, 0x50, 0x1c, 0x7c, 0xbc, 0xfa, 0x62,
+    0x85, 0x0b, 0xcf, 0x99, 0xda, 0x9e, 0x04, 0x90,
+    0xb2, 0xc6, 0xb2, 0x0a, 0x2a, 0x7c, 0x6d, 0x6a,
+    0x40, 0xfc, 0xf5, 0x50, 0x98, 0x46, 0x89, 0x82,
+    0x40
 };
 #endif
 
diff -Nru openssl-3.5.6/include/crypto/riscv_arch.h openssl-3.5.7/include/crypto/riscv_arch.h
--- openssl-3.5.6/include/crypto/riscv_arch.h	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/include/crypto/riscv_arch.h	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -27,7 +27,7 @@
 #define VECTOR_CAPABLE (OPENSSL_riscv_hwcap_P & COMPAT_HWCAP_ISA_V)
 #define ZVX_MIN 15
 #define ZVX_MAX 23
-#define IS_IN_DEPEND_VECTOR(offset) ((ZVX_MIN >= offset) && (offset <= ZVX_MAX))
+#define IS_IN_DEPEND_VECTOR(offset) ((ZVX_MIN <= offset) && (offset <= ZVX_MAX))
 #endif
 #endif
 #endif
diff -Nru openssl-3.5.6/include/internal/cryptlib.h openssl-3.5.7/include/internal/cryptlib.h
--- openssl-3.5.6/include/internal/cryptlib.h	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/include/internal/cryptlib.h	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -133,6 +133,8 @@
 const char *ossl_lib_ctx_get_descriptor(OSSL_LIB_CTX *libctx);
 CRYPTO_THREAD_LOCAL *ossl_lib_ctx_get_rcukey(OSSL_LIB_CTX *libctx);
 
+int ossl_thread_init_local(CRYPTO_THREAD_LOCAL *key, void (*cleanup)(void *));
+
 OSSL_LIB_CTX *ossl_crypto_ex_data_get_ossl_lib_ctx(const CRYPTO_EX_DATA *ad);
 int ossl_crypto_new_ex_data_ex(OSSL_LIB_CTX *ctx, int class_index, void *obj,
     CRYPTO_EX_DATA *ad);
diff -Nru openssl-3.5.6/include/internal/quic_cfq.h openssl-3.5.7/include/internal/quic_cfq.h
--- openssl-3.5.6/include/internal/quic_cfq.h	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/include/internal/quic_cfq.h	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -149,6 +149,7 @@
 QUIC_CFQ_ITEM *ossl_quic_cfq_item_get_priority_next(const QUIC_CFQ_ITEM *item,
     uint32_t pn_space);
 
+int ossl_quic_cfq_discard_unreliable(QUIC_CFQ *cfq, QUIC_CFQ_ITEM *item);
 #endif
 
 #endif
diff -Nru openssl-3.5.6/include/internal/quic_channel.h openssl-3.5.7/include/internal/quic_channel.h
--- openssl-3.5.6/include/internal/quic_channel.h	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/include/internal/quic_channel.h	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -283,7 +283,6 @@
 
 /* Temporarily exposed during QUIC_PORT transition. */
 int ossl_quic_channel_on_new_conn(QUIC_CHANNEL *ch, const BIO_ADDR *peer,
-    const QUIC_CONN_ID *peer_scid,
     const QUIC_CONN_ID *peer_dcid);
 
 /* For use by QUIC_PORT. You should not need to call this directly. */
@@ -465,9 +464,11 @@
 uint64_t ossl_quic_channel_get_max_idle_timeout_actual(const QUIC_CHANNEL *ch);
 
 int ossl_quic_bind_channel(QUIC_CHANNEL *ch, const BIO_ADDR *peer,
-    const QUIC_CONN_ID *scid, const QUIC_CONN_ID *dcid,
-    const QUIC_CONN_ID *odcid);
+    const QUIC_CONN_ID *dcid, const QUIC_CONN_ID *odcid);
 
+void ossl_ch_reset_rx_state(QUIC_CHANNEL *ch);
+uint64_t ossl_quic_channel_get_path_challenge_count(const QUIC_CHANNEL *ch);
+uint64_t ossl_quic_channel_get_path_response_count(const QUIC_CHANNEL *ch);
 #endif
 
 #endif
diff -Nru openssl-3.5.6/include/internal/quic_fifd.h openssl-3.5.7/include/internal/quic_fifd.h
--- openssl-3.5.6/include/internal/quic_fifd.h	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/include/internal/quic_fifd.h	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -83,6 +83,7 @@
 void ossl_quic_fifd_set_qlog_cb(QUIC_FIFD *fifd, QLOG *(*get_qlog_cb)(void *arg),
     void *arg);
 
+void ossl_quic_fifd_pkt_discard_unreliable(QUIC_FIFD *fifd, QUIC_TXPIM_PKT *tpkt);
 #endif
 
 #endif
diff -Nru openssl-3.5.6/include/internal/quic_stream_map.h openssl-3.5.7/include/internal/quic_stream_map.h
--- openssl-3.5.6/include/internal/quic_stream_map.h	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/include/internal/quic_stream_map.h	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -298,7 +298,7 @@
      *            STOP_SENDING.]
      *
      *            TODO(QUIC FUTURE): Implement the latter case (currently we
-                                     just always do STOP_SENDING).
+     *                               just always do STOP_SENDING).
      *
      *         and;
      *
@@ -314,6 +314,7 @@
     unsigned int ready_for_gc : 1;
     /* Set to 1 if this is currently counted in the shutdown flush stream count. */
     unsigned int shutdown_flush : 1;
+    unsigned int have_final_size : 1;
 };
 
 #define QUIC_STREAM_INITIATOR_CLIENT 0
diff -Nru openssl-3.5.6/include/internal/rcu.h openssl-3.5.7/include/internal/rcu.h
--- openssl-3.5.6/include/internal/rcu.h	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/include/internal/rcu.h	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2023-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2023-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -17,6 +17,8 @@
 
 typedef struct rcu_lock_st CRYPTO_RCU_LOCK;
 
+typedef struct rcu_cb_item CRYPTO_RCU_CB_ITEM;
+
 CRYPTO_RCU_LOCK *ossl_rcu_lock_new(int num_writers, OSSL_LIB_CTX *ctx);
 void ossl_rcu_lock_free(CRYPTO_RCU_LOCK *lock);
 void ossl_rcu_read_lock(CRYPTO_RCU_LOCK *lock);
@@ -24,7 +26,10 @@
 void ossl_rcu_write_unlock(CRYPTO_RCU_LOCK *lock);
 void ossl_rcu_read_unlock(CRYPTO_RCU_LOCK *lock);
 void ossl_synchronize_rcu(CRYPTO_RCU_LOCK *lock);
-int ossl_rcu_call(CRYPTO_RCU_LOCK *lock, rcu_cb_fn cb, void *data);
+CRYPTO_RCU_CB_ITEM *ossl_rcu_cb_item_new(void);
+void ossl_rcu_cb_item_free(CRYPTO_RCU_CB_ITEM *item);
+void ossl_rcu_call(CRYPTO_RCU_LOCK *lock, CRYPTO_RCU_CB_ITEM *item,
+    rcu_cb_fn cb, void *data);
 void *ossl_rcu_uptr_deref(void **p);
 void ossl_rcu_assign_uptr(void **p, void **v);
 #define ossl_rcu_deref(p) ossl_rcu_uptr_deref((void **)p)
diff -Nru openssl-3.5.6/include/openssl/bn.h openssl-3.5.7/include/openssl/bn.h
--- openssl-3.5.6/include/openssl/bn.h	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/include/openssl/bn.h	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
@@ -273,8 +273,8 @@
 
 int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d,
     BN_CTX *ctx);
-#define BN_mod(rem, m, d, ctx) BN_div(NULL, (rem), (m), (d), (ctx))
-int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx);
+#define BN_mod(rem, a, m, ctx) BN_div(NULL, (rem), (a), (m), (ctx))
+int BN_nnmod(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
 int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
     BN_CTX *ctx);
 int BN_mod_add_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
diff -Nru openssl-3.5.6/include/openssl/ssl.h.in openssl-3.5.7/include/openssl/ssl.h.in
--- openssl-3.5.6/include/openssl/ssl.h.in	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/include/openssl/ssl.h.in	2026-06-09 13:54:25.000000000 +0200
@@ -1,7 +1,7 @@
 /*
  * {- join("\n * ", @autowarntext) -}
  *
- * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
  * Copyright 2005 Nokia. All rights reserved.
  *
@@ -2551,7 +2551,7 @@
 __owur int SSL_session_reused(const SSL *s);
 __owur int SSL_is_server(const SSL *s);
 
-__owur __owur SSL_CONF_CTX *SSL_CONF_CTX_new(void);
+__owur SSL_CONF_CTX *SSL_CONF_CTX_new(void);
 int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx);
 void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx);
 unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags);
diff -Nru openssl-3.5.6/include/openssl/x509_acert.h.in openssl-3.5.7/include/openssl/x509_acert.h.in
--- openssl-3.5.6/include/openssl/x509_acert.h.in	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/include/openssl/x509_acert.h.in	2026-06-09 13:54:25.000000000 +0200
@@ -1,7 +1,7 @@
 /*
  * {- join("\n * ", @autowarntext) -}
  *
- * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -23,6 +23,10 @@
 #include <openssl/x509.h>
 #include <openssl/pem.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct X509_acert_st X509_ACERT;
 typedef struct X509_acert_info_st X509_ACERT_INFO;
 typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO;
@@ -206,4 +210,8 @@
 -}
 /* clang-format on */
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif
diff -Nru openssl-3.5.6/NEWS.md openssl-3.5.7/NEWS.md
--- openssl-3.5.6/NEWS.md	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/NEWS.md	2026-06-09 13:54:25.000000000 +0200
@@ -23,10 +23,65 @@
 OpenSSL 3.5
 -----------
 
+### Major changes between OpenSSL 3.5.6 and OpenSSL 3.5.7 [9 Jun 2026]
+
+OpenSSL 3.5.7 is a security patch release.  The most severe CVE fixed
+in this release is High.
+
+This release incorporates the following bug fixes and mitigations:
+
+  * Fixed heap use-after-free in `PKCS7_verify()`.
+    ([CVE-2026-45447])
+
+  * Fixed CMS `AuthEnvelopedData` processing may accept forged messages.
+    ([CVE-2026-34182])
+
+  * Fixed unbounded memory growth in the QUIC `PATH_CHALLENGE` handler.
+    ([CVE-2026-34183])
+
+  * Fixed NULL pointer dereference in QUIC server initial packet handling.
+    ([CVE-2026-42764])
+
+  * Fixed AES-OCB IV ignored on `EVP_Cipher()` path.
+    ([CVE-2026-45445])
+
+  * Fixed possible heap buffer overflow in ASN.1 multibyte string conversion.
+    ([CVE-2026-7383])
+
+  * Fixed out-of-bounds read in CMS password-based decryption.
+    ([CVE-2026-9076])
+
+  * Fixed heap buffer over-read in ASN.1 content parsing.
+    ([CVE-2026-34180])
+
+  * Fixed PKCS#12 files with PBMAC1 are accepted with short HMAC keys.
+    ([CVE-2026-34181])
+
+  * Fixed possible NULL dereference in password-dased CMS decryption.
+    ([CVE-2026-42766])
+
+  * Fixed NULL pointer dereference in CRMF `EncryptedValue` decryption.
+    ([CVE-2026-42767])
+
+  * Fixed multi-`RecipientInfo` Bleichenbacher Oracle in `CMS_decrypt()`
+    and `PKCS7_decrypt()`.
+    ([CVE-2026-42768])
+
+  * Fixed trust anchor substitution via `cert`/`issuer` typo in CMP
+    `rootCaKeyUpdate`.
+    ([CVE-2026-42769])
+
+  * Fixed FFC-DH peer validation uses attacker-supplied `q`.
+    ([CVE-2026-42770])
+
+  * Fixed incorrect tag processing for empty messages in AES-GCM-SIV
+    and AES-SIV modes.
+    ([CVE-2026-45446])
+
 ### Major changes between OpenSSL 3.5.5 and OpenSSL 3.5.6 [7 Apr 2026]
 
 OpenSSL 3.5.6 is a security patch release. The most severe CVE fixed in this
-release is Medium.
+release is Moderate.
 
 This release incorporates the following bug fixes and mitigations:
 
@@ -2210,6 +2265,8 @@
 [CVE-2025-69420]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-69420
 [CVE-2025-69421]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-69421
 [CVE-2026-2673]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-2673
+[CVE-2026-7383]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-7383
+[CVE-2026-9076]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-9076
 [CVE-2026-22795]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-22795
 [CVE-2026-22796]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-22796
 [CVE-2026-28387]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-28387
@@ -2218,6 +2275,19 @@
 [CVE-2026-28390]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-28390
 [CVE-2026-31789]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-31789
 [CVE-2026-31790]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-31790
+[CVE-2026-34180]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-34180
+[CVE-2026-34181]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-34181
+[CVE-2026-34182]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-34182
+[CVE-2026-34183]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-34183
+[CVE-2026-42764]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-42764
+[CVE-2026-42766]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-42766
+[CVE-2026-42767]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-42767
+[CVE-2026-42768]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-42768
+[CVE-2026-42769]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-42769
+[CVE-2026-42770]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-42770
+[CVE-2026-45445]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-45445
+[CVE-2026-45446]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-45446
+[CVE-2026-45447]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-45447
 [ESV]: https://csrc.nist.gov/Projects/cryptographic-module-validation-program/entropy-validations
 [OpenSSL Guide]: https://www.openssl.org/docs/manmaster/man7/ossl-guide-introduction.html
 [README-QUIC.md]: ./README-QUIC.md
diff -Nru openssl-3.5.6/providers/defltprov.c openssl-3.5.7/providers/defltprov.c
--- openssl-3.5.6/providers/defltprov.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/providers/defltprov.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -377,8 +377,10 @@
 #endif
     { PROV_NAMES_TLS1_PRF, "provider=default", ossl_kdf_tls1_prf_keyexch_functions },
     { PROV_NAMES_HKDF, "provider=default", ossl_kdf_hkdf_keyexch_functions },
+#ifndef OPENSSL_NO_SCRYPT
     { PROV_NAMES_SCRYPT, "provider=default",
         ossl_kdf_scrypt_keyexch_functions },
+#endif
     { NULL, NULL, NULL }
 };
 
@@ -453,8 +455,10 @@
     { PROV_NAMES_ML_DSA_87, "provider=default", ossl_ml_dsa_87_signature_functions },
 #endif
     { PROV_NAMES_HMAC, "provider=default", ossl_mac_legacy_hmac_signature_functions },
+#ifndef OPENSSL_NO_SIPHASH
     { PROV_NAMES_SIPHASH, "provider=default",
         ossl_mac_legacy_siphash_signature_functions },
+#endif
 #ifndef OPENSSL_NO_POLY1305
     { PROV_NAMES_POLY1305, "provider=default",
         ossl_mac_legacy_poly1305_signature_functions },
@@ -565,12 +569,16 @@
         PROV_DESCS_TLS1_PRF_SIGN },
     { PROV_NAMES_HKDF, "provider=default", ossl_kdf_keymgmt_functions,
         PROV_DESCS_HKDF_SIGN },
+#ifndef OPENSSL_NO_SCRYPT
     { PROV_NAMES_SCRYPT, "provider=default", ossl_kdf_keymgmt_functions,
         PROV_DESCS_SCRYPT_SIGN },
+#endif
     { PROV_NAMES_HMAC, "provider=default", ossl_mac_legacy_keymgmt_functions,
         PROV_DESCS_HMAC_SIGN },
+#ifndef OPENSSL_NO_SIPHASH
     { PROV_NAMES_SIPHASH, "provider=default", ossl_mac_legacy_keymgmt_functions,
         PROV_DESCS_SIPHASH_SIGN },
+#endif
 #ifndef OPENSSL_NO_POLY1305
     { PROV_NAMES_POLY1305, "provider=default", ossl_mac_legacy_keymgmt_functions,
         PROV_DESCS_POLY1305_SIGN },
diff -Nru openssl-3.5.6/providers/fips/self_test_data.inc openssl-3.5.7/providers/fips/self_test_data.inc
--- openssl-3.5.6/providers/fips/self_test_data.inc	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/providers/fips/self_test_data.inc	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -913,114 +913,113 @@
 #ifndef OPENSSL_NO_DH
 /* DH KAT */
 static const unsigned char dh_priv[] = {
-    0x14, 0x33, 0xe0, 0xb5, 0xa9, 0x17, 0xb6, 0x0a,
-    0x30, 0x23, 0xf2, 0xf8, 0xaa, 0x2c, 0x2d, 0x70,
-    0xd2, 0x96, 0x8a, 0xba, 0x9a, 0xea, 0xc8, 0x15,
-    0x40, 0xb8, 0xfc, 0xe6
+    0x01, 0x14, 0xf7, 0x53, 0x7a, 0x2e, 0xc7, 0x08,
+    0x2e, 0x36, 0xf7, 0x38, 0x7a, 0xc9, 0xe4, 0x5b,
+    0xac, 0x68, 0xc7, 0xf7, 0x20, 0x8d, 0xf0, 0x8a,
+    0xee, 0x96, 0x67, 0x92, 0x8a
 };
 static const unsigned char dh_pub[] = {
-    0x00, 0x8f, 0x81, 0x67, 0x68, 0xce, 0x97, 0x99,
-    0x7e, 0x11, 0x5c, 0xad, 0x5b, 0xe1, 0x0c, 0xd4,
-    0x15, 0x44, 0xdf, 0xc2, 0x47, 0xe7, 0x06, 0x27,
-    0x5e, 0xf3, 0x9d, 0x5c, 0x4b, 0x2e, 0x35, 0x05,
-    0xfd, 0x3c, 0x8f, 0x35, 0x85, 0x1b, 0x82, 0xdd,
-    0x49, 0xc9, 0xa8, 0x7e, 0x3a, 0x5f, 0x33, 0xdc,
-    0x8f, 0x5e, 0x32, 0x76, 0xe1, 0x52, 0x1b, 0x88,
-    0x85, 0xda, 0xa9, 0x1d, 0x5f, 0x1c, 0x05, 0x3a,
-    0xd4, 0x8d, 0xbb, 0xe7, 0x46, 0x46, 0x1e, 0x29,
-    0x4b, 0x5a, 0x02, 0x88, 0x46, 0x94, 0xd0, 0x68,
-    0x7d, 0xb2, 0x9f, 0x3a, 0x3d, 0x82, 0x05, 0xe5,
-    0xa7, 0xbe, 0x6c, 0x7e, 0x24, 0x35, 0x25, 0x14,
-    0xf3, 0x45, 0x08, 0x90, 0xfc, 0x55, 0x2e, 0xa8,
-    0xb8, 0xb1, 0x89, 0x15, 0x94, 0x51, 0x44, 0xa9,
-    0x9f, 0x68, 0xcb, 0x90, 0xbc, 0xd3, 0xae, 0x02,
-    0x37, 0x26, 0xe4, 0xe9, 0x1a, 0x90, 0x95, 0x7e,
-    0x1d, 0xac, 0x0c, 0x91, 0x97, 0x83, 0x24, 0x83,
-    0xb9, 0xa1, 0x40, 0x72, 0xac, 0xf0, 0x55, 0x32,
-    0x18, 0xab, 0xb8, 0x90, 0xda, 0x13, 0x4a, 0xc8,
-    0x4b, 0x7c, 0x18, 0xbc, 0x33, 0xbf, 0x99, 0x85,
-    0x39, 0x3e, 0xc6, 0x95, 0x9b, 0x48, 0x8e, 0xbe,
-    0x46, 0x59, 0x48, 0x41, 0x0d, 0x37, 0x25, 0x94,
-    0xbe, 0x8d, 0xf5, 0x81, 0x52, 0xf6, 0xdc, 0xeb,
-    0x98, 0xd7, 0x3b, 0x44, 0x61, 0x6f, 0xa3, 0xef,
-    0x7b, 0xfe, 0xbb, 0xc2, 0x8e, 0x46, 0x63, 0xbc,
-    0x52, 0x65, 0xf9, 0xf8, 0x85, 0x41, 0xdf, 0x82,
-    0x4a, 0x10, 0x2a, 0xe3, 0x0c, 0xb7, 0xad, 0x84,
-    0xa6, 0x6f, 0x4e, 0x8e, 0x96, 0x1e, 0x04, 0xf7,
-    0x57, 0x39, 0xca, 0x58, 0xd4, 0xef, 0x5a, 0xf1,
-    0xf5, 0x69, 0xc2, 0xb1, 0x5c, 0x0a, 0xce, 0xbe,
-    0x38, 0x01, 0xb5, 0x3f, 0x07, 0x8a, 0x72, 0x90,
-    0x10, 0xac, 0x51, 0x3a, 0x96, 0x43, 0xdf, 0x6f,
-    0xea
+    0x07, 0x21, 0x4b, 0x8d, 0x23, 0x75, 0x50, 0x84,
+    0xaa, 0xec, 0x2f, 0xac, 0xae, 0x2a, 0xf4, 0xc1,
+    0x25, 0xca, 0x0b, 0xee, 0x20, 0xaf, 0x3a, 0x2f,
+    0xda, 0xf9, 0x5f, 0xce, 0x01, 0xb9, 0xd9, 0xc4,
+    0x5f, 0x7c, 0xba, 0xd8, 0x46, 0xc6, 0xee, 0x0a,
+    0x53, 0x80, 0x9d, 0x5c, 0x22, 0x75, 0xa9, 0xe5,
+    0x3d, 0xfe, 0x31, 0x60, 0x4a, 0xe6, 0xd5, 0x18,
+    0x02, 0x19, 0x0a, 0x80, 0xcd, 0x38, 0x35, 0x71,
+    0x63, 0xe3, 0x1d, 0xe8, 0x96, 0xdb, 0x5e, 0x5b,
+    0x23, 0x2f, 0x70, 0x5f, 0x4a, 0xf0, 0xf7, 0xf4,
+    0xe8, 0x1f, 0x44, 0x5a, 0x4f, 0x22, 0xc5, 0x8b,
+    0xc3, 0xc6, 0x48, 0x93, 0x50, 0xe1, 0x0f, 0x2f,
+    0x73, 0xb9, 0xeb, 0xba, 0xe4, 0x8e, 0x35, 0x5c,
+    0x67, 0xcf, 0xf8, 0xb0, 0x83, 0x19, 0xf3, 0xdb,
+    0xb8, 0x80, 0xbc, 0x65, 0xcb, 0x8f, 0x91, 0x69,
+    0x76, 0x06, 0xd9, 0xd7, 0xc1, 0x2b, 0xf9, 0x15,
+    0x6b, 0x71, 0x76, 0x1e, 0xc8, 0x29, 0xb2, 0xc2,
+    0x02, 0xc7, 0xef, 0x75, 0x74, 0x0f, 0xe6, 0x74,
+    0x4a, 0x0b, 0x67, 0xbd, 0xa9, 0x44, 0x27, 0xa9,
+    0x67, 0xf9, 0xbf, 0x6c, 0x97, 0xcf, 0xa3, 0x8b,
+    0x1b, 0x74, 0x02, 0x45, 0x10, 0xf4, 0x0d, 0x6c,
+    0x7b, 0x9d, 0x6c, 0xb9, 0xf9, 0xc9, 0xf5, 0x1a,
+    0xb9, 0xe4, 0xc9, 0x44, 0xff, 0xaa, 0x20, 0xf2,
+    0x73, 0xd0, 0x2e, 0xc9, 0xeb, 0xba, 0x19, 0x1a,
+    0x22, 0xe8, 0x82, 0x3d, 0x15, 0x24, 0xa5, 0x39,
+    0x9d, 0x9b, 0x1b, 0xf5, 0xb0, 0x4f, 0x06, 0xc0,
+    0x87, 0x90, 0x8d, 0xcf, 0x19, 0xb5, 0xd5, 0xad,
+    0xd4, 0x17, 0x9a, 0x94, 0x75, 0x42, 0xa1, 0xf3,
+    0x35, 0x99, 0x3a, 0x1f, 0x68, 0x1c, 0x40, 0x52,
+    0x7b, 0x5e, 0x39, 0xd5, 0x76, 0xdd, 0x18, 0x49,
+    0xfc, 0xf2, 0x3c, 0x9c, 0x0e, 0x44, 0xa5, 0xc1,
+    0x5a, 0x06, 0x46, 0x90, 0x13, 0x34, 0x04, 0x4f
 };
 static const unsigned char dh_peer_pub[] = {
-    0x1f, 0xc1, 0xda, 0x34, 0x1d, 0x1a, 0x84, 0x6a,
-    0x96, 0xb7, 0xbe, 0x24, 0x34, 0x0f, 0x87, 0x7d,
-    0xd0, 0x10, 0xaa, 0x03, 0x56, 0xd5, 0xad, 0x58,
-    0xaa, 0xe9, 0xc7, 0xb0, 0x8f, 0x74, 0x9a, 0x32,
-    0x23, 0x51, 0x10, 0xb5, 0xd8, 0x8e, 0xb5, 0xdb,
-    0xfa, 0x97, 0x8d, 0x27, 0xec, 0xc5, 0x30, 0xf0,
-    0x2d, 0x31, 0x14, 0x00, 0x5b, 0x64, 0xb1, 0xc0,
-    0xe0, 0x24, 0xcb, 0x8a, 0xe2, 0x16, 0x98, 0xbc,
-    0xa9, 0xe6, 0x0d, 0x42, 0x80, 0x86, 0x22, 0xf1,
-    0x81, 0xc5, 0x6e, 0x1d, 0xe7, 0xa9, 0x6e, 0x6e,
-    0xfe, 0xe9, 0xd6, 0x65, 0x67, 0xe9, 0x1b, 0x97,
-    0x70, 0x42, 0xc7, 0xe3, 0xd0, 0x44, 0x8f, 0x05,
-    0xfb, 0x77, 0xf5, 0x22, 0xb9, 0xbf, 0xc8, 0xd3,
-    0x3c, 0xc3, 0xc3, 0x1e, 0xd3, 0xb3, 0x1f, 0x0f,
-    0xec, 0xb6, 0xdb, 0x4f, 0x6e, 0xa3, 0x11, 0xe7,
-    0x7a, 0xfd, 0xbc, 0xd4, 0x7a, 0xee, 0x1b, 0xb1,
-    0x50, 0xf2, 0x16, 0x87, 0x35, 0x78, 0xfb, 0x96,
-    0x46, 0x8e, 0x8f, 0x9f, 0x3d, 0xe8, 0xef, 0xbf,
-    0xce, 0x75, 0x62, 0x4b, 0x1d, 0xf0, 0x53, 0x22,
-    0xa3, 0x4f, 0x14, 0x63, 0xe8, 0x39, 0xe8, 0x98,
-    0x4c, 0x4a, 0xd0, 0xa9, 0x6e, 0x1a, 0xc8, 0x42,
-    0xe5, 0x31, 0x8c, 0xc2, 0x3c, 0x06, 0x2a, 0x8c,
-    0xa1, 0x71, 0xb8, 0xd5, 0x75, 0x98, 0x0d, 0xde,
-    0x7f, 0xc5, 0x6f, 0x15, 0x36, 0x52, 0x38, 0x20,
-    0xd4, 0x31, 0x92, 0xbf, 0xd5, 0x1e, 0x8e, 0x22,
-    0x89, 0x78, 0xac, 0xa5, 0xb9, 0x44, 0x72, 0xf3,
-    0x39, 0xca, 0xeb, 0x99, 0x31, 0xb4, 0x2b, 0xe3,
-    0x01, 0x26, 0x8b, 0xc9, 0x97, 0x89, 0xc9, 0xb2,
-    0x55, 0x71, 0xc3, 0xc0, 0xe4, 0xcb, 0x3f, 0x00,
-    0x7f, 0x1a, 0x51, 0x1c, 0xbb, 0x53, 0xc8, 0x51,
-    0x9c, 0xdd, 0x13, 0x02, 0xab, 0xca, 0x6c, 0x0f,
-    0x34, 0xf9, 0x67, 0x39, 0xf1, 0x7f, 0xf4, 0x8b
+    0x82, 0x32, 0x3a, 0x03, 0x60, 0x05, 0x11, 0xce,
+    0x4b, 0xb3, 0xb6, 0x69, 0x0a, 0x75, 0x88, 0x73,
+    0x42, 0x74, 0x8e, 0x54, 0xc9, 0x7c, 0xcf, 0xe9,
+    0xfd, 0x85, 0x42, 0x33, 0xc1, 0x8a, 0x1b, 0x07,
+    0x82, 0x26, 0x13, 0x1f, 0xe1, 0x74, 0x8c, 0x10,
+    0x45, 0x9e, 0xf2, 0x50, 0xdf, 0x39, 0x55, 0x58,
+    0x0b, 0xea, 0xc9, 0x1f, 0xae, 0x3e, 0xfb, 0xec,
+    0x52, 0x5c, 0x4e, 0x69, 0x85, 0x83, 0x8d, 0x04,
+    0x23, 0xaf, 0x6e, 0x33, 0x73, 0x96, 0x5e, 0xf8,
+    0x05, 0xa3, 0x5b, 0xee, 0xe4, 0xf2, 0x8c, 0x03,
+    0x59, 0xd2, 0x98, 0x78, 0xb3, 0xe3, 0xf5, 0x44,
+    0xb6, 0x3d, 0x2a, 0x51, 0xf0, 0xcb, 0x29, 0x29,
+    0x1b, 0x0e, 0xbc, 0xb1, 0xb4, 0x80, 0x8c, 0xbc,
+    0xdf, 0x9c, 0x32, 0xcf, 0xbc, 0xe8, 0x18, 0x27,
+    0xd7, 0x74, 0x9e, 0xa8, 0xed, 0x87, 0xb9, 0x4d,
+    0x0b, 0x06, 0xad, 0x0e, 0x15, 0x83, 0x71, 0xcd,
+    0x53, 0xd0, 0x54, 0x86, 0x03, 0xe4, 0x1e, 0x30,
+    0x49, 0xaf, 0xec, 0x75, 0xe1, 0x6c, 0xa1, 0xad,
+    0xee, 0x78, 0xf1, 0x4b, 0xf7, 0x70, 0x42, 0xbb,
+    0x2f, 0xab, 0xc4, 0xa7, 0x31, 0x76, 0x77, 0x07,
+    0x69, 0x73, 0xc0, 0xb2, 0xbf, 0x9b, 0x8b, 0xad,
+    0xe7, 0x14, 0xe4, 0x28, 0x75, 0xef, 0x8f, 0x71,
+    0x09, 0x7d, 0x87, 0xb1, 0x0e, 0x4f, 0xf5, 0xb1,
+    0xd9, 0xdd, 0xe3, 0xd0, 0xe3, 0xa7, 0x93, 0x2c,
+    0x81, 0x26, 0x9a, 0x71, 0x6d, 0x29, 0x63, 0x5b,
+    0x63, 0x5c, 0x36, 0xd9, 0x56, 0x32, 0xfb, 0xaf,
+    0x49, 0x97, 0x0c, 0xb8, 0x45, 0xa4, 0x40, 0x7d,
+    0x25, 0x89, 0x9b, 0x71, 0xc2, 0x50, 0x8c, 0x35,
+    0x63, 0xbc, 0x4f, 0x5c, 0x2f, 0x6d, 0x20, 0x7f,
+    0xeb, 0x59, 0xce, 0x06, 0x69, 0xcd, 0x25, 0xe8,
+    0x7b, 0x6e, 0x10, 0x88, 0x14, 0x72, 0x6f, 0x19,
+    0x11, 0x1e, 0x36, 0xae, 0xaa, 0x54, 0xf9, 0xb4
 };
 
 static const unsigned char dh_secret_expected[256] = {
-    0xa0, 0x38, 0x64, 0x37, 0xdf, 0x2d, 0x2c, 0x78,
-    0x49, 0xb9, 0xa7, 0x77, 0xfb, 0xc1, 0x69, 0x94,
-    0x85, 0xc5, 0x5a, 0xbc, 0x8d, 0x43, 0x32, 0x23,
-    0x94, 0xf5, 0xba, 0xb4, 0x5f, 0x22, 0x4b, 0x4e,
-    0xc4, 0xfd, 0x89, 0x41, 0x56, 0x41, 0xe8, 0x9f,
-    0x2d, 0x0d, 0x26, 0x33, 0x60, 0x13, 0x8a, 0x20,
-    0xf1, 0x7e, 0xb3, 0x76, 0x38, 0x03, 0x0e, 0x48,
-    0x4f, 0x27, 0x8c, 0x32, 0xdb, 0x66, 0x5c, 0xbf,
-    0x7f, 0xc7, 0xeb, 0xc6, 0x2d, 0xfd, 0x00, 0x08,
-    0xb0, 0x98, 0x4e, 0xad, 0x68, 0x65, 0xca, 0x9e,
-    0x78, 0xe1, 0xaa, 0xb7, 0x8e, 0x08, 0x4d, 0x67,
-    0xa6, 0x15, 0x16, 0xbb, 0x41, 0xac, 0x15, 0xb5,
-    0x08, 0x92, 0x5d, 0x25, 0x1d, 0x7f, 0xf3, 0x1b,
-    0x5c, 0xea, 0x21, 0x6b, 0xe5, 0x00, 0x4d, 0xb6,
-    0x8e, 0xae, 0x84, 0xb4, 0xee, 0xf7, 0xcc, 0xdd,
-    0x64, 0x19, 0x4e, 0x25, 0xce, 0x37, 0x4f, 0xde,
-    0xb6, 0x21, 0xba, 0xd9, 0xc0, 0x7a, 0x87, 0xc7,
-    0x90, 0x0a, 0x78, 0x8b, 0xdd, 0xbc, 0x68, 0x77,
-    0x2d, 0xa6, 0xdf, 0x4d, 0x2e, 0xca, 0xdc, 0x86,
-    0xb6, 0x1e, 0x54, 0x2b, 0x3a, 0xa9, 0x52, 0x67,
-    0xf3, 0x1a, 0x35, 0xb7, 0x5a, 0xcd, 0x99, 0x59,
-    0xe9, 0x07, 0x6f, 0xd7, 0xd7, 0x96, 0x8a, 0x47,
-    0xdf, 0x9f, 0x51, 0x1b, 0x04, 0xa9, 0x45, 0x30,
-    0x89, 0x8a, 0x3f, 0x7e, 0xca, 0xfc, 0x05, 0x2d,
-    0x18, 0x77, 0x8f, 0x45, 0x25, 0x39, 0xdb, 0xf2,
-    0x13, 0x36, 0x31, 0xdb, 0x50, 0x65, 0x63, 0x4a,
-    0xae, 0x3e, 0xd1, 0x3e, 0xde, 0xc1, 0x32, 0x4b,
-    0x78, 0x19, 0x03, 0x70, 0x0a, 0xc2, 0xa2, 0x6f,
-    0x9b, 0xd4, 0xa6, 0x1d, 0x47, 0xf2, 0xa6, 0x91,
-    0x61, 0x4a, 0x74, 0xf8, 0x70, 0x39, 0x42, 0x72,
-    0xd5, 0x58, 0x7f, 0xcd, 0x16, 0xeb, 0x82, 0x0c,
-    0x2c, 0xf4, 0xd0, 0x95, 0x22, 0xf9, 0xbe, 0x99,
+    0x79, 0x29, 0x11, 0x03, 0x5f, 0x31, 0xbb, 0x8d,
+    0x6c, 0xeb, 0xc1, 0x46, 0xc7, 0x7d, 0xb9, 0x2b,
+    0xf7, 0xde, 0x68, 0xb7, 0xd0, 0x2e, 0x18, 0xb9,
+    0x5e, 0xfb, 0x67, 0x0f, 0x4a, 0x71, 0x9c, 0x33,
+    0x2b, 0x64, 0xb9, 0x43, 0x1d, 0x5f, 0x9f, 0xb4,
+    0xa2, 0xa7, 0x1a, 0xa5, 0x49, 0xf5, 0x53, 0x17,
+    0xcd, 0x28, 0x28, 0x55, 0xe7, 0x85, 0xcb, 0xe4,
+    0xca, 0x66, 0xe4, 0x8c, 0x55, 0xbc, 0xd7, 0x1c,
+    0x15, 0xa0, 0xa5, 0xa4, 0x4c, 0xca, 0x2b, 0x37,
+    0x4a, 0x5c, 0xda, 0xab, 0xc4, 0x1d, 0x8a, 0x78,
+    0x2f, 0xc5, 0x99, 0xab, 0x13, 0x8a, 0xad, 0xf5,
+    0xbb, 0x83, 0x45, 0x6d, 0xb4, 0x40, 0x64, 0x2f,
+    0x6a, 0xeb, 0xf3, 0xc7, 0x6a, 0xf7, 0x35, 0xf5,
+    0xf7, 0x06, 0xd5, 0x65, 0xf2, 0xe4, 0x93, 0x80,
+    0xa1, 0x59, 0x79, 0x1f, 0x05, 0x6b, 0x24, 0xf0,
+    0xbd, 0xcf, 0xa5, 0xa5, 0xcf, 0x43, 0x78, 0xbb,
+    0x78, 0xb1, 0xed, 0x63, 0x01, 0x85, 0x48, 0x58,
+    0xd3, 0x9f, 0xd9, 0xdc, 0xc6, 0x4a, 0x10, 0x19,
+    0x78, 0x94, 0x8a, 0x95, 0x9b, 0xeb, 0xc4, 0x39,
+    0xa7, 0xe8, 0xbe, 0x21, 0x9e, 0xcc, 0xc6, 0x6e,
+    0x11, 0xc8, 0x57, 0x96, 0x47, 0xf7, 0x4f, 0xca,
+    0x50, 0xc9, 0xeb, 0x1a, 0x8f, 0xad, 0xd6, 0x89,
+    0x3c, 0xf3, 0xc3, 0x16, 0xdd, 0x30, 0x9b, 0xcb,
+    0xbb, 0x53, 0x1a, 0xbb, 0x22, 0x6f, 0xf0, 0x57,
+    0x3b, 0x2c, 0x04, 0xb1, 0x1d, 0x5d, 0x0e, 0xbc,
+    0x2b, 0xec, 0x38, 0xc1, 0x46, 0x89, 0x57, 0x15,
+    0xfb, 0x89, 0xe0, 0x09, 0xb0, 0x67, 0x58, 0xab,
+    0x1a, 0x9f, 0x0b, 0x0a, 0x51, 0xc9, 0x8b, 0xdf,
+    0x42, 0xd5, 0x35, 0xc2, 0x19, 0xc2, 0xb9, 0xcc,
+    0x66, 0x2f, 0x61, 0x91, 0xbc, 0x42, 0x2d, 0x95,
+    0xb9, 0x64, 0x29, 0x35, 0x8e, 0xcd, 0xda, 0xa3,
+    0x8f, 0x85, 0x16, 0x52, 0x78, 0x0f, 0x48, 0xf5
 };
 
 static const char dh_ffdhe2048[] = "ffdhe2048";
diff -Nru openssl-3.5.6/providers/fips.checksum openssl-3.5.7/providers/fips.checksum
--- openssl-3.5.6/providers/fips.checksum	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/providers/fips.checksum	2026-06-09 13:54:25.000000000 +0200
@@ -1 +1 @@
-541f8f3eafccc78db022af2226f0d6501b43a3d96e2e23fd7dffb29a80d218b8  providers/fips-sources.checksums
+f24213807982cf5d2859d5d1b78caa54c249ec28725645d1af28f092d543962d  providers/fips-sources.checksums
diff -Nru openssl-3.5.6/providers/fips.module.sources openssl-3.5.7/providers/fips.module.sources
--- openssl-3.5.6/providers/fips.module.sources	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/providers/fips.module.sources	2026-06-09 13:54:25.000000000 +0200
@@ -300,7 +300,7 @@
 crypto/params.c
 crypto/params_dup.c
 crypto/params_from_text.c
-crypto/params_idx.c
+crypto/params_idx.c.in
 crypto/ppccap.c
 crypto/ppccpuid.pl
 crypto/property/defn_cache.c
diff -Nru openssl-3.5.6/providers/fips-sources.checksums openssl-3.5.7/providers/fips-sources.checksums
--- openssl-3.5.6/providers/fips-sources.checksums	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/providers/fips-sources.checksums	2026-06-09 13:54:25.000000000 +0200
@@ -19,7 +19,7 @@
 290ae2a09826d24e83763415a021e328d41a163f41cff8c9e3b882e973677f33  crypto/aes/asm/aes-s390x.pl
 ee4e8cacef972942d2a89c1a83c984df9cad87c61a54383403c5c4864c403ba1  crypto/aes/asm/aes-sparcv9.pl
 391497550eaca253f64b2aba7ba2e53c6bae7dff01583bc6bfc12e930bb7e217  crypto/aes/asm/aes-x86_64.pl
-c56c324667b67d726e040d70379efba5b270e2937f403c1b5979018b836903c7  crypto/aes/asm/aesfx-sparcv9.pl
+3b5ee174fa52d732d882ab4b2ffe59235d3bff66651714f32e743fcadaf1d970  crypto/aes/asm/aesfx-sparcv9.pl
 14359dc32b7f4e5c08227fb9ac8f9232c1287399463b233fec4a2ab0c19f68d1  crypto/aes/asm/aesni-mb-x86_64.pl
 f525e1bca51d39adcd411cbf8f874fe1441b23a6f614644da78dfd8544d13b23  crypto/aes/asm/aesni-sha1-x86_64.pl
 895f94d7befb90e82f9d300ed8f870e790101f30ba72b249a2c503f07aec7dd2  crypto/aes/asm/aesni-sha256-x86_64.pl
@@ -86,7 +86,7 @@
 0ea8185a037a2951bb3d1e590bbbdeac305176d5e618f3e43a04c09733a9de34  crypto/bn/bn_add.c
 529933a6592cf82abde515dae10db17833a16ec29cb89ec577c0a184838fe27b  crypto/bn/bn_asm.c
 feef3a84a40034291286882d483ac23ab55631c3c93f40ba0ea98944916ff3ec  crypto/bn/bn_blind.c
-d3b5f02a17ba1c71261f6dad0d4785846567c8a03368d41fc1a6ee7c45aaff78  crypto/bn/bn_const.c
+1b8f89064c287669a834fe032ef823796f7355ed7e6da08d6c56c0a4cd0bba01  crypto/bn/bn_const.c
 eee3d2710144b0e860c57e84f5adc6b2bf64fc27cbd202a8ca2630aefed3b84c  crypto/bn/bn_conv.c
 282f06fbdeb991d90337787c6407020e940b6d5e187a06866f1a7787c10a0c1b  crypto/bn/bn_ctx.c
 b1b1c5fb8a45fde5755dfd5da62b68100b94f8c492c950719c108c384ea7f3c4  crypto/bn/bn_dh.c
@@ -99,7 +99,7 @@
 ff147e5e032cc7c772b73a91fc6e24d8d9516e642d29354445d1f82d64b1d924  crypto/bn/bn_kron.c
 df9aebbdcca87fc5715dde430687fb516d8de0dac70c8910409fb73d6dd2305b  crypto/bn/bn_lib.c
 cd7bade0f2e223fe34f6e2f8cc87098ac8f0af96ec62ada5e67f6a2344d48ef0  crypto/bn/bn_local.h
-364600145964d5154224fdda2c94ca6fdab2907837a385550b242350be7a1197  crypto/bn/bn_mod.c
+b494fd85387afa7816422922e52987e0faefc3c890c972e7d4fe04f620dfc59a  crypto/bn/bn_mod.c
 39a8fe0bb625b4c11b74998ce6fd99b7655228aaa7d7ad3076f61741937ae14d  crypto/bn/bn_mont.c
 c2a5230efbda6844b7b2eb10447b054496ae5029130d332536de6c3b12dc58a3  crypto/bn/bn_mpi.c
 488dde761d25fb2eabd8acbea5b3b83520db7733480fab6499f60b8bf680b1ed  crypto/bn/bn_mul.c
@@ -176,8 +176,8 @@
 5aa20e2a4a9ae3a30d7400f3d666238f890004c3dfb66933873e7daa0026fe3e  crypto/ec/curve448/f_generic.c
 81ab2c5bcf5b036f649804f494e1b2ee5d5b2f900dd56b5dc55bac04a63a57ad  crypto/ec/curve448/field.h
 77bc6dd8c7d14a21760eb5e0dbf336eecc78835faa2f6f846824798303109d41  crypto/ec/curve448/point_448.h
-6d007474cb42b16f98059f6eea6c09ef23552049207558fe46d071a613c8a314  crypto/ec/curve448/scalar.c
-c0b5e93f120c7a5e0c0aba9877a445d0f5db85440491853b182266ee5f323361  crypto/ec/curve448/word.h
+e29e78402540a4eaa853b1b9931aba66be0fdf1c82c6334587a69235e42f759a  crypto/ec/curve448/scalar.c
+606e5f72d40cef708cb4f7bbabc00bcd2b87fc0165854ade1b55ab2c021a8df2  crypto/ec/curve448/word.h
 f4490c0b575b79e63a897b1e85a87ede2645a2c521e67db461b3192884450d9d  crypto/ec/ec2_oct.c
 5d3567b3b6d3922fd82641acff29ed12b1028e83eb0c175132ce7f3470b9db6c  crypto/ec/ec2_smpl.c
 a1f22814f501780591da20de5e724895438094824fce440fd026850c46ad8149  crypto/ec/ec_asn1.c
@@ -204,20 +204,20 @@
 99571b1724562bdb06b03fe1d7f6f19ffb7f1a9df543bf74127b54948957a7ce  crypto/ec/ecx_backend.c
 5ee19c357c318b2948ff5d9118a626a6207af2b2eade7d8536051d4a522668d3  crypto/ec/ecx_backend.h
 8e50fd1e60ad1ac824e704375096e41f4ae535e533a3334d78c481e34d9d0fb8  crypto/ec/ecx_key.c
-3ba8412897cbf17881fbf23cec27a487b2c587348e1f859ec44e47f366877249  crypto/evp/asymcipher.c
+ed0217e7c2049b44a454b40e7e18385eadb34bce1bcf54337f420cbf988775da  crypto/evp/asymcipher.c
 1f64d4752074f954af4f290788e4332e3874ba3282bd03d3e1d1f5ce4b0888bc  crypto/evp/dh_support.c
 0e9e206dd4b179ad09e1475949ce9ddb5bce0e0d66072477d94b7788c57e70d9  crypto/evp/digest.c
 4ffc3fc5ee5f0dcadf1516f1cc29338f0f4d85c59881c06d5a777cf4e47a6d5f  crypto/evp/ec_support.c
 8bf5ddf1c8e352a9f9241c7275d3a8cbbd633fc0f93f609158d15aee7af5a9d0  crypto/evp/evp_enc.c
 8683c25d4bcb598375a04d4682399c9eef095225b49498afe819e5193e9cc117  crypto/evp/evp_fetch.c
-75855fc64e44e5bbfb728d85014c65e8b0668faee26f0901aaa729c16679dee8  crypto/evp/evp_lib.c
+6d9106f27ee707814e346879fda8008b75cb5714700060f65134a4fadff1c48c  crypto/evp/evp_lib.c
 e997e921669076c51e230ccb2e36b1c6755fe408c61b1177d2aa67529cab15f3  crypto/evp/evp_local.h
 8963ef06e4d228f7067917434f60f0502dc4bbdf3b271649498b734f4074bfb0  crypto/evp/evp_rand.c
 0bdae4714221662282dccd5b1f2485370d24e463c11bdbb71a310f34616954fe  crypto/evp/evp_utils.c
 8f4194bcc2e0de69236925aa7515bc31f36ed113dcd3cee5d71167ac770cdfdd  crypto/evp/exchange.c
 294284ad040fe4b74845f91b1903c961c757e1ef3fcc2ffa35f43f37f1655e64  crypto/evp/kdf_lib.c
 532f0ff4ab32068f160016f39cd520fadfbd09b81b3b3b562bf543acafb38889  crypto/evp/kdf_meth.c
-4e60c9e37106b9c28d646f7234d857e8520da953ed7d319531467d334b77a72e  crypto/evp/kem.c
+d911878128b90b98f3a4a1fb844ef3a20d35eafda3f80773dac8ce93c55bc352  crypto/evp/kem.c
 84cebe10a50c88d0db12a90ad751eae43c7ba2954bc9f42f0c1490d66eac5bb8  crypto/evp/keymgmt_lib.c
 80a5e310a3c3f551ca8e1992793ffbddc525274f90dbf4f36217b57acbc8bd94  crypto/evp/keymgmt_meth.c
 15654f58c113d6eb7100caacd00ceae68113edfd6a921f6af1bea4040fa58f5d  crypto/evp/mac_lib.c
@@ -227,22 +227,22 @@
 eb34179ed538e971dd4f27040bb5b17bf4e0958eaaca4abb4eb5b841486dec86  crypto/evp/pmeth_gn.c
 09640d3d887c88f4989863330ce1d17516f07543155ce474e8bc4c01c152e80a  crypto/evp/pmeth_lib.c
 ba4ff38738cbcfd3841d53a2fab92227638ceca176d3ffe50e486c9dcbabb5dd  crypto/evp/s_lib.c
-14fb1aa7c48123c39f762c930474318e2df6b130e3e2860ab845b5c0240b81a3  crypto/evp/signature.c
+cdeabcc155b3ca14afa3dbffea7dffbec528814a126a09e4253c25bf9fad2b77  crypto/evp/signature.c
 30af153213f8b008955486000c5a92507dc694c4af9ac6ed6fef3f290efa3e52  crypto/evp/skeymgmt_meth.c
 64f7e366e681930ba10267272b87dba223b9744a01c27ba0504a4941802a580d  crypto/ex_data.c
 d986ec74995b05ff65a68df320ab45894ba35d7be4906f8d78ca5fca294a4e6c  crypto/ffc/ffc_backend.c
 f4f84cade98907fa9905334b6c3c046b430b12b1460edac0617d82ca763620ab  crypto/ffc/ffc_dh.c
 854378f57707e31ad02cca6eec94369f91f327288d3665713e249c12f7b13211  crypto/ffc/ffc_key_generate.c
 4e973d956d4ec2087994de8e963be1a512da1441f22e6e7b9cd7ee536e3ff834  crypto/ffc/ffc_key_validate.c
-e032f3d46830d31cd957e1f3917a6a663c5ad3b9d79fc3d661f025822318d0de  crypto/ffc/ffc_params.c
+a1e87ba5b3aca0520fdac72b7a5ba408865fb85ed142c6b76514b39cc21adac4  crypto/ffc/ffc_params.c
 bb208ef3a2c7ebdc518bd38f2f07a17cff356040f1c5d68eea13bd9275897a52  crypto/ffc/ffc_params_generate.c
 e9a500ddbe96cb5b302fd2db74fac0924a6ac45732df5ee1c09e82b19d06ccfd  crypto/ffc/ffc_params_validate.c
 f172c8c2112ee82716a7bc3a3e05d5cc26188c66b9d768ac1ff906845063d2cc  crypto/hashtable/hashfunc.c
-653d1f67e01ce0e9dca48cf513df9e8864a0985ce9bfb094fc3f09d591e6f062  crypto/hashtable/hashtable.c
+ed523d9793ff9db947857bca354067d17b8de5a4b28604dbf902320e62d93e33  crypto/hashtable/hashtable.c
 7a9af0b14f1463b36de0689bc434a318adcb7990bb23862bf1d2a0adf510583a  crypto/hmac/hmac.c
 907dd44e0bf873eebefcb4d82975b72ecec9e0f3c348c79314450fdaa78d4073  crypto/hmac/hmac_local.h
 0e2d6129504d15ffaf5baa63158ccec0e4b6193a8275333956d8f868ef35127e  crypto/ia64cpuid.S
-c685813be6ad35b0861ba888670ef54aa2b399d003472698e39426de6e52db59  crypto/initthread.c
+29c020cf599c24ef9969a42e00e690a7b463c20dd90356b0a4117ca31b13db6f  crypto/initthread.c
 75cb26369ee61de428f1ce982460fe193684b8f87d8f29169329262502fa88af  crypto/lhash/lhash.c
 22261096a117533e78012f5f18586b6a81edb3e09ae8b206b5eb9a0a5c054adc  crypto/lhash/lhash_local.h
 899ba6a9049a61d5b175637907f747f58863cd8950409cefac8fbc8f574f970c  crypto/loongarch64cpuid.pl
@@ -250,7 +250,7 @@
 f866aafae928db1b439ac950dc90744a2397dfe222672fe68b3798396190c8b0  crypto/mem_clr.c
 23ff635daa1a3149e14de6c2a41b82a7587801581bdf39b8a82e9c624da95471  crypto/ml_dsa/ml_dsa_encoders.c
 825105b0a2c4844b2b4229001650ff7e61e1348e52f1072210f70b97cd4adb71  crypto/ml_dsa/ml_dsa_hash.h
-6f241cb093fd426607d8402258acc81a4054e5c35d7bb13138f0d23a128b3413  crypto/ml_dsa/ml_dsa_key.c
+2fbef0188a8606c56f2ffffecfbbbd13ccd454c2af949d6e37fb7c929974f1d4  crypto/ml_dsa/ml_dsa_key.c
 579c1a12a5c5f014476a6bf695dc271f63074fb187e23ffc3f9ccb5b7ea044f1  crypto/ml_dsa/ml_dsa_key.h
 3f98eb0467033d0a40867ef1c1036dcfea5d231eeac2321196f7d7c7243edace  crypto/ml_dsa/ml_dsa_key_compress.c
 170292bfc8761e39b688ccfb21b3660af6e1a875aa38ff7448cc22f71f5874c5  crypto/ml_dsa/ml_dsa_local.h
@@ -290,17 +290,17 @@
 2a0ab07286b70ce4aa0caf3b5b4be2c00eed3a6d855e9542ae94d0e1f586b1e3  crypto/modes/ctr128.c
 59be0f955b16434efc2618109a01571884c6876af785f1db5dad69786124b341  crypto/modes/gcm128.c
 b431ff38c3a85943f71be0d76b063dbe2930967629b8721465b8152ab7867296  crypto/modes/ofb128.c
-02e7659d8776f5885ebbc25b930ddec046262f92c9e8fa7e093f2a6a8d973a3b  crypto/modes/wrap128.c
+c5674daa4bbe66c2ac8044f83df67ddff8e0585ae091adde9ffe083f64e92a29  crypto/modes/wrap128.c
 0a10e0cae6f4ac164afe97a64df09c8412145c8a25f387ff3a53ff7495572cbc  crypto/modes/xts128.c
 9a34ad9ae361f689b0b98c454092e89567d0bfc969c08a14c8001e60976920b2  crypto/modes/xts128gb.c
 515e110e01867d6527bec758a264473b62cb7edff213816e2197faf6e96ec048  crypto/o_str.c
 44594139dab6ada1f34f9c6887c97e258c1204b833a6c20f58097f17d0f1645e  crypto/packet.c
-a108cacd961b0e5a95d279c737926afa4636d8b89a2a912593b01916ea3ce43d  crypto/param_build.c
-cae7bd4973d36edbdc3bdd8d2c8d157f2c4fcfae00fdf821b67aebb789bc8aa6  crypto/param_build_set.c
+671b4c1211bd55bae70a2a2d1eca0c9c25a4428c30311ea9511427e345d5ab64  crypto/param_build.c
+d4fb8ecfed73be390c269bd16c76c1a9db6425d6d35787302b3b4c57e465b3db  crypto/param_build_set.c
 d362864eab6707ba2f4efd65c91dd90d669721f2d8fdebc875fd1d2957154396  crypto/params.c
 c0e0ba07ca5d4acfe450e4ae53a10ed254097ed2f537f01a4a43a9f5b5cab501  crypto/params_dup.c
 fc2432f5a76784d4ca47db1803c8b19acbaea26987f8e33dd8cc5571f8101b40  crypto/params_from_text.c
-f50450f7e5f6896fb8e3cde2fdc11cc543124c854ef9d88252a166606ca80081  crypto/params_idx.c
+ed6956c34da5127fbf8f1a067654b617c261039743a12fd1d296a1dd01b05c26  crypto/params_idx.c.in
 1a81e7483e250ef96f7024f75be884b8830801b47cbdb2d4159637666681b350  crypto/ppccap.c
 46fa4994a6234a98a2845d9337475913f6bc229f1928abc82224de7edf2784b8  crypto/ppccpuid.pl
 42eff8da564cd8004f2d17fb01686d24977d931c37c7e6de693e7d414c2d7914  crypto/property/defn_cache.c
@@ -393,7 +393,7 @@
 c9b270de1259d9fa71a4d352786357bcf1dd3d22075edab84501e2f8e550b271  crypto/slh_dsa/slh_adrs.h
 95d42ca839ff34a050a7006734a06c157ad259512c1a10b978e9f899efe69f12  crypto/slh_dsa/slh_dsa.c
 ab7b580b1cba302c5675918b457794a3b3d00aac42297312d9447bc6f6a40b09  crypto/slh_dsa/slh_dsa_hash_ctx.c
-6a68c788eee184862cf90676324750fd4f17ca666b628ebc69b3b510d19ba819  crypto/slh_dsa/slh_dsa_key.c
+892a5ed5213c0898882bfc42f72be2864b363cd62d08a3b337c20b4fa557bef0  crypto/slh_dsa/slh_dsa_key.c
 4c7981f7db69025f52495c549fb3b3a76be62b9e13072c3f3b7f1dedeaf8cc91  crypto/slh_dsa/slh_dsa_key.h
 5dcb631891eb6afcd27a6b19d2de4d493c71dab159e53620d86d9b96642e97e8  crypto/slh_dsa/slh_dsa_local.h
 adb3f4dea52396935b8442df7b36ed99324d3f3e8ce3fdf714d6dfd683e1f9f0  crypto/slh_dsa/slh_fors.c
@@ -415,9 +415,9 @@
 f06b08138d73b834471abc4a3ba43b2be838f7196c937c3e933694d6cd69f74d  crypto/thread/arch/thread_win.c
 55953eb5a84d03e8d915ee867ddf8ec8be8c5eb444ea0b21b12a040a57e2c2c1  crypto/thread/internal.c
 2e5955d706b96c487e4875ffbe208fac15bdca06b33cee916d5343978c14efa1  crypto/threads_lib.c
-ca77056d184232d6fcfe39328ab0b887a4fc939913209717fca65898ebbd45c0  crypto/threads_none.c
-021afe4321ff954f3f4dd1b1d07a5e3e7778f7bccfaede08fab193d5752d9740  crypto/threads_pthread.c
-1915c5e3de649873745479df5cc365c38cf56ecb2fa21be6a053055f97013dce  crypto/threads_win.c
+b3743dfd1c13fe70dc57a5a0b2ec540ab3afa748699eb6ef36f56f4d36d06ef3  crypto/threads_none.c
+7b97b0f57f6b7cac89c1b8bd03bee34fb39d33cfae1632e75571ba106a5b9442  crypto/threads_pthread.c
+9dac146cda57fb53d9b9eb30ff1fc81090f5e62dbe05d4cd97ed11cf501fc78c  crypto/threads_win.c
 93f8fe09f96492a6be6772ddbf0cc37912fc2a90acb7faea378da1735fe20f6f  crypto/time.c
 88c5f9f4d2611223d283ebd2ae10ae5ecbb9972d00f747d93fcb74b62641e3f9  crypto/x86_64cpuid.pl
 085d9fe93adf232f1ff838be9235046c2c2abe2daeb0e6342921d8f2e955dc18  crypto/x86cpuid.pl
@@ -455,7 +455,7 @@
 d32565e2b426131dc2415e60a97c94570ca982d29ddd97d2e23d6b9f73b1d81c  include/internal/common.h
 8aa995b12b9fa877110526d5861a7c3403b95aa9d6338e7c3556c54882bad73b  include/internal/constant_time.h
 5170643b2ca16e894d94c9e9fcf8bd80843de0b6539b31b14bf0e4dcaff3f2a9  include/internal/core.h
-76dd589374b0cab4c0e1f84b576348113754068c1782ddc6cdba0bd483c79884  include/internal/cryptlib.h
+4295b7a3f366f5500cee45b0716fded3d9895b9efe6b8b6090efc5be000450d4  include/internal/cryptlib.h
 cd215e01800987b008be87ccf85823fc98be0c578262a7720cbb6e9ac3dd81fa  include/internal/deprecated.h
 178940dc972f22a8a481a16fd63a86e7468e88cbaa1db5fd68c2b1ae64cb6865  include/internal/der.h
 0dba4a6565caebfef82a8dc90d6ba208b2c61445123724769d5ee84ebbb0a610  include/internal/deterministic_nonce.h
@@ -479,7 +479,7 @@
 ee75ecd35b3ae90c51ace957ab7ce06de3c7d5064b97a878241ff65cc943a6db  include/internal/property.h
 7aeac9a78efb9ea5147f639cd474e6c2538acc1b9d255ba19dc661fe22bcd94d  include/internal/propertyerr.h
 5b108c19f064ec47fffe1b3fe310d4693b6db3920b8cc2e5dc05595751ab0f3b  include/internal/provider.h
-57b423f051395b14b52a5564dc6e4953765efc5539cee1ba01b35779e1408007  include/internal/rcu.h
+097ff0f3c25c99df484ec9defca0834fcbdab81ee7e4f40ddc64b95e845dc794  include/internal/rcu.h
 b6e33da6011b2b74d27e39f27cf98e6f123fe47826562b6479d0dbd5c758c4c2  include/internal/refcount.h
 f77c0844cc44bd92965647cd8cb6addb210f0300a8d1090da8c26e4382e87c2c  include/internal/safe_math.h
 7d5f4c3db807f108096590f28dd1ae92c05b2af25f827309157e727abb783e7a  include/internal/sha3.h
@@ -500,7 +500,7 @@
 77a9f9595cee6448c6217a8388127593a34a0d0a585197a5f8100fcb792f76ec  include/openssl/asn1t.h.in
 1af8a6c86dedb83887e9baae99ea7dba6576eeb6a991f62865b10d5efdd9d6fa  include/openssl/bio.h.in
 40491414172d977a4667589fa2f269d7deaae675555b8348d96f315d1a6253bb  include/openssl/bioerr.h
-ab010281395418d482e30ddad9510e470c3420aea0c30f9072e3dc8516ac3037  include/openssl/bn.h
+bbf263e1e83951f12893f063fc7dd1e2c03773f109ee2262111b61b0a05fd696  include/openssl/bn.h
 c506c9bfbac7368335fb2a8a627755ce2b8547a251d885242a89c9f8ff3bf079  include/openssl/bnerr.h
 c70499c9109b083beb69d1b17807266b041d0ff28694d5bc1ab7cf2a59331c39  include/openssl/buffer.h
 5bce6559638266f060eaa16b3b90738bbd5292d62230b6b3b1e22b88836a5030  include/openssl/buffererr.h
@@ -618,7 +618,7 @@
 7b80823bb5613e17e8576789ec77712d89c81e7beb6ce50b58037e925e465abd  providers/fips/include/fipscommon.h
 c00c429b0e022db3ef9b08b3400627a1f268fb071e84d0538fb68c060da6a3db  providers/fips/self_test.c
 5c2c6c2f69e2eb01b88fa35630f27948e00dd2c2fd351735c74f34ccb2005cbe  providers/fips/self_test.h
-df83c901ad13675fbbb4708b6087feba6099870ad3dd0e8d09cfdb6798419770  providers/fips/self_test_data.inc
+b2fbcd63fa91f8179e94a045bc1981e2b009f9d587b59559a1e0e7e85f28036d  providers/fips/self_test_data.inc
 aab0bbdaa8e70f6cf9c3871d62b1efc6029cbe386c5d6318d7bc730da0fa8f19  providers/fips/self_test_kats.c
 d942921caa433ae9e62959b0ad1caad277b50d005ffc439c6d0e7b0886dba882  providers/implementations/asymciphers/rsa_enc.c
 c2f1b12c64fc369dfc3b9bc9e76a76de7280e6429adaee55d332eb1971ad1879  providers/implementations/ciphers/cipher_aes.c
@@ -639,7 +639,7 @@
 60c4f604cf9b5457be48f31cc24ca21729660381081b2dbf99f362a013a09684  providers/implementations/ciphers/cipher_aes_gcm_hw_vaes_avx512.inc
 e2886780637db72b12c9bc488d81647ed55a7f5c850efd4bdbf88ef7127e1913  providers/implementations/ciphers/cipher_aes_hw.c
 89de794c090192459d99d95bc4a422e7782e62192cd0fdb3bdef4128cfedee68  providers/implementations/ciphers/cipher_aes_hw_aesni.inc
-d95dde2258887edca985237a0623855b49dd9e93d21407e9fcfe33497513be4c  providers/implementations/ciphers/cipher_aes_ocb.c
+eac58fff6aa9918d657228c2707f1b3f0ef8f1210c97575f3c264db78bfd996f  providers/implementations/ciphers/cipher_aes_ocb.c
 88138a1aff9705e608c0557653be92eb4de65b152555a2b79ec8b2a8fae73e8f  providers/implementations/ciphers/cipher_aes_ocb.h
 6c3a89771719b36d6917d23464be5441836378393731af96ba165fd788df1a41  providers/implementations/ciphers/cipher_aes_ocb_hw.c
 c7aac28a9dca1ad46e5bce4de93e07dffec1f89fab82394c3ff7cf1bda8b483f  providers/implementations/ciphers/cipher_aes_wrp.c
@@ -664,7 +664,7 @@
 39b47b6ef9d71852964c26e07ef0e9b23f04c7493b1b16ba7c3dba7074b6b70d  providers/implementations/digests/digestcommon.c
 ae449102b3434800656536ed7ede4a2786ec97350c01df8c45d0431c12e9e700  providers/implementations/digests/sha2_prov.c
 20ae19c3d85d2e02780948c52ff5c2fd8e2593a001897ca47a47d23280dd579d  providers/implementations/digests/sha3_prov.c
-3209da8f0fe174de1d7a1b1397902725e1c758ca8a0208a69cb32bc884de1874  providers/implementations/exchange/dh_exch.c
+5b2e4b63e416cc9cd81c27f7acd547df1c580838ac2051d6db56fa9d5569cc8f  providers/implementations/exchange/dh_exch.c
 e1b33fcc05c60254849b9a01e416885ce93ea9e315b9877ac7ab420003b2ec3c  providers/implementations/exchange/ecdh_exch.c
 d44c5a6d3156392757415f34afc1ab164fb0e9cd1e97977386d7cd13f3555df5  providers/implementations/exchange/ecx_exch.c
 b1115636f53bf70f417b183cafeb6d38e230d11d8de731e6896ba60cc850d931  providers/implementations/exchange/kdf_exch.c
@@ -675,7 +675,7 @@
 35596c97faf324823d19a01e1b5674c7a15f1a6e7ff1ef1c7d46400c2a68f63b  providers/implementations/include/prov/digestcommon.h
 1baf1c06b20a0eb8ec271452544922d67c1cc168dbe9853b259191de4bd99918  providers/implementations/include/prov/ecx.h
 b0d1f6fc3c9220fe6d4656e487bad8df16b6f840054018b95b2752ea9aef822d  providers/implementations/include/prov/hmac_drbg.h
-042271e95dd1e275027f84c87f56388a4daf44bbe5fcd694643f67fd711dd6af  providers/implementations/include/prov/implementations.h
+3542340567e409ab68be299aac67cdb1045ab8e8987023d4fc3c209c9779a0ba  providers/implementations/include/prov/implementations.h
 05eedab6b16c80025f72281fa619d9480c437b800cb821b761fe4c05bc9d3af0  providers/implementations/include/prov/kdfexchange.h
 4014246d44fa3f34aad5372c75d3f7eea528f1cf1798e30d5627e7620a356631  providers/implementations/include/prov/macsignature.h
 b41c9a4e90d951a2d0e796b1cbbdbe8cb6fc18306d9b70be7a489249c11c294a  providers/implementations/include/prov/ml_dsa.h
@@ -699,12 +699,12 @@
 c0446d1b2101ddd977063516b87d23f424cdca33473f293db4c3974b674169b0  providers/implementations/keymgmt/dsa_kmgmt.c
 2b98ba2124a86eae2adc7b88bfa26e47b548e9628b99180cc2cd841eed5ed8da  providers/implementations/keymgmt/ec_kmgmt.c
 258ae17bb2dd87ed1511a8eb3fe99eed9b77f5c2f757215ff6b3d0e8791fc251  providers/implementations/keymgmt/ec_kmgmt_imexport.inc
-f0a1b4c6599e6555c5784d6c036d2aae04cd01cd8d73a927505041e7df25125c  providers/implementations/keymgmt/ecx_kmgmt.c
+167cd7df056bf46f3481cf6101fb6cfca55dea592f896c2b29649df1939885c4  providers/implementations/keymgmt/ecx_kmgmt.c
 daf35a7ab961ef70aefca981d80407935904c5da39dca6692432d6e6bc98759d  providers/implementations/keymgmt/kdf_legacy_kmgmt.c
 69b509e9c7fe9692622d1059917c3adb991c0047e11bc116f0a393a3a0539445  providers/implementations/keymgmt/mac_legacy_kmgmt.c
 3c63e65bd1a6a2e853828205c015a50c38a82f2fee9bf6787dce6dab7331bb91  providers/implementations/keymgmt/ml_dsa_kmgmt.c
-30db36c6fe6b4449179488da1761e219d0c772a8fb8e74c8411d1e0f57e4aed2  providers/implementations/keymgmt/ml_kem_kmgmt.c
-01d75c1eba93ed23f98130d6c308550d0ab2e44c5651101628861bc0238623d0  providers/implementations/keymgmt/mlx_kmgmt.c
+5c95eb8192483b2d81435e52aef6b2c96180bb22a67f717c29661a13b5861b02  providers/implementations/keymgmt/ml_kem_kmgmt.c
+f37c8b7bb59d4b199889044992cb1b18ad39f2eafc87029f5348c55a95195e8c  providers/implementations/keymgmt/mlx_kmgmt.c
 cd4b8129eaccbd77f9b6c725d3cb57b71109c4649115ec786b6495100afaddf2  providers/implementations/keymgmt/rsa_kmgmt.c
 d640cff1c46911b69866eb83f48beba42a1741bb1d3f1db6e7201077a57761fc  providers/implementations/keymgmt/slh_dsa_kmgmt.c
 9d02d481b9c7c0c9e0932267d1a3e1fef00830aaa03093f000b88aa042972b9f  providers/implementations/macs/cmac_prov.c
@@ -723,8 +723,8 @@
 a837f69cb1aa5d0327372e26a63a8492b6ffb1156325f66e880c202011d07cbe  providers/implementations/signature/eddsa_sig.c
 e0e67e402ff19b0d2eb5228d7ebd70b9477c12595ac34d6f201373d7c8a516f4  providers/implementations/signature/mac_legacy_sig.c
 51251a1ca4c0b6faea059de5d5268167fe47565163317177d09db39978134f78  providers/implementations/signature/ml_dsa_sig.c
-108a32d14483773f7e247f8a77dfcce08a682642d40b4e8e1594515a1fb31f98  providers/implementations/signature/rsa_sig.c
-14e7640b4db5e59e29b0266256d3d821adf871afa9703e18285f2fc957ac5971  providers/implementations/signature/slh_dsa_sig.c
+94725f9e466c60c710900ca9878196f359e8421f46d5fb62fda91f5f845caff3  providers/implementations/signature/rsa_sig.c
+539d3f55b8fd28826c786cb4e5c0e735173dc0faf268527ea007052be623cd37  providers/implementations/signature/slh_dsa_sig.c
 21f537f9083f0341d9d1b0ace090a8d8f0b2b9e9cf76771c359b6ea00667a469  providers/implementations/skeymgmt/aes_skmgmt.c
 2dbf9b8e738fad556c3248fb554ff4cc269ade3c86fa3d2786ba9b6d6016bf22  providers/implementations/skeymgmt/generic.c
 9ba8db9b0e18847ef79ecb77fbc383d8762694be29dfb7d269df6f02dc977222  providers/implementations/skeymgmt/skeymgmt_lcl.h
diff -Nru openssl-3.5.6/providers/implementations/ciphers/cipher_aes_gcm_hw_rv64i.inc openssl-3.5.7/providers/implementations/ciphers/cipher_aes_gcm_hw_rv64i.inc
--- openssl-3.5.6/providers/implementations/ciphers/cipher_aes_gcm_hw_rv64i.inc	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/providers/implementations/ciphers/cipher_aes_gcm_hw_rv64i.inc	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -103,10 +103,9 @@
 };
 
 const PROV_GCM_HW *ossl_prov_aes_hw_gcm(size_t keybits) {
-    if (RISCV_HAS_ZVKNED()) {
-      if (RISCV_HAS_ZVKB() && RISCV_HAS_ZVKG() && riscv_vlen() >= 128) {
+    if (RISCV_HAS_ZVKNED() && riscv_vlen() >= 128) {
+      if (RISCV_HAS_ZVKB() && RISCV_HAS_ZVKG())
         return &rv64i_zvkb_zvkg_zvkned_gcm;
-      }
       return &rv64i_zvkned_gcm;
     }
 
diff -Nru openssl-3.5.6/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c openssl-3.5.7/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c
--- openssl-3.5.6/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -58,6 +58,9 @@
     memset(&data, 0, sizeof(data));
     memcpy(&data.block[sizeof(data.counter)], ctx->nonce, NONCE_SIZE);
 
+    ctx->generated_tag = 0;
+    memset(ctx->tag, 0, TAG_SIZE);
+
     /* msg_auth_key is always 16 bytes in size, regardless of AES128/AES256 */
     /* counter is stored little-endian */
     for (i = 0; i < BLOCK_SIZE; i += 8) {
@@ -134,17 +137,6 @@
     return 1;
 }
 
-static int aes_gcm_siv_finish(PROV_AES_GCM_SIV_CTX *ctx)
-{
-    int ret = 0;
-
-    if (ctx->enc)
-        return ctx->generated_tag;
-    ret = !CRYPTO_memcmp(ctx->tag, ctx->user_tag, sizeof(ctx->tag));
-    ret &= ctx->have_user_tag;
-    return ret;
-}
-
 static int aes_gcm_siv_encrypt(PROV_AES_GCM_SIV_CTX *ctx, const unsigned char *in,
     unsigned char *out, size_t len)
 {
@@ -271,6 +263,19 @@
     return !error;
 }
 
+static int aes_gcm_siv_finish(PROV_AES_GCM_SIV_CTX *ctx)
+{
+    int ret = 0;
+
+    if (ctx->enc)
+        return ctx->generated_tag;
+    if (!ctx->generated_tag)
+        aes_gcm_siv_decrypt(ctx, NULL, NULL, 0);
+    ret = !CRYPTO_memcmp(ctx->tag, ctx->user_tag, sizeof(ctx->tag));
+    ret &= ctx->have_user_tag;
+    return ret;
+}
+
 static int aes_gcm_siv_cipher(void *vctx, unsigned char *out,
     const unsigned char *in, size_t len)
 {
diff -Nru openssl-3.5.6/providers/implementations/ciphers/cipher_aes_ocb.c openssl-3.5.7/providers/implementations/ciphers/cipher_aes_ocb.c
--- openssl-3.5.6/providers/implementations/ciphers/cipher_aes_ocb.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/providers/implementations/ciphers/cipher_aes_ocb.c	2026-06-09 13:54:25.000000000 +0200
@@ -514,6 +514,19 @@
         return 0;
     }
 
+    /*
+     * Mirror the streaming handler: refuse if the key has not been set,
+     * and push the buffered IV into the OCB context before any data is
+     * processed.  Without this, CRYPTO_ocb128_encrypt/decrypt runs with
+     * Offset_0 = 0 regardless of the caller's IV -- catastrophic
+     * (key, nonce) reuse, and a subsequent EVP_*Final_ex() emits a tag
+     * that is a function of (key, iv) only.
+     */
+    if (!ctx->key_set || !update_iv(ctx)) {
+        ERR_raise(ERR_LIB_PROV, PROV_R_CIPHER_OPERATION_FAILED);
+        return 0;
+    }
+
     if (!aes_generic_ocb_cipher(ctx, in, out, inl)) {
         ERR_raise(ERR_LIB_PROV, PROV_R_CIPHER_OPERATION_FAILED);
         return 0;
diff -Nru openssl-3.5.6/providers/implementations/ciphers/cipher_aes_siv.c openssl-3.5.7/providers/implementations/ciphers/cipher_aes_siv.c
--- openssl-3.5.6/providers/implementations/ciphers/cipher_aes_siv.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/providers/implementations/ciphers/cipher_aes_siv.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -192,6 +192,7 @@
     PROV_AES_SIV_CTX *ctx = (PROV_AES_SIV_CTX *)vctx;
     const OSSL_PARAM *p;
     unsigned int speed = 0;
+    SIV128_CONTEXT *sctx = &ctx->siv;
 
     if (ossl_param_is_empty(params))
         return 1;
@@ -226,6 +227,8 @@
         if (keylen != ctx->keylen)
             return 0;
     }
+    sctx->final_ret = -1;
+
     return 1;
 }
 
diff -Nru openssl-3.5.6/providers/implementations/encode_decode/ml_dsa_codecs.c openssl-3.5.7/providers/implementations/encode_decode/ml_dsa_codecs.c
--- openssl-3.5.6/providers/implementations/encode_decode/ml_dsa_codecs.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/providers/implementations/encode_decode/ml_dsa_codecs.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2025-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -27,103 +27,17 @@
  * Private key bytes: 2560 (0x0a00)
  */
 static const ML_COMMON_SPKI_FMT ml_dsa_44_spkifmt = {
-    {
-        0x30,
-        0x82,
-        0x05,
-        0x32,
-        0x30,
-        0x0b,
-        0x06,
-        0x09,
-        0x60,
-        0x86,
-        0x48,
-        0x01,
-        0x65,
-        0x03,
-        0x04,
-        0x03,
-        0x11,
-        0x03,
-        0x82,
-        0x05,
-        0x21,
-        0x00,
-    }
+    { 0x30, 0x82, 0x05, 0x32, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86,
+        0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11, 0x03, 0x82, 0x05,
+        0x21, 0x00 }
 };
 static const ML_COMMON_PKCS8_FMT ml_dsa_44_p8fmt[NUM_PKCS8_FORMATS] = {
-    {
-        "seed-priv",
-        0x0a2a,
-        0,
-        0x30820a26,
-        0x0420,
-        6,
-        0x20,
-        0x04820a00,
-        0x2a,
-        0x0a00,
-        0,
-        0,
-    },
-    {
-        "priv-only",
-        0x0a04,
-        0,
-        0x04820a00,
-        0,
-        0,
-        0,
-        0,
-        0x04,
-        0x0a00,
-        0,
-        0,
-    },
+    { "seed-priv", 0x0a2a, 0, 0x30820a26, 0x0420, 6, 0x20, 0x04820a00, 0x2a, 0x0a00, 0, 0 },
+    { "priv-only", 0x0a04, 0, 0x04820a00, 0, 0, 0, 0, 0x04, 0x0a00, 0, 0 },
     { "oqskeypair", 0x0f24, 0, 0x04820f20, 0, 0, 0, 0, 0x04, 0x0a00, 0x0a04, 0x0520 },
-    {
-        "seed-only",
-        0x0022,
-        2,
-        0x8020,
-        0,
-        2,
-        0x20,
-        0,
-        0,
-        0,
-        0,
-        0,
-    },
-    {
-        "bare-priv",
-        0x0a00,
-        4,
-        0,
-        0,
-        0,
-        0,
-        0,
-        0,
-        0x0a00,
-        0,
-        0,
-    },
-    {
-        "bare-seed",
-        0x0020,
-        4,
-        0,
-        0,
-        0,
-        0x20,
-        0,
-        0,
-        0,
-        0,
-        0,
-    },
+    { "seed-only", 0x0022, 2, 0x8020, 0, 2, 0x20, 0, 0, 0, 0, 0 },
+    { "bare-priv", 0x0a00, 4, 0, 0, 0, 0, 0, 0, 0x0a00, 0, 0 },
+    { "bare-seed", 0x0020, 4, 0, 0, 0, 0x20, 0, 0, 0, 0, 0 },
 };
 
 /*
@@ -132,103 +46,17 @@
  * Private key bytes: 4032 (0x0fc0)
  */
 static const ML_COMMON_SPKI_FMT ml_dsa_65_spkifmt = {
-    {
-        0x30,
-        0x82,
-        0x07,
-        0xb2,
-        0x30,
-        0x0b,
-        0x06,
-        0x09,
-        0x60,
-        0x86,
-        0x48,
-        0x01,
-        0x65,
-        0x03,
-        0x04,
-        0x03,
-        0x12,
-        0x03,
-        0x82,
-        0x07,
-        0xa1,
-        0x00,
-    }
+    { 0x30, 0x82, 0x07, 0xb2, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86,
+        0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12, 0x03, 0x82, 0x07,
+        0xa1, 0x00 }
 };
 static const ML_COMMON_PKCS8_FMT ml_dsa_65_p8fmt[NUM_PKCS8_FORMATS] = {
-    {
-        "seed-priv",
-        0x0fea,
-        0,
-        0x30820fe6,
-        0x0420,
-        6,
-        0x20,
-        0x04820fc0,
-        0x2a,
-        0x0fc0,
-        0,
-        0,
-    },
-    {
-        "priv-only",
-        0x0fc4,
-        0,
-        0x04820fc0,
-        0,
-        0,
-        0,
-        0,
-        0x04,
-        0x0fc0,
-        0,
-        0,
-    },
+    { "seed-priv", 0x0fea, 0, 0x30820fe6, 0x0420, 6, 0x20, 0x04820fc0, 0x2a, 0x0fc0, 0, 0 },
+    { "priv-only", 0x0fc4, 0, 0x04820fc0, 0, 0, 0, 0, 0x04, 0x0fc0, 0, 0 },
     { "oqskeypair", 0x1764, 0, 0x04821760, 0, 0, 0, 0, 0x04, 0x0fc0, 0x0fc4, 0x07a0 },
-    {
-        "seed-only",
-        0x0022,
-        2,
-        0x8020,
-        0,
-        2,
-        0x20,
-        0,
-        0,
-        0,
-        0,
-        0,
-    },
-    {
-        "bare-priv",
-        0x0fc0,
-        4,
-        0,
-        0,
-        0,
-        0,
-        0,
-        0,
-        0x0fc0,
-        0,
-        0,
-    },
-    {
-        "bare-seed",
-        0x0020,
-        4,
-        0,
-        0,
-        0,
-        0x20,
-        0,
-        0,
-        0,
-        0,
-        0,
-    },
+    { "seed-only", 0x0022, 2, 0x8020, 0, 2, 0x20, 0, 0, 0, 0, 0 },
+    { "bare-priv", 0x0fc0, 4, 0, 0, 0, 0, 0, 0, 0x0fc0, 0, 0 },
+    { "bare-seed", 0x0020, 4, 0, 0, 0, 0x20, 0, 0, 0, 0, 0 },
 };
 
 /*-
@@ -237,103 +65,17 @@
  * Private key bytes: 4896 (0x1320)
  */
 static const ML_COMMON_SPKI_FMT ml_dsa_87_spkifmt = {
-    {
-        0x30,
-        0x82,
-        0x0a,
-        0x32,
-        0x30,
-        0x0b,
-        0x06,
-        0x09,
-        0x60,
-        0x86,
-        0x48,
-        0x01,
-        0x65,
-        0x03,
-        0x04,
-        0x03,
-        0x13,
-        0x03,
-        0x82,
-        0x0a,
-        0x21,
-        0x00,
-    }
+    { 0x30, 0x82, 0x0a, 0x32, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86,
+        0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13, 0x03, 0x82, 0x0a,
+        0x21, 0x00 }
 };
 static const ML_COMMON_PKCS8_FMT ml_dsa_87_p8fmt[NUM_PKCS8_FORMATS] = {
-    {
-        "seed-priv",
-        0x134a,
-        0,
-        0x30821346,
-        0x0420,
-        6,
-        0x20,
-        0x04821320,
-        0x2a,
-        0x1320,
-        0,
-        0,
-    },
-    {
-        "priv-only",
-        0x1324,
-        0,
-        0x04821320,
-        0,
-        0,
-        0,
-        0,
-        0x04,
-        0x1320,
-        0,
-        0,
-    },
+    { "seed-priv", 0x134a, 0, 0x30821346, 0x0420, 6, 0x20, 0x04821320, 0x2a, 0x1320, 0, 0 },
+    { "priv-only", 0x1324, 0, 0x04821320, 0, 0, 0, 0, 0x04, 0x1320, 0, 0 },
     { "oqskeypair", 0x1d44, 0, 0x04821d40, 0, 0, 0, 0, 0x04, 0x1320, 0x1324, 0x0a20 },
-    {
-        "seed-only",
-        0x0022,
-        2,
-        0x8020,
-        0,
-        2,
-        0x20,
-        0,
-        0,
-        0,
-        0,
-        0,
-    },
-    {
-        "bare-priv",
-        0x1320,
-        4,
-        0,
-        0,
-        0,
-        0,
-        0,
-        0,
-        0x1320,
-        0,
-        0,
-    },
-    {
-        "bare-seed",
-        0x0020,
-        4,
-        0,
-        0,
-        0,
-        0x20,
-        0,
-        0,
-        0,
-        0,
-        0,
-    },
+    { "seed-only", 0x0022, 2, 0x8020, 0, 2, 0x20, 0, 0, 0, 0, 0 },
+    { "bare-priv", 0x1320, 4, 0, 0, 0, 0, 0, 0, 0x1320, 0, 0 },
+    { "bare-seed", 0x0020, 4, 0, 0, 0, 0x20, 0, 0, 0, 0, 0 },
 };
 
 /* Indices of slots in the codec table below */
diff -Nru openssl-3.5.6/providers/implementations/encode_decode/ml_dsa_codecs.h openssl-3.5.7/providers/implementations/encode_decode/ml_dsa_codecs.h
--- openssl-3.5.6/providers/implementations/encode_decode/ml_dsa_codecs.h	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/providers/implementations/encode_decode/ml_dsa_codecs.h	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2025-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -24,13 +24,9 @@
     int evp_type, PROV_CTX *provctx,
     const char *propq);
 __owur int ossl_ml_dsa_key_to_text(BIO *out, const ML_DSA_KEY *key, int selection);
-__owur
-    __owur int
-    ossl_ml_dsa_i2d_pubkey(const ML_DSA_KEY *key, unsigned char **out);
-__owur
-    __owur int
-    ossl_ml_dsa_i2d_prvkey(const ML_DSA_KEY *key, unsigned char **out,
-        PROV_CTX *provctx);
+__owur int ossl_ml_dsa_i2d_pubkey(const ML_DSA_KEY *key, unsigned char **out);
+__owur int ossl_ml_dsa_i2d_prvkey(const ML_DSA_KEY *key, unsigned char **out,
+    PROV_CTX *provctx);
 
 #endif /* OPENSSL_NO_ML_DSA */
 #endif /* PROV_ML_DSA_CODECS_H */
diff -Nru openssl-3.5.6/providers/implementations/encode_decode/ml_kem_codecs.h openssl-3.5.7/providers/implementations/encode_decode/ml_kem_codecs.h
--- openssl-3.5.6/providers/implementations/encode_decode/ml_kem_codecs.h	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/providers/implementations/encode_decode/ml_kem_codecs.h	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2025-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -24,13 +24,9 @@
     int evp_type, PROV_CTX *provctx,
     const char *propq);
 __owur int ossl_ml_kem_key_to_text(BIO *out, const ML_KEM_KEY *key, int selection);
-__owur
-    __owur int
-    ossl_ml_kem_i2d_pubkey(const ML_KEM_KEY *key, unsigned char **out);
-__owur
-    __owur int
-    ossl_ml_kem_i2d_prvkey(const ML_KEM_KEY *key, unsigned char **out,
-        PROV_CTX *provctx);
+__owur int ossl_ml_kem_i2d_pubkey(const ML_KEM_KEY *key, unsigned char **out);
+__owur int ossl_ml_kem_i2d_prvkey(const ML_KEM_KEY *key, unsigned char **out,
+    PROV_CTX *provctx);
 
 #endif /* OPENSSL_NO_ML_KEM */
 #endif /* PROV_ML_KEM_CODECS_H */
diff -Nru openssl-3.5.6/providers/implementations/exchange/dh_exch.c openssl-3.5.7/providers/implementations/exchange/dh_exch.c
--- openssl-3.5.6/providers/implementations/exchange/dh_exch.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/providers/implementations/exchange/dh_exch.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -146,12 +146,15 @@
 static int dh_match_params(DH *priv, DH *peer)
 {
     int ret;
+    int ignore_q = 1;
     FFC_PARAMS *dhparams_priv = ossl_dh_get0_params(priv);
     FFC_PARAMS *dhparams_peer = ossl_dh_get0_params(peer);
 
+    if (dhparams_priv != NULL && dhparams_priv->q != NULL)
+        ignore_q = 0;
     ret = dhparams_priv != NULL
         && dhparams_peer != NULL
-        && ossl_ffc_params_cmp(dhparams_priv, dhparams_peer, 1);
+        && ossl_ffc_params_cmp(dhparams_priv, dhparams_peer, ignore_q);
     if (!ret)
         ERR_raise(ERR_LIB_PROV, PROV_R_MISMATCHING_DOMAIN_PARAMETERS);
     return ret;
diff -Nru openssl-3.5.6/providers/implementations/include/prov/implementations.h openssl-3.5.7/providers/implementations/include/prov/implementations.h
--- openssl-3.5.6/providers/implementations/include/prov/implementations.h	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/providers/implementations/include/prov/implementations.h	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -264,7 +264,9 @@
 #endif
 extern const OSSL_DISPATCH ossl_kmac128_functions[];
 extern const OSSL_DISPATCH ossl_kmac256_functions[];
+#ifndef OPENSSL_NO_SIPHASH
 extern const OSSL_DISPATCH ossl_siphash_functions[];
+#endif
 extern const OSSL_DISPATCH ossl_poly1305_functions[];
 
 /* KDFs / PRFs */
diff -Nru openssl-3.5.6/providers/implementations/keymgmt/ecx_kmgmt.c openssl-3.5.7/providers/implementations/keymgmt/ecx_kmgmt.c
--- openssl-3.5.6/providers/implementations/keymgmt/ecx_kmgmt.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/providers/implementations/keymgmt/ecx_kmgmt.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2020-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2020-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -35,6 +35,7 @@
 static OSSL_FUNC_keymgmt_new_fn x448_new_key;
 static OSSL_FUNC_keymgmt_new_fn ed25519_new_key;
 static OSSL_FUNC_keymgmt_new_fn ed448_new_key;
+static OSSL_FUNC_keymgmt_free_fn ecx_free_key;
 static OSSL_FUNC_keymgmt_gen_init_fn x25519_gen_init;
 static OSSL_FUNC_keymgmt_gen_init_fn x448_gen_init;
 static OSSL_FUNC_keymgmt_gen_init_fn ed25519_gen_init;
@@ -1007,10 +1008,15 @@
     return ecx_validate(keydata, selection, ECX_KEY_TYPE_ED448, ED448_KEYLEN);
 }
 
+static void ecx_free_key(void *keydata)
+{
+    ossl_ecx_key_free((ECX_KEY *)keydata);
+}
+
 #define MAKE_KEYMGMT_FUNCTIONS(alg)                                                   \
     const OSSL_DISPATCH ossl_##alg##_keymgmt_functions[] = {                          \
         { OSSL_FUNC_KEYMGMT_NEW, (void (*)(void))alg##_new_key },                     \
-        { OSSL_FUNC_KEYMGMT_FREE, (void (*)(void))ossl_ecx_key_free },                \
+        { OSSL_FUNC_KEYMGMT_FREE, (void (*)(void))ecx_free_key },                     \
         { OSSL_FUNC_KEYMGMT_GET_PARAMS, (void (*)(void))alg##_get_params },           \
         { OSSL_FUNC_KEYMGMT_GETTABLE_PARAMS, (void (*)(void))alg##_gettable_params }, \
         { OSSL_FUNC_KEYMGMT_SET_PARAMS, (void (*)(void))alg##_set_params },           \
@@ -1160,38 +1166,10 @@
         0xfe, 0x53, 0x6e, 0xcd, 0xd3, 0x36, 0x69, 0x21
     };
     static const unsigned char generator_y[] = {
-        0x58,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
-        0x66,
+        0x58, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66,
+        0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66,
+        0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66,
+        0x66, 0x66
     };
     unsigned char x_dst[32], buff[SHA512_DIGEST_LENGTH];
     ECX_KEY *key = ossl_ecx_key_new(gctx->libctx, ECX_KEY_TYPE_ED25519, 1,
diff -Nru openssl-3.5.6/providers/implementations/keymgmt/ml_kem_kmgmt.c openssl-3.5.7/providers/implementations/keymgmt/ml_kem_kmgmt.c
--- openssl-3.5.6/providers/implementations/keymgmt/ml_kem_kmgmt.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/providers/implementations/keymgmt/ml_kem_kmgmt.c	2026-06-09 13:54:25.000000000 +0200
@@ -28,6 +28,7 @@
 static OSSL_FUNC_keymgmt_new_fn ml_kem_512_new;
 static OSSL_FUNC_keymgmt_new_fn ml_kem_768_new;
 static OSSL_FUNC_keymgmt_new_fn ml_kem_1024_new;
+static OSSL_FUNC_keymgmt_free_fn ml_kem_free_key;
 static OSSL_FUNC_keymgmt_gen_fn ml_kem_gen;
 static OSSL_FUNC_keymgmt_gen_init_fn ml_kem_512_gen_init;
 static OSSL_FUNC_keymgmt_gen_init_fn ml_kem_768_gen_init;
@@ -814,6 +815,11 @@
     return ossl_ml_kem_key_dup(key, selection);
 }
 
+static void ml_kem_free_key(void *keydata)
+{
+    ossl_ml_kem_key_free((ML_KEM_KEY *)keydata);
+}
+
 #ifndef FIPS_MODULE
 #define DISPATCH_LOAD_FN \
     { OSSL_FUNC_KEYMGMT_LOAD, (OSSL_FUNC)ml_kem_load },
@@ -834,7 +840,7 @@
     }                                                                                     \
     const OSSL_DISPATCH ossl_ml_kem_##bits##_keymgmt_functions[] = {                      \
         { OSSL_FUNC_KEYMGMT_NEW, (OSSL_FUNC)ml_kem_##bits##_new },                        \
-        { OSSL_FUNC_KEYMGMT_FREE, (OSSL_FUNC)ossl_ml_kem_key_free },                      \
+        { OSSL_FUNC_KEYMGMT_FREE, (OSSL_FUNC)ml_kem_free_key },                           \
         { OSSL_FUNC_KEYMGMT_GET_PARAMS, (OSSL_FUNC)ml_kem_get_params },                   \
         { OSSL_FUNC_KEYMGMT_GETTABLE_PARAMS, (OSSL_FUNC)ml_kem_gettable_params },         \
         { OSSL_FUNC_KEYMGMT_SET_PARAMS, (OSSL_FUNC)ml_kem_set_params },                   \
diff -Nru openssl-3.5.6/providers/implementations/keymgmt/mlx_kmgmt.c openssl-3.5.7/providers/implementations/keymgmt/mlx_kmgmt.c
--- openssl-3.5.6/providers/implementations/keymgmt/mlx_kmgmt.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/providers/implementations/keymgmt/mlx_kmgmt.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -733,15 +733,17 @@
         || (ret = OPENSSL_memdup(key, sizeof(*ret))) == NULL)
         return NULL;
 
-    if (ret->propq != NULL
-        && (ret->propq = OPENSSL_strdup(ret->propq)) == NULL) {
+    ret->mkey = ret->xkey = NULL;
+
+    if (key->propq != NULL
+        && (ret->propq = OPENSSL_strdup(key->propq)) == NULL) {
         OPENSSL_free(ret);
         return NULL;
     }
 
     /* Absent key material, nothing left to do */
-    if (ret->mkey == NULL) {
-        if (ret->xkey == NULL)
+    if (key->mkey == NULL) {
+        if (key->xkey == NULL)
             return ret;
         /* Fail if the source key is an inconsistent state */
         OPENSSL_free(ret->propq);
@@ -751,7 +753,6 @@
 
     switch (selection & OSSL_KEYMGMT_SELECT_KEYPAIR) {
     case 0:
-        ret->xkey = ret->mkey = NULL;
         ret->state = MLX_HAVE_NOKEYS;
         return ret;
     case OSSL_KEYMGMT_SELECT_KEYPAIR:
diff -Nru openssl-3.5.6/providers/implementations/macs/poly1305_prov.c openssl-3.5.7/providers/implementations/macs/poly1305_prov.c
--- openssl-3.5.6/providers/implementations/macs/poly1305_prov.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/providers/implementations/macs/poly1305_prov.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2018-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2018-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -38,6 +38,7 @@
 struct poly1305_data_st {
     void *provctx;
     int updated;
+    int key_set;
     POLY1305 poly1305; /* Poly1305 data */
 };
 
@@ -87,6 +88,7 @@
     }
     Poly1305_Init(&ctx->poly1305, key);
     ctx->updated = 0;
+    ctx->key_set = 1;
     return 1;
 }
 
@@ -125,6 +127,10 @@
 
     if (!ossl_prov_is_running())
         return 0;
+    if (!ctx->key_set) {
+        ERR_raise(ERR_LIB_PROV, PROV_R_NO_KEY_SET);
+        return 0;
+    }
     ctx->updated = 1;
     Poly1305_Final(&ctx->poly1305, out);
     *outl = poly1305_size();
diff -Nru openssl-3.5.6/providers/implementations/signature/rsa_sig.c openssl-3.5.7/providers/implementations/signature/rsa_sig.c
--- openssl-3.5.6/providers/implementations/signature/rsa_sig.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/providers/implementations/signature/rsa_sig.c	2026-06-09 13:54:25.000000000 +0200
@@ -977,8 +977,19 @@
             break;
 
         case RSA_PKCS1_PADDING: {
+            int mdsize = EVP_MD_get_size(prsactx->md);
             size_t sltmp;
 
+            if (mdsize <= 0) {
+                ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_DIGEST_LENGTH);
+                return 0;
+            }
+            if (routsize < (size_t)mdsize) {
+                ERR_raise_data(ERR_LIB_PROV, PROV_R_OUTPUT_BUFFER_TOO_SMALL,
+                    "buffer size is %d, should be %d",
+                    routsize, mdsize);
+                return 0;
+            }
             ret = ossl_rsa_verify(prsactx->mdnid, NULL, 0, rout, &sltmp,
                 sig, siglen, prsactx->rsa);
             if (ret <= 0) {
@@ -994,7 +1005,15 @@
             return 0;
         }
     } else {
-        ret = RSA_public_decrypt(siglen, sig, rout, prsactx->rsa,
+        int rsasize = RSA_size(prsactx->rsa);
+
+        if (routsize < (size_t)rsasize) {
+            ERR_raise_data(ERR_LIB_PROV, PROV_R_OUTPUT_BUFFER_TOO_SMALL,
+                "buffer size is %d, should be %d",
+                routsize, rsasize);
+            return 0;
+        }
+        ret = RSA_public_decrypt((int)siglen, sig, rout, prsactx->rsa,
             prsactx->pad_mode);
         if (ret <= 0) {
             ERR_raise(ERR_LIB_PROV, ERR_R_RSA_LIB);
diff -Nru openssl-3.5.6/providers/implementations/signature/slh_dsa_sig.c openssl-3.5.7/providers/implementations/signature/slh_dsa_sig.c
--- openssl-3.5.6/providers/implementations/signature/slh_dsa_sig.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/providers/implementations/signature/slh_dsa_sig.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -222,8 +222,9 @@
         ctx->context_string, ctx->context_string_len,
         opt_rand, ctx->msg_encode,
         sig, siglen, sigsize);
-    if (opt_rand != add_rand)
-        OPENSSL_cleanse(opt_rand, n);
+    /* Only cleanse the temporary buffer generated for this signature. */
+    if (opt_rand == add_rand)
+        OPENSSL_cleanse(add_rand, sizeof(add_rand));
     return ret;
 }
 
diff -Nru openssl-3.5.6/ssl/quic/quic_ackm.c openssl-3.5.7/ssl/quic/quic_ackm.c
--- openssl-3.5.6/ssl/quic/quic_ackm.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/quic/quic_ackm.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -117,6 +117,8 @@
         return 0;
 
     lh_OSSL_ACKM_TX_PKT_insert(h->map, pkt);
+    if (lh_OSSL_ACKM_TX_PKT_error(h->map))
+        return 0;
 
     ossl_list_tx_history_insert_tail(&h->packets, pkt);
     return 1;
diff -Nru openssl-3.5.6/ssl/quic/quic_cfq.c openssl-3.5.7/ssl/quic/quic_cfq.c
--- openssl-3.5.6/ssl/quic/quic_cfq.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/quic/quic_cfq.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -7,6 +7,7 @@
  * https://www.openssl.org/source/license.html
  */
 
+#include "internal/quic_channel.h"
 #include "internal/quic_cfq.h"
 #include "internal/numbers.h"
 
@@ -307,6 +308,20 @@
     }
 }
 
+int ossl_quic_cfq_discard_unreliable(QUIC_CFQ *cfq, QUIC_CFQ_ITEM *item)
+{
+    int discarded;
+
+    if (ossl_quic_cfq_item_is_unreliable(item)) {
+        ossl_quic_cfq_release(cfq, item);
+        discarded = 1;
+    } else {
+        discarded = 0;
+    }
+
+    return discarded;
+}
+
 /*
  * Releases a CFQ item. The item may be in either state (NEW or TX) prior to the
  * call. The QUIC_CFQ_ITEM pointer must not be used following this call.
diff -Nru openssl-3.5.6/ssl/quic/quic_channel.c openssl-3.5.7/ssl/quic/quic_channel.c
--- openssl-3.5.6/ssl/quic/quic_channel.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/quic/quic_channel.c	2026-06-09 13:54:25.000000000 +0200
@@ -2213,6 +2213,12 @@
         "forgery limit");
 }
 
+void ossl_ch_reset_rx_state(QUIC_CHANNEL *ch)
+{
+    ch->did_crypto_frame = 0;
+    ch->seen_path_challenge = 0;
+}
+
 /* Process queued incoming packets and handle frames, if any. */
 static int ch_rx(QUIC_CHANNEL *ch, int channel_only, int *notify_other_threads)
 {
@@ -3622,7 +3628,6 @@
  * @return         1 on success, 0 on failure to set required elements.
  */
 static int ch_on_new_conn_common(QUIC_CHANNEL *ch, const BIO_ADDR *peer,
-    const QUIC_CONN_ID *peer_scid,
     const QUIC_CONN_ID *peer_dcid,
     const QUIC_CONN_ID *peer_odcid)
 {
@@ -3631,7 +3636,6 @@
         return 0;
 
     ch->init_dcid = *peer_dcid;
-    ch->cur_remote_dcid = *peer_scid;
     ch->odcid.id_len = 0;
 
     if (peer_odcid != NULL)
@@ -3675,7 +3679,6 @@
 
 /* Called when we, as a server, get a new incoming connection. */
 int ossl_quic_channel_on_new_conn(QUIC_CHANNEL *ch, const BIO_ADDR *peer,
-    const QUIC_CONN_ID *peer_scid,
     const QUIC_CONN_ID *peer_dcid)
 {
     if (!ossl_assert(ch->state == QUIC_CHANNEL_STATE_IDLE && ch->is_server))
@@ -3685,7 +3688,7 @@
     if (!ossl_quic_lcidm_generate_initial(ch->lcidm, ch, &ch->cur_local_cid))
         return 0;
 
-    return ch_on_new_conn_common(ch, peer, peer_scid, peer_dcid, NULL);
+    return ch_on_new_conn_common(ch, peer, peer_dcid, NULL);
 }
 
 /**
@@ -3712,7 +3715,6 @@
  *         met (e.g., channel is not idle or not a server, or binding fails).
  */
 int ossl_quic_bind_channel(QUIC_CHANNEL *ch, const BIO_ADDR *peer,
-    const QUIC_CONN_ID *peer_scid,
     const QUIC_CONN_ID *peer_dcid,
     const QUIC_CONN_ID *peer_odcid)
 {
@@ -3730,7 +3732,7 @@
      * peer_odcid <=> is initial dst conn id chosen by peer in its
      * first initial packet we received without token.
      */
-    return ch_on_new_conn_common(ch, peer, peer_scid, peer_dcid, peer_odcid);
+    return ch_on_new_conn_common(ch, peer, peer_dcid, peer_odcid);
 }
 
 SSL *ossl_quic_channel_get0_ssl(QUIC_CHANNEL *ch)
@@ -4064,3 +4066,13 @@
 {
     return ch->max_idle_timeout;
 }
+
+uint64_t ossl_quic_channel_get_path_challenge_count(const QUIC_CHANNEL *ch)
+{
+    return ch->path_challenge_rx;
+}
+
+uint64_t ossl_quic_channel_get_path_response_count(const QUIC_CHANNEL *ch)
+{
+    return ch->path_response_tx;
+}
diff -Nru openssl-3.5.6/ssl/quic/quic_channel_local.h openssl-3.5.7/ssl/quic/quic_channel_local.h
--- openssl-3.5.6/ssl/quic/quic_channel_local.h	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/quic/quic_channel_local.h	2026-06-09 13:54:25.000000000 +0200
@@ -13,6 +13,28 @@
 #include "internal/quic_tls.h"
 
 /*
+ * This is a part of PATH_CHALLENGE flood [1] mitigation. This limits the
+ * number of PATH_CHALLENGE frames  QUIC stack is willing to process for
+ * connection. Local QUIC stack creates PATH_RESPONSE frame for PATH_CHALLENGE
+ * frame it receives from remote peer. The response frame is put Control Frame
+ * Queue waiting to be dispatched. The PATH_RESPONSE frame is removed from CFQ
+ * after it is dispatched. The QUIC_PATH_RESPONSE_QLEN limits the number of
+ * PATH_RESPONSE frames waiting to be dispatched. No new PATH_RESPONSE frames
+ * are inserted into CFQ if queue limit is exceeded.
+ *
+ * QUIC implementations use different limits for PATH_RESPONSE queue lengths:
+ *    quic-go defines maxPathResponses as 256
+ *    quiche from cloadflare sets DEFAULT_MAX_PATH_CHALLENGE_RX_QUEUE_LEN to 3
+ *    t-quic from tencent chooses MAX_PATH_CHALS_RECV to be 8
+ *
+ * OpenSSL here introduces QUIC_PATH_RESPONSE_QLEN as 32.
+ *
+ * [1] https://www.ietf.org/archive/id/draft-chen-quic-logical-vuln-mitigations-00.txt
+ *     (section 4.2)
+ */
+#define QUIC_PATH_RESPONSE_QLEN 32
+
+/*
  * QUIC Channel Structure
  * ======================
  *
@@ -457,6 +479,18 @@
 
     /* Has qlog been requested? */
     unsigned int is_tserver_ch : 1;
+    /*
+     * RFC 9000 Section 9.2.1 says:
+     *      However, an endpoint SHOULD NOT send multiple
+     *      PATH_CHALLENGE frames in a single packet.
+     * The counter here allows us to detect multiple presence
+     * of PATH_CHALLENGE frame in packet. We process only the
+     * first PATH_CHALLENGE frame found in packet. Remaining PATH_CHALLENGE
+     * frames are ignored.
+     * seen_path_challenge flag is always reset before
+     * ossl_quic_handle_frames() gets called.
+     */
+    unsigned int seen_path_challenge : 1;
 
     /* Saved error stack in case permanent error was encountered */
     ERR_STATE *err_state;
@@ -467,6 +501,15 @@
 
     /* Title for qlog purposes. We own this copy. */
     char *qlog_title;
+    /*
+     * number of path responses waiting to be dispatched
+     * from control frame queue (CFQ)
+     */
+    unsigned int path_response_limit;
+    /* number of path challenge frames received */
+    unsigned int path_challenge_rx;
+    /* number of path response frames sent */
+    unsigned int path_response_tx;
 };
 
 #endif
diff -Nru openssl-3.5.6/ssl/quic/quic_fifd.c openssl-3.5.7/ssl/quic/quic_fifd.c
--- openssl-3.5.6/ssl/quic/quic_fifd.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/quic/quic_fifd.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -310,3 +310,46 @@
     fifd->get_qlog_cb = get_qlog_cb;
     fifd->get_qlog_cb_arg = get_qlog_cb_arg;
 }
+
+static void txpim_pkt_remove_cfq_item(QUIC_TXPIM_PKT *pkt, QUIC_CFQ_ITEM *cfq_item)
+{
+    QUIC_CFQ_ITEM *prev = cfq_item->pkt_prev;
+
+    if (prev != NULL) {
+        prev->pkt_next = cfq_item->pkt_next;
+    } else {
+        pkt->retx_head = cfq_item->pkt_next;
+    }
+
+    if (cfq_item->pkt_next != NULL)
+        cfq_item->pkt_next->pkt_prev = prev;
+
+    cfq_item->pkt_prev = NULL;
+    cfq_item->pkt_next = NULL;
+}
+
+void ossl_quic_fifd_pkt_discard_unreliable(QUIC_FIFD *fifd, QUIC_TXPIM_PKT *pkt)
+{
+    QUIC_CFQ_ITEM *cfq_item, *cfq_next;
+
+    /*
+     * The packet has been written to network. We can discard frames we don't
+     * retransmit when loss is detected.
+     */
+    cfq_item = pkt->retx_head;
+    while (cfq_item != NULL) {
+        /*
+         * Discarded items are moved to free list. If item
+         * got moved to free list we must also remove it from
+         * cfq list kept in pkt, so ACKM does not find it when
+         * receives an ACK for pkt.
+         */
+        if (ossl_quic_cfq_discard_unreliable(fifd->cfq, cfq_item)) {
+            cfq_next = cfq_item->pkt_next;
+            txpim_pkt_remove_cfq_item(pkt, cfq_item);
+            cfq_item = cfq_next;
+        } else {
+            cfq_item = cfq_item->pkt_next;
+        }
+    }
+}
diff -Nru openssl-3.5.6/ssl/quic/quic_impl.c openssl-3.5.7/ssl/quic/quic_impl.c
--- openssl-3.5.6/ssl/quic/quic_impl.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/quic/quic_impl.c	2026-06-09 13:54:25.000000000 +0200
@@ -681,6 +681,9 @@
 {
     BIO *b;
 
+    if (port == NULL)
+        return;
+
     b = ossl_quic_port_get_net_rbio(port);
     BIO_free_all(b);
 
@@ -1818,6 +1821,7 @@
     if (qc->port == NULL) {
         QUIC_RAISE_NON_NORMAL_ERROR(NULL, ERR_R_INTERNAL_ERROR, NULL);
         ossl_quic_engine_free(qc->engine);
+        qc->engine = NULL;
         return 0;
     }
 
@@ -1825,7 +1829,9 @@
     if (qc->ch == NULL) {
         QUIC_RAISE_NON_NORMAL_ERROR(NULL, ERR_R_INTERNAL_ERROR, NULL);
         ossl_quic_port_free(qc->port);
+        qc->port = NULL;
         ossl_quic_engine_free(qc->engine);
+        qc->engine = NULL;
         return 0;
     }
 
@@ -4008,14 +4014,14 @@
     uint64_t *app_error_code)
 {
     int local_init;
-    uint64_t final_size;
+    uint64_t scratch_pad; /* throw away value */
 
     local_init = (ossl_quic_stream_is_server_init(qs) == qc->as_server);
 
     if (app_error_code != NULL)
         *app_error_code = UINT64_MAX;
     else
-        app_error_code = &final_size; /* throw away value */
+        app_error_code = &scratch_pad;
 
     if (!ossl_quic_stream_is_bidi(qs) && local_init != is_write) {
         /*
@@ -4048,7 +4054,7 @@
         *app_error_code = !is_write
             ? qs->peer_reset_stream_aec
             : qs->peer_stop_sending_aec;
-    } else if (is_write && ossl_quic_sstream_get_final_size(qs->sstream, &final_size)) {
+    } else if (is_write && qs->have_final_size) {
         /*
          * Stream has been finished. Stream reset takes precedence over this for
          * the write case as peer may not have received all data.
@@ -4292,7 +4298,7 @@
 
     if ((ql = OPENSSL_zalloc(sizeof(*ql))) == NULL) {
         QUIC_RAISE_NON_NORMAL_ERROR(NULL, ERR_R_CRYPTO_LIB, NULL);
-        goto err;
+        return NULL;
     }
 
 #if defined(OPENSSL_THREADS)
@@ -4340,8 +4346,8 @@
     return &ql->obj.ssl;
 
 err:
-    if (ql != NULL)
-        ossl_quic_engine_free(ql->engine);
+    ossl_quic_port_free(ql->port);
+    ossl_quic_engine_free(ql->engine);
 
 #if defined(OPENSSL_THREADS)
     ossl_crypto_mutex_free(&ql->mutex);
@@ -4488,7 +4494,7 @@
 #endif
 
     /* Create the handshake layer. */
-    qc->tls = ossl_ssl_connection_new_int(ql->obj.ssl.ctx, NULL, TLS_method());
+    qc->tls = ossl_ssl_connection_new_int(ql->obj.ssl.ctx, &qc->obj.ssl, TLS_method());
     if (qc->tls == NULL || (sc = SSL_CONNECTION_FROM_SSL(qc->tls)) == NULL) {
         QUIC_RAISE_NON_NORMAL_ERROR(NULL, ERR_R_INTERNAL_ERROR, NULL);
         goto err;
diff -Nru openssl-3.5.6/ssl/quic/quic_port.c openssl-3.5.7/ssl/quic/quic_port.c
--- openssl-3.5.6/ssl/quic/quic_port.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/quic/quic_port.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2023-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2023-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -549,9 +549,10 @@
      * If we're using qlog, make sure the tls get further configured properly
      */
     ch->use_qlog = 1;
-    if (ch->tls->ctx->qlog_title != NULL) {
+    if (ch->tls != NULL && ch->tls->ctx->qlog_title != NULL) {
+        OPENSSL_free(ch->qlog_title);
         if ((ch->qlog_title = OPENSSL_strdup(ch->tls->ctx->qlog_title)) == NULL) {
-            OPENSSL_free(ch);
+            ossl_quic_channel_free(ch);
             return NULL;
         }
     }
@@ -729,7 +730,7 @@
  * to *new_ch.
  */
 static void port_bind_channel(QUIC_PORT *port, const BIO_ADDR *peer,
-    const QUIC_CONN_ID *scid, const QUIC_CONN_ID *dcid,
+    const QUIC_CONN_ID *dcid,
     const QUIC_CONN_ID *odcid, OSSL_QRX *qrx,
     QUIC_CHANNEL **new_ch)
 {
@@ -766,8 +767,10 @@
         if (!ossl_quic_provide_initial_secret(ch->port->engine->libctx,
                 ch->port->engine->propq,
                 dcid, /* is_server */ 1,
-                ch->qrx, NULL))
+                ch->qrx, NULL)) {
+            ossl_quic_channel_free(ch);
             return;
+        }
 
     if (odcid->id_len != 0) {
         /*
@@ -776,7 +779,7 @@
          * See RFC 9000 s. 8.1
          */
         ossl_quic_tx_packetiser_set_validated(ch->txp);
-        if (!ossl_quic_bind_channel(ch, peer, scid, dcid, odcid)) {
+        if (!ossl_quic_bind_channel(ch, peer, dcid, odcid)) {
             ossl_quic_channel_free(ch);
             return;
         }
@@ -785,7 +788,7 @@
          * No odcid means we didn't do server validation, so we need to
          * generate a cid via ossl_quic_channel_on_new_conn
          */
-        if (!ossl_quic_channel_on_new_conn(ch, peer, scid, dcid)) {
+        if (!ossl_quic_channel_on_new_conn(ch, peer, dcid)) {
             ossl_quic_channel_free(ch);
             return;
         }
@@ -1332,8 +1335,7 @@
  *   configurable in the future.
  */
 static int port_validate_token(QUIC_PKT_HDR *hdr, QUIC_PORT *port,
-    BIO_ADDR *peer, QUIC_CONN_ID *odcid,
-    QUIC_CONN_ID *scid, uint8_t *gen_new_token)
+    BIO_ADDR *peer, QUIC_CONN_ID *odcid, uint8_t *gen_new_token)
 {
     int ret = 0;
     QUIC_VALIDATION_TOKEN token = { 0 };
@@ -1393,11 +1395,9 @@
                 != 0)
             goto err;
         *odcid = token.odcid;
-        *scid = token.rscid;
     } else {
         if (!ossl_quic_lcidm_get_unused_cid(port->lcidm, odcid))
             goto err;
-        *scid = hdr->src_conn_id;
     }
 
     /*
@@ -1486,7 +1486,7 @@
     PACKET pkt;
     QUIC_PKT_HDR hdr;
     QUIC_CHANNEL *ch = NULL, *new_ch = NULL;
-    QUIC_CONN_ID odcid, scid;
+    QUIC_CONN_ID odcid;
     uint8_t gen_new_token = 0;
     OSSL_QRX *qrx = NULL;
     OSSL_QRX *qrx_src = NULL;
@@ -1517,6 +1517,13 @@
         goto undesirable;
 
     /*
+     * packet without destination connection id is invalid/corrupted here.
+     * stop wasting CPU cycles now.
+     */
+    if (dcid == NULL)
+        goto undesirable;
+
+    /*
      * We have got a packet for an unknown DCID. This might be an attempt to
      * open a new connection.
      */
@@ -1636,8 +1643,7 @@
      */
     if (hdr.token != NULL
         && port_validate_token(&hdr, port, &e->peer,
-               &odcid, &scid,
-               &gen_new_token)
+               &odcid, &gen_new_token)
             == 0) {
         /*
          * RFC 9000 s 8.1.3
@@ -1666,11 +1672,13 @@
          * forget qrx so channel can create a new one
          * with valid initial encryption level keys.
          */
-        qrx_src = qrx;
-        qrx = NULL;
+        if (qrx != NULL) {
+            qrx_src = qrx;
+            qrx = NULL;
+        }
     }
 
-    port_bind_channel(port, &e->peer, &scid, &hdr.dst_conn_id,
+    port_bind_channel(port, &e->peer, &hdr.dst_conn_id,
         &odcid, qrx, &new_ch);
 
     /*
diff -Nru openssl-3.5.6/ssl/quic/quic_record_rx.c openssl-3.5.7/ssl/quic/quic_record_rx.c
--- openssl-3.5.6/ssl/quic/quic_record_rx.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/quic/quic_record_rx.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -1031,7 +1031,13 @@
      */
     rxe = qrx_ensure_free_rxe(qrx, PACKET_remaining(pkt));
     if (rxe == NULL)
-        return 0;
+        /*
+         * Allocation failure, treat as malformed as we cannot process this
+         * packet. The header has not been read yet so we do not know the
+         * packet size and cannot skip just this packet, so we drop the rest of
+         * the datagram instead.
+         */
+        goto malformed;
 
     /* Have we already processed this packet? */
     if (pkt_is_marked(&urxe->processed, pkt_idx))
diff -Nru openssl-3.5.6/ssl/quic/quic_record_shared.c openssl-3.5.7/ssl/quic/quic_record_shared.c
--- openssl-3.5.6/ssl/quic/quic_record_shared.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/quic/quic_record_shared.c	2026-06-09 13:54:25.000000000 +0200
@@ -87,9 +87,6 @@
 {
     OSSL_QRL_ENC_LEVEL *el = ossl_qrl_enc_level_set_get(els, enc_level, 0);
 
-    if (!ossl_qrl_enc_level_set_has_keyslot(els, enc_level, el->state, keyslot))
-        return;
-
     if (el->cctx[keyslot] != NULL) {
         EVP_CIPHER_CTX_free(el->cctx[keyslot]);
         el->cctx[keyslot] = NULL;
@@ -98,26 +95,18 @@
     OPENSSL_cleanse(el->iv[keyslot], sizeof(el->iv[keyslot]));
 }
 
-static int el_setup_keyslot(OSSL_QRL_ENC_LEVEL_SET *els,
-    uint32_t enc_level,
-    unsigned char tgt_state,
-    size_t keyslot,
-    const unsigned char *secret,
-    size_t secret_len)
+static int el_build_keyslot(OSSL_QRL_ENC_LEVEL *el,
+    const unsigned char *secret, size_t secret_len,
+    EVP_CIPHER_CTX **out_cctx, unsigned char *out_iv, size_t *out_iv_len)
 {
-    OSSL_QRL_ENC_LEVEL *el = ossl_qrl_enc_level_set_get(els, enc_level, 0);
     unsigned char key[EVP_MAX_KEY_LENGTH];
     size_t key_len = 0, iv_len = 0;
     const char *cipher_name = NULL;
     EVP_CIPHER *cipher = NULL;
     EVP_CIPHER_CTX *cctx = NULL;
 
-    if (!ossl_assert(el != NULL
-            && ossl_qrl_enc_level_set_has_keyslot(els, enc_level,
-                tgt_state, keyslot))) {
-        ERR_raise(ERR_LIB_SSL, ERR_R_PASSED_INVALID_ARGUMENT);
-        return 0;
-    }
+    *out_cctx = NULL;
+    *out_iv_len = 0;
 
     cipher_name = ossl_qrl_get_suite_cipher_name(el->suite_id);
     iv_len = ossl_qrl_get_suite_cipher_iv_len(el->suite_id);
@@ -133,25 +122,15 @@
         return 0;
     }
 
-    assert(el->cctx[keyslot] == NULL);
-
-    /* Derive "quic iv" key. */
-    if (!tls13_hkdf_expand_ex(el->libctx, el->propq,
-            el->md,
-            secret,
-            quic_v1_iv_label,
-            sizeof(quic_v1_iv_label),
-            NULL, 0,
-            el->iv[keyslot], iv_len, 1))
+    /* Derive "quic iv" into caller's buffer. */
+    if (!tls13_hkdf_expand_ex(el->libctx, el->propq, el->md, secret,
+            quic_v1_iv_label, sizeof(quic_v1_iv_label), NULL, 0,
+            out_iv, iv_len, 1))
         goto err;
 
-    /* Derive "quic key" key. */
-    if (!tls13_hkdf_expand_ex(el->libctx, el->propq,
-            el->md,
-            secret,
-            quic_v1_key_label,
-            sizeof(quic_v1_key_label),
-            NULL, 0,
+    /* Derive "quic key" into local. */
+    if (!tls13_hkdf_expand_ex(el->libctx, el->propq, el->md, secret,
+            quic_v1_key_label, sizeof(quic_v1_key_label), NULL, 0,
             key, key_len, 1))
         goto err;
 
@@ -173,12 +152,13 @@
     }
 
     /* IV will be changed on RX/TX so we don't need to use a real value here. */
-    if (!EVP_CipherInit_ex(cctx, cipher, NULL, key, el->iv[keyslot], 0)) {
+    if (!EVP_CipherInit_ex(cctx, cipher, NULL, key, out_iv, 0)) {
         ERR_raise(ERR_LIB_SSL, ERR_R_EVP_LIB);
         goto err;
     }
 
-    el->cctx[keyslot] = cctx;
+    *out_cctx = cctx;
+    *out_iv_len = iv_len;
 
     /* Zeroize intermediate keys. */
     OPENSSL_cleanse(key, sizeof(key));
@@ -188,11 +168,47 @@
 err:
     EVP_CIPHER_CTX_free(cctx);
     EVP_CIPHER_free(cipher);
-    OPENSSL_cleanse(el->iv[keyslot], sizeof(el->iv[keyslot]));
     OPENSSL_cleanse(key, sizeof(key));
+    OPENSSL_cleanse(out_iv, iv_len);
     return 0;
 }
 
+static void el_install_keyslot(OSSL_QRL_ENC_LEVEL *el, size_t keyslot,
+    EVP_CIPHER_CTX *new_cctx, const unsigned char *new_iv, size_t new_iv_len)
+{
+    assert(el->cctx[keyslot] == NULL);
+    assert(new_iv_len <= sizeof(el->iv[keyslot]));
+
+    el->cctx[keyslot] = new_cctx;
+    memcpy(el->iv[keyslot], new_iv, new_iv_len);
+}
+
+static int el_setup_keyslot(OSSL_QRL_ENC_LEVEL_SET *els, uint32_t enc_level,
+    unsigned char tgt_state, size_t keyslot, const unsigned char *secret,
+    size_t secret_len)
+{
+    OSSL_QRL_ENC_LEVEL *el = ossl_qrl_enc_level_set_get(els, enc_level, 0);
+    EVP_CIPHER_CTX *new_cctx = NULL;
+    unsigned char new_iv[EVP_MAX_IV_LENGTH];
+    size_t new_iv_len = EVP_MAX_IV_LENGTH;
+
+    if (!ossl_assert(el != NULL
+            && ossl_qrl_enc_level_set_has_keyslot(els, enc_level,
+                tgt_state, keyslot))) {
+        ERR_raise(ERR_LIB_SSL, ERR_R_PASSED_INVALID_ARGUMENT);
+        return 0;
+    }
+
+    if (!el_build_keyslot(el, secret, secret_len, &new_cctx, new_iv,
+            &new_iv_len))
+        return 0;
+
+    el_install_keyslot(el, keyslot, new_cctx, new_iv, new_iv_len);
+
+    OPENSSL_cleanse(new_iv, sizeof(new_iv));
+    return 1;
+}
+
 int ossl_qrl_enc_level_set_provide_secret(OSSL_QRL_ENC_LEVEL_SET *els,
     OSSL_LIB_CTX *libctx,
     const char *propq,
@@ -346,6 +362,9 @@
     uint32_t enc_level)
 {
     OSSL_QRL_ENC_LEVEL *el = ossl_qrl_enc_level_set_get(els, enc_level, 0);
+    EVP_CIPHER_CTX *new_cctx = NULL;
+    unsigned char new_iv[EVP_MAX_IV_LENGTH];
+    size_t new_iv_len = EVP_MAX_IV_LENGTH;
     size_t secret_len;
     unsigned char new_ku[EVP_MAX_KEY_LENGTH];
 
@@ -383,13 +402,15 @@
             new_ku, secret_len, 1))
         return 0;
 
-    el_teardown_keyslot(els, enc_level, 0);
-
-    /* Setup keyslot for CURRENT "quic ku" key. */
-    if (!el_setup_keyslot(els, enc_level, QRL_EL_STATE_PROV_NORMAL,
-            0, el->ku, secret_len))
+    /* Build new keyslot first so if it fails, teardown is not done. */
+    if (!el_build_keyslot(el, el->ku, secret_len, &new_cctx, new_iv,
+            &new_iv_len))
         return 0;
 
+    el_teardown_keyslot(els, enc_level, 0);
+    el_install_keyslot(el, 0, new_cctx, new_iv, new_iv_len);
+    OPENSSL_cleanse(new_iv, sizeof(new_iv));
+
     ++el->key_epoch;
     el->op_count = 0;
     memcpy(el->ku, new_ku, secret_len);
diff -Nru openssl-3.5.6/ssl/quic/quic_record_tx.c openssl-3.5.7/ssl/quic/quic_record_tx.c
--- openssl-3.5.6/ssl/quic/quic_record_tx.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/quic/quic_record_tx.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -259,9 +259,9 @@
  * of the TXE might change; the new address is returned, or NULL on failure, in
  * which case the original TXE remains valid.
  */
-static TXE *qtx_resize_txe(OSSL_QTX *qtx, TXE_LIST *txl, TXE *txe, size_t n)
+static TXE *qtx_resize_txe(OSSL_QTX *qtx, TXE *txe, size_t n)
 {
-    TXE *txe2, *p;
+    TXE *txe2;
 
     /* Should never happen. */
     if (txe == NULL)
@@ -270,27 +270,21 @@
     if (n >= SIZE_MAX - sizeof(TXE))
         return NULL;
 
-    /* Remove the item from the list to avoid accessing freed memory */
-    p = ossl_list_txe_prev(txe);
-    ossl_list_txe_remove(txl, txe);
+    /*
+     * to resize txe, the caller must detach it from the list first,
+     * fail if txe is still attached.
+     */
+    if (!ossl_assert(ossl_list_txe_prev(txe) == NULL
+            && ossl_list_txe_next(txe) == NULL))
+        return NULL;
 
     /*
      * NOTE: We do not clear old memory, although it does contain decrypted
      * data.
      */
     txe2 = OPENSSL_realloc(txe, sizeof(TXE) + n);
-    if (txe2 == NULL) {
-        if (p == NULL)
-            ossl_list_txe_insert_head(txl, txe);
-        else
-            ossl_list_txe_insert_after(txl, p, txe);
+    if (txe2 == NULL)
         return NULL;
-    }
-
-    if (p == NULL)
-        ossl_list_txe_insert_head(txl, txe2);
-    else
-        ossl_list_txe_insert_after(txl, p, txe2);
 
     if (qtx->cons == txe)
         qtx->cons = txe2;
@@ -303,13 +297,12 @@
  * Ensure the data buffer attached to an TXE is at least n bytes in size.
  * Returns NULL on failure.
  */
-static TXE *qtx_reserve_txe(OSSL_QTX *qtx, TXE_LIST *txl,
-    TXE *txe, size_t n)
+static TXE *qtx_reserve_txe(OSSL_QTX *qtx, TXE *txe, size_t n)
 {
     if (txe->alloc_len >= n)
         return txe;
 
-    return qtx_resize_txe(qtx, txl, txe, n);
+    return qtx_resize_txe(qtx, txe, n);
 }
 
 /* Move a TXE from pending to free. */
@@ -830,6 +823,16 @@
          * serialize/encrypt the packet. We always encrypt packets as soon as
          * our caller gives them to us, which relieves the caller of any need to
          * keep the plaintext around.
+         *
+         * the txe can have three distinct states:
+         *	- attached to free list
+         *	- attached to tx list
+         *	- detached.
+         *
+         * if txe is detached (not member of free/tx list), then it is kept
+         * in qtx->cons. The qtx_ensure_cons() here either returns the txe
+         * from free list or existing ->cons txe. The txe we obtain here
+         * is detached.
          */
         txe = qtx_ensure_cons(qtx);
         if (txe == NULL)
@@ -839,8 +842,20 @@
          * Ensure TXE has at least MDPL bytes allocated. This should only be
          * possible if the MDPL has increased.
          */
-        if (!qtx_reserve_txe(qtx, NULL, txe, qtx->mdpl))
+        txe = qtx_reserve_txe(qtx, txe, qtx->mdpl);
+        if (txe == NULL) {
+            /*
+             * realloc of txe failed. however it is still kept in ->cons,
+             * no memory leak.
+             * The question is what we should do here to handle error,
+             * is doing `return 0` enough? or shall we discard ->cons and
+             * put it back to free list?
+             * or just stop coalescing the packet and dispatch it to network
+             * right now so the next packet tx can start from fresh?
+             * I think this is the problem for another day.
+             */
             return 0;
+        }
 
         if (!was_coalescing) {
             /* Set addresses in TXE. */
@@ -867,6 +882,11 @@
                 /*
                  * We failed due to insufficient length, so end the current
                  * datagram and try again.
+                 *
+                 * the ossl_qtx_finish_dgram() also puts the txe (-.cons) to
+                 * tx list, so ->cons becomes attached again. The function also
+                 * sets ->cons to NULL so the next loop iteration starts with
+                 * fresh txe (which is also safe to resize).
                  */
                 ossl_qtx_finish_dgram(qtx);
                 was_coalescing = 0;
diff -Nru openssl-3.5.6/ssl/quic/quic_rx_depack.c openssl-3.5.7/ssl/quic/quic_rx_depack.c
--- openssl-3.5.6/ssl/quic/quic_rx_depack.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/quic/quic_rx_depack.c	2026-06-09 13:54:25.000000000 +0200
@@ -931,6 +931,22 @@
 
 static void free_path_response(unsigned char *buf, size_t buf_len, void *arg)
 {
+    QUIC_CHANNEL *ch = (QUIC_CHANNEL *)arg;
+
+    assert(ch->path_response_limit > 0);
+
+    ch->path_response_limit--;
+
+    /*
+     * Assume path response frame is being freed on behalf of
+     * finished TX operation. This is for unit testing purposes
+     * only. The counter is also bumped when channel is being
+     * destroyed and CFQ (control frame queue) is freed.
+     * This currently does not matter for check_pc_flood
+     * in test/radix/quic_tests.c.
+     */
+    ch->path_response_tx++;
+
     OPENSSL_free(buf);
 }
 
@@ -951,33 +967,41 @@
         return 0;
     }
 
-    /*
-     * RFC 9000 s. 8.2.2: On receiving a PATH_CHALLENGE frame, an endpoint MUST
-     * respond by echoing the data contained in the PATH_CHALLENGE frame in a
-     * PATH_RESPONSE frame.
-     *
-     * TODO(QUIC FUTURE): We should try to avoid allocation here in the future.
-     */
-    encoded_len = sizeof(uint64_t) + 1;
-    if ((encoded = OPENSSL_malloc(encoded_len)) == NULL)
-        goto err;
-
-    if (!WPACKET_init_static_len(&wpkt, encoded, encoded_len, 0))
-        goto err;
-
-    if (!ossl_quic_wire_encode_frame_path_response(&wpkt, frame_data)) {
-        WPACKET_cleanup(&wpkt);
-        goto err;
-    }
+    if (ch->seen_path_challenge == 0
+        && ch->path_response_limit < QUIC_PATH_RESPONSE_QLEN) {
+        /*
+         * RFC 9000 s. 8.2.2: On receiving a PATH_CHALLENGE frame, an endpoint
+         * MUST respond by echoing the data contained in the PATH_CHALLENGE
+         * frame in a PATH_RESPONSE frame.
+         *
+         * TODO(QUIC FUTURE): We should try to avoid allocation here in the
+         * future.
+         */
+        encoded_len = sizeof(uint64_t) + 1;
+        if ((encoded = OPENSSL_malloc(encoded_len)) == NULL)
+            goto err;
+
+        if (!WPACKET_init_static_len(&wpkt, encoded, encoded_len, 0))
+            goto err;
+
+        if (!ossl_quic_wire_encode_frame_path_response(&wpkt, frame_data)) {
+            WPACKET_cleanup(&wpkt);
+            goto err;
+        }
 
-    WPACKET_finish(&wpkt);
+        WPACKET_finish(&wpkt);
 
-    if (!ossl_quic_cfq_add_frame(ch->cfq, 0, QUIC_PN_SPACE_APP,
-            OSSL_QUIC_FRAME_TYPE_PATH_RESPONSE,
-            QUIC_CFQ_ITEM_FLAG_UNRELIABLE,
-            encoded, encoded_len,
-            free_path_response, NULL))
-        goto err;
+        if (!ossl_quic_cfq_add_frame(ch->cfq, 0, QUIC_PN_SPACE_APP,
+                OSSL_QUIC_FRAME_TYPE_PATH_RESPONSE,
+                QUIC_CFQ_ITEM_FLAG_UNRELIABLE,
+                encoded, encoded_len,
+                free_path_response, ch))
+            goto err;
+        ch->seen_path_challenge = 1;
+        ch->path_response_limit++;
+    }
+
+    ch->path_challenge_rx++;
 
     return 1;
 
@@ -1432,7 +1456,7 @@
     if (ch == NULL)
         return 0;
 
-    ch->did_crypto_frame = 0;
+    ossl_ch_reset_rx_state(ch);
 
     /* Initialize |ackm_data| (and reinitialize |ok|)*/
     memset(&ackm_data, 0, sizeof(ackm_data));
diff -Nru openssl-3.5.6/ssl/quic/quic_stream_map.c openssl-3.5.7/ssl/quic/quic_stream_map.c
--- openssl-3.5.6/ssl/quic/quic_stream_map.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/quic/quic_stream_map.c	2026-06-09 13:54:25.000000000 +0200
@@ -437,6 +437,13 @@
 
     case QUIC_SSTREAM_STATE_DATA_SENT:
         qs->send_state = QUIC_SSTREAM_STATE_DATA_RECVD;
+        /*
+         * Remember final size in case  SSL_get_stream_write_state()
+         * gets called.
+         */
+        qs->have_final_size = ossl_quic_sstream_get_final_size(qs->sstream,
+            NULL);
+
         /* We no longer need a QUIC_SSTREAM in this state. */
         ossl_quic_sstream_free(qs->sstream);
         qs->sstream = NULL;
diff -Nru openssl-3.5.6/ssl/quic/quic_txp.c openssl-3.5.7/ssl/quic/quic_txp.c
--- openssl-3.5.6/ssl/quic/quic_txp.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/quic/quic_txp.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -3133,6 +3133,8 @@
             --probe_info->pto[pn_space];
     }
 
+    ossl_quic_fifd_pkt_discard_unreliable(&txp->fifd, tpkt);
+
     return rc;
 }
 
diff -Nru openssl-3.5.6/ssl/quic/uint_set.c openssl-3.5.7/ssl/quic/uint_set.c
--- openssl-3.5.6/ssl/quic/uint_set.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/quic/uint_set.c	2026-06-09 13:54:25.000000000 +0200
@@ -174,6 +174,7 @@
         for (x = ossl_list_uint_set_next(x); x != NULL; x = xnext) {
             xnext = ossl_list_uint_set_next(x);
             ossl_list_uint_set_remove(s, x);
+            OPENSSL_free(x);
         }
         return 1;
     }
diff -Nru openssl-3.5.6/ssl/record/methods/ktls_meth.c openssl-3.5.7/ssl/record/methods/ktls_meth.c
--- openssl-3.5.6/ssl/record/methods/ktls_meth.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/record/methods/ktls_meth.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2018-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2018-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -473,10 +473,15 @@
     wb->type = templates[0].type;
 
     /*
+     * Free any internal buffer allocated during a previous write retry
+     * (see tls_retry_write_records).  App buffers are not ours to free.
+     */
+    if (!TLS_BUFFER_is_app_buffer(wb))
+        OPENSSL_free(TLS_BUFFER_get_buf(wb));
+
+    /*
      * ktls doesn't modify the buffer, but to avoid a warning we need
      * to discard the const qualifier.
-     * This doesn't leak memory because the buffers have never been allocated
-     * with KTLS
      */
     TLS_BUFFER_set_buf(wb, (unsigned char *)templates[0].buf);
     TLS_BUFFER_set_offset(wb, 0);
@@ -547,15 +552,6 @@
     return tls_alloc_buffers(rl);
 }
 
-static int ktls_free_buffers(OSSL_RECORD_LAYER *rl)
-{
-    /* We use the application buffer directly for writing */
-    if (rl->direction == OSSL_RECORD_DIRECTION_WRITE)
-        return 1;
-
-    return tls_free_buffers(rl);
-}
-
 static struct record_functions_st ossl_ktls_funcs = {
     ktls_set_crypto_state,
     ktls_cipher,
@@ -602,5 +598,5 @@
     NULL,
     tls_increment_sequence_ctr,
     ktls_alloc_buffers,
-    ktls_free_buffers
+    tls_free_buffers
 };
diff -Nru openssl-3.5.6/ssl/record/methods/tls_common.c openssl-3.5.7/ssl/record/methods/tls_common.c
--- openssl-3.5.6/ssl/record/methods/tls_common.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/record/methods/tls_common.c	2026-06-09 13:54:25.000000000 +0200
@@ -1455,7 +1455,7 @@
 static void tls_int_free(OSSL_RECORD_LAYER *rl)
 {
     BIO_free(rl->prev);
-    BIO_free(rl->bio);
+    BIO_free_all(rl->bio);
     BIO_free(rl->next);
     ossl_tls_buffer_release(&rl->rbuf);
 
@@ -1975,6 +1975,28 @@
                 tls_release_write_buffer(rl);
             return OSSL_RECORD_RETURN_SUCCESS;
         } else if (i <= 0) {
+            /*
+             * If the app buffer is used directly (kTLS) and the caller is
+             * allowed to move it, copy the unsent data so the original
+             * buffer can be safely released.
+             */
+            if (TLS_BUFFER_is_app_buffer(thiswb)
+                && (rl->mode & SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER) != 0) {
+                size_t left = TLS_BUFFER_get_left(thiswb);
+                unsigned char *buf;
+
+                buf = OPENSSL_malloc(left);
+                if (buf == NULL) {
+                    RLAYERfatal(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
+                    return OSSL_RECORD_RETURN_FATAL;
+                }
+                memcpy(buf,
+                    TLS_BUFFER_get_buf(thiswb) + TLS_BUFFER_get_offset(thiswb),
+                    left);
+                TLS_BUFFER_set_buf(thiswb, buf);
+                TLS_BUFFER_set_offset(thiswb, 0);
+                TLS_BUFFER_set_app_buffer(thiswb, 0);
+            }
             if (rl->isdtls) {
                 /*
                  * For DTLS, just drop it. That's kind of the whole point in
@@ -2001,7 +2023,7 @@
 {
     if (bio != NULL && !BIO_up_ref(bio))
         return 0;
-    BIO_free(rl->bio);
+    BIO_free_all(rl->bio);
     rl->bio = bio;
 
     return 1;
diff -Nru openssl-3.5.6/ssl/ssl_ciph.c openssl-3.5.7/ssl/ssl_ciph.c
--- openssl-3.5.6/ssl/ssl_ciph.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/ssl_ciph.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
  * Copyright 2005 Nokia. All rights reserved.
  *
@@ -1265,6 +1265,10 @@
     /* Arbitrary sized temp buffer for the cipher name. Should be big enough */
     char name[80];
 
+    /* CONF_parse_list signals empty elements with elem == NULL; skip them */
+    if (elem == NULL || len == 0)
+        return 1;
+
     if (len > (int)(sizeof(name) - 1))
         /* Anyway return 1 so we can parse rest of the list */
         return 1;
diff -Nru openssl-3.5.6/ssl/ssl_rsa.c openssl-3.5.7/ssl/ssl_rsa.c
--- openssl-3.5.6/ssl/ssl_rsa.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/ssl_rsa.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -1039,7 +1039,9 @@
             goto out;
         }
     }
-    if (ssl_cert_lookup_by_pkey(pubkey, &i, ctx) == NULL) {
+    if (ssl_cert_lookup_by_pkey(pubkey, &i,
+            sc != NULL ? SSL_CONNECTION_GET_CTX(sc) : ctx)
+        == NULL) {
         ERR_raise(ERR_LIB_SSL, SSL_R_UNKNOWN_CERTIFICATE_TYPE);
         goto out;
     }
diff -Nru openssl-3.5.6/ssl/statem/extensions_cust.c openssl-3.5.7/ssl/statem/extensions_cust.c
--- openssl-3.5.6/ssl/statem/extensions_cust.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/statem/extensions_cust.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2014-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2014-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -343,9 +343,6 @@
             if (methdst == NULL)
                 return 0;
 
-            for (i = 0; i < dst->meths_count; i++)
-                custom_ext_copy_old_cb(&methdst[i], &dst->meths[i], &err);
-
             dst->meths = methdst;
             methdst += dst->meths_count;
 
diff -Nru openssl-3.5.6/ssl/statem/extensions_srvr.c openssl-3.5.7/ssl/statem/extensions_srvr.c
--- openssl-3.5.6/ssl/statem/extensions_srvr.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/statem/extensions_srvr.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -1342,6 +1342,10 @@
         }
 
         idlen = PACKET_remaining(&identity);
+        if (idlen == 0) {
+            SSLfatal(s, SSL_AD_DECODE_ERROR, SSL_R_BAD_EXTENSION);
+            return 0;
+        }
         if (s->psk_find_session_cb != NULL
             && !s->psk_find_session_cb(ussl, PACKET_data(&identity), idlen,
                 &sess)) {
@@ -1440,13 +1444,13 @@
 
             if (ret == SSL_TICKET_EMPTY) {
                 SSLfatal(s, SSL_AD_DECODE_ERROR, SSL_R_BAD_EXTENSION);
-                return 0;
+                goto err;
             }
 
             if (ret == SSL_TICKET_FATAL_ERR_MALLOC
                 || ret == SSL_TICKET_FATAL_ERR_OTHER) {
                 SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
-                return 0;
+                goto err;
             }
             if (ret == SSL_TICKET_NONE || ret == SSL_TICKET_NO_DECRYPT)
                 continue;
@@ -1501,7 +1505,12 @@
             SSL_SESSION_free(sess);
             sess = NULL;
             s->ext.early_data_ok = 0;
-            s->ext.ticket_expected = 0;
+            /*
+             * We fall back to a full handshake. The new session ticket will be
+             * issued to the client with the newly negotiated ciphersuite,
+             * allowing successful resumption on future connections.
+             */
+            s->ext.ticket_expected = 1;
             continue;
         }
         break;
diff -Nru openssl-3.5.6/ssl/statem/statem.c openssl-3.5.7/ssl/statem/statem.c
--- openssl-3.5.6/ssl/statem/statem.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/statem/statem.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2015-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -151,7 +151,7 @@
         return;
     ossl_statem_set_in_init(s, 1);
     s->statem.state = MSG_FLOW_ERROR;
-    if (al != SSL_AD_NO_ALERT)
+    if (al != SSL_AD_NO_ALERT && s->rlayer.wrlmethod != NULL)
         ssl3_send_alert(s, SSL3_AL_FATAL, al);
 }
 
@@ -541,22 +541,6 @@
     st->read_state = READ_STATE_HEADER;
 }
 
-static int grow_init_buf(SSL_CONNECTION *s, size_t size)
-{
-
-    size_t msg_offset = (char *)s->init_msg - s->init_buf->data;
-
-    if (!BUF_MEM_grow_clean(s->init_buf, (int)size))
-        return 0;
-
-    if (size < msg_offset)
-        return 0;
-
-    s->init_msg = s->init_buf->data + msg_offset;
-
-    return 1;
-}
-
 /*
  * This function implements the sub-state machine when the message flow is in
  * MSG_FLOW_READING. The valid sub-states and transitions are:
@@ -653,14 +637,6 @@
                 return SUB_STATE_ERROR;
             }
 
-            /* dtls_get_message already did this */
-            if (!SSL_CONNECTION_IS_DTLS(s)
-                && s->s3.tmp.message_size > 0
-                && !grow_init_buf(s, s->s3.tmp.message_size + SSL3_HM_HEADER_LENGTH)) {
-                SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_BUF_LIB);
-                return SUB_STATE_ERROR;
-            }
-
             st->read_state = READ_STATE_BODY;
             /* Fall through */
 
diff -Nru openssl-3.5.6/ssl/statem/statem_clnt.c openssl-3.5.7/ssl/statem/statem_clnt.c
--- openssl-3.5.6/ssl/statem/statem_clnt.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/statem/statem_clnt.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
  * Copyright 2005 Nokia. All rights reserved.
  *
@@ -2607,8 +2607,10 @@
         s->s3.tmp.valid_flags = OPENSSL_zalloc(s->ssl_pkey_num * sizeof(uint32_t));
 
     /* Give up for good if allocation didn't work */
-    if (s->s3.tmp.valid_flags == NULL)
-        return 0;
+    if (s->s3.tmp.valid_flags == NULL) {
+        SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_CRYPTO_LIB);
+        return MSG_PROCESS_ERROR;
+    }
 
     if (SSL_CONNECTION_IS_TLS13(s)) {
         PACKET reqctx, extensions;
diff -Nru openssl-3.5.6/ssl/statem/statem_lib.c openssl-3.5.7/ssl/statem/statem_lib.c
--- openssl-3.5.6/ssl/statem/statem_lib.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/statem/statem_lib.c	2026-06-09 13:54:25.000000000 +0200
@@ -1661,9 +1661,25 @@
     return 1;
 }
 
+static int grow_init_buf(SSL_CONNECTION *s, size_t size)
+{
+
+    size_t msg_offset = (char *)s->init_msg - s->init_buf->data;
+
+    if (!BUF_MEM_grow_clean(s->init_buf, size))
+        return 0;
+
+    if (size < msg_offset)
+        return 0;
+
+    s->init_msg = s->init_buf->data + msg_offset;
+
+    return 1;
+}
+
 int tls_get_message_body(SSL_CONNECTION *s, size_t *len)
 {
-    size_t n, readbytes;
+    size_t toread, readbytes;
     unsigned char *p;
     int i;
     SSL *ssl = SSL_CONNECTION_GET_SSL(s);
@@ -1675,18 +1691,30 @@
         return 1;
     }
 
-    p = s->init_msg;
-    n = s->s3.tmp.message_size - s->init_num;
-    while (n > 0) {
+    toread = s->s3.tmp.message_size - s->init_num;
+    while (toread > 0) {
+        size_t chunk = toread > SSL3_RT_MAX_PLAIN_LENGTH ? SSL3_RT_MAX_PLAIN_LENGTH : toread;
+
+        /*
+         * We incrementally allocate the buffer to guard against the peer
+         * claiming a very large message size and then not sending it.
+         */
+        if (!grow_init_buf(s, s->init_num + chunk + SSL3_HM_HEADER_LENGTH)) {
+            SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_BUF_LIB);
+            return 0;
+        }
+
+        /* init_msg location can change after grow_init_buf */
+        p = s->init_msg;
         i = ssl->method->ssl_read_bytes(ssl, SSL3_RT_HANDSHAKE, NULL,
-            &p[s->init_num], n, 0, &readbytes);
+            &p[s->init_num], chunk, 0, &readbytes);
         if (i <= 0) {
             s->rwstate = SSL_READING;
             *len = 0;
             return 0;
         }
         s->init_num += readbytes;
-        n -= readbytes;
+        toread -= readbytes;
     }
 
     /*
diff -Nru openssl-3.5.6/ssl/statem/statem_srvr.c openssl-3.5.7/ssl/statem/statem_srvr.c
--- openssl-3.5.6/ssl/statem/statem_srvr.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/statem/statem_srvr.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
  * Copyright 2005 Nokia. All rights reserved.
  *
@@ -2026,6 +2026,19 @@
             s->peer_ciphers = ciphers;
             s->session->verify_result = X509_V_OK;
 
+            /*
+             * Per RFC 4851, Section 3.2.2:
+             * If the ClientHello contains both a Session ID and a PAC-Opaque in
+             * the SessionTicket extension, and the server resumes the session
+             * using the PAC-Opaque, it should echo the same Session ID in the
+             * ServerHello.
+             */
+            if (clienthello->session_id_len > 0) {
+                memcpy(s->session->session_id, clienthello->session_id,
+                    clienthello->session_id_len);
+                s->session->session_id_length = clienthello->session_id_len;
+            }
+
             ciphers = NULL;
 
             /* check if some cipher was preferred by call back */
diff -Nru openssl-3.5.6/ssl/t1_lib.c openssl-3.5.7/ssl/t1_lib.c
--- openssl-3.5.6/ssl/t1_lib.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/t1_lib.c	2026-06-09 13:54:25.000000000 +0200
@@ -1237,9 +1237,14 @@
     size_t gidmax; /* The memory allocation chunk size for the group IDs */
     size_t gidcnt; /* Number of groups */
     uint16_t *gid_arr; /* The IDs of the supported groups (flat list) */
-    size_t tplmax; /* The memory allocation chunk size for the tuple counters */
-    size_t tplcnt; /* Number of tuples */
-    size_t *tuplcnt_arr; /* The number of groups inside a tuple */
+    size_t tplmax; /* Allocated length of tuplcnt_arr */
+    /*
+     * Number of *closed* (fully parsed) tuples.  During parsing there is
+     * always one additional active tuple being built, stored at index tplcnt.
+     * tuplcnt_arr therefore always needs at least tplcnt + 1 allocated slots.
+     */
+    size_t tplcnt;
+    size_t *tuplcnt_arr; /* Per-tuple group counts; [0..tplcnt-1] closed, [tplcnt] active */
     size_t ksidmax; /* The memory allocation chunk size */
     size_t ksidcnt; /* Number of key shares */
     uint16_t *ksid_arr; /* The IDs of the key share groups (flat list) */
@@ -1522,12 +1527,20 @@
     return retval;
 }
 
+/*
+ * Ensure tuplcnt_arr has room for at least tplcnt + 2 entries so that
+ * close_tuple() can safely increment tplcnt and write the new active-tuple
+ * slot at index tplcnt + 1.  Must be called before that increment.
+ */
 static int grow_tuples(gid_cb_st *garg)
 {
     static size_t max_tplcnt = (~(size_t)0) / sizeof(size_t);
 
-    /* This uses OPENSSL_realloc_array() in newer releases */
-    if (garg->tplcnt == garg->tplmax) {
+    /*
+     * Ensure we have room for at least one additional tuple.
+     * (tplcnt + 1 are in active use).
+     */
+    if (garg->tplcnt + 1 == garg->tplmax) {
         size_t newcnt = garg->tplmax + GROUPLIST_INCREMENT;
         size_t newsz = newcnt * sizeof(size_t);
         size_t *tmp;
@@ -1542,15 +1555,25 @@
     return 1;
 }
 
+/*
+ * Finalise the active tuple (at index tplcnt) and open a fresh one.
+ * tplcnt is the count of closed tuples; the active tuple lives at tplcnt
+ * throughout parsing.  After this call tplcnt is incremented and the new
+ * active tuple at the updated index is initialised to 0.
+ * Empty tuples (gidcnt == 0) are discarded without advancing tplcnt.
+ */
 static int close_tuple(gid_cb_st *garg)
 {
     size_t gidcnt = garg->tuplcnt_arr[garg->tplcnt];
 
     if (gidcnt == 0)
-        return 1;
+        return 1; /* Discard empty tuple; no need to open a new slot */
+
+    /* Grow before the increment: the new active slot will be at tplcnt + 1 */
     if (!grow_tuples(garg))
         return 0;
 
+    /* Promote closed tuple and initialise the new active tuple slot */
     garg->tuplcnt_arr[++garg->tplcnt] = 0;
     return 1;
 }
diff -Nru openssl-3.5.6/ssl/t1_trce.c openssl-3.5.7/ssl/t1_trce.c
--- openssl-3.5.6/ssl/t1_trce.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/ssl/t1_trce.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2012-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2012-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -1328,33 +1328,46 @@
     return 1;
 }
 
-static int ssl_print_raw_public_key(BIO *bio, const SSL *ssl, int server,
-    int indent, const unsigned char **pmsg,
-    size_t *pmsglen)
+static int ssl_print_raw_public_key(BIO *bio, const SSL_CONNECTION *sc,
+    int server, int indent, const unsigned char **pmsg, size_t *pmsglen)
 {
     EVP_PKEY *pkey;
+    SSL_CTX *ctx = SSL_CONNECTION_GET_CTX(sc);
     size_t clen;
     const unsigned char *msg = *pmsg;
     size_t msglen = *pmsglen;
+    int has_spki_len;
 
-    if (msglen < 3)
-        return 0;
-    clen = (msg[0] << 16) | (msg[1] << 8) | msg[2];
-    if (msglen < clen + 3)
-        return 0;
-
-    msg += 3;
+    /*
+     * In TLS 1.2 and prior the SPKI is the entire payload of the extension,
+     * and does not have a separate length prefix
+     */
+    has_spki_len = SSL_CONNECTION_IS_DTLS(sc)
+        ? DTLS_VERSION_GT(sc->version, DTLS1_2_VERSION)
+        : sc->version > TLS1_2_VERSION;
+    if (has_spki_len) {
+        if (msglen < 3)
+            return 0;
+        clen = (msg[0] << 16) | (msg[1] << 8) | msg[2];
+        if (msglen < clen + 3)
+            return 0;
+        msg += 3;
+        *pmsg += clen + 3;
+        *pmsglen -= clen + 3;
+    } else {
+        clen = msglen;
+        *pmsg += msglen;
+        *pmsglen -= msglen;
+    }
 
     BIO_indent(bio, indent, 80);
     BIO_printf(bio, "raw_public_key, length=%d\n", (int)clen);
 
-    pkey = d2i_PUBKEY_ex(NULL, &msg, clen, ssl->ctx->libctx, ssl->ctx->propq);
+    pkey = d2i_PUBKEY_ex(NULL, &msg, (long)clen, ctx->libctx, ctx->propq);
     if (pkey == NULL)
         return 0;
     EVP_PKEY_print_public(bio, pkey, indent + 2, NULL);
     EVP_PKEY_free(pkey);
-    *pmsg += clen + 3;
-    *pmsglen -= clen + 3;
     return 1;
 }
 
@@ -1376,7 +1389,7 @@
     msg += 3;
     if ((server && sc->ext.server_cert_type == TLSEXT_cert_type_rpk)
         || (!server && sc->ext.client_cert_type == TLSEXT_cert_type_rpk)) {
-        if (!ssl_print_raw_public_key(bio, &sc->ssl, server, indent, &msg, &clen))
+        if (!ssl_print_raw_public_key(bio, sc, server, indent, &msg, &clen))
             return 0;
         if (SSL_CONNECTION_IS_TLS13(sc)
             && !ssl_print_extensions(bio, indent + 2, server,
diff -Nru openssl-3.5.6/test/asn1_decode_test.c openssl-3.5.7/test/asn1_decode_test.c
--- openssl-3.5.6/test/asn1_decode_test.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/asn1_decode_test.c	2026-06-09 13:54:25.000000000 +0200
@@ -163,21 +163,8 @@
 {
     /* Underflowing GeneralizedTime 161208193400Z (YYMMDDHHMMSSZ) */
     const unsigned char der[] = {
-        0x18,
-        0x0d,
-        0x31,
-        0x36,
-        0x31,
-        0x32,
-        0x30,
-        0x38,
-        0x31,
-        0x39,
-        0x33,
-        0x34,
-        0x30,
-        0x30,
-        0x5a,
+        0x18, 0x0d, 0x31, 0x36, 0x31, 0x32, 0x30, 0x38, 0x31, 0x39,
+        0x33, 0x34, 0x30, 0x30, 0x5a
     };
     const unsigned char *p;
     int der_len, rc = 1;
@@ -200,19 +187,8 @@
 {
     /* Underflowing UTCTime 0205104700Z (MMDDHHMMSSZ) */
     const unsigned char der[] = {
-        0x17,
-        0x0b,
-        0x30,
-        0x32,
-        0x30,
-        0x35,
-        0x31,
-        0x30,
-        0x34,
-        0x37,
-        0x30,
-        0x30,
-        0x5a,
+        0x17, 0x0b, 0x30, 0x32, 0x30, 0x35, 0x31, 0x30, 0x34, 0x37,
+        0x30, 0x30, 0x5a
     };
     const unsigned char *p;
     int der_len, rc = 1;
diff -Nru openssl-3.5.6/test/bad_dtls_test.c openssl-3.5.7/test/bad_dtls_test.c
--- openssl-3.5.6/test/bad_dtls_test.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/bad_dtls_test.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -101,89 +101,17 @@
         0x04,
         0x20, /* OCTET_STRING, session id */
 #define SS_SESSID_OFS 15 /* Session ID goes here */
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x04,
-        0x30, /* OCTET_STRING, master secret */
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        0x00, 0x00,
+        0x04, 0x30, /* OCTET_STRING, master secret */
 #define SS_SECRET_OFS 49 /* Master secret goes here */
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
     };
     const unsigned char *p = session_asn1;
 
@@ -303,26 +231,8 @@
         0x00, /* DTLS1_BAD_VER */
         0x14, /* Cookie length */
 #define HV_COOKIE_OFS 28 /* Cookie goes here */
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
     };
 
     memcpy(hello_verify + HV_COOKIE_OFS, cookie, sizeof(cookie));
@@ -363,75 +273,18 @@
         0x01,
         0x00, /* DTLS1_BAD_VER */
 #define SH_RANDOM_OFS 27 /* Server random goes here */
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        0x00, 0x00,
         0x20, /* Session ID length */
 #define SH_SESSID_OFS 60 /* Session ID goes here */
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        0x00, 0x00, 0x00,
         0x2f, /* Cipher suite AES128-SHA */
-        0x00, /* Compression null */
+        0x00 /* Compression null */
     };
     static unsigned char change_cipher_spec[] = {
         0x14, /* Change Cipher Spec */
@@ -449,7 +302,7 @@
         0x03, /* Length */
         0x01,
         0x00,
-        0x02, /* Message */
+        0x02 /* Message */
     };
 
     memcpy(server_hello + SH_RANDOM_OFS, server_random, sizeof(server_random));
diff -Nru openssl-3.5.6/test/bio_tfo_test.c openssl-3.5.7/test/bio_tfo_test.c
--- openssl-3.5.6/test/bio_tfo_test.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/bio_tfo_test.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -81,6 +81,9 @@
 
     /* ACCEPT SOCKET */
     if (!TEST_ptr(abio = BIO_new_accept("localhost:0"))
+#if !OPENSSL_USE_IPV6
+        || !TEST_true(BIO_set_accept_ip_family(abio, BIO_FAMILY_IPV4))
+#endif
         || !TEST_true(BIO_set_nbio_accept(abio, 1))
         || !TEST_true(BIO_set_tfo_accept(abio, server_tfo))
         || !TEST_int_gt(BIO_do_accept(abio), 0)
@@ -93,6 +96,9 @@
 
     /* CLIENT SOCKET */
     if (!TEST_ptr(cbio = BIO_new_connect("localhost"))
+#if !OPENSSL_USE_IPV6
+        || !TEST_long_gt(BIO_set_conn_ip_family(cbio, BIO_FAMILY_IPV4), 0)
+#endif
         || !TEST_long_gt(BIO_set_conn_port(cbio, port), 0)
         || !TEST_long_gt(BIO_set_nbio(cbio, 1), 0)
         || !TEST_long_gt(BIO_set_tfo(cbio, client_tfo), 0)) {
@@ -236,7 +242,11 @@
 
     /* ADDRESS SETUP */
     memset(&hints, 0, sizeof(hints));
+#if OPENSSL_USE_IPV6
     hints.ai_family = AF_UNSPEC;
+#else
+    hints.ai_family = AF_INET;
+#endif
     hints.ai_socktype = SOCK_STREAM;
     if (!TEST_int_eq(getaddrinfo(NULL, "0", &hints, &ai), 0))
         goto err;
@@ -248,12 +258,14 @@
         addrlen = sizeof(((struct sockaddr_in *)ai->ai_addr)->sin_addr);
         BIO_printf(bio_err, "Using IPv4\n");
         break;
+#if OPENSSL_USE_IPV6
     case AF_INET6:
         port = ((struct sockaddr_in6 *)ai->ai_addr)->sin6_port;
         addr = &((struct sockaddr_in6 *)ai->ai_addr)->sin6_addr;
         addrlen = sizeof(((struct sockaddr_in6 *)ai->ai_addr)->sin6_addr);
         BIO_printf(bio_err, "Using IPv6\n");
         break;
+#endif
     default:
         BIO_printf(bio_err, "Unknown address family %d\n", ai->ai_family);
         goto err;
@@ -280,11 +292,13 @@
         addr = &((struct sockaddr_in *)&sstorage)->sin_addr;
         addrlen = sizeof(((struct sockaddr_in *)&sstorage)->sin_addr);
         break;
+#if OPENSSL_USE_IPV6
     case AF_INET6:
         port = ((struct sockaddr_in6 *)&sstorage)->sin6_port;
         addr = &((struct sockaddr_in6 *)&sstorage)->sin6_addr;
         addrlen = sizeof(((struct sockaddr_in6 *)&sstorage)->sin6_addr);
         break;
+#endif
     default:
         goto err;
     }
diff -Nru openssl-3.5.6/test/build.info openssl-3.5.7/test/build.info
--- openssl-3.5.6/test/build.info	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/build.info	2026-06-09 13:54:25.000000000 +0200
@@ -892,6 +892,13 @@
     INCLUDE[dsa_no_digest_size_test]=../include ../apps/include
     DEPEND[dsa_no_digest_size_test]=../libcrypto.a libtestutil.a
 
+    IF[{- !$disabled{ecx} && !$disabled{tls1_3} -}]
+      PROGRAMS{noinst}=tls13ticket_test
+      SOURCE[tls13ticket_test]=tls13tickettest.c helpers/ssltestlib.c
+      INCLUDE[tls13ticket_test]=../include ../apps/include
+      DEPEND[tls13ticket_test]=../libcrypto ../libssl libtestutil.a
+    ENDIF
+
     SOURCE[tls13encryptiontest]=tls13encryptiontest.c
     INCLUDE[tls13encryptiontest]=.. ../include ../apps/include
     DEPEND[tls13encryptiontest]=../libcrypto.a ../libssl.a libtestutil.a
diff -Nru openssl-3.5.6/test/chacha_internal_test.c openssl-3.5.7/test/chacha_internal_test.c
--- openssl-3.5.6/test/chacha_internal_test.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/chacha_internal_test.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2017-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -16,6 +16,9 @@
 #include <openssl/opensslconf.h>
 #include "testutil.h"
 #include "crypto/chacha.h"
+#if defined(__powerpc64__) && !defined(OPENSSL_SYS_AIX) && !defined(OPENSSL_SYS_MACOSX)
+#include "crypto/ppc_arch.h"
+#endif
 
 static const unsigned int key[] = {
     0x03020100, 0x07060504, 0x0b0a0908, 0x0f0e0d0c,
@@ -179,6 +182,78 @@
     return 1;
 }
 
+#if defined(__powerpc64__) && !defined(OPENSSL_SYS_AIX) && !defined(OPENSSL_SYS_MACOSX)
+/*
+ * Test that ChaCha20_ctr32_vsx_8x (the POWER10 8-block path, triggered for
+ * buffers > 255 bytes) preserves callee-saved FPRs f14-f25 as required by
+ * the ELFv2 ABI. The function uses vxxlor to spill VMX values into
+ * VSR0-VSR25, which aliases FPR0-FPR25; without explicit saves/restores
+ * the caller's floating-point state is silently corrupted.
+ */
+__attribute__((noinline)) static int test_chacha20_p10_fpr_abi(void)
+{
+    /*
+     * Use a buffer larger than 255 bytes to ensure the 8x path is taken.
+     * The input content doesn't matter for this ABI test.
+     */
+    static unsigned char in[512], out[512];
+    int ok = 1;
+
+    register double r14 asm("fr14");
+    register double r15 asm("fr15");
+    register double r16 asm("fr16");
+    register double r17 asm("fr17");
+    register double r18 asm("fr18");
+    register double r19 asm("fr19");
+    register double r20 asm("fr20");
+    register double r21 asm("fr21");
+    register double r22 asm("fr22");
+    register double r23 asm("fr23");
+    register double r24 asm("fr24");
+    register double r25 asm("fr25");
+
+    r14 = 14.0;
+    r15 = 15.0;
+    r16 = 16.0;
+    r17 = 17.0;
+    r18 = 18.0;
+    r19 = 19.0;
+    r20 = 20.0;
+    r21 = 21.0;
+    r22 = 22.0;
+    r23 = 23.0;
+    r24 = 24.0;
+    r25 = 25.0;
+
+    /* Force the values into the actual FPR registers before the call */
+    asm volatile("" : "+d"(r14), "+d"(r15), "+d"(r16), "+d"(r17));
+    asm volatile("" : "+d"(r18), "+d"(r19), "+d"(r20), "+d"(r21));
+    asm volatile("" : "+d"(r22), "+d"(r23), "+d"(r24), "+d"(r25));
+
+    ChaCha20_ctr32(out, in, sizeof(in), key, ivp);
+
+    /* Read back from the FPR registers after the call */
+    asm volatile("" : "+d"(r14), "+d"(r15), "+d"(r16), "+d"(r17));
+    asm volatile("" : "+d"(r18), "+d"(r19), "+d"(r20), "+d"(r21));
+    asm volatile("" : "+d"(r22), "+d"(r23), "+d"(r24), "+d"(r25));
+
+    ok &= TEST_double_eq(r14, 14.0);
+    ok &= TEST_double_eq(r15, 15.0);
+    ok &= TEST_double_eq(r16, 16.0);
+    ok &= TEST_double_eq(r17, 17.0);
+    ok &= TEST_double_eq(r18, 18.0);
+    ok &= TEST_double_eq(r19, 19.0);
+    ok &= TEST_double_eq(r20, 20.0);
+    ok &= TEST_double_eq(r21, 21.0);
+    ok &= TEST_double_eq(r22, 22.0);
+    ok &= TEST_double_eq(r23, 23.0);
+    ok &= TEST_double_eq(r24, 24.0);
+    ok &= TEST_double_eq(r25, 25.0);
+
+    return ok;
+}
+#endif
+
 int setup_tests(void)
 {
 #ifdef OPENSSL_CPUID_OBJ
@@ -186,5 +261,10 @@
 #endif
 
     ADD_ALL_TESTS(test_cha_cha_internal, sizeof(ref));
+#if defined(__powerpc64__) && !defined(OPENSSL_SYS_AIX) && !defined(OPENSSL_SYS_MACOSX)
+    /* Only run the ABI test when the POWER10 8x path is available */
+    if (OPENSSL_ppccap_P & PPC_BRD31)
+        ADD_TEST(test_chacha20_p10_fpr_abi);
+#endif
     return 1;
 }
diff -Nru openssl-3.5.6/test/cipherlist_test.c openssl-3.5.7/test/cipherlist_test.c
--- openssl-3.5.6/test/cipherlist_test.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/cipherlist_test.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -258,11 +258,66 @@
     return result;
 }
 
+/*
+ * SSL_CTX_set_ciphersuites() must not crash on empty list elements.
+ * CONF_parse_list() signals them with elem=NULL; ciphersuite_cb() must skip
+ * such entries rather than passing NULL to memcpy().
+ */
+#ifndef OPENSSL_NO_TLS1_3
+static int cipher_in_ctx(const SSL_CTX *ctx, uint32_t id)
+{
+    const STACK_OF(SSL_CIPHER) *sk = SSL_CTX_get_ciphers(ctx);
+    int i;
+
+    for (i = 0; i < sk_SSL_CIPHER_num(sk); i++)
+        if (SSL_CIPHER_get_id(sk_SSL_CIPHER_value(sk, i)) == id)
+            return 1;
+    return 0;
+}
+
+static int test_set_ciphersuites_empty_elem(void)
+{
+    SSL_CTX *ctx = NULL;
+    int result = 0;
+
+    if (!TEST_ptr(ctx = SSL_CTX_new(TLS_method())))
+        goto end;
+
+    /* Double colon: both surrounding valid suites must be applied */
+    if (!TEST_true(SSL_CTX_set_ciphersuites(ctx,
+            "TLS_AES_128_GCM_SHA256::TLS_AES_256_GCM_SHA384")))
+        goto end;
+    if (!TEST_true(cipher_in_ctx(ctx, TLS1_3_CK_AES_128_GCM_SHA256))
+        || !TEST_true(cipher_in_ctx(ctx, TLS1_3_CK_AES_256_GCM_SHA384)))
+        goto end;
+
+    /* Leading separator: empty first element, one valid suite must apply */
+    if (!TEST_true(SSL_CTX_set_ciphersuites(ctx, ":TLS_AES_128_GCM_SHA256")))
+        goto end;
+    if (!TEST_true(cipher_in_ctx(ctx, TLS1_3_CK_AES_128_GCM_SHA256)))
+        goto end;
+
+    /* Trailing separator: empty last element, one valid suite must apply */
+    if (!TEST_true(SSL_CTX_set_ciphersuites(ctx, "TLS_AES_128_GCM_SHA256:")))
+        goto end;
+    if (!TEST_true(cipher_in_ctx(ctx, TLS1_3_CK_AES_128_GCM_SHA256)))
+        goto end;
+
+    result = 1;
+end:
+    SSL_CTX_free(ctx);
+    return result;
+}
+#endif
+
 int setup_tests(void)
 {
     ADD_TEST(test_default_cipherlist_implicit);
     ADD_TEST(test_default_cipherlist_explicit);
     ADD_TEST(test_default_cipherlist_clear);
+#ifndef OPENSSL_NO_TLS1_3
+    ADD_TEST(test_set_ciphersuites_empty_elem);
+#endif
     ADD_TEST(test_stdname_cipherlist);
     return 1;
 }
diff -Nru openssl-3.5.6/test/cmsapitest.c openssl-3.5.7/test/cmsapitest.c
--- openssl-3.5.6/test/cmsapitest.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/cmsapitest.c	2026-06-09 13:54:25.000000000 +0200
@@ -21,6 +21,192 @@
 static EVP_PKEY *privkey = NULL;
 static char *derin = NULL;
 static char *too_long_iv_cms_in = NULL;
+static char *pwri_kek_oob_der_in = NULL;
+
+/*
+ * This is our bad cms data, it contains an AuthEnvelopedData field
+ * with a CIPHER OID set to AES-256-OFB
+ */
+static const unsigned char bad_cms_der[452] = {
+    0x30, 0x82, 0x01, 0xc0, 0x06, 0x0b, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
+    0x01, 0x09, 0x10, 0x01, 0x17, 0xa0, 0x82, 0x01, 0xaf, 0x30, 0x82, 0x01,
+    0xab, 0x02, 0x01, 0x00, 0x31, 0x82, 0x01, 0x44, 0x30, 0x82, 0x01, 0x40,
+    0x02, 0x01, 0x00, 0x30, 0x28, 0x30, 0x10, 0x31, 0x0e, 0x30, 0x0c, 0x06,
+    0x03, 0x55, 0x04, 0x03, 0x0c, 0x05, 0x52, 0x65, 0x63, 0x69, 0x70, 0x02,
+    0x14, 0x1a, 0x5c, 0x04, 0x9b, 0x3a, 0x64, 0xff, 0xd4, 0x63, 0xde, 0x4f,
+    0x90, 0xe5, 0x76, 0xe2, 0x18, 0xe8, 0x5c, 0x9e, 0xd7, 0x30, 0x0d, 0x06,
+    0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00,
+    0x04, 0x82, 0x01, 0x00, 0x18, 0xcf, 0x9f, 0x44, 0x95, 0x79, 0xe9, 0x96,
+    0x7d, 0x0f, 0xd1, 0xb4, 0xc2, 0x38, 0xb0, 0xc9, 0x76, 0xd5, 0xba, 0x08,
+    0x5c, 0xbf, 0xc3, 0x30, 0xea, 0x3a, 0x68, 0xa4, 0xba, 0x99, 0x4c, 0x70,
+    0x97, 0xb8, 0xa9, 0xce, 0x71, 0x4c, 0x54, 0xa3, 0xfd, 0x81, 0x9e, 0x15,
+    0x63, 0xb7, 0x23, 0x46, 0x17, 0x69, 0xaf, 0x8f, 0xbd, 0xa3, 0x54, 0x23,
+    0xf3, 0xf5, 0x35, 0xa8, 0xd4, 0x9c, 0xec, 0xe1, 0x17, 0x2c, 0x6d, 0x0b,
+    0xad, 0xc0, 0xe9, 0x1d, 0xd1, 0x8d, 0x59, 0xd5, 0x29, 0xc6, 0x40, 0xc4,
+    0xcd, 0x4e, 0x87, 0x70, 0x19, 0x5d, 0x88, 0x50, 0xbd, 0x4a, 0x13, 0xb3,
+    0xef, 0x0c, 0x6d, 0x6a, 0xc5, 0x51, 0xbb, 0x5c, 0x39, 0x17, 0xda, 0xb1,
+    0x71, 0x17, 0x88, 0xfb, 0x6a, 0xef, 0x7f, 0x85, 0xa7, 0x04, 0x71, 0xc7,
+    0x83, 0x91, 0xb3, 0x30, 0x1b, 0x3d, 0x18, 0x7f, 0x63, 0xbf, 0x42, 0x7c,
+    0xae, 0x6f, 0xae, 0xa1, 0x17, 0x84, 0xfd, 0x67, 0x2a, 0x4f, 0x4c, 0xe9,
+    0x05, 0x26, 0x2c, 0xd5, 0xab, 0x0c, 0xcf, 0xdc, 0x3f, 0x24, 0xcf, 0x71,
+    0x26, 0x7a, 0x1f, 0xf7, 0xc9, 0x92, 0x5e, 0xb6, 0x3d, 0x7f, 0xc3, 0x08,
+    0xd3, 0xad, 0xc0, 0xc8, 0x4f, 0x42, 0x0c, 0xf3, 0xac, 0x23, 0x11, 0xdf,
+    0x75, 0x84, 0x69, 0x8c, 0xa6, 0x59, 0x43, 0xfb, 0xf7, 0x6b, 0x62, 0xf0,
+    0xf7, 0x35, 0x07, 0xc4, 0xf8, 0xd5, 0x12, 0x4a, 0x16, 0x62, 0xbc, 0x04,
+    0xaa, 0x9a, 0x2e, 0xb2, 0x1a, 0xfa, 0x4c, 0x82, 0xce, 0x9e, 0xa8, 0x6d,
+    0xc1, 0x29, 0x59, 0xe0, 0x33, 0xb5, 0xa6, 0x47, 0x09, 0x2e, 0xbf, 0x60,
+    0xa6, 0xb3, 0x21, 0xa0, 0x15, 0xac, 0x92, 0x29, 0xb5, 0xe6, 0xe0, 0xd4,
+    0x8b, 0xd8, 0x21, 0xe2, 0x17, 0x98, 0xd1, 0x11, 0x5d, 0xc5, 0xae, 0x24,
+    0xe8, 0x92, 0xdb, 0x96, 0xa3, 0x5b, 0x58, 0xa7, 0x30, 0x4c, 0x06, 0x09,
+    0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0x30, 0x1d, 0x06,
+    0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x2b, 0x04, 0x10,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x80, 0x20, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
+    0x41, 0x41, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+/*
+ * This array represents a der encoded contentinfo structure addressed to
+ * servercert.pem, with the tag value of the aes-256-gcm cipher used to encrypt
+ * the contents of the mssages down to 1 byte.  Decoding it should fail
+ */
+static const unsigned char one_byte_mac_cms_der[423] = {
+    0x30, 0x82, 0x01, 0xa3, 0x06, 0x0b, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
+    0x01, 0x09, 0x10, 0x01, 0x17, 0xa0, 0x82, 0x01, 0x92, 0x30, 0x82, 0x01,
+    0x8e, 0x02, 0x01, 0x00, 0x31, 0x82, 0x01, 0x33, 0x30, 0x82, 0x01, 0x2f,
+    0x02, 0x01, 0x00, 0x30, 0x17, 0x30, 0x12, 0x31, 0x10, 0x30, 0x0e, 0x06,
+    0x03, 0x55, 0x04, 0x03, 0x0c, 0x07, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43,
+    0x41, 0x02, 0x01, 0x02, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
+    0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0x10,
+    0x3a, 0x8c, 0xee, 0x4e, 0xe2, 0x1f, 0xfe, 0xcc, 0x28, 0x39, 0x9e, 0x46,
+    0xbe, 0xa7, 0xd5, 0x02, 0x2a, 0x53, 0x06, 0x5f, 0x94, 0x6b, 0x69, 0x6d,
+    0x2d, 0xe8, 0x44, 0xa6, 0x43, 0x52, 0x82, 0x89, 0x2d, 0xf1, 0x9b, 0xb9,
+    0x9e, 0xa4, 0x8d, 0x77, 0xf1, 0xd2, 0x8e, 0x86, 0x79, 0x06, 0x3e, 0x90,
+    0xf0, 0xca, 0x9e, 0xb5, 0x35, 0xd5, 0x89, 0xf0, 0x7c, 0x06, 0xa0, 0x91,
+    0xbf, 0xf4, 0x61, 0xaa, 0x5c, 0x99, 0xa3, 0x64, 0x15, 0xfd, 0xf9, 0x90,
+    0xf0, 0xf3, 0x25, 0x5b, 0x48, 0xa1, 0xfb, 0x7a, 0xce, 0x63, 0xdc, 0xa9,
+    0xfe, 0x7c, 0xbe, 0x9c, 0xaa, 0xd3, 0x42, 0x0e, 0x4a, 0xc3, 0x4b, 0x4e,
+    0x76, 0x6d, 0x52, 0x54, 0x85, 0x4e, 0xab, 0x50, 0x2c, 0x5f, 0xc2, 0x8b,
+    0x9f, 0x1f, 0x0f, 0x8a, 0x7c, 0xb3, 0x0a, 0xde, 0x50, 0x9b, 0xef, 0x89,
+    0xf2, 0xea, 0x07, 0xca, 0x11, 0x76, 0x29, 0xaf, 0xe4, 0x59, 0x28, 0x19,
+    0x48, 0x96, 0x67, 0xdd, 0xdd, 0x01, 0xf0, 0x14, 0xbe, 0x3d, 0xa5, 0xa3,
+    0x83, 0x21, 0x39, 0x29, 0xb7, 0x8f, 0xb7, 0xf4, 0x85, 0x05, 0xee, 0xca,
+    0xbb, 0xbd, 0xc0, 0xaf, 0x0d, 0xf1, 0xef, 0x5f, 0x06, 0x05, 0xeb, 0x0e,
+    0x55, 0xf0, 0x7e, 0x13, 0x1a, 0x2a, 0x37, 0xd4, 0xba, 0x26, 0xc8, 0x2e,
+    0x6b, 0xc3, 0xe1, 0xcf, 0x28, 0xab, 0x0d, 0xab, 0xdd, 0xa7, 0xf4, 0xd3,
+    0x59, 0xcd, 0xc7, 0x2d, 0xa1, 0x56, 0x5f, 0x47, 0x77, 0x27, 0x17, 0x71,
+    0xae, 0x75, 0xc8, 0x71, 0x58, 0xf9, 0xab, 0x67, 0xda, 0x23, 0x62, 0xa0,
+    0x6d, 0xe5, 0x2d, 0x06, 0xb8, 0xc0, 0xac, 0xaa, 0x38, 0xa4, 0x0d, 0xb5,
+    0xb2, 0xce, 0xa7, 0x26, 0x0d, 0x3a, 0x88, 0x2f, 0x8d, 0x6c, 0xa0, 0xf6,
+    0x94, 0xf2, 0x2c, 0x37, 0x03, 0xaf, 0x67, 0x5c, 0xf3, 0x2c, 0xfb, 0xe8,
+    0x16, 0x9e, 0x55, 0x30, 0x4f, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
+    0x0d, 0x01, 0x07, 0x01, 0x30, 0x1e, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01,
+    0x65, 0x03, 0x04, 0x01, 0x2e, 0x30, 0x11, 0x04, 0x0c, 0x6b, 0x1d, 0xe5,
+    0xb2, 0x38, 0x0e, 0x17, 0x91, 0x9c, 0x9c, 0x40, 0x35, 0x02, 0x01, 0x10,
+    0x80, 0x22, 0xa0, 0x90, 0x75, 0x74, 0xdf, 0x2d, 0xba, 0x4f, 0xce, 0x4e,
+    0x7e, 0x52, 0xb0, 0x2e, 0x5f, 0xe0, 0x84, 0x01, 0xb1, 0x49, 0x0b, 0x69,
+    0xc7, 0x61, 0x63, 0x84, 0x3a, 0xfc, 0xaa, 0x86, 0xfc, 0x96, 0x4e, 0x6c,
+    0x04, 0x01, 0x92
+};
+
+static int test_short_mac_on_auth_envelope_data(void)
+{
+    int ret = 0;
+    const unsigned char *derptr = one_byte_mac_cms_der;
+    BIO *outmsgbio = BIO_new(BIO_s_mem());
+    CMS_ContentInfo *content = d2i_CMS_ContentInfo(NULL, &derptr, OSSL_NELEM(one_byte_mac_cms_der));
+
+    if (!TEST_ptr(content))
+        goto end;
+
+    /*
+     * We expect this to fail, as the tag value in the authEnvelopedData parameter is
+     * a single byte
+     */
+    if (!TEST_false(CMS_decrypt(content, privkey, cert, NULL, outmsgbio, CMS_TEXT)))
+        goto end;
+
+    ret = 1;
+end:
+    BIO_free(outmsgbio);
+    CMS_ContentInfo_free(content);
+    return ret;
+}
+
+static int test_non_aead_on_auth_envelope_dec(void)
+{
+    int ret = 0;
+    const unsigned char *derptr = bad_cms_der;
+    BIO *outmsgbio = BIO_new(BIO_s_mem());
+    CMS_ContentInfo *content = d2i_CMS_ContentInfo(NULL, &derptr, OSSL_NELEM(bad_cms_der));
+
+    if (!TEST_ptr(content))
+        goto end;
+
+    /*
+     * We expect this to fail
+     */
+    if (!TEST_false(CMS_decrypt(content, privkey, cert, NULL, outmsgbio,
+            CMS_TEXT)))
+        goto end;
+
+    ret = 1;
+end:
+    BIO_free(outmsgbio);
+    CMS_ContentInfo_free(content);
+    return ret;
+}
+
+static int test_non_aead_on_auth_envelope_enc(void)
+{
+    CMS_ContentInfo *content = NULL;
+    STACK_OF(X509) *certstack = sk_X509_new_null();
+    const EVP_CIPHER *cipher = EVP_aes_128_cbc();
+    const char *msg = "Hello world";
+    BIO *msgbio = BIO_new_mem_buf(msg, (int)strlen(msg));
+    BIO *outmsgbio = BIO_new(BIO_s_mem());
+    X509 *recip;
+    int i;
+    int ret = 0;
+
+    if (!TEST_ptr(certstack) || !TEST_ptr(msgbio) || !TEST_ptr(outmsgbio))
+        goto end;
+
+    if (!TEST_int_gt(sk_X509_push(certstack, cert), 0))
+        goto end;
+
+    /*
+     * Emulate CMS_encrypt here, but use a non AEAD cipher
+     */
+    content = CMS_AuthEnvelopedData_create_ex(cipher, NULL, NULL);
+
+    if (!TEST_ptr(content))
+        goto end;
+
+    for (i = 0; i < sk_X509_num(certstack); i++) {
+        recip = sk_X509_value(certstack, i);
+        if (!TEST_ptr(CMS_add1_recipient_cert(content, recip, CMS_TEXT)))
+            goto end;
+    }
+
+    /*
+     * We expect this to fail as we are using a non-AEAD cipher on
+     * AuthEnvelopedData
+     */
+    if (!TEST_int_eq(CMS_final(content, msgbio, NULL, CMS_TEXT), 0))
+        goto end;
+
+    ret = 1;
+end:
+    sk_X509_free(certstack);
+    BIO_free(msgbio);
+    BIO_free(outmsgbio);
+    CMS_ContentInfo_free(content);
+    return ret;
+}
 
 static int test_encrypt_decrypt(const EVP_CIPHER *cipher)
 {
@@ -512,7 +698,48 @@
     return ret;
 }
 
-OPT_TEST_DECLARE_USAGE("certfile privkeyfile derfile\n")
+/*
+ * CMS EnvelopedData with a single PasswordRecipientInfo using
+ * id-alg-PWRI-KEK and an AES-128-CFB key encryption cipher
+ * (1-byte effective block size).  The encryptedKey OCTET STRING is
+ * only two bytes long, so the wrapped key buffer is shorter than
+ * the seven octets read by the check-byte test in kek_unwrap_key().
+ * Prior to CVE-2026-9076 this triggered an out-of-bounds heap read;
+ * CMS_decrypt() must now fail cleanly.
+ */
+static int test_pwri_kek_unwrap_short_encrypted_key(void)
+{
+    BIO *in = NULL;
+    CMS_ContentInfo *cms = NULL;
+    unsigned long err = 0;
+    int ret = 0;
+
+    if (!TEST_ptr(in = BIO_new_file(pwri_kek_oob_der_in, "rb"))
+        || !TEST_ptr(cms = d2i_CMS_bio(in, NULL)))
+        goto end;
+
+    /*
+     * The unwrap is attempted eagerly inside CMS_decrypt_set1_password().
+     * It must fail cleanly (no OOB read) and report CMS_R_UNWRAP_FAILURE.
+     */
+    if (!TEST_false(CMS_decrypt_set1_password(cms,
+            (unsigned char *)"password", -1)))
+        goto end;
+
+    err = ERR_peek_last_error();
+    if (!TEST_int_eq(ERR_GET_LIB(err), ERR_LIB_CMS)
+        || !TEST_int_eq(ERR_GET_REASON(err), CMS_R_UNWRAP_FAILURE))
+        goto end;
+
+    ERR_clear_error();
+    ret = 1;
+end:
+    CMS_ContentInfo_free(cms);
+    BIO_free(in);
+    return ret;
+}
+
+OPT_TEST_DECLARE_USAGE("certfile privkeyfile derfile tooLongIVpem pwriKekOobDer\n")
 
 int setup_tests(void)
 {
@@ -527,7 +754,8 @@
     if (!TEST_ptr(certin = test_get_argument(0))
         || !TEST_ptr(privkeyin = test_get_argument(1))
         || !TEST_ptr(derin = test_get_argument(2))
-        || !TEST_ptr(too_long_iv_cms_in = test_get_argument(3)))
+        || !TEST_ptr(too_long_iv_cms_in = test_get_argument(3))
+        || !TEST_ptr(pwri_kek_oob_der_in = test_get_argument(4)))
         return 0;
 
     certbio = BIO_new_file(certin, "r");
@@ -557,6 +785,9 @@
     ADD_TEST(test_encrypt_decrypt_aes_128_gcm);
     ADD_TEST(test_encrypt_decrypt_aes_192_gcm);
     ADD_TEST(test_encrypt_decrypt_aes_256_gcm);
+    ADD_TEST(test_non_aead_on_auth_envelope_enc);
+    ADD_TEST(test_non_aead_on_auth_envelope_dec);
+    ADD_TEST(test_short_mac_on_auth_envelope_data);
     ADD_TEST(test_CMS_add1_cert);
     ADD_TEST(test_d2i_CMS_bio_NULL);
     ADD_TEST(test_CMS_set1_key_mem_leak);
@@ -564,6 +795,7 @@
     ADD_TEST(test_encrypted_data_aead);
     ADD_ALL_TESTS(test_d2i_CMS_decode, 2);
     ADD_TEST(test_cms_aesgcm_iv_too_long);
+    ADD_TEST(test_pwri_kek_unwrap_short_encrypted_key);
     return 1;
 }
 
diff -Nru openssl-3.5.6/test/cms-msg/make_missing_kdf_der.py openssl-3.5.7/test/cms-msg/make_missing_kdf_der.py
--- openssl-3.5.6/test/cms-msg/make_missing_kdf_der.py	1970-01-01 01:00:00.000000000 +0100
+++ openssl-3.5.7/test/cms-msg/make_missing_kdf_der.py	2026-06-09 13:54:25.000000000 +0200
@@ -0,0 +1,137 @@
+#!/usr/bin/env python3
+
+# Copyright 2026 The OpenSSL Project Authors. All Rights Reserved.
+#
+# Licensed under the Apache License 2.0 (the "License").  You may not use
+# this file except in compliance with the License.  You can obtain a copy
+# in the file LICENSE in the source distribution or at
+# https://www.openssl.org/source/license.html
+
+# This script generates missing-kdf.der - a password-encrypted CMS message
+# without the keyDerivationAlgorithm field, which is used in the
+# “PWRI missing keyDerivationAlgorithm regression” test.
+#
+# Usage: python3 make_missing_kdf_der.py valid.der missing-kdf.der
+
+from __future__ import annotations
+
+import argparse
+import sys
+from dataclasses import dataclass
+from pathlib import Path
+
+
+@dataclass
+class Node:
+    off: int
+    tag: int
+    hdr_len: int
+    length: int
+    end: int
+    children: list["Node"]
+
+
+def read_len(data: bytes, off: int) -> tuple[int, int]:
+    first = data[off]
+    if first < 0x80:
+        return first, 1
+    n = first & 0x7F
+    if n == 0 or n > 4:
+        raise ValueError(f"unsupported DER length form at {off}")
+    val = 0
+    for b in data[off + 1 : off + 1 + n]:
+        val = (val << 8) | b
+    return val, 1 + n
+
+
+def parse_node(data: bytes, off: int) -> Node:
+    tag = data[off]
+    length, len_len = read_len(data, off + 1)
+    hdr_len = 1 + len_len
+    end = off + hdr_len + length
+    children: list[Node] = []
+    if tag & 0x20:
+        cur = off + hdr_len
+        while cur < end:
+            child = parse_node(data, cur)
+            children.append(child)
+            cur = child.end
+        if cur != end:
+            raise ValueError(f"child parse ended at {cur}, expected {end}")
+    return Node(off=off, tag=tag, hdr_len=hdr_len, length=length, end=end, children=children)
+
+
+def encode_len(length: int, existing_len_len: int) -> bytes:
+    if existing_len_len == 1:
+        if length >= 0x80:
+            raise ValueError("new length no longer fits in short-form DER")
+        return bytes([length])
+    payload_len = existing_len_len - 1
+    max_len = (1 << (payload_len * 8)) - 1
+    if length > max_len:
+        raise ValueError("new length no longer fits in existing long-form DER")
+    out = bytearray([0x80 | payload_len])
+    for shift in range((payload_len - 1) * 8, -8, -8):
+        out.append((length >> shift) & 0xFF)
+    return bytes(out)
+
+
+def patch_length_field(buf: bytearray, node: Node, delta: int) -> None:
+    new_len = node.length + delta
+    if new_len < 0:
+        raise ValueError("negative patched length")
+    len_bytes = encode_len(new_len, node.hdr_len - 1)
+    start = node.off + 1
+    end = start + len(node.hdr_len.to_bytes(1, "big")) - 1  # unused, kept for clarity
+    buf[start : start + len(len_bytes)] = len_bytes
+
+
+def main() -> int:
+    ap = argparse.ArgumentParser(description="Remove PWRI keyDerivationAlgorithm from a CMS DER blob.")
+    ap.add_argument("input_der")
+    ap.add_argument("output_der")
+    args = ap.parse_args()
+
+    data = Path(args.input_der).read_bytes()
+    root = parse_node(data, 0)
+
+    # CMS structure we expect:
+    # SEQUENCE { OID envelopedData, [0] SEQUENCE { version, SET recipientInfos, ... } }
+    ed_wrapper = root.children[1]
+    env_seq = ed_wrapper.children[0]
+    recipient_set = env_seq.children[1]
+    pwri_choice = recipient_set.children[0]  # [3]
+
+    if pwri_choice.tag != 0xA3:
+        raise ValueError(f"expected PWRI choice tag 0xA3, found 0x{pwri_choice.tag:02x}")
+    if len(pwri_choice.children) < 3:
+        raise ValueError("unexpected PWRI child count")
+
+    version = pwri_choice.children[0]
+    maybe_kdf = pwri_choice.children[1]
+    keyenc = pwri_choice.children[2]
+    if version.tag != 0x02:
+        raise ValueError("PWRI version is not INTEGER")
+    if maybe_kdf.tag != 0xA0:
+        raise ValueError(f"PWRI child after version is not [0] keyDerivationAlgorithm: 0x{maybe_kdf.tag:02x}")
+    if keyenc.tag != 0x30:
+        raise ValueError("PWRI keyEncryptionAlgorithm is not SEQUENCE")
+
+    remove_start = maybe_kdf.off
+    remove_end = maybe_kdf.end
+    remove_len = remove_end - remove_start
+
+    out = bytearray(data)
+    del out[remove_start:remove_end]
+
+    # Adjust ancestors whose length spans the removed field.
+    for node in [root, ed_wrapper, env_seq, recipient_set, pwri_choice]:
+        patch_length_field(out, node, -remove_len)
+
+    Path(args.output_der).write_bytes(out)
+    print(f"removed {remove_len} bytes at [{remove_start}, {remove_end})")
+    return 0
+
+
+if __name__ == "__main__":
+    sys.exit(main())
Binary files /home/bigeasy/tmp/cNMftzjEbx/openssl-3.5.6/test/cms-msg/missing-kdf.der and /home/bigeasy/tmp/L2YNVo8E9M/openssl-3.5.7/test/cms-msg/missing-kdf.der differ
diff -Nru openssl-3.5.6/test/destest.c openssl-3.5.7/test/destest.c
--- openssl-3.5.6/test/destest.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/destest.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -195,46 +195,10 @@
  */
 /* static char cbc_data[40]="7654321 Now is the time for \0001"; */
 static unsigned char cbc_data[40] = {
-    0x37,
-    0x36,
-    0x35,
-    0x34,
-    0x33,
-    0x32,
-    0x31,
-    0x20,
-    0x4E,
-    0x6F,
-    0x77,
-    0x20,
-    0x69,
-    0x73,
-    0x20,
-    0x74,
-    0x68,
-    0x65,
-    0x20,
-    0x74,
-    0x69,
-    0x6D,
-    0x65,
-    0x20,
-    0x66,
-    0x6F,
-    0x72,
-    0x20,
-    0x00,
-    0x31,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
+    0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20, 0x4E, 0x6F,
+    0x77, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74,
+    0x69, 0x6D, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x00, 0x31,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 };
 
 static unsigned char cbc_ok[32] = {
@@ -251,73 +215,17 @@
     0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87
 };
 static unsigned char xcbc_ok[32] = {
-    0x86,
-    0x74,
-    0x81,
-    0x0D,
-    0x61,
-    0xA4,
-    0xA5,
-    0x48,
-    0xB9,
-    0x93,
-    0x03,
-    0xE1,
-    0xB8,
-    0xBB,
-    0xBD,
-    0xBD,
-    0x64,
-    0x30,
-    0x0B,
-    0xB9,
-    0x06,
-    0x65,
-    0x81,
-    0x76,
-    0x04,
-    0x1D,
-    0x77,
-    0x62,
-    0x17,
-    0xCA,
-    0x2B,
-    0xD2,
+    0x86, 0x74, 0x81, 0x0D, 0x61, 0xA4, 0xA5, 0x48, 0xB9, 0x93,
+    0x03, 0xE1, 0xB8, 0xBB, 0xBD, 0xBD, 0x64, 0x30, 0x0B, 0xB9,
+    0x06, 0x65, 0x81, 0x76, 0x04, 0x1D, 0x77, 0x62, 0x17, 0xCA,
+    0x2B, 0xD2
 };
 #else
 static unsigned char xcbc_ok[32] = {
-    0x84,
-    0x6B,
-    0x29,
-    0x14,
-    0x85,
-    0x1E,
-    0x9A,
-    0x29,
-    0x54,
-    0x73,
-    0x2F,
-    0x8A,
-    0xA0,
-    0xA6,
-    0x11,
-    0xC1,
-    0x15,
-    0xCD,
-    0xC2,
-    0xD7,
-    0x95,
-    0x1B,
-    0x10,
-    0x53,
-    0xA6,
-    0x3C,
-    0x5E,
-    0x03,
-    0xB2,
-    0x1A,
-    0xA3,
-    0xC4,
+    0x84, 0x6B, 0x29, 0x14, 0x85, 0x1E, 0x9A, 0x29, 0x54, 0x73,
+    0x2F, 0x8A, 0xA0, 0xA6, 0x11, 0xC1, 0x15, 0xCD, 0xC2, 0xD7,
+    0x95, 0x1B, 0x10, 0x53, 0xA6, 0x3C, 0x5E, 0x03, 0xB2, 0x1A,
+    0xA3, 0xC4
 };
 #endif
 
diff -Nru openssl-3.5.6/test/dsatest.c openssl-3.5.7/test/dsatest.c
--- openssl-3.5.6/test/dsatest.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/dsatest.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -33,158 +33,26 @@
 static int dsa_cb(int p, int n, BN_GENCB *arg);
 
 static unsigned char out_p[] = {
-    0x8d,
-    0xf2,
-    0xa4,
-    0x94,
-    0x49,
-    0x22,
-    0x76,
-    0xaa,
-    0x3d,
-    0x25,
-    0x75,
-    0x9b,
-    0xb0,
-    0x68,
-    0x69,
-    0xcb,
-    0xea,
-    0xc0,
-    0xd8,
-    0x3a,
-    0xfb,
-    0x8d,
-    0x0c,
-    0xf7,
-    0xcb,
-    0xb8,
-    0x32,
-    0x4f,
-    0x0d,
-    0x78,
-    0x82,
-    0xe5,
-    0xd0,
-    0x76,
-    0x2f,
-    0xc5,
-    0xb7,
-    0x21,
-    0x0e,
-    0xaf,
-    0xc2,
-    0xe9,
-    0xad,
-    0xac,
-    0x32,
-    0xab,
-    0x7a,
-    0xac,
-    0x49,
-    0x69,
-    0x3d,
-    0xfb,
-    0xf8,
-    0x37,
-    0x24,
-    0xc2,
-    0xec,
-    0x07,
-    0x36,
-    0xee,
-    0x31,
-    0xc8,
-    0x02,
-    0x91,
+    0x8d, 0xf2, 0xa4, 0x94, 0x49, 0x22, 0x76, 0xaa, 0x3d, 0x25,
+    0x75, 0x9b, 0xb0, 0x68, 0x69, 0xcb, 0xea, 0xc0, 0xd8, 0x3a,
+    0xfb, 0x8d, 0x0c, 0xf7, 0xcb, 0xb8, 0x32, 0x4f, 0x0d, 0x78,
+    0x82, 0xe5, 0xd0, 0x76, 0x2f, 0xc5, 0xb7, 0x21, 0x0e, 0xaf,
+    0xc2, 0xe9, 0xad, 0xac, 0x32, 0xab, 0x7a, 0xac, 0x49, 0x69,
+    0x3d, 0xfb, 0xf8, 0x37, 0x24, 0xc2, 0xec, 0x07, 0x36, 0xee,
+    0x31, 0xc8, 0x02, 0x91
 };
 static unsigned char out_q[] = {
-    0xc7,
-    0x73,
-    0x21,
-    0x8c,
-    0x73,
-    0x7e,
-    0xc8,
-    0xee,
-    0x99,
-    0x3b,
-    0x4f,
-    0x2d,
-    0xed,
-    0x30,
-    0xf4,
-    0x8e,
-    0xda,
-    0xce,
-    0x91,
-    0x5f,
+    0xc7, 0x73, 0x21, 0x8c, 0x73, 0x7e, 0xc8, 0xee, 0x99, 0x3b,
+    0x4f, 0x2d, 0xed, 0x30, 0xf4, 0x8e, 0xda, 0xce, 0x91, 0x5f
 };
 static unsigned char out_g[] = {
-    0x62,
-    0x6d,
-    0x02,
-    0x78,
-    0x39,
-    0xea,
-    0x0a,
-    0x13,
-    0x41,
-    0x31,
-    0x63,
-    0xa5,
-    0x5b,
-    0x4c,
-    0xb5,
-    0x00,
-    0x29,
-    0x9d,
-    0x55,
-    0x22,
-    0x95,
-    0x6c,
-    0xef,
-    0xcb,
-    0x3b,
-    0xff,
-    0x10,
-    0xf3,
-    0x99,
-    0xce,
-    0x2c,
-    0x2e,
-    0x71,
-    0xcb,
-    0x9d,
-    0xe5,
-    0xfa,
-    0x24,
-    0xba,
-    0xbf,
-    0x58,
-    0xe5,
-    0xb7,
-    0x95,
-    0x21,
-    0x92,
-    0x5c,
-    0x9c,
-    0xc4,
-    0x2e,
-    0x9f,
-    0x6f,
-    0x46,
-    0x4b,
-    0x08,
-    0x8c,
-    0xc5,
-    0x72,
-    0xaf,
-    0x53,
-    0xe6,
-    0xd7,
-    0x88,
-    0x02,
+    0x62, 0x6d, 0x02, 0x78, 0x39, 0xea, 0x0a, 0x13, 0x41, 0x31,
+    0x63, 0xa5, 0x5b, 0x4c, 0xb5, 0x00, 0x29, 0x9d, 0x55, 0x22,
+    0x95, 0x6c, 0xef, 0xcb, 0x3b, 0xff, 0x10, 0xf3, 0x99, 0xce,
+    0x2c, 0x2e, 0x71, 0xcb, 0x9d, 0xe5, 0xfa, 0x24, 0xba, 0xbf,
+    0x58, 0xe5, 0xb7, 0x95, 0x21, 0x92, 0x5c, 0x9c, 0xc4, 0x2e,
+    0x9f, 0x6f, 0x46, 0x4b, 0x08, 0x8c, 0xc5, 0x72, 0xaf, 0x53,
+    0xe6, 0xd7, 0x88, 0x02
 };
 
 static int dsa_test(void)
@@ -202,26 +70,8 @@
      * PUB 186 and also appear in Appendix 5 to FIPS PIB 186-1
      */
     static unsigned char seed[20] = {
-        0xd5,
-        0x01,
-        0x4e,
-        0x4b,
-        0x60,
-        0xef,
-        0x2b,
-        0xa8,
-        0xb6,
-        0x21,
-        0x1b,
-        0x40,
-        0x62,
-        0xba,
-        0x32,
-        0x24,
-        0xe0,
-        0x42,
-        0x7d,
-        0xd3,
+        0xd5, 0x01, 0x4e, 0x4b, 0x60, 0xef, 0x2b, 0xa8, 0xb6, 0x21,
+        0x1b, 0x40, 0x62, 0xba, 0x32, 0x24, 0xe0, 0x42, 0x7d, 0xd3
     };
     static const unsigned char str1[] = "12345678901234567890";
 
diff -Nru openssl-3.5.6/test/ectest.c openssl-3.5.7/test/ectest.c
--- openssl-3.5.6/test/ectest.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/ectest.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2001-2026 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
@@ -1421,471 +1421,56 @@
 }
 
 static const unsigned char p521_named[] = {
-    0x06,
-    0x05,
-    0x2b,
-    0x81,
-    0x04,
-    0x00,
-    0x23,
+    0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x23
 };
 
 static const unsigned char p521_explicit[] = {
-    0x30,
-    0x82,
-    0x01,
-    0xc3,
-    0x02,
-    0x01,
-    0x01,
-    0x30,
-    0x4d,
-    0x06,
-    0x07,
-    0x2a,
-    0x86,
-    0x48,
-    0xce,
-    0x3d,
-    0x01,
-    0x01,
-    0x02,
-    0x42,
-    0x01,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0x30,
-    0x81,
-    0x9f,
-    0x04,
-    0x42,
-    0x01,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xfc,
-    0x04,
-    0x42,
-    0x00,
-    0x51,
-    0x95,
-    0x3e,
-    0xb9,
-    0x61,
-    0x8e,
-    0x1c,
-    0x9a,
-    0x1f,
-    0x92,
-    0x9a,
-    0x21,
-    0xa0,
-    0xb6,
-    0x85,
-    0x40,
-    0xee,
-    0xa2,
-    0xda,
-    0x72,
-    0x5b,
-    0x99,
-    0xb3,
-    0x15,
-    0xf3,
-    0xb8,
-    0xb4,
-    0x89,
-    0x91,
-    0x8e,
-    0xf1,
-    0x09,
-    0xe1,
-    0x56,
-    0x19,
-    0x39,
-    0x51,
-    0xec,
-    0x7e,
-    0x93,
-    0x7b,
-    0x16,
-    0x52,
-    0xc0,
-    0xbd,
-    0x3b,
-    0xb1,
-    0xbf,
-    0x07,
-    0x35,
-    0x73,
-    0xdf,
-    0x88,
-    0x3d,
-    0x2c,
-    0x34,
-    0xf1,
-    0xef,
-    0x45,
-    0x1f,
-    0xd4,
-    0x6b,
-    0x50,
-    0x3f,
-    0x00,
-    0x03,
-    0x15,
-    0x00,
-    0xd0,
-    0x9e,
-    0x88,
-    0x00,
-    0x29,
-    0x1c,
-    0xb8,
-    0x53,
-    0x96,
-    0xcc,
-    0x67,
-    0x17,
-    0x39,
-    0x32,
-    0x84,
-    0xaa,
-    0xa0,
-    0xda,
-    0x64,
-    0xba,
-    0x04,
-    0x81,
-    0x85,
-    0x04,
-    0x00,
-    0xc6,
-    0x85,
-    0x8e,
-    0x06,
-    0xb7,
-    0x04,
-    0x04,
-    0xe9,
-    0xcd,
-    0x9e,
-    0x3e,
-    0xcb,
-    0x66,
-    0x23,
-    0x95,
-    0xb4,
-    0x42,
-    0x9c,
-    0x64,
-    0x81,
-    0x39,
-    0x05,
-    0x3f,
-    0xb5,
-    0x21,
-    0xf8,
-    0x28,
-    0xaf,
-    0x60,
-    0x6b,
-    0x4d,
-    0x3d,
-    0xba,
-    0xa1,
-    0x4b,
-    0x5e,
-    0x77,
-    0xef,
-    0xe7,
-    0x59,
-    0x28,
-    0xfe,
-    0x1d,
-    0xc1,
-    0x27,
-    0xa2,
-    0xff,
-    0xa8,
-    0xde,
-    0x33,
-    0x48,
-    0xb3,
-    0xc1,
-    0x85,
-    0x6a,
-    0x42,
-    0x9b,
-    0xf9,
-    0x7e,
-    0x7e,
-    0x31,
-    0xc2,
-    0xe5,
-    0xbd,
-    0x66,
-    0x01,
-    0x18,
-    0x39,
-    0x29,
-    0x6a,
-    0x78,
-    0x9a,
-    0x3b,
-    0xc0,
-    0x04,
-    0x5c,
-    0x8a,
-    0x5f,
-    0xb4,
-    0x2c,
-    0x7d,
-    0x1b,
-    0xd9,
-    0x98,
-    0xf5,
-    0x44,
-    0x49,
-    0x57,
-    0x9b,
-    0x44,
-    0x68,
-    0x17,
-    0xaf,
-    0xbd,
-    0x17,
-    0x27,
-    0x3e,
-    0x66,
-    0x2c,
-    0x97,
-    0xee,
-    0x72,
-    0x99,
-    0x5e,
-    0xf4,
-    0x26,
-    0x40,
-    0xc5,
-    0x50,
-    0xb9,
-    0x01,
-    0x3f,
-    0xad,
-    0x07,
-    0x61,
-    0x35,
-    0x3c,
-    0x70,
-    0x86,
-    0xa2,
-    0x72,
-    0xc2,
-    0x40,
-    0x88,
-    0xbe,
-    0x94,
-    0x76,
-    0x9f,
-    0xd1,
-    0x66,
-    0x50,
-    0x02,
-    0x42,
-    0x01,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xff,
-    0xfa,
-    0x51,
-    0x86,
-    0x87,
-    0x83,
-    0xbf,
-    0x2f,
-    0x96,
-    0x6b,
-    0x7f,
-    0xcc,
-    0x01,
-    0x48,
-    0xf7,
-    0x09,
-    0xa5,
-    0xd0,
-    0x3b,
-    0xb5,
-    0xc9,
-    0xb8,
-    0x89,
-    0x9c,
-    0x47,
-    0xae,
-    0xbb,
-    0x6f,
-    0xb7,
-    0x1e,
-    0x91,
-    0x38,
-    0x64,
-    0x09,
-    0x02,
-    0x01,
-    0x01,
+    0x30, 0x82, 0x01, 0xc3, 0x02, 0x01, 0x01, 0x30, 0x4d, 0x06,
+    0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x01, 0x01, 0x02, 0x42,
+    0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x30, 0x81, 0x9f, 0x04,
+    0x42, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x04, 0x42, 0x00,
+    0x51, 0x95, 0x3e, 0xb9, 0x61, 0x8e, 0x1c, 0x9a, 0x1f, 0x92,
+    0x9a, 0x21, 0xa0, 0xb6, 0x85, 0x40, 0xee, 0xa2, 0xda, 0x72,
+    0x5b, 0x99, 0xb3, 0x15, 0xf3, 0xb8, 0xb4, 0x89, 0x91, 0x8e,
+    0xf1, 0x09, 0xe1, 0x56, 0x19, 0x39, 0x51, 0xec, 0x7e, 0x93,
+    0x7b, 0x16, 0x52, 0xc0, 0xbd, 0x3b, 0xb1, 0xbf, 0x07, 0x35,
+    0x73, 0xdf, 0x88, 0x3d, 0x2c, 0x34, 0xf1, 0xef, 0x45, 0x1f,
+    0xd4, 0x6b, 0x50, 0x3f, 0x00, 0x03, 0x15, 0x00, 0xd0, 0x9e,
+    0x88, 0x00, 0x29, 0x1c, 0xb8, 0x53, 0x96, 0xcc, 0x67, 0x17,
+    0x39, 0x32, 0x84, 0xaa, 0xa0, 0xda, 0x64, 0xba, 0x04, 0x81,
+    0x85, 0x04, 0x00, 0xc6, 0x85, 0x8e, 0x06, 0xb7, 0x04, 0x04,
+    0xe9, 0xcd, 0x9e, 0x3e, 0xcb, 0x66, 0x23, 0x95, 0xb4, 0x42,
+    0x9c, 0x64, 0x81, 0x39, 0x05, 0x3f, 0xb5, 0x21, 0xf8, 0x28,
+    0xaf, 0x60, 0x6b, 0x4d, 0x3d, 0xba, 0xa1, 0x4b, 0x5e, 0x77,
+    0xef, 0xe7, 0x59, 0x28, 0xfe, 0x1d, 0xc1, 0x27, 0xa2, 0xff,
+    0xa8, 0xde, 0x33, 0x48, 0xb3, 0xc1, 0x85, 0x6a, 0x42, 0x9b,
+    0xf9, 0x7e, 0x7e, 0x31, 0xc2, 0xe5, 0xbd, 0x66, 0x01, 0x18,
+    0x39, 0x29, 0x6a, 0x78, 0x9a, 0x3b, 0xc0, 0x04, 0x5c, 0x8a,
+    0x5f, 0xb4, 0x2c, 0x7d, 0x1b, 0xd9, 0x98, 0xf5, 0x44, 0x49,
+    0x57, 0x9b, 0x44, 0x68, 0x17, 0xaf, 0xbd, 0x17, 0x27, 0x3e,
+    0x66, 0x2c, 0x97, 0xee, 0x72, 0x99, 0x5e, 0xf4, 0x26, 0x40,
+    0xc5, 0x50, 0xb9, 0x01, 0x3f, 0xad, 0x07, 0x61, 0x35, 0x3c,
+    0x70, 0x86, 0xa2, 0x72, 0xc2, 0x40, 0x88, 0xbe, 0x94, 0x76,
+    0x9f, 0xd1, 0x66, 0x50, 0x02, 0x42, 0x01, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa,
+    0x51, 0x86, 0x87, 0x83, 0xbf, 0x2f, 0x96, 0x6b, 0x7f, 0xcc,
+    0x01, 0x48, 0xf7, 0x09, 0xa5, 0xd0, 0x3b, 0xb5, 0xc9, 0xb8,
+    0x89, 0x9c, 0x47, 0xae, 0xbb, 0x6f, 0xb7, 0x1e, 0x91, 0x38,
+    0x64, 0x09, 0x02, 0x01, 0x01
 };
 
 /*
diff -Nru openssl-3.5.6/test/endecode_test.c openssl-3.5.7/test/endecode_test.c
--- openssl-3.5.6/test/endecode_test.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/endecode_test.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2020-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2020-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -1212,36 +1212,9 @@
     BIGNUM *a, *b, *poly, *order, *cofactor;
     /* sect233k1 characteristic-two-field tpBasis */
     static const unsigned char poly_data[] = {
-        0x02,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x04,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x00,
-        0x01,
+        0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01
     };
     static const unsigned char a_data[] = {
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
diff -Nru openssl-3.5.6/test/enginetest.c openssl-3.5.7/test/enginetest.c
--- openssl-3.5.6/test/enginetest.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/enginetest.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2000-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -61,6 +61,8 @@
     ENGINE *new_h4 = NULL;
 
     memset(block, 0, sizeof(block));
+    memset(eid, 0, sizeof(eid));
+    memset(ename, 0, sizeof(ename));
     if (!TEST_ptr(new_h1 = ENGINE_new())
         || !TEST_true(ENGINE_set_id(new_h1, "test_id0"))
         || !TEST_true(ENGINE_set_name(new_h1, "First test item"))
@@ -171,10 +173,6 @@
             goto end;
         ENGINE_free(ptr);
     }
-    for (loop = 0; loop < NUMTOADD; loop++) {
-        OPENSSL_free(eid[loop]);
-        OPENSSL_free(ename[loop]);
-    }
     to_return = 1;
 
 end:
@@ -182,8 +180,11 @@
     ENGINE_free(new_h2);
     ENGINE_free(new_h3);
     ENGINE_free(new_h4);
-    for (loop = 0; loop < NUMTOADD; loop++)
+    for (loop = 0; loop < NUMTOADD; loop++) {
+        OPENSSL_free(eid[loop]);
+        OPENSSL_free(ename[loop]);
         ENGINE_free(block[loop]);
+    }
     return to_return;
 }
 
diff -Nru openssl-3.5.6/test/evp_extra_test2.c openssl-3.5.7/test/evp_extra_test2.c
--- openssl-3.5.6/test/evp_extra_test2.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/evp_extra_test2.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2015-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -44,614 +44,67 @@
  * should never use this key anywhere but in an example.
  */
 static const unsigned char kExampleRSAKeyDER[] = {
-    0x30,
-    0x82,
-    0x02,
-    0x5c,
-    0x02,
-    0x01,
-    0x00,
-    0x02,
-    0x81,
-    0x81,
-    0x00,
-    0xf8,
-    0xb8,
-    0x6c,
-    0x83,
-    0xb4,
-    0xbc,
-    0xd9,
-    0xa8,
-    0x57,
-    0xc0,
-    0xa5,
-    0xb4,
-    0x59,
-    0x76,
-    0x8c,
-    0x54,
-    0x1d,
-    0x79,
-    0xeb,
-    0x22,
-    0x52,
-    0x04,
-    0x7e,
-    0xd3,
-    0x37,
-    0xeb,
-    0x41,
-    0xfd,
-    0x83,
-    0xf9,
-    0xf0,
-    0xa6,
-    0x85,
-    0x15,
-    0x34,
-    0x75,
-    0x71,
-    0x5a,
-    0x84,
-    0xa8,
-    0x3c,
-    0xd2,
-    0xef,
-    0x5a,
-    0x4e,
-    0xd3,
-    0xde,
-    0x97,
-    0x8a,
-    0xdd,
-    0xff,
-    0xbb,
-    0xcf,
-    0x0a,
-    0xaa,
-    0x86,
-    0x92,
-    0xbe,
-    0xb8,
-    0x50,
-    0xe4,
-    0xcd,
-    0x6f,
-    0x80,
-    0x33,
-    0x30,
-    0x76,
-    0x13,
-    0x8f,
-    0xca,
-    0x7b,
-    0xdc,
-    0xec,
-    0x5a,
-    0xca,
-    0x63,
-    0xc7,
-    0x03,
-    0x25,
-    0xef,
-    0xa8,
-    0x8a,
-    0x83,
-    0x58,
-    0x76,
-    0x20,
-    0xfa,
-    0x16,
-    0x77,
-    0xd7,
-    0x79,
-    0x92,
-    0x63,
-    0x01,
-    0x48,
-    0x1a,
-    0xd8,
-    0x7b,
-    0x67,
-    0xf1,
-    0x52,
-    0x55,
-    0x49,
-    0x4e,
-    0xd6,
-    0x6e,
-    0x4a,
-    0x5c,
-    0xd7,
-    0x7a,
-    0x37,
-    0x36,
-    0x0c,
-    0xde,
-    0xdd,
-    0x8f,
-    0x44,
-    0xe8,
-    0xc2,
-    0xa7,
-    0x2c,
-    0x2b,
-    0xb5,
-    0xaf,
-    0x64,
-    0x4b,
-    0x61,
-    0x07,
-    0x02,
-    0x03,
-    0x01,
-    0x00,
-    0x01,
-    0x02,
-    0x81,
-    0x80,
-    0x74,
-    0x88,
-    0x64,
-    0x3f,
-    0x69,
-    0x45,
-    0x3a,
-    0x6d,
-    0xc7,
-    0x7f,
-    0xb9,
-    0xa3,
-    0xc0,
-    0x6e,
-    0xec,
-    0xdc,
-    0xd4,
-    0x5a,
-    0xb5,
-    0x32,
-    0x85,
-    0x5f,
-    0x19,
-    0xd4,
-    0xf8,
-    0xd4,
-    0x3f,
-    0x3c,
-    0xfa,
-    0xc2,
-    0xf6,
-    0x5f,
-    0xee,
-    0xe6,
-    0xba,
-    0x87,
-    0x74,
-    0x2e,
-    0xc7,
-    0x0c,
-    0xd4,
-    0x42,
-    0xb8,
-    0x66,
-    0x85,
-    0x9c,
-    0x7b,
-    0x24,
-    0x61,
-    0xaa,
-    0x16,
-    0x11,
-    0xf6,
-    0xb5,
-    0xb6,
-    0xa4,
-    0x0a,
-    0xc9,
-    0x55,
-    0x2e,
-    0x81,
-    0xa5,
-    0x47,
-    0x61,
-    0xcb,
-    0x25,
-    0x8f,
-    0xc2,
-    0x15,
-    0x7b,
-    0x0e,
-    0x7c,
-    0x36,
-    0x9f,
-    0x3a,
-    0xda,
-    0x58,
-    0x86,
-    0x1c,
-    0x5b,
-    0x83,
-    0x79,
-    0xe6,
-    0x2b,
-    0xcc,
-    0xe6,
-    0xfa,
-    0x2c,
-    0x61,
-    0xf2,
-    0x78,
-    0x80,
-    0x1b,
-    0xe2,
-    0xf3,
-    0x9d,
-    0x39,
-    0x2b,
-    0x65,
-    0x57,
-    0x91,
-    0x3d,
-    0x71,
-    0x99,
-    0x73,
-    0xa5,
-    0xc2,
-    0x79,
-    0x20,
-    0x8c,
-    0x07,
-    0x4f,
-    0xe5,
-    0xb4,
-    0x60,
-    0x1f,
-    0x99,
-    0xa2,
-    0xb1,
-    0x4f,
-    0x0c,
-    0xef,
-    0xbc,
-    0x59,
-    0x53,
-    0x00,
-    0x7d,
-    0xb1,
-    0x02,
-    0x41,
-    0x00,
-    0xfc,
-    0x7e,
-    0x23,
-    0x65,
-    0x70,
-    0xf8,
-    0xce,
-    0xd3,
-    0x40,
-    0x41,
-    0x80,
-    0x6a,
-    0x1d,
-    0x01,
-    0xd6,
-    0x01,
-    0xff,
-    0xb6,
-    0x1b,
-    0x3d,
-    0x3d,
-    0x59,
-    0x09,
-    0x33,
-    0x79,
-    0xc0,
-    0x4f,
-    0xde,
-    0x96,
-    0x27,
-    0x4b,
-    0x18,
-    0xc6,
-    0xd9,
-    0x78,
-    0xf1,
-    0xf4,
-    0x35,
-    0x46,
-    0xe9,
-    0x7c,
-    0x42,
-    0x7a,
-    0x5d,
-    0x9f,
-    0xef,
-    0x54,
-    0xb8,
-    0xf7,
-    0x9f,
-    0xc4,
-    0x33,
-    0x6c,
-    0xf3,
-    0x8c,
-    0x32,
-    0x46,
-    0x87,
-    0x67,
-    0x30,
-    0x7b,
-    0xa7,
-    0xac,
-    0xe3,
-    0x02,
-    0x41,
-    0x00,
-    0xfc,
-    0x2c,
-    0xdf,
-    0x0c,
-    0x0d,
-    0x88,
-    0xf5,
-    0xb1,
-    0x92,
-    0xa8,
-    0x93,
-    0x47,
-    0x63,
-    0x55,
-    0xf5,
-    0xca,
-    0x58,
-    0x43,
-    0xba,
-    0x1c,
-    0xe5,
-    0x9e,
-    0xb6,
-    0x95,
-    0x05,
-    0xcd,
-    0xb5,
-    0x82,
-    0xdf,
-    0xeb,
-    0x04,
-    0x53,
-    0x9d,
-    0xbd,
-    0xc2,
-    0x38,
-    0x16,
-    0xb3,
-    0x62,
-    0xdd,
-    0xa1,
-    0x46,
-    0xdb,
-    0x6d,
-    0x97,
-    0x93,
-    0x9f,
-    0x8a,
-    0xc3,
-    0x9b,
-    0x64,
-    0x7e,
-    0x42,
-    0xe3,
-    0x32,
-    0x57,
-    0x19,
-    0x1b,
-    0xd5,
-    0x6e,
-    0x85,
-    0xfa,
-    0xb8,
-    0x8d,
-    0x02,
-    0x41,
-    0x00,
-    0xbc,
-    0x3d,
-    0xde,
-    0x6d,
-    0xd6,
-    0x97,
-    0xe8,
-    0xba,
-    0x9e,
-    0x81,
-    0x37,
-    0x17,
-    0xe5,
-    0xa0,
-    0x64,
-    0xc9,
-    0x00,
-    0xb7,
-    0xe7,
-    0xfe,
-    0xf4,
-    0x29,
-    0xd9,
-    0x2e,
-    0x43,
-    0x6b,
-    0x19,
-    0x20,
-    0xbd,
-    0x99,
-    0x75,
-    0xe7,
-    0x76,
-    0xf8,
-    0xd3,
-    0xae,
-    0xaf,
-    0x7e,
-    0xb8,
-    0xeb,
-    0x81,
-    0xf4,
-    0x9d,
-    0xfe,
-    0x07,
-    0x2b,
-    0x0b,
-    0x63,
-    0x0b,
-    0x5a,
-    0x55,
-    0x90,
-    0x71,
-    0x7d,
-    0xf1,
-    0xdb,
-    0xd9,
-    0xb1,
-    0x41,
-    0x41,
-    0x68,
-    0x2f,
-    0x4e,
-    0x39,
-    0x02,
-    0x40,
-    0x5a,
-    0x34,
-    0x66,
-    0xd8,
-    0xf5,
-    0xe2,
-    0x7f,
-    0x18,
-    0xb5,
-    0x00,
-    0x6e,
-    0x26,
-    0x84,
-    0x27,
-    0x14,
-    0x93,
-    0xfb,
-    0xfc,
-    0xc6,
-    0x0f,
-    0x5e,
-    0x27,
-    0xe6,
-    0xe1,
-    0xe9,
-    0xc0,
-    0x8a,
-    0xe4,
-    0x34,
-    0xda,
-    0xe9,
-    0xa2,
-    0x4b,
-    0x73,
-    0xbc,
-    0x8c,
-    0xb9,
-    0xba,
-    0x13,
-    0x6c,
-    0x7a,
-    0x2b,
-    0x51,
-    0x84,
-    0xa3,
-    0x4a,
-    0xe0,
-    0x30,
-    0x10,
-    0x06,
-    0x7e,
-    0xed,
-    0x17,
-    0x5a,
-    0x14,
-    0x00,
-    0xc9,
-    0xef,
-    0x85,
-    0xea,
-    0x52,
-    0x2c,
-    0xbc,
-    0x65,
-    0x02,
-    0x40,
-    0x51,
-    0xe3,
-    0xf2,
-    0x83,
-    0x19,
-    0x9b,
-    0xc4,
-    0x1e,
-    0x2f,
-    0x50,
-    0x3d,
-    0xdf,
-    0x5a,
-    0xa2,
-    0x18,
-    0xca,
-    0x5f,
-    0x2e,
-    0x49,
-    0xaf,
-    0x6f,
-    0xcc,
-    0xfa,
-    0x65,
-    0x77,
-    0x94,
-    0xb5,
-    0xa1,
-    0x0a,
-    0xa9,
-    0xd1,
-    0x8a,
-    0x39,
-    0x37,
-    0xf4,
-    0x0b,
-    0xa0,
-    0xd7,
-    0x82,
-    0x27,
-    0x5e,
-    0xae,
-    0x17,
-    0x17,
-    0xa1,
-    0x1e,
-    0x54,
-    0x34,
-    0xbf,
-    0x6e,
-    0xc4,
-    0x8e,
-    0x99,
-    0x5d,
-    0x08,
-    0xf1,
-    0x2d,
-    0x86,
-    0x9d,
-    0xa5,
-    0x20,
-    0x1b,
-    0xe5,
-    0xdf,
+    0x30, 0x82, 0x02, 0x5c, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81,
+    0x00, 0xf8, 0xb8, 0x6c, 0x83, 0xb4, 0xbc, 0xd9, 0xa8, 0x57,
+    0xc0, 0xa5, 0xb4, 0x59, 0x76, 0x8c, 0x54, 0x1d, 0x79, 0xeb,
+    0x22, 0x52, 0x04, 0x7e, 0xd3, 0x37, 0xeb, 0x41, 0xfd, 0x83,
+    0xf9, 0xf0, 0xa6, 0x85, 0x15, 0x34, 0x75, 0x71, 0x5a, 0x84,
+    0xa8, 0x3c, 0xd2, 0xef, 0x5a, 0x4e, 0xd3, 0xde, 0x97, 0x8a,
+    0xdd, 0xff, 0xbb, 0xcf, 0x0a, 0xaa, 0x86, 0x92, 0xbe, 0xb8,
+    0x50, 0xe4, 0xcd, 0x6f, 0x80, 0x33, 0x30, 0x76, 0x13, 0x8f,
+    0xca, 0x7b, 0xdc, 0xec, 0x5a, 0xca, 0x63, 0xc7, 0x03, 0x25,
+    0xef, 0xa8, 0x8a, 0x83, 0x58, 0x76, 0x20, 0xfa, 0x16, 0x77,
+    0xd7, 0x79, 0x92, 0x63, 0x01, 0x48, 0x1a, 0xd8, 0x7b, 0x67,
+    0xf1, 0x52, 0x55, 0x49, 0x4e, 0xd6, 0x6e, 0x4a, 0x5c, 0xd7,
+    0x7a, 0x37, 0x36, 0x0c, 0xde, 0xdd, 0x8f, 0x44, 0xe8, 0xc2,
+    0xa7, 0x2c, 0x2b, 0xb5, 0xaf, 0x64, 0x4b, 0x61, 0x07, 0x02,
+    0x03, 0x01, 0x00, 0x01, 0x02, 0x81, 0x80, 0x74, 0x88, 0x64,
+    0x3f, 0x69, 0x45, 0x3a, 0x6d, 0xc7, 0x7f, 0xb9, 0xa3, 0xc0,
+    0x6e, 0xec, 0xdc, 0xd4, 0x5a, 0xb5, 0x32, 0x85, 0x5f, 0x19,
+    0xd4, 0xf8, 0xd4, 0x3f, 0x3c, 0xfa, 0xc2, 0xf6, 0x5f, 0xee,
+    0xe6, 0xba, 0x87, 0x74, 0x2e, 0xc7, 0x0c, 0xd4, 0x42, 0xb8,
+    0x66, 0x85, 0x9c, 0x7b, 0x24, 0x61, 0xaa, 0x16, 0x11, 0xf6,
+    0xb5, 0xb6, 0xa4, 0x0a, 0xc9, 0x55, 0x2e, 0x81, 0xa5, 0x47,
+    0x61, 0xcb, 0x25, 0x8f, 0xc2, 0x15, 0x7b, 0x0e, 0x7c, 0x36,
+    0x9f, 0x3a, 0xda, 0x58, 0x86, 0x1c, 0x5b, 0x83, 0x79, 0xe6,
+    0x2b, 0xcc, 0xe6, 0xfa, 0x2c, 0x61, 0xf2, 0x78, 0x80, 0x1b,
+    0xe2, 0xf3, 0x9d, 0x39, 0x2b, 0x65, 0x57, 0x91, 0x3d, 0x71,
+    0x99, 0x73, 0xa5, 0xc2, 0x79, 0x20, 0x8c, 0x07, 0x4f, 0xe5,
+    0xb4, 0x60, 0x1f, 0x99, 0xa2, 0xb1, 0x4f, 0x0c, 0xef, 0xbc,
+    0x59, 0x53, 0x00, 0x7d, 0xb1, 0x02, 0x41, 0x00, 0xfc, 0x7e,
+    0x23, 0x65, 0x70, 0xf8, 0xce, 0xd3, 0x40, 0x41, 0x80, 0x6a,
+    0x1d, 0x01, 0xd6, 0x01, 0xff, 0xb6, 0x1b, 0x3d, 0x3d, 0x59,
+    0x09, 0x33, 0x79, 0xc0, 0x4f, 0xde, 0x96, 0x27, 0x4b, 0x18,
+    0xc6, 0xd9, 0x78, 0xf1, 0xf4, 0x35, 0x46, 0xe9, 0x7c, 0x42,
+    0x7a, 0x5d, 0x9f, 0xef, 0x54, 0xb8, 0xf7, 0x9f, 0xc4, 0x33,
+    0x6c, 0xf3, 0x8c, 0x32, 0x46, 0x87, 0x67, 0x30, 0x7b, 0xa7,
+    0xac, 0xe3, 0x02, 0x41, 0x00, 0xfc, 0x2c, 0xdf, 0x0c, 0x0d,
+    0x88, 0xf5, 0xb1, 0x92, 0xa8, 0x93, 0x47, 0x63, 0x55, 0xf5,
+    0xca, 0x58, 0x43, 0xba, 0x1c, 0xe5, 0x9e, 0xb6, 0x95, 0x05,
+    0xcd, 0xb5, 0x82, 0xdf, 0xeb, 0x04, 0x53, 0x9d, 0xbd, 0xc2,
+    0x38, 0x16, 0xb3, 0x62, 0xdd, 0xa1, 0x46, 0xdb, 0x6d, 0x97,
+    0x93, 0x9f, 0x8a, 0xc3, 0x9b, 0x64, 0x7e, 0x42, 0xe3, 0x32,
+    0x57, 0x19, 0x1b, 0xd5, 0x6e, 0x85, 0xfa, 0xb8, 0x8d, 0x02,
+    0x41, 0x00, 0xbc, 0x3d, 0xde, 0x6d, 0xd6, 0x97, 0xe8, 0xba,
+    0x9e, 0x81, 0x37, 0x17, 0xe5, 0xa0, 0x64, 0xc9, 0x00, 0xb7,
+    0xe7, 0xfe, 0xf4, 0x29, 0xd9, 0x2e, 0x43, 0x6b, 0x19, 0x20,
+    0xbd, 0x99, 0x75, 0xe7, 0x76, 0xf8, 0xd3, 0xae, 0xaf, 0x7e,
+    0xb8, 0xeb, 0x81, 0xf4, 0x9d, 0xfe, 0x07, 0x2b, 0x0b, 0x63,
+    0x0b, 0x5a, 0x55, 0x90, 0x71, 0x7d, 0xf1, 0xdb, 0xd9, 0xb1,
+    0x41, 0x41, 0x68, 0x2f, 0x4e, 0x39, 0x02, 0x40, 0x5a, 0x34,
+    0x66, 0xd8, 0xf5, 0xe2, 0x7f, 0x18, 0xb5, 0x00, 0x6e, 0x26,
+    0x84, 0x27, 0x14, 0x93, 0xfb, 0xfc, 0xc6, 0x0f, 0x5e, 0x27,
+    0xe6, 0xe1, 0xe9, 0xc0, 0x8a, 0xe4, 0x34, 0xda, 0xe9, 0xa2,
+    0x4b, 0x73, 0xbc, 0x8c, 0xb9, 0xba, 0x13, 0x6c, 0x7a, 0x2b,
+    0x51, 0x84, 0xa3, 0x4a, 0xe0, 0x30, 0x10, 0x06, 0x7e, 0xed,
+    0x17, 0x5a, 0x14, 0x00, 0xc9, 0xef, 0x85, 0xea, 0x52, 0x2c,
+    0xbc, 0x65, 0x02, 0x40, 0x51, 0xe3, 0xf2, 0x83, 0x19, 0x9b,
+    0xc4, 0x1e, 0x2f, 0x50, 0x3d, 0xdf, 0x5a, 0xa2, 0x18, 0xca,
+    0x5f, 0x2e, 0x49, 0xaf, 0x6f, 0xcc, 0xfa, 0x65, 0x77, 0x94,
+    0xb5, 0xa1, 0x0a, 0xa9, 0xd1, 0x8a, 0x39, 0x37, 0xf4, 0x0b,
+    0xa0, 0xd7, 0x82, 0x27, 0x5e, 0xae, 0x17, 0x17, 0xa1, 0x1e,
+    0x54, 0x34, 0xbf, 0x6e, 0xc4, 0x8e, 0x99, 0x5d, 0x08, 0xf1,
+    0x2d, 0x86, 0x9d, 0xa5, 0x20, 0x1b, 0xe5, 0xdf
 };
 
 /*
@@ -659,640 +112,70 @@
  * PrivateKeyInfo.
  */
 static const unsigned char kExampleRSAKeyPKCS8[] = {
-    0x30,
-    0x82,
-    0x02,
-    0x76,
-    0x02,
-    0x01,
-    0x00,
-    0x30,
-    0x0d,
-    0x06,
-    0x09,
-    0x2a,
-    0x86,
-    0x48,
-    0x86,
-    0xf7,
-    0x0d,
-    0x01,
-    0x01,
-    0x01,
-    0x05,
-    0x00,
-    0x04,
-    0x82,
-    0x02,
-    0x60,
-    0x30,
-    0x82,
-    0x02,
-    0x5c,
-    0x02,
-    0x01,
-    0x00,
-    0x02,
-    0x81,
-    0x81,
-    0x00,
-    0xf8,
-    0xb8,
-    0x6c,
-    0x83,
-    0xb4,
-    0xbc,
-    0xd9,
-    0xa8,
-    0x57,
-    0xc0,
-    0xa5,
-    0xb4,
-    0x59,
-    0x76,
-    0x8c,
-    0x54,
-    0x1d,
-    0x79,
-    0xeb,
-    0x22,
-    0x52,
-    0x04,
-    0x7e,
-    0xd3,
-    0x37,
-    0xeb,
-    0x41,
-    0xfd,
-    0x83,
-    0xf9,
-    0xf0,
-    0xa6,
-    0x85,
-    0x15,
-    0x34,
-    0x75,
-    0x71,
-    0x5a,
-    0x84,
-    0xa8,
-    0x3c,
-    0xd2,
-    0xef,
-    0x5a,
-    0x4e,
-    0xd3,
-    0xde,
-    0x97,
-    0x8a,
-    0xdd,
-    0xff,
-    0xbb,
-    0xcf,
-    0x0a,
-    0xaa,
-    0x86,
-    0x92,
-    0xbe,
-    0xb8,
-    0x50,
-    0xe4,
-    0xcd,
-    0x6f,
-    0x80,
-    0x33,
-    0x30,
-    0x76,
-    0x13,
-    0x8f,
-    0xca,
-    0x7b,
-    0xdc,
-    0xec,
-    0x5a,
-    0xca,
-    0x63,
-    0xc7,
-    0x03,
-    0x25,
-    0xef,
-    0xa8,
-    0x8a,
-    0x83,
-    0x58,
-    0x76,
-    0x20,
-    0xfa,
-    0x16,
-    0x77,
-    0xd7,
-    0x79,
-    0x92,
-    0x63,
-    0x01,
-    0x48,
-    0x1a,
-    0xd8,
-    0x7b,
-    0x67,
-    0xf1,
-    0x52,
-    0x55,
-    0x49,
-    0x4e,
-    0xd6,
-    0x6e,
-    0x4a,
-    0x5c,
-    0xd7,
-    0x7a,
-    0x37,
-    0x36,
-    0x0c,
-    0xde,
-    0xdd,
-    0x8f,
-    0x44,
-    0xe8,
-    0xc2,
-    0xa7,
-    0x2c,
-    0x2b,
-    0xb5,
-    0xaf,
-    0x64,
-    0x4b,
-    0x61,
-    0x07,
-    0x02,
-    0x03,
-    0x01,
-    0x00,
-    0x01,
-    0x02,
-    0x81,
-    0x80,
-    0x74,
-    0x88,
-    0x64,
-    0x3f,
-    0x69,
-    0x45,
-    0x3a,
-    0x6d,
-    0xc7,
-    0x7f,
-    0xb9,
-    0xa3,
-    0xc0,
-    0x6e,
-    0xec,
-    0xdc,
-    0xd4,
-    0x5a,
-    0xb5,
-    0x32,
-    0x85,
-    0x5f,
-    0x19,
-    0xd4,
-    0xf8,
-    0xd4,
-    0x3f,
-    0x3c,
-    0xfa,
-    0xc2,
-    0xf6,
-    0x5f,
-    0xee,
-    0xe6,
-    0xba,
-    0x87,
-    0x74,
-    0x2e,
-    0xc7,
-    0x0c,
-    0xd4,
-    0x42,
-    0xb8,
-    0x66,
-    0x85,
-    0x9c,
-    0x7b,
-    0x24,
-    0x61,
-    0xaa,
-    0x16,
-    0x11,
-    0xf6,
-    0xb5,
-    0xb6,
-    0xa4,
-    0x0a,
-    0xc9,
-    0x55,
-    0x2e,
-    0x81,
-    0xa5,
-    0x47,
-    0x61,
-    0xcb,
-    0x25,
-    0x8f,
-    0xc2,
-    0x15,
-    0x7b,
-    0x0e,
-    0x7c,
-    0x36,
-    0x9f,
-    0x3a,
-    0xda,
-    0x58,
-    0x86,
-    0x1c,
-    0x5b,
-    0x83,
-    0x79,
-    0xe6,
-    0x2b,
-    0xcc,
-    0xe6,
-    0xfa,
-    0x2c,
-    0x61,
-    0xf2,
-    0x78,
-    0x80,
-    0x1b,
-    0xe2,
-    0xf3,
-    0x9d,
-    0x39,
-    0x2b,
-    0x65,
-    0x57,
-    0x91,
-    0x3d,
-    0x71,
-    0x99,
-    0x73,
-    0xa5,
-    0xc2,
-    0x79,
-    0x20,
-    0x8c,
-    0x07,
-    0x4f,
-    0xe5,
-    0xb4,
-    0x60,
-    0x1f,
-    0x99,
-    0xa2,
-    0xb1,
-    0x4f,
-    0x0c,
-    0xef,
-    0xbc,
-    0x59,
-    0x53,
-    0x00,
-    0x7d,
-    0xb1,
-    0x02,
-    0x41,
-    0x00,
-    0xfc,
-    0x7e,
-    0x23,
-    0x65,
-    0x70,
-    0xf8,
-    0xce,
-    0xd3,
-    0x40,
-    0x41,
-    0x80,
-    0x6a,
-    0x1d,
-    0x01,
-    0xd6,
-    0x01,
-    0xff,
-    0xb6,
-    0x1b,
-    0x3d,
-    0x3d,
-    0x59,
-    0x09,
-    0x33,
-    0x79,
-    0xc0,
-    0x4f,
-    0xde,
-    0x96,
-    0x27,
-    0x4b,
-    0x18,
-    0xc6,
-    0xd9,
-    0x78,
-    0xf1,
-    0xf4,
-    0x35,
-    0x46,
-    0xe9,
-    0x7c,
-    0x42,
-    0x7a,
-    0x5d,
-    0x9f,
-    0xef,
-    0x54,
-    0xb8,
-    0xf7,
-    0x9f,
-    0xc4,
-    0x33,
-    0x6c,
-    0xf3,
-    0x8c,
-    0x32,
-    0x46,
-    0x87,
-    0x67,
-    0x30,
-    0x7b,
-    0xa7,
-    0xac,
-    0xe3,
-    0x02,
-    0x41,
-    0x00,
-    0xfc,
-    0x2c,
-    0xdf,
-    0x0c,
-    0x0d,
-    0x88,
-    0xf5,
-    0xb1,
-    0x92,
-    0xa8,
-    0x93,
-    0x47,
-    0x63,
-    0x55,
-    0xf5,
-    0xca,
-    0x58,
-    0x43,
-    0xba,
-    0x1c,
-    0xe5,
-    0x9e,
-    0xb6,
-    0x95,
-    0x05,
-    0xcd,
-    0xb5,
-    0x82,
-    0xdf,
-    0xeb,
-    0x04,
-    0x53,
-    0x9d,
-    0xbd,
-    0xc2,
-    0x38,
-    0x16,
-    0xb3,
-    0x62,
-    0xdd,
-    0xa1,
-    0x46,
-    0xdb,
-    0x6d,
-    0x97,
-    0x93,
-    0x9f,
-    0x8a,
-    0xc3,
-    0x9b,
-    0x64,
-    0x7e,
-    0x42,
-    0xe3,
-    0x32,
-    0x57,
-    0x19,
-    0x1b,
-    0xd5,
-    0x6e,
-    0x85,
-    0xfa,
-    0xb8,
-    0x8d,
-    0x02,
-    0x41,
-    0x00,
-    0xbc,
-    0x3d,
-    0xde,
-    0x6d,
-    0xd6,
-    0x97,
-    0xe8,
-    0xba,
-    0x9e,
-    0x81,
-    0x37,
-    0x17,
-    0xe5,
-    0xa0,
-    0x64,
-    0xc9,
-    0x00,
-    0xb7,
-    0xe7,
-    0xfe,
-    0xf4,
-    0x29,
-    0xd9,
-    0x2e,
-    0x43,
-    0x6b,
-    0x19,
-    0x20,
-    0xbd,
-    0x99,
-    0x75,
-    0xe7,
-    0x76,
-    0xf8,
-    0xd3,
-    0xae,
-    0xaf,
-    0x7e,
-    0xb8,
-    0xeb,
-    0x81,
-    0xf4,
-    0x9d,
-    0xfe,
-    0x07,
-    0x2b,
-    0x0b,
-    0x63,
-    0x0b,
-    0x5a,
-    0x55,
-    0x90,
-    0x71,
-    0x7d,
-    0xf1,
-    0xdb,
-    0xd9,
-    0xb1,
-    0x41,
-    0x41,
-    0x68,
-    0x2f,
-    0x4e,
-    0x39,
-    0x02,
-    0x40,
-    0x5a,
-    0x34,
-    0x66,
-    0xd8,
-    0xf5,
-    0xe2,
-    0x7f,
-    0x18,
-    0xb5,
-    0x00,
-    0x6e,
-    0x26,
-    0x84,
-    0x27,
-    0x14,
-    0x93,
-    0xfb,
-    0xfc,
-    0xc6,
-    0x0f,
-    0x5e,
-    0x27,
-    0xe6,
-    0xe1,
-    0xe9,
-    0xc0,
-    0x8a,
-    0xe4,
-    0x34,
-    0xda,
-    0xe9,
-    0xa2,
-    0x4b,
-    0x73,
-    0xbc,
-    0x8c,
-    0xb9,
-    0xba,
-    0x13,
-    0x6c,
-    0x7a,
-    0x2b,
-    0x51,
-    0x84,
-    0xa3,
-    0x4a,
-    0xe0,
-    0x30,
-    0x10,
-    0x06,
-    0x7e,
-    0xed,
-    0x17,
-    0x5a,
-    0x14,
-    0x00,
-    0xc9,
-    0xef,
-    0x85,
-    0xea,
-    0x52,
-    0x2c,
-    0xbc,
-    0x65,
-    0x02,
-    0x40,
-    0x51,
-    0xe3,
-    0xf2,
-    0x83,
-    0x19,
-    0x9b,
-    0xc4,
-    0x1e,
-    0x2f,
-    0x50,
-    0x3d,
-    0xdf,
-    0x5a,
-    0xa2,
-    0x18,
-    0xca,
-    0x5f,
-    0x2e,
-    0x49,
-    0xaf,
-    0x6f,
-    0xcc,
-    0xfa,
-    0x65,
-    0x77,
-    0x94,
-    0xb5,
-    0xa1,
-    0x0a,
-    0xa9,
-    0xd1,
-    0x8a,
-    0x39,
-    0x37,
-    0xf4,
-    0x0b,
-    0xa0,
-    0xd7,
-    0x82,
-    0x27,
-    0x5e,
-    0xae,
-    0x17,
-    0x17,
-    0xa1,
-    0x1e,
-    0x54,
-    0x34,
-    0xbf,
-    0x6e,
-    0xc4,
-    0x8e,
-    0x99,
-    0x5d,
-    0x08,
-    0xf1,
-    0x2d,
-    0x86,
-    0x9d,
-    0xa5,
-    0x20,
-    0x1b,
-    0xe5,
-    0xdf,
+    0x30, 0x82, 0x02, 0x76, 0x02, 0x01, 0x00, 0x30, 0x0d, 0x06,
+    0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
+    0x05, 0x00, 0x04, 0x82, 0x02, 0x60, 0x30, 0x82, 0x02, 0x5c,
+    0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xf8, 0xb8, 0x6c,
+    0x83, 0xb4, 0xbc, 0xd9, 0xa8, 0x57, 0xc0, 0xa5, 0xb4, 0x59,
+    0x76, 0x8c, 0x54, 0x1d, 0x79, 0xeb, 0x22, 0x52, 0x04, 0x7e,
+    0xd3, 0x37, 0xeb, 0x41, 0xfd, 0x83, 0xf9, 0xf0, 0xa6, 0x85,
+    0x15, 0x34, 0x75, 0x71, 0x5a, 0x84, 0xa8, 0x3c, 0xd2, 0xef,
+    0x5a, 0x4e, 0xd3, 0xde, 0x97, 0x8a, 0xdd, 0xff, 0xbb, 0xcf,
+    0x0a, 0xaa, 0x86, 0x92, 0xbe, 0xb8, 0x50, 0xe4, 0xcd, 0x6f,
+    0x80, 0x33, 0x30, 0x76, 0x13, 0x8f, 0xca, 0x7b, 0xdc, 0xec,
+    0x5a, 0xca, 0x63, 0xc7, 0x03, 0x25, 0xef, 0xa8, 0x8a, 0x83,
+    0x58, 0x76, 0x20, 0xfa, 0x16, 0x77, 0xd7, 0x79, 0x92, 0x63,
+    0x01, 0x48, 0x1a, 0xd8, 0x7b, 0x67, 0xf1, 0x52, 0x55, 0x49,
+    0x4e, 0xd6, 0x6e, 0x4a, 0x5c, 0xd7, 0x7a, 0x37, 0x36, 0x0c,
+    0xde, 0xdd, 0x8f, 0x44, 0xe8, 0xc2, 0xa7, 0x2c, 0x2b, 0xb5,
+    0xaf, 0x64, 0x4b, 0x61, 0x07, 0x02, 0x03, 0x01, 0x00, 0x01,
+    0x02, 0x81, 0x80, 0x74, 0x88, 0x64, 0x3f, 0x69, 0x45, 0x3a,
+    0x6d, 0xc7, 0x7f, 0xb9, 0xa3, 0xc0, 0x6e, 0xec, 0xdc, 0xd4,
+    0x5a, 0xb5, 0x32, 0x85, 0x5f, 0x19, 0xd4, 0xf8, 0xd4, 0x3f,
+    0x3c, 0xfa, 0xc2, 0xf6, 0x5f, 0xee, 0xe6, 0xba, 0x87, 0x74,
+    0x2e, 0xc7, 0x0c, 0xd4, 0x42, 0xb8, 0x66, 0x85, 0x9c, 0x7b,
+    0x24, 0x61, 0xaa, 0x16, 0x11, 0xf6, 0xb5, 0xb6, 0xa4, 0x0a,
+    0xc9, 0x55, 0x2e, 0x81, 0xa5, 0x47, 0x61, 0xcb, 0x25, 0x8f,
+    0xc2, 0x15, 0x7b, 0x0e, 0x7c, 0x36, 0x9f, 0x3a, 0xda, 0x58,
+    0x86, 0x1c, 0x5b, 0x83, 0x79, 0xe6, 0x2b, 0xcc, 0xe6, 0xfa,
+    0x2c, 0x61, 0xf2, 0x78, 0x80, 0x1b, 0xe2, 0xf3, 0x9d, 0x39,
+    0x2b, 0x65, 0x57, 0x91, 0x3d, 0x71, 0x99, 0x73, 0xa5, 0xc2,
+    0x79, 0x20, 0x8c, 0x07, 0x4f, 0xe5, 0xb4, 0x60, 0x1f, 0x99,
+    0xa2, 0xb1, 0x4f, 0x0c, 0xef, 0xbc, 0x59, 0x53, 0x00, 0x7d,
+    0xb1, 0x02, 0x41, 0x00, 0xfc, 0x7e, 0x23, 0x65, 0x70, 0xf8,
+    0xce, 0xd3, 0x40, 0x41, 0x80, 0x6a, 0x1d, 0x01, 0xd6, 0x01,
+    0xff, 0xb6, 0x1b, 0x3d, 0x3d, 0x59, 0x09, 0x33, 0x79, 0xc0,
+    0x4f, 0xde, 0x96, 0x27, 0x4b, 0x18, 0xc6, 0xd9, 0x78, 0xf1,
+    0xf4, 0x35, 0x46, 0xe9, 0x7c, 0x42, 0x7a, 0x5d, 0x9f, 0xef,
+    0x54, 0xb8, 0xf7, 0x9f, 0xc4, 0x33, 0x6c, 0xf3, 0x8c, 0x32,
+    0x46, 0x87, 0x67, 0x30, 0x7b, 0xa7, 0xac, 0xe3, 0x02, 0x41,
+    0x00, 0xfc, 0x2c, 0xdf, 0x0c, 0x0d, 0x88, 0xf5, 0xb1, 0x92,
+    0xa8, 0x93, 0x47, 0x63, 0x55, 0xf5, 0xca, 0x58, 0x43, 0xba,
+    0x1c, 0xe5, 0x9e, 0xb6, 0x95, 0x05, 0xcd, 0xb5, 0x82, 0xdf,
+    0xeb, 0x04, 0x53, 0x9d, 0xbd, 0xc2, 0x38, 0x16, 0xb3, 0x62,
+    0xdd, 0xa1, 0x46, 0xdb, 0x6d, 0x97, 0x93, 0x9f, 0x8a, 0xc3,
+    0x9b, 0x64, 0x7e, 0x42, 0xe3, 0x32, 0x57, 0x19, 0x1b, 0xd5,
+    0x6e, 0x85, 0xfa, 0xb8, 0x8d, 0x02, 0x41, 0x00, 0xbc, 0x3d,
+    0xde, 0x6d, 0xd6, 0x97, 0xe8, 0xba, 0x9e, 0x81, 0x37, 0x17,
+    0xe5, 0xa0, 0x64, 0xc9, 0x00, 0xb7, 0xe7, 0xfe, 0xf4, 0x29,
+    0xd9, 0x2e, 0x43, 0x6b, 0x19, 0x20, 0xbd, 0x99, 0x75, 0xe7,
+    0x76, 0xf8, 0xd3, 0xae, 0xaf, 0x7e, 0xb8, 0xeb, 0x81, 0xf4,
+    0x9d, 0xfe, 0x07, 0x2b, 0x0b, 0x63, 0x0b, 0x5a, 0x55, 0x90,
+    0x71, 0x7d, 0xf1, 0xdb, 0xd9, 0xb1, 0x41, 0x41, 0x68, 0x2f,
+    0x4e, 0x39, 0x02, 0x40, 0x5a, 0x34, 0x66, 0xd8, 0xf5, 0xe2,
+    0x7f, 0x18, 0xb5, 0x00, 0x6e, 0x26, 0x84, 0x27, 0x14, 0x93,
+    0xfb, 0xfc, 0xc6, 0x0f, 0x5e, 0x27, 0xe6, 0xe1, 0xe9, 0xc0,
+    0x8a, 0xe4, 0x34, 0xda, 0xe9, 0xa2, 0x4b, 0x73, 0xbc, 0x8c,
+    0xb9, 0xba, 0x13, 0x6c, 0x7a, 0x2b, 0x51, 0x84, 0xa3, 0x4a,
+    0xe0, 0x30, 0x10, 0x06, 0x7e, 0xed, 0x17, 0x5a, 0x14, 0x00,
+    0xc9, 0xef, 0x85, 0xea, 0x52, 0x2c, 0xbc, 0x65, 0x02, 0x40,
+    0x51, 0xe3, 0xf2, 0x83, 0x19, 0x9b, 0xc4, 0x1e, 0x2f, 0x50,
+    0x3d, 0xdf, 0x5a, 0xa2, 0x18, 0xca, 0x5f, 0x2e, 0x49, 0xaf,
+    0x6f, 0xcc, 0xfa, 0x65, 0x77, 0x94, 0xb5, 0xa1, 0x0a, 0xa9,
+    0xd1, 0x8a, 0x39, 0x37, 0xf4, 0x0b, 0xa0, 0xd7, 0x82, 0x27,
+    0x5e, 0xae, 0x17, 0x17, 0xa1, 0x1e, 0x54, 0x34, 0xbf, 0x6e,
+    0xc4, 0x8e, 0x99, 0x5d, 0x08, 0xf1, 0x2d, 0x86, 0x9d, 0xa5,
+    0x20, 0x1b, 0xe5, 0xdf
 };
 
 #ifndef OPENSSL_NO_DH
@@ -1353,127 +236,19 @@
  * structure.
  */
 static const unsigned char kExampleECKeyDER[] = {
-    0x30,
-    0x77,
-    0x02,
-    0x01,
-    0x01,
-    0x04,
-    0x20,
-    0x07,
-    0x0f,
-    0x08,
-    0x72,
-    0x7a,
-    0xd4,
-    0xa0,
-    0x4a,
-    0x9c,
-    0xdd,
-    0x59,
-    0xc9,
-    0x4d,
-    0x89,
-    0x68,
-    0x77,
-    0x08,
-    0xb5,
-    0x6f,
-    0xc9,
-    0x5d,
-    0x30,
-    0x77,
-    0x0e,
-    0xe8,
-    0xd1,
-    0xc9,
-    0xce,
-    0x0a,
-    0x8b,
-    0xb4,
-    0x6a,
-    0xa0,
-    0x0a,
-    0x06,
-    0x08,
-    0x2a,
-    0x86,
-    0x48,
-    0xce,
-    0x3d,
-    0x03,
-    0x01,
-    0x07,
-    0xa1,
-    0x44,
-    0x03,
-    0x42,
-    0x00,
-    0x04,
-    0xe6,
-    0x2b,
-    0x69,
-    0xe2,
-    0xbf,
-    0x65,
-    0x9f,
-    0x97,
-    0xbe,
-    0x2f,
-    0x1e,
-    0x0d,
-    0x94,
-    0x8a,
-    0x4c,
-    0xd5,
-    0x97,
-    0x6b,
-    0xb7,
-    0xa9,
-    0x1e,
-    0x0d,
-    0x46,
-    0xfb,
-    0xdd,
-    0xa9,
-    0xa9,
-    0x1e,
-    0x9d,
-    0xdc,
-    0xba,
-    0x5a,
-    0x01,
-    0xe7,
-    0xd6,
-    0x97,
-    0xa8,
-    0x0a,
-    0x18,
-    0xf9,
-    0xc3,
-    0xc4,
-    0xa3,
-    0x1e,
-    0x56,
-    0xe2,
-    0x7c,
-    0x83,
-    0x48,
-    0xdb,
-    0x16,
-    0x1a,
-    0x1c,
-    0xf5,
-    0x1d,
-    0x7e,
-    0xf1,
-    0x94,
-    0x2d,
-    0x4b,
-    0xcf,
-    0x72,
-    0x22,
-    0xc1,
+    0x30, 0x77, 0x02, 0x01, 0x01, 0x04, 0x20, 0x07, 0x0f, 0x08,
+    0x72, 0x7a, 0xd4, 0xa0, 0x4a, 0x9c, 0xdd, 0x59, 0xc9, 0x4d,
+    0x89, 0x68, 0x77, 0x08, 0xb5, 0x6f, 0xc9, 0x5d, 0x30, 0x77,
+    0x0e, 0xe8, 0xd1, 0xc9, 0xce, 0x0a, 0x8b, 0xb4, 0x6a, 0xa0,
+    0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01,
+    0x07, 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0xe6, 0x2b, 0x69,
+    0xe2, 0xbf, 0x65, 0x9f, 0x97, 0xbe, 0x2f, 0x1e, 0x0d, 0x94,
+    0x8a, 0x4c, 0xd5, 0x97, 0x6b, 0xb7, 0xa9, 0x1e, 0x0d, 0x46,
+    0xfb, 0xdd, 0xa9, 0xa9, 0x1e, 0x9d, 0xdc, 0xba, 0x5a, 0x01,
+    0xe7, 0xd6, 0x97, 0xa8, 0x0a, 0x18, 0xf9, 0xc3, 0xc4, 0xa3,
+    0x1e, 0x56, 0xe2, 0x7c, 0x83, 0x48, 0xdb, 0x16, 0x1a, 0x1c,
+    0xf5, 0x1d, 0x7e, 0xf1, 0x94, 0x2d, 0x4b, 0xcf, 0x72, 0x22,
+    0xc1
 };
 
 /* P-384 sample EC private key in PKCS8 format (no public key) */
@@ -2140,856 +915,91 @@
  *   -paramfile dsa_param.pem -pkeyopt type:fips186_4 -out dsa_priv.pem
  */
 static const unsigned char dsa_key[] = {
-    0x30,
-    0x82,
-    0x03,
-    0x4e,
-    0x02,
-    0x01,
-    0x00,
-    0x02,
-    0x82,
-    0x01,
-    0x01,
-    0x00,
-    0xda,
-    0xb3,
-    0x46,
-    0x4d,
-    0x54,
-    0x57,
-    0xc7,
-    0xb4,
-    0x61,
-    0xa0,
-    0x6f,
-    0x66,
-    0x17,
-    0xda,
-    0xeb,
-    0x90,
-    0xf0,
-    0xa3,
-    0xd1,
-    0x29,
-    0xc9,
-    0x5f,
-    0xf2,
-    0x21,
-    0x3d,
-    0x85,
-    0xa3,
-    0x4a,
-    0xf0,
-    0xf8,
-    0x36,
-    0x39,
-    0x1b,
-    0xe3,
-    0xee,
-    0x37,
-    0x70,
-    0x06,
-    0x9b,
-    0xe8,
-    0xe3,
-    0x0a,
-    0xd2,
-    0xf1,
-    0xf6,
-    0xc4,
-    0x42,
-    0x23,
-    0x1f,
-    0x74,
-    0x78,
-    0xc2,
-    0x16,
-    0xf5,
-    0xce,
-    0xd6,
-    0xab,
-    0xa0,
-    0xc6,
-    0xe8,
-    0x99,
-    0x3d,
-    0xf8,
-    0x8b,
-    0xfb,
-    0x47,
-    0xf8,
-    0x5e,
-    0x05,
-    0x68,
-    0x6d,
-    0x8b,
-    0xa8,
-    0xad,
-    0xa1,
-    0xc2,
-    0x3a,
-    0x4e,
-    0xe0,
-    0xad,
-    0xec,
-    0x38,
-    0x75,
-    0x21,
-    0x55,
-    0x22,
-    0xce,
-    0xa2,
-    0xe9,
-    0xe5,
-    0x3b,
-    0xd7,
-    0x44,
-    0xeb,
-    0x5a,
-    0x03,
-    0x59,
-    0xa0,
-    0xc5,
-    0x7a,
-    0x92,
-    0x59,
-    0x7d,
-    0x7a,
-    0x07,
-    0x80,
-    0xfc,
-    0x4e,
-    0xf8,
-    0x56,
-    0x7e,
-    0xf1,
-    0x06,
-    0xe0,
-    0xba,
-    0xb2,
-    0xe7,
-    0x5b,
-    0x22,
-    0x55,
-    0xee,
-    0x4b,
-    0x42,
-    0x61,
-    0x67,
-    0x2c,
-    0x43,
-    0x9a,
-    0x38,
-    0x2b,
-    0x17,
-    0xc2,
-    0x62,
-    0x12,
-    0x8b,
-    0x0b,
-    0x22,
-    0x8c,
-    0x0c,
-    0x1c,
-    0x1c,
-    0x92,
-    0xb1,
-    0xec,
-    0x70,
-    0xce,
-    0x0f,
-    0x8c,
-    0xff,
-    0x8d,
-    0x21,
-    0xf9,
-    0x19,
-    0x68,
-    0x4d,
-    0x32,
-    0x59,
-    0x78,
-    0x42,
-    0x1d,
-    0x0c,
-    0xc5,
-    0x1a,
-    0xcb,
-    0x28,
-    0xe2,
-    0xc1,
-    0x1a,
-    0x35,
-    0xf1,
-    0x42,
-    0x0a,
-    0x19,
-    0x39,
-    0xfa,
-    0x83,
-    0xd1,
-    0xb4,
-    0xaa,
-    0x69,
-    0x0f,
-    0xc2,
-    0x8e,
-    0xf9,
-    0x59,
-    0x2c,
-    0xee,
-    0x11,
-    0xfc,
-    0x3e,
-    0x4b,
-    0x44,
-    0xfb,
-    0x9a,
-    0x32,
-    0xc8,
-    0x78,
-    0x23,
-    0x56,
-    0x85,
-    0x49,
-    0x21,
-    0x43,
-    0x12,
-    0x79,
-    0xbd,
-    0xa0,
-    0x70,
-    0x47,
-    0x2f,
-    0xae,
-    0xb6,
-    0xd7,
-    0x6c,
-    0xc6,
-    0x07,
-    0x76,
-    0xa9,
-    0x8a,
-    0xa2,
-    0x16,
-    0x02,
-    0x89,
-    0x1f,
-    0x1a,
-    0xd1,
-    0xa2,
-    0x96,
-    0x56,
-    0xd1,
-    0x1f,
-    0x10,
-    0xe1,
-    0xe5,
-    0x9f,
-    0x3f,
-    0xdd,
-    0x09,
-    0x0c,
-    0x40,
-    0x90,
-    0x71,
-    0xef,
-    0x14,
-    0x41,
-    0x02,
-    0x82,
-    0x3a,
-    0x6b,
-    0xe1,
-    0xf8,
-    0x2c,
-    0x5d,
-    0xbe,
-    0xfd,
-    0x1b,
-    0x02,
-    0x1d,
-    0x00,
-    0xe0,
-    0x20,
-    0xe0,
-    0x7c,
-    0x02,
-    0x16,
-    0xa7,
-    0x6c,
-    0x6a,
-    0x19,
-    0xba,
-    0xd5,
-    0x83,
-    0x73,
-    0xf3,
-    0x7d,
-    0x31,
-    0xef,
-    0xa7,
-    0xe1,
-    0x5d,
-    0x5b,
-    0x7f,
-    0xf3,
-    0xfc,
-    0xda,
-    0x84,
-    0x31,
-    0x02,
-    0x82,
-    0x01,
-    0x01,
-    0x00,
-    0x83,
-    0xdb,
-    0xa1,
-    0xbc,
-    0x3e,
-    0xc7,
-    0x29,
-    0xa5,
-    0x6a,
-    0x5c,
-    0x2c,
-    0xe8,
-    0x7a,
-    0x8c,
-    0x7e,
-    0xe8,
-    0xb8,
-    0x3e,
-    0x13,
-    0x47,
-    0xcd,
-    0x36,
-    0x7e,
-    0x79,
-    0x30,
-    0x7a,
-    0x28,
-    0x03,
-    0xd3,
-    0xd4,
-    0xd2,
-    0xe3,
-    0xee,
-    0x3b,
-    0x46,
-    0xda,
-    0xe0,
-    0x71,
-    0xe6,
-    0xcf,
-    0x46,
-    0x86,
-    0x0a,
-    0x37,
-    0x57,
-    0xb6,
-    0xe9,
-    0xcf,
-    0xa1,
-    0x78,
-    0x19,
-    0xb8,
-    0x72,
-    0x9f,
-    0x30,
-    0x8c,
-    0x2a,
-    0x04,
-    0x7c,
-    0x2f,
-    0x0c,
-    0x27,
-    0xa7,
-    0xb3,
-    0x23,
-    0xe0,
-    0x46,
-    0xf2,
-    0x75,
-    0x0c,
-    0x03,
-    0x4c,
-    0xad,
-    0xfb,
-    0xc1,
-    0xcb,
-    0x28,
-    0xcd,
-    0xa0,
-    0x63,
-    0xdb,
-    0x44,
-    0x88,
-    0xe0,
-    0xda,
-    0x6c,
-    0x5b,
-    0x89,
-    0xb2,
-    0x5b,
-    0x40,
-    0x6d,
-    0xeb,
-    0x78,
-    0x7a,
-    0xd5,
-    0xaf,
-    0x40,
-    0x52,
-    0x46,
-    0x63,
-    0x92,
-    0x13,
-    0x0d,
-    0xee,
-    0xee,
-    0xf9,
-    0x53,
-    0xca,
-    0x2d,
-    0x4e,
-    0x3b,
-    0x13,
-    0xd8,
-    0x0f,
-    0x50,
-    0xd0,
-    0x44,
-    0x57,
-    0x67,
-    0x0f,
-    0x45,
-    0x8f,
-    0x21,
-    0x30,
-    0x97,
-    0x9e,
-    0x80,
-    0xd9,
-    0xd0,
-    0x91,
-    0xb7,
-    0xc9,
-    0x5a,
-    0x69,
-    0xda,
-    0xeb,
-    0xd5,
-    0xea,
-    0x37,
-    0xf6,
-    0xb3,
-    0xbe,
-    0x1f,
-    0x24,
-    0xf1,
-    0x55,
-    0x14,
-    0x28,
-    0x05,
-    0xb5,
-    0xd8,
-    0x84,
-    0x0f,
-    0x62,
-    0x85,
-    0xaa,
-    0xec,
-    0x77,
-    0x64,
-    0xfd,
-    0x80,
-    0x7c,
-    0x41,
-    0x00,
-    0x88,
-    0xa3,
-    0x79,
-    0x7d,
-    0x4f,
-    0x6f,
-    0xe3,
-    0x76,
-    0xf4,
-    0xb5,
-    0x97,
-    0xb7,
-    0xeb,
-    0x67,
-    0x28,
-    0xba,
-    0x07,
-    0x1a,
-    0x59,
-    0x32,
-    0xc1,
-    0x53,
-    0xd9,
-    0x05,
-    0x6b,
-    0x63,
-    0x93,
-    0xce,
-    0xa1,
-    0xd9,
-    0x7a,
-    0xb2,
-    0xff,
-    0x1c,
-    0x12,
-    0x0a,
-    0x9a,
-    0xe5,
-    0x51,
-    0x1e,
-    0xba,
-    0xfc,
-    0x95,
-    0x2e,
-    0x28,
-    0xa9,
-    0xfc,
-    0x4c,
-    0xed,
-    0x7b,
-    0x05,
-    0xca,
-    0x67,
-    0xe0,
-    0x2d,
-    0xd7,
-    0x54,
-    0xb3,
-    0x05,
-    0x1c,
-    0x23,
-    0x2b,
-    0x35,
-    0x2e,
-    0x19,
-    0x48,
-    0x59,
-    0x0e,
-    0x58,
-    0xa8,
-    0x01,
-    0x56,
-    0xfb,
-    0x78,
-    0x90,
-    0xba,
-    0x08,
-    0x77,
-    0x94,
-    0x45,
-    0x05,
-    0x13,
-    0xc7,
-    0x6b,
-    0x96,
-    0xd2,
-    0xa3,
-    0xa6,
-    0x01,
-    0x9f,
-    0x34,
-    0x02,
-    0x82,
-    0x01,
-    0x00,
-    0x16,
-    0x1a,
-    0xb4,
-    0x6d,
-    0x9f,
-    0x16,
-    0x6c,
-    0xcc,
-    0x91,
-    0x66,
-    0xfe,
-    0x30,
-    0xeb,
-    0x8e,
-    0x44,
-    0xba,
-    0x2b,
-    0x7a,
-    0xc9,
-    0xa8,
-    0x95,
-    0xf2,
-    0xa6,
-    0x38,
-    0xd8,
-    0xaf,
-    0x3e,
-    0x91,
-    0x68,
-    0xe8,
-    0x52,
-    0xf3,
-    0x97,
-    0x37,
-    0x70,
-    0xf2,
-    0x47,
-    0xa3,
-    0xf4,
-    0x62,
-    0x26,
-    0xf5,
-    0x3b,
-    0x71,
-    0x52,
-    0x50,
-    0x15,
-    0x9c,
-    0x6d,
-    0xa6,
-    0x6d,
-    0x92,
-    0x4c,
-    0x48,
-    0x76,
-    0x31,
-    0x54,
-    0x48,
-    0xa5,
-    0x99,
-    0x7a,
-    0xd4,
-    0x61,
-    0xf7,
-    0x21,
-    0x44,
-    0xe7,
-    0xd8,
-    0x82,
-    0xc3,
-    0x50,
-    0xd3,
-    0xd9,
-    0xd4,
-    0x66,
-    0x20,
-    0xab,
-    0x70,
-    0x4c,
-    0x97,
-    0x9b,
-    0x8d,
-    0xac,
-    0x1f,
-    0x78,
-    0x27,
-    0x1e,
-    0x47,
-    0xf8,
-    0x3b,
-    0xd1,
-    0x55,
-    0x73,
-    0xf3,
-    0xb4,
-    0x8e,
-    0x6d,
-    0x45,
-    0x40,
-    0x54,
-    0xc6,
-    0xd8,
-    0x95,
-    0x15,
-    0x27,
-    0xb7,
-    0x5f,
-    0x65,
-    0xaa,
-    0xcb,
-    0x24,
-    0xc9,
-    0x49,
-    0x87,
-    0x32,
-    0xad,
-    0xcb,
-    0xf8,
-    0x35,
-    0x63,
-    0x56,
-    0x72,
-    0x7c,
-    0x4e,
-    0x6c,
-    0xad,
-    0x5f,
-    0x26,
-    0x8c,
-    0xd2,
-    0x80,
-    0x41,
-    0xaf,
-    0x88,
-    0x23,
-    0x20,
-    0x03,
-    0xa4,
-    0xd5,
-    0x3c,
-    0x53,
-    0x54,
-    0xb0,
-    0x3d,
-    0xed,
-    0x0e,
-    0x9e,
-    0x53,
-    0x0a,
-    0x63,
-    0x5f,
-    0xfd,
-    0x28,
-    0x57,
-    0x09,
-    0x07,
-    0x73,
-    0xf4,
-    0x0c,
-    0xd4,
-    0x71,
-    0x5d,
-    0x6b,
-    0xa0,
-    0xd7,
-    0x86,
-    0x99,
-    0x29,
-    0x9b,
-    0xca,
-    0xfb,
-    0xcc,
-    0xd6,
-    0x2f,
-    0xfe,
-    0xbe,
-    0x94,
-    0xef,
-    0x1a,
-    0x0e,
-    0x55,
-    0x84,
-    0xa7,
-    0xaf,
-    0x7b,
-    0xfa,
-    0xed,
-    0x77,
-    0x61,
-    0x28,
-    0x22,
-    0xee,
-    0x6b,
-    0x11,
-    0xdd,
-    0xb0,
-    0x17,
-    0x1e,
-    0x06,
-    0xe4,
-    0x29,
-    0x4c,
-    0xc2,
-    0x3f,
-    0xd6,
-    0x75,
-    0xb6,
-    0x08,
-    0x04,
-    0x55,
-    0x13,
-    0x48,
-    0x4f,
-    0x44,
-    0xea,
-    0x8d,
-    0xaf,
-    0xcb,
-    0xac,
-    0x22,
-    0xc4,
-    0x6a,
-    0xb3,
-    0x86,
-    0xe5,
-    0x47,
-    0xa9,
-    0xb5,
-    0x72,
-    0x17,
-    0x23,
-    0x11,
-    0x81,
-    0x7f,
-    0x00,
-    0x00,
-    0x67,
-    0x5c,
-    0xf4,
-    0x58,
-    0xcc,
-    0xe2,
-    0x46,
-    0xce,
-    0xf5,
-    0x6d,
-    0xd8,
-    0x18,
-    0x91,
-    0xc4,
-    0x20,
-    0xbf,
-    0x07,
-    0x48,
-    0x45,
-    0xfd,
-    0x02,
-    0x1c,
-    0x2f,
-    0x68,
-    0x44,
-    0xcb,
-    0xfb,
-    0x6b,
-    0xcb,
-    0x8d,
-    0x02,
-    0x49,
-    0x7c,
-    0xee,
-    0xd2,
-    0xa6,
-    0xd3,
-    0x43,
-    0xb8,
-    0xa4,
-    0x09,
-    0xb7,
-    0xc1,
-    0xd4,
-    0x4b,
-    0xc3,
-    0x66,
-    0xa7,
-    0xe0,
-    0x21,
+    0x30, 0x82, 0x03, 0x4e, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01,
+    0x01, 0x00, 0xda, 0xb3, 0x46, 0x4d, 0x54, 0x57, 0xc7, 0xb4,
+    0x61, 0xa0, 0x6f, 0x66, 0x17, 0xda, 0xeb, 0x90, 0xf0, 0xa3,
+    0xd1, 0x29, 0xc9, 0x5f, 0xf2, 0x21, 0x3d, 0x85, 0xa3, 0x4a,
+    0xf0, 0xf8, 0x36, 0x39, 0x1b, 0xe3, 0xee, 0x37, 0x70, 0x06,
+    0x9b, 0xe8, 0xe3, 0x0a, 0xd2, 0xf1, 0xf6, 0xc4, 0x42, 0x23,
+    0x1f, 0x74, 0x78, 0xc2, 0x16, 0xf5, 0xce, 0xd6, 0xab, 0xa0,
+    0xc6, 0xe8, 0x99, 0x3d, 0xf8, 0x8b, 0xfb, 0x47, 0xf8, 0x5e,
+    0x05, 0x68, 0x6d, 0x8b, 0xa8, 0xad, 0xa1, 0xc2, 0x3a, 0x4e,
+    0xe0, 0xad, 0xec, 0x38, 0x75, 0x21, 0x55, 0x22, 0xce, 0xa2,
+    0xe9, 0xe5, 0x3b, 0xd7, 0x44, 0xeb, 0x5a, 0x03, 0x59, 0xa0,
+    0xc5, 0x7a, 0x92, 0x59, 0x7d, 0x7a, 0x07, 0x80, 0xfc, 0x4e,
+    0xf8, 0x56, 0x7e, 0xf1, 0x06, 0xe0, 0xba, 0xb2, 0xe7, 0x5b,
+    0x22, 0x55, 0xee, 0x4b, 0x42, 0x61, 0x67, 0x2c, 0x43, 0x9a,
+    0x38, 0x2b, 0x17, 0xc2, 0x62, 0x12, 0x8b, 0x0b, 0x22, 0x8c,
+    0x0c, 0x1c, 0x1c, 0x92, 0xb1, 0xec, 0x70, 0xce, 0x0f, 0x8c,
+    0xff, 0x8d, 0x21, 0xf9, 0x19, 0x68, 0x4d, 0x32, 0x59, 0x78,
+    0x42, 0x1d, 0x0c, 0xc5, 0x1a, 0xcb, 0x28, 0xe2, 0xc1, 0x1a,
+    0x35, 0xf1, 0x42, 0x0a, 0x19, 0x39, 0xfa, 0x83, 0xd1, 0xb4,
+    0xaa, 0x69, 0x0f, 0xc2, 0x8e, 0xf9, 0x59, 0x2c, 0xee, 0x11,
+    0xfc, 0x3e, 0x4b, 0x44, 0xfb, 0x9a, 0x32, 0xc8, 0x78, 0x23,
+    0x56, 0x85, 0x49, 0x21, 0x43, 0x12, 0x79, 0xbd, 0xa0, 0x70,
+    0x47, 0x2f, 0xae, 0xb6, 0xd7, 0x6c, 0xc6, 0x07, 0x76, 0xa9,
+    0x8a, 0xa2, 0x16, 0x02, 0x89, 0x1f, 0x1a, 0xd1, 0xa2, 0x96,
+    0x56, 0xd1, 0x1f, 0x10, 0xe1, 0xe5, 0x9f, 0x3f, 0xdd, 0x09,
+    0x0c, 0x40, 0x90, 0x71, 0xef, 0x14, 0x41, 0x02, 0x82, 0x3a,
+    0x6b, 0xe1, 0xf8, 0x2c, 0x5d, 0xbe, 0xfd, 0x1b, 0x02, 0x1d,
+    0x00, 0xe0, 0x20, 0xe0, 0x7c, 0x02, 0x16, 0xa7, 0x6c, 0x6a,
+    0x19, 0xba, 0xd5, 0x83, 0x73, 0xf3, 0x7d, 0x31, 0xef, 0xa7,
+    0xe1, 0x5d, 0x5b, 0x7f, 0xf3, 0xfc, 0xda, 0x84, 0x31, 0x02,
+    0x82, 0x01, 0x01, 0x00, 0x83, 0xdb, 0xa1, 0xbc, 0x3e, 0xc7,
+    0x29, 0xa5, 0x6a, 0x5c, 0x2c, 0xe8, 0x7a, 0x8c, 0x7e, 0xe8,
+    0xb8, 0x3e, 0x13, 0x47, 0xcd, 0x36, 0x7e, 0x79, 0x30, 0x7a,
+    0x28, 0x03, 0xd3, 0xd4, 0xd2, 0xe3, 0xee, 0x3b, 0x46, 0xda,
+    0xe0, 0x71, 0xe6, 0xcf, 0x46, 0x86, 0x0a, 0x37, 0x57, 0xb6,
+    0xe9, 0xcf, 0xa1, 0x78, 0x19, 0xb8, 0x72, 0x9f, 0x30, 0x8c,
+    0x2a, 0x04, 0x7c, 0x2f, 0x0c, 0x27, 0xa7, 0xb3, 0x23, 0xe0,
+    0x46, 0xf2, 0x75, 0x0c, 0x03, 0x4c, 0xad, 0xfb, 0xc1, 0xcb,
+    0x28, 0xcd, 0xa0, 0x63, 0xdb, 0x44, 0x88, 0xe0, 0xda, 0x6c,
+    0x5b, 0x89, 0xb2, 0x5b, 0x40, 0x6d, 0xeb, 0x78, 0x7a, 0xd5,
+    0xaf, 0x40, 0x52, 0x46, 0x63, 0x92, 0x13, 0x0d, 0xee, 0xee,
+    0xf9, 0x53, 0xca, 0x2d, 0x4e, 0x3b, 0x13, 0xd8, 0x0f, 0x50,
+    0xd0, 0x44, 0x57, 0x67, 0x0f, 0x45, 0x8f, 0x21, 0x30, 0x97,
+    0x9e, 0x80, 0xd9, 0xd0, 0x91, 0xb7, 0xc9, 0x5a, 0x69, 0xda,
+    0xeb, 0xd5, 0xea, 0x37, 0xf6, 0xb3, 0xbe, 0x1f, 0x24, 0xf1,
+    0x55, 0x14, 0x28, 0x05, 0xb5, 0xd8, 0x84, 0x0f, 0x62, 0x85,
+    0xaa, 0xec, 0x77, 0x64, 0xfd, 0x80, 0x7c, 0x41, 0x00, 0x88,
+    0xa3, 0x79, 0x7d, 0x4f, 0x6f, 0xe3, 0x76, 0xf4, 0xb5, 0x97,
+    0xb7, 0xeb, 0x67, 0x28, 0xba, 0x07, 0x1a, 0x59, 0x32, 0xc1,
+    0x53, 0xd9, 0x05, 0x6b, 0x63, 0x93, 0xce, 0xa1, 0xd9, 0x7a,
+    0xb2, 0xff, 0x1c, 0x12, 0x0a, 0x9a, 0xe5, 0x51, 0x1e, 0xba,
+    0xfc, 0x95, 0x2e, 0x28, 0xa9, 0xfc, 0x4c, 0xed, 0x7b, 0x05,
+    0xca, 0x67, 0xe0, 0x2d, 0xd7, 0x54, 0xb3, 0x05, 0x1c, 0x23,
+    0x2b, 0x35, 0x2e, 0x19, 0x48, 0x59, 0x0e, 0x58, 0xa8, 0x01,
+    0x56, 0xfb, 0x78, 0x90, 0xba, 0x08, 0x77, 0x94, 0x45, 0x05,
+    0x13, 0xc7, 0x6b, 0x96, 0xd2, 0xa3, 0xa6, 0x01, 0x9f, 0x34,
+    0x02, 0x82, 0x01, 0x00, 0x16, 0x1a, 0xb4, 0x6d, 0x9f, 0x16,
+    0x6c, 0xcc, 0x91, 0x66, 0xfe, 0x30, 0xeb, 0x8e, 0x44, 0xba,
+    0x2b, 0x7a, 0xc9, 0xa8, 0x95, 0xf2, 0xa6, 0x38, 0xd8, 0xaf,
+    0x3e, 0x91, 0x68, 0xe8, 0x52, 0xf3, 0x97, 0x37, 0x70, 0xf2,
+    0x47, 0xa3, 0xf4, 0x62, 0x26, 0xf5, 0x3b, 0x71, 0x52, 0x50,
+    0x15, 0x9c, 0x6d, 0xa6, 0x6d, 0x92, 0x4c, 0x48, 0x76, 0x31,
+    0x54, 0x48, 0xa5, 0x99, 0x7a, 0xd4, 0x61, 0xf7, 0x21, 0x44,
+    0xe7, 0xd8, 0x82, 0xc3, 0x50, 0xd3, 0xd9, 0xd4, 0x66, 0x20,
+    0xab, 0x70, 0x4c, 0x97, 0x9b, 0x8d, 0xac, 0x1f, 0x78, 0x27,
+    0x1e, 0x47, 0xf8, 0x3b, 0xd1, 0x55, 0x73, 0xf3, 0xb4, 0x8e,
+    0x6d, 0x45, 0x40, 0x54, 0xc6, 0xd8, 0x95, 0x15, 0x27, 0xb7,
+    0x5f, 0x65, 0xaa, 0xcb, 0x24, 0xc9, 0x49, 0x87, 0x32, 0xad,
+    0xcb, 0xf8, 0x35, 0x63, 0x56, 0x72, 0x7c, 0x4e, 0x6c, 0xad,
+    0x5f, 0x26, 0x8c, 0xd2, 0x80, 0x41, 0xaf, 0x88, 0x23, 0x20,
+    0x03, 0xa4, 0xd5, 0x3c, 0x53, 0x54, 0xb0, 0x3d, 0xed, 0x0e,
+    0x9e, 0x53, 0x0a, 0x63, 0x5f, 0xfd, 0x28, 0x57, 0x09, 0x07,
+    0x73, 0xf4, 0x0c, 0xd4, 0x71, 0x5d, 0x6b, 0xa0, 0xd7, 0x86,
+    0x99, 0x29, 0x9b, 0xca, 0xfb, 0xcc, 0xd6, 0x2f, 0xfe, 0xbe,
+    0x94, 0xef, 0x1a, 0x0e, 0x55, 0x84, 0xa7, 0xaf, 0x7b, 0xfa,
+    0xed, 0x77, 0x61, 0x28, 0x22, 0xee, 0x6b, 0x11, 0xdd, 0xb0,
+    0x17, 0x1e, 0x06, 0xe4, 0x29, 0x4c, 0xc2, 0x3f, 0xd6, 0x75,
+    0xb6, 0x08, 0x04, 0x55, 0x13, 0x48, 0x4f, 0x44, 0xea, 0x8d,
+    0xaf, 0xcb, 0xac, 0x22, 0xc4, 0x6a, 0xb3, 0x86, 0xe5, 0x47,
+    0xa9, 0xb5, 0x72, 0x17, 0x23, 0x11, 0x81, 0x7f, 0x00, 0x00,
+    0x67, 0x5c, 0xf4, 0x58, 0xcc, 0xe2, 0x46, 0xce, 0xf5, 0x6d,
+    0xd8, 0x18, 0x91, 0xc4, 0x20, 0xbf, 0x07, 0x48, 0x45, 0xfd,
+    0x02, 0x1c, 0x2f, 0x68, 0x44, 0xcb, 0xfb, 0x6b, 0xcb, 0x8d,
+    0x02, 0x49, 0x7c, 0xee, 0xd2, 0xa6, 0xd3, 0x43, 0xb8, 0xa4,
+    0x09, 0xb7, 0xc1, 0xd4, 0x4b, 0xc3, 0x66, 0xa7, 0xe0, 0x21
 };
 static const unsigned char dsa_p[] = {
     0x00, 0xda, 0xb3, 0x46, 0x4d, 0x54, 0x57, 0xc7, 0xb4, 0x61, 0xa0, 0x6f, 0x66, 0x17, 0xda,
diff -Nru openssl-3.5.6/test/evp_extra_test.c openssl-3.5.7/test/evp_extra_test.c
--- openssl-3.5.6/test/evp_extra_test.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/evp_extra_test.c	2026-06-09 13:54:25.000000000 +0200
@@ -2228,6 +2228,29 @@
     return ret;
 }
 
+#ifndef OPENSSL_NO_POLY1305
+/* Test that EVP_MAC_final fails for Poly1305 when no key was set */
+static int test_evp_mac_poly1305_no_key(void)
+{
+    int ret = 0;
+    EVP_MAC *mac = NULL;
+    EVP_MAC_CTX *ctx = NULL;
+    unsigned char out[16];
+    size_t outl = 0;
+
+    if (!TEST_ptr(mac = EVP_MAC_fetch(testctx, "Poly1305", testpropq))
+        || !TEST_ptr(ctx = EVP_MAC_CTX_new(mac))
+        || !TEST_int_eq(EVP_MAC_init(ctx, NULL, 0, NULL), 1)
+        || !TEST_int_eq(EVP_MAC_final(ctx, out, &outl, sizeof(out)), 0))
+        goto err;
+    ret = 1;
+err:
+    EVP_MAC_CTX_free(ctx);
+    EVP_MAC_free(mac);
+    return ret;
+}
+#endif
+
 static int test_d2i_AutoPrivateKey(int i)
 {
     int ret = 0;
@@ -2592,9 +2615,10 @@
 
     uint8_t ciphertext[128];
     size_t ctext_len = sizeof(ciphertext);
-
+    size_t ctext_len_param = 0;
     uint8_t plaintext[8];
     size_t ptext_len = sizeof(plaintext);
+    size_t ptext_len_param = 0;
 
     uint8_t sm2_id[] = { 1, 2, 3, 4, 'l', 'e', 't', 't', 'e', 'r' };
 
@@ -2724,7 +2748,8 @@
         if (!TEST_true(EVP_PKEY_CTX_set_params(cctx, sparams)))
             goto done;
 
-        if (!TEST_true(EVP_PKEY_encrypt(cctx, ciphertext, &ctext_len, kMsg,
+        ctext_len_param = ctext_len;
+        if (!TEST_true(EVP_PKEY_encrypt(cctx, ciphertext, &ctext_len_param, kMsg,
                 sizeof(kMsg))))
             goto done;
 
@@ -2734,8 +2759,9 @@
         if (!TEST_true(EVP_PKEY_CTX_set_params(cctx, sparams)))
             goto done;
 
-        if (!TEST_int_gt(EVP_PKEY_decrypt(cctx, plaintext, &ptext_len, ciphertext,
-                             ctext_len),
+        ptext_len_param = ptext_len;
+        if (!TEST_int_gt(EVP_PKEY_decrypt(cctx, plaintext, &ptext_len_param, ciphertext,
+                             ctext_len_param),
                 0))
             goto done;
 
@@ -2755,7 +2781,7 @@
             goto done;
         }
 
-        if (!TEST_true(ptext_len == sizeof(kMsg)))
+        if (!TEST_true(ptext_len_param == sizeof(kMsg)))
             goto done;
 
         if (!TEST_true(memcmp(plaintext, kMsg, sizeof(kMsg)) == 0))
@@ -3976,6 +4002,85 @@
     return ret;
 }
 
+static int test_RSA_verify_recover_rejects_short_buffer(void)
+{
+    int ret = 0;
+    int recovered_cap = 0;
+    EVP_PKEY *pkey = NULL;
+    EVP_PKEY_CTX *sign_ctx = NULL, *verify_ctx = NULL;
+    unsigned char *sig = NULL, *recovered = NULL;
+    size_t sig_len = 0, recovered_len = 0;
+    unsigned long err = 0;
+    unsigned char shortbuf[] = { 0xa5, 0x5a };
+    const unsigned char shortbuf_expected[] = { 0xa5, 0x5a };
+    unsigned char digest[32];
+    size_t i;
+
+    for (i = 0; i < sizeof(digest); i++)
+        digest[i] = (unsigned char)i;
+
+    if (OSSL_PROVIDER_available(testctx, "fips"))
+        return TEST_skip("Test skipped for FIPS provider");
+
+    if (!TEST_ptr(pkey = load_example_rsa_key())
+        || !TEST_ptr(sign_ctx = EVP_PKEY_CTX_new_from_pkey(testctx, pkey, NULL))
+        || !TEST_int_gt(EVP_PKEY_sign_init(sign_ctx), 0)
+        || !TEST_int_gt(EVP_PKEY_CTX_set_rsa_padding(sign_ctx,
+                            RSA_PKCS1_PADDING),
+            0)
+        || !TEST_int_gt(EVP_PKEY_CTX_set_signature_md(sign_ctx, EVP_sha256()),
+            0)
+        || !TEST_int_gt(EVP_PKEY_sign(sign_ctx, NULL, &sig_len, digest,
+                            sizeof(digest)),
+            0)
+        || !TEST_ptr(sig = OPENSSL_malloc(sig_len))
+        || !TEST_int_gt(EVP_PKEY_sign(sign_ctx, sig, &sig_len, digest,
+                            sizeof(digest)),
+            0)
+        || !TEST_int_gt(recovered_cap = EVP_PKEY_get_size(pkey), 0)
+        || !TEST_ptr(recovered = OPENSSL_malloc(recovered_cap))
+        || !TEST_ptr(verify_ctx = EVP_PKEY_CTX_new_from_pkey(testctx, pkey,
+                         NULL))
+        || !TEST_int_gt(EVP_PKEY_verify_recover_init(verify_ctx), 0)
+        || !TEST_int_gt(EVP_PKEY_CTX_set_rsa_padding(verify_ctx,
+                            RSA_PKCS1_PADDING),
+            0)
+        || !TEST_int_gt(EVP_PKEY_CTX_set_signature_md(verify_ctx, EVP_sha256()),
+            0))
+        goto done;
+
+    recovered_len = (size_t)recovered_cap;
+    if (!TEST_int_gt(EVP_PKEY_verify_recover(verify_ctx, recovered,
+                         &recovered_len, sig, sig_len),
+            0)
+        || !TEST_size_t_eq(recovered_len, sizeof(digest))
+        || !TEST_mem_eq(recovered, recovered_len, digest, sizeof(digest)))
+        goto done;
+
+    ERR_clear_error();
+    recovered_len = 1;
+    if (!TEST_int_le(EVP_PKEY_verify_recover(verify_ctx, shortbuf,
+                         &recovered_len, sig, sig_len),
+            0))
+        goto done;
+
+    err = ERR_peek_error();
+    if (!TEST_int_eq(ERR_GET_LIB(err), ERR_LIB_PROV)
+        || !TEST_int_eq(ERR_GET_REASON(err), PROV_R_OUTPUT_BUFFER_TOO_SMALL)
+        || !TEST_mem_eq(shortbuf, sizeof(shortbuf), shortbuf_expected,
+            sizeof(shortbuf_expected)))
+        goto done;
+
+    ret = 1;
+done:
+    EVP_PKEY_CTX_free(sign_ctx);
+    EVP_PKEY_CTX_free(verify_ctx);
+    EVP_PKEY_free(pkey);
+    OPENSSL_free(sig);
+    OPENSSL_free(recovered);
+    return ret;
+}
+
 static int test_RSA_encrypt(void)
 {
     int ret = 0;
@@ -6528,6 +6633,142 @@
 }
 #endif
 
+static int test_aes_gcm_siv_empty_data(void)
+{
+    unsigned char key[16] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
+        0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10 };
+    unsigned char nonce[12] = { 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x11,
+        0x22, 0x33, 0x44, 0x55 };
+    unsigned char aad[33] = "this AAD was never authenticated";
+    unsigned char zero_tag[16] = { 0 };
+    unsigned char real_tag[16];
+    unsigned char out[16];
+    int outl, ret = 0;
+    EVP_CIPHER_CTX *ctx = NULL;
+    EVP_CIPHER *c = EVP_CIPHER_fetch(NULL, "AES-128-GCM-SIV", NULL);
+
+    if (c == NULL) {
+        return TEST_skip("AES-128-GCM-SIV cipher is not available");
+    }
+
+    /* Compute the CORRECT tag for (key,nonce,aad,pt="") via encrypt */
+    ctx = EVP_CIPHER_CTX_new();
+    if (!TEST_ptr(ctx)
+        || !TEST_true(EVP_EncryptInit_ex2(ctx, c, key, nonce, NULL))
+        || !TEST_true(EVP_EncryptUpdate(ctx, NULL, &outl, aad, sizeof(aad))) /* AAD */
+        || !TEST_true(EVP_EncryptUpdate(ctx, out, &outl, aad, 0)) /* empty PT, out!=NULL */
+        || !TEST_true(EVP_EncryptFinal_ex(ctx, out, &outl))
+        || !TEST_true(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_GET_TAG, 16, real_tag)))
+        goto err;
+    EVP_CIPHER_CTX_free(ctx);
+
+    /* SANITY: decrypt with CORRECT tag and an explicit empty-PT Update */
+    ctx = EVP_CIPHER_CTX_new();
+    if (!TEST_ptr(ctx)
+        || !TEST_true(EVP_DecryptInit_ex2(ctx, c, key, nonce, NULL))
+        || !TEST_true(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG, 16, real_tag))
+        || !TEST_true(EVP_DecryptUpdate(ctx, NULL, &outl, aad, sizeof(aad)))
+        || !TEST_true(EVP_DecryptUpdate(ctx, out, &outl, aad, 0)) /* force aes_gcm_siv_decrypt(len=0) */
+        || !TEST_true(EVP_DecryptFinal_ex(ctx, out, &outl)))
+        goto err;
+    EVP_CIPHER_CTX_free(ctx);
+
+    /* FORGERY A: AAD only, NO ciphertext Update, ALL-ZERO tag */
+    ctx = EVP_CIPHER_CTX_new();
+    if (!TEST_ptr(ctx)
+        || !TEST_true(EVP_DecryptInit_ex2(ctx, c, key, nonce, NULL))
+        || !TEST_true(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG, 16, zero_tag))
+        || !TEST_true(EVP_DecryptUpdate(ctx, NULL, &outl, aad, sizeof(aad))) /* AAD only, out==NULL */
+        || !TEST_false(EVP_DecryptFinal_ex(ctx, out, &outl)))
+        goto err;
+    EVP_CIPHER_CTX_free(ctx);
+
+    /* FORGERY B: no AAD, no Update at all, ALL-ZERO tag */
+    ctx = EVP_CIPHER_CTX_new();
+    if (!TEST_ptr(ctx)
+        || !TEST_true(EVP_DecryptInit_ex2(ctx, c, key, nonce, NULL))
+        || !TEST_true(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG, 16, zero_tag))
+        || !TEST_false(EVP_DecryptFinal_ex(ctx, out, &outl)))
+        goto err;
+    EVP_CIPHER_CTX_free(ctx);
+
+    /* CONTROL: AAD only, NO ciphertext Update, CORRECT tag */
+    ctx = EVP_CIPHER_CTX_new();
+    if (!TEST_ptr(ctx)
+        || !TEST_true(EVP_DecryptInit_ex2(ctx, c, key, nonce, NULL))
+        || !TEST_true(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG, 16, real_tag))
+        || !TEST_true(EVP_DecryptUpdate(ctx, NULL, &outl, aad, sizeof(aad)))
+        || !TEST_true(EVP_DecryptFinal_ex(ctx, out, &outl)))
+        goto err;
+    EVP_CIPHER_CTX_free(ctx);
+    ctx = NULL;
+
+    ret = 1;
+err:
+    EVP_CIPHER_CTX_free(ctx);
+
+    EVP_CIPHER_free(c);
+    return ret;
+}
+
+/*
+ * AES-SIV reuse-without-rekey:
+ *   msg1: legit non-empty CT, tag verifies, final_ret=0
+ *   msg2: no reinit (or reinit with key=NULL), set forged tag,
+ *         AAD only, DecryptFinal -> does stale final_ret leak through?
+ */
+static int test_aes_siv_ctx_reuse(void)
+{
+    unsigned char key[32] = { 7 }; /* AES-128-SIV => 2*16 */
+    unsigned char pt[9] = "payload!";
+    unsigned char ct[9], tagbuf[16], out[16], zero16[16] = { 0 };
+    unsigned char aad[14] = "forged header";
+    int outl, ret = 0;
+    EVP_CIPHER_CTX *e = NULL, *d = NULL;
+    EVP_CIPHER *c = EVP_CIPHER_fetch(NULL, "AES-128-SIV", NULL);
+
+    if (c == NULL) {
+        return TEST_skip("AES-128-SIV cipher is not available");
+    }
+
+    /* produce a valid (ct,tag) for msg1 */
+    e = EVP_CIPHER_CTX_new();
+    if (!TEST_ptr(e)
+        || !TEST_true(EVP_EncryptInit_ex2(e, c, key, NULL, NULL))
+        || !TEST_true(EVP_EncryptUpdate(e, NULL, &outl, (unsigned char *)"hdr1", 4))
+        || !TEST_true(EVP_EncryptUpdate(e, ct, &outl, pt, sizeof(pt)))
+        || !TEST_true(EVP_EncryptFinal_ex(e, out, &outl))
+        || !TEST_true(EVP_CIPHER_CTX_ctrl(e, EVP_CTRL_AEAD_GET_TAG, 16, tagbuf))) {
+        EVP_CIPHER_CTX_free(e);
+        goto err;
+    }
+    EVP_CIPHER_CTX_free(e);
+
+    /* msg1 decrypt */
+    d = EVP_CIPHER_CTX_new();
+    if (!TEST_ptr(d)
+        || !TEST_true(EVP_DecryptInit_ex2(d, c, key, NULL, NULL))
+        || !TEST_true(EVP_CIPHER_CTX_ctrl(d, EVP_CTRL_AEAD_SET_TAG, 16, tagbuf))
+        || !TEST_true(EVP_DecryptUpdate(d, NULL, &outl, (unsigned char *)"hdr1", 4))
+        || !TEST_true(EVP_DecryptUpdate(d, out, &outl, ct, sizeof(ct)))
+        || !TEST_true(EVP_DecryptFinal_ex(d, out, &outl)))
+        goto err;
+
+    /* msg2 on SAME ctx, reinit with key=NULL => initkey skipped, final_ret should be reset */
+    if (!TEST_true(EVP_DecryptInit_ex2(d, NULL, NULL, NULL, NULL))
+        || !TEST_true(EVP_CIPHER_CTX_ctrl(d, EVP_CTRL_AEAD_SET_TAG, 16, zero16))
+        || !TEST_true(EVP_DecryptUpdate(d, NULL, &outl, aad, sizeof(aad))) /* forged AAD */
+        || !TEST_false(EVP_DecryptFinal_ex(d, out, &outl)))
+        goto err;
+
+    ret = 1;
+
+err:
+    EVP_CIPHER_CTX_free(d);
+    EVP_CIPHER_free(c);
+    return ret;
+}
+
 static int test_invalid_ctx_for_digest(void)
 {
     int ret;
@@ -6586,6 +6827,333 @@
     return ret;
 }
 
+/*
+ * Cross-driver round-trip test for AEAD one-shot vs streaming paths.
+ *
+ * The streaming path (EVP_CipherUpdate/Final, dispatched to
+ * OSSL_FUNC_CIPHER_UPDATE/_FINAL) is treated as the oracle.  For each
+ * AEAD configuration we encrypt and decrypt the same (key, iv, aad, pt),
+ * driving the body in two combinations:
+ *
+ *   1.  body encrypt via EVP_Cipher() (one-shot, OSSL_FUNC_CIPHER_CIPHER),
+ *       body decrypt via EVP_CipherUpdate (streaming).
+ *   2.  body encrypt via EVP_CipherUpdate, body decrypt via EVP_Cipher().
+ *
+ * Both combinations must recover the plaintext and verify the tag.  AAD
+ * is always fed via EVP_CipherUpdate(NULL, ...): OCB's one-shot is body
+ * only and the asymmetric "AAD streaming, body one-shot" call shape is
+ * the natural pattern a caller reaching for EVP_Cipher() for throughput
+ * would write anyway.
+ *
+ * CVE-2026-45445 (AES-OCB EVP_Cipher() ignored IV) was a silent failure
+ * in this matrix: the one-shot encrypt path produced ciphertext under
+ * Offset_0 = 0 regardless of IV, which the streaming decrypt path then
+ * could not verify.  Adding this cross-check catches the same class of
+ * bug for any future AEAD whose one-shot dispatch diverges from its
+ * streaming dispatch.
+ */
+typedef struct {
+    const char *name; /* EVP_CIPHER fetch name */
+    size_t keylen;
+    size_t ivlen;
+    size_t taglen;
+    int is_ccm; /* needs length-up-front + tag-before-body dance */
+} AEAD_ONESHOT_CFG;
+
+static const AEAD_ONESHOT_CFG aead_oneshot_cfgs[] = {
+    { "AES-128-GCM", 16, 12, 16, 0 },
+    { "AES-256-GCM", 32, 12, 16, 0 },
+    { "AES-128-CCM", 16, 12, 16, 1 },
+    { "AES-256-CCM", 32, 12, 16, 1 },
+    { "AES-128-OCB", 16, 12, 16, 0 },
+    { "AES-256-OCB", 32, 12, 16, 0 },
+    { "ChaCha20-Poly1305", 32, 12, 16, 0 }
+};
+
+/*
+ * Drive an encrypt or decrypt operation.  AAD always via EVP_CipherUpdate.
+ * Body via EVP_Cipher() when oneshot_body is non-zero, EVP_CipherUpdate
+ * otherwise.  On encrypt, fills *out and the caller-provided tag buffer.
+ * On decrypt, reads from in and verifies tag; returns 0 if verification
+ * fails (the test asserts the expected outcome).
+ */
+static int aead_oneshot_op(const AEAD_ONESHOT_CFG *cfg, int enc,
+    int oneshot_body, const unsigned char *key,
+    const unsigned char *iv, const unsigned char *aad,
+    size_t aad_len, const unsigned char *in, size_t in_len,
+    unsigned char *out, unsigned char *tag, const char **why)
+{
+    EVP_CIPHER_CTX *ctx = NULL;
+    EVP_CIPHER *cipher = NULL;
+    int outl = 0, tmpl = 0;
+    int ok = 0;
+    int body_rv;
+
+    *why = NULL;
+
+    if (!TEST_ptr(cipher = EVP_CIPHER_fetch(testctx, cfg->name, testpropq))) {
+        *why = "CIPHER_FETCH";
+        goto end;
+    }
+    if (!TEST_ptr(ctx = EVP_CIPHER_CTX_new())) {
+        *why = "CTX_NEW";
+        goto end;
+    }
+    if (!TEST_true(EVP_CipherInit_ex(ctx, cipher, NULL, NULL, NULL, enc))) {
+        *why = "INIT_CIPHER";
+        goto end;
+    }
+    if (!TEST_int_gt(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_IVLEN,
+                         (int)cfg->ivlen, NULL),
+            0)) {
+        *why = "SET_IVLEN";
+        goto end;
+    }
+    if (cfg->is_ccm) {
+        /* Placeholder taglen on encrypt, real tag on decrypt; both before key+iv. */
+        if (!TEST_int_gt(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG,
+                             (int)cfg->taglen, enc ? NULL : tag),
+                0)) {
+            *why = "CCM_SET_TAG";
+            goto end;
+        }
+    }
+    if (!TEST_true(EVP_CipherInit_ex(ctx, NULL, NULL, key, iv, enc))) {
+        *why = "INIT_KEY_IV";
+        goto end;
+    }
+    if (cfg->is_ccm) {
+        if (!TEST_true(EVP_CipherUpdate(ctx, NULL, &outl, NULL, (int)in_len))) {
+            *why = "CCM_LEN_DECL";
+            goto end;
+        }
+    }
+    if (aad_len > 0
+        && !TEST_true(EVP_CipherUpdate(ctx, NULL, &outl, aad, (int)aad_len))) {
+        *why = "AAD";
+        goto end;
+    }
+    if (!enc && !cfg->is_ccm
+        && !TEST_int_gt(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG,
+                            (int)cfg->taglen, tag),
+            0)) {
+        *why = "SET_TAG";
+        goto end;
+    }
+
+    if (oneshot_body) {
+        body_rv = EVP_Cipher(ctx, out, in, (unsigned int)in_len);
+        if (cfg->is_ccm && !enc) {
+            /* CCM decrypt: 0 means tag verify failed, < 0 means error. */
+            if (!TEST_int_gt(body_rv, 0)) {
+                *why = "ONESHOT_DECRYPT";
+                goto end;
+            }
+        } else {
+            if (!TEST_int_ge(body_rv, 0)) {
+                *why = "ONESHOT_BODY";
+                goto end;
+            }
+        }
+        outl = (int)in_len;
+    } else {
+        if (!TEST_true(EVP_CipherUpdate(ctx, out, &outl, in, (int)in_len))) {
+            *why = enc ? "STREAM_BODY_ENC" : "STREAM_BODY_DEC";
+            goto end;
+        }
+    }
+
+    if (!cfg->is_ccm) {
+        if (!TEST_true(EVP_CipherFinal_ex(ctx, out + outl, &tmpl))) {
+            *why = enc ? "FINAL_ENC" : "FINAL_DEC";
+            goto end;
+        }
+    }
+
+    if (enc) {
+        if (!TEST_int_gt(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_GET_TAG,
+                             (int)cfg->taglen, tag),
+                0)) {
+            *why = "GET_TAG";
+            goto end;
+        }
+    }
+    ok = 1;
+end:
+    EVP_CIPHER_CTX_free(ctx);
+    EVP_CIPHER_free(cipher);
+    return ok;
+}
+
+/*
+ * For each AEAD row we run two AAD modes, and within each AAD mode two
+ * cross-driver round trips:
+ *
+ *   aad_mode 0:  no AAD.  Critical for catching the OCB-style bug: any
+ *                EVP_CipherUpdate(NULL, aad, ...) call before the body
+ *                would itself pass through the (correct) streaming
+ *                handler and apply the buffered IV, masking the one-shot
+ *                handler's failure to do so.  With aad_len == 0 we make
+ *                EVP_Cipher() the very first cipher operation on the
+ *                context, which is the shape the bug requires.
+ *
+ *   aad_mode 1:  with AAD via streaming.  Catches divergence between the
+ *                drivers when AAD is in play.
+ *
+ *   leg 0:       encrypt-oneshot   + decrypt-streaming
+ *   leg 1:       encrypt-streaming + decrypt-oneshot
+ *
+ * The test index encodes (cipher, aad_mode) so a failure points at both.
+ */
+static int test_aead_oneshot_roundtrip(int idx)
+{
+    static const unsigned char fixed_key[32] = {
+        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+        0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+        0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+        0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
+    };
+    static const unsigned char fixed_iv[12] = {
+        0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab
+    };
+    static const unsigned char fixed_aad[] = "extra:context";
+    static const unsigned char fixed_pt[] = "THE QUICK BROWN FOX JUMPS OVER LAZY!!";
+    const AEAD_ONESHOT_CFG *cfg = &aead_oneshot_cfgs[idx / 2];
+    int with_aad = idx % 2;
+    size_t aad_len = with_aad ? sizeof(fixed_aad) - 1 : 0;
+    size_t pt_len = sizeof(fixed_pt) - 1;
+    EVP_CIPHER *probe = NULL;
+    unsigned char ct[64], pt[64];
+    unsigned char tag_oneshot[16], tag_stream[16];
+    const char *why = NULL;
+    int leg, ok = 0;
+
+    /*
+     * Probe for the cipher: a build with no-ocb / no-chacha / etc. will
+     * not have it, and we treat that as a pass (nothing to test here).
+     */
+    ERR_set_mark();
+    probe = EVP_CIPHER_fetch(testctx, cfg->name, testpropq);
+    ERR_pop_to_mark();
+    if (probe == NULL) {
+        TEST_info("skipping, '%s' is not available", cfg->name);
+        return 1;
+    }
+    EVP_CIPHER_free(probe);
+
+    for (leg = 0; leg <= 1; leg++) {
+        int enc_oneshot = (leg == 0);
+        unsigned char *tag = enc_oneshot ? tag_oneshot : tag_stream;
+
+        memset(ct, 0, sizeof(ct));
+        memset(pt, 0, sizeof(pt));
+        memset(tag, 0, cfg->taglen);
+
+        if (!aead_oneshot_op(cfg, /*enc=*/1, /*oneshot_body=*/enc_oneshot,
+                fixed_key, fixed_iv, fixed_aad, aad_len,
+                fixed_pt, pt_len, ct, tag, &why)) {
+            TEST_error("%s (%s): encrypt leg %d (%s body) failed at %s",
+                cfg->name, with_aad ? "with AAD" : "no AAD",
+                leg, enc_oneshot ? "oneshot" : "stream",
+                why ? why : "?");
+            goto end;
+        }
+        if (!aead_oneshot_op(cfg, /*enc=*/0, /*oneshot_body=*/!enc_oneshot,
+                fixed_key, fixed_iv, fixed_aad, aad_len,
+                ct, pt_len, pt, tag, &why)) {
+            TEST_error("%s (%s): decrypt leg %d (%s body) failed at %s",
+                cfg->name, with_aad ? "with AAD" : "no AAD",
+                leg, enc_oneshot ? "stream" : "oneshot",
+                why ? why : "?");
+            goto end;
+        }
+        if (!TEST_mem_eq(pt, pt_len, fixed_pt, pt_len)) {
+            TEST_error("%s (%s): leg %d: recovered plaintext differs",
+                cfg->name, with_aad ? "with AAD" : "no AAD", leg);
+            goto end;
+        }
+    }
+
+    /*
+     * Both legs share the same (key, iv, aad, pt) and must therefore
+     * agree on the tag bit-for-bit, regardless of which driver computed
+     * it.  This catches the OCB-style failure where the one-shot path
+     * silently emits a different ciphertext/tag from the streaming path.
+     */
+    if (!TEST_mem_eq(tag_oneshot, cfg->taglen, tag_stream, cfg->taglen)) {
+        TEST_error("%s (%s): oneshot-encrypt tag != streaming-encrypt tag",
+            cfg->name, with_aad ? "with AAD" : "no AAD");
+        goto end;
+    }
+    ok = 1;
+end:
+    return ok;
+}
+
+#ifndef OPENSSL_NO_DES
+static int test_EVP_CIPHER_get_type_des_ede3(void)
+{
+    const EVP_CIPHER *cipher = NULL;
+    int base_type, variant_type, nid;
+    int ret = 0;
+
+    /* Get the base type from CFB64 (should be NID_des_ede3_cfb64) */
+    cipher = EVP_des_ede3_cfb64();
+    base_type = EVP_CIPHER_get_type(cipher);
+
+    /* Test CFB64 - should map to the same base_type */
+    variant_type = EVP_CIPHER_get_type(cipher);
+    nid = EVP_CIPHER_get_nid(cipher);
+
+    /* Verify the returned type */
+    if (!TEST_int_eq(variant_type, base_type))
+        goto end;
+
+    /* Verify that variant_type and nid are same for 64-bit variants */
+    if (!TEST_int_eq(variant_type, nid))
+        goto end;
+
+    if (!TEST_int_eq(NID_des_ede3_cfb64, variant_type))
+        goto end;
+
+    /* Test CFB8 - should map to the same base_type */
+    cipher = EVP_des_ede3_cfb8();
+    variant_type = EVP_CIPHER_get_type(cipher);
+    nid = EVP_CIPHER_get_nid(cipher);
+
+    /* Verify the returned type */
+    if (!TEST_int_eq(variant_type, base_type))
+        goto end;
+
+    /* Verify that variant_type and nid are different for variants */
+    if (!TEST_int_ne(variant_type, nid))
+        goto end;
+
+    if (!TEST_int_eq(NID_des_ede3_cfb64, variant_type))
+        goto end;
+
+    /* Test CFB1 - should map to the same base_type */
+    cipher = EVP_des_ede3_cfb1();
+    variant_type = EVP_CIPHER_get_type(cipher);
+    nid = EVP_CIPHER_get_nid(cipher);
+
+    /* Verify the returned type */
+    if (!TEST_int_eq(variant_type, base_type))
+        goto end;
+
+    /* Verify that variant_type and nid are different for variants */
+    if (!TEST_int_ne(variant_type, nid))
+        goto end;
+
+    if (!TEST_int_eq(NID_des_ede3_cfb64, variant_type))
+        goto end;
+
+    ret = 1;
+end:
+    return ret;
+}
+#endif /*OPENSSL_NO_DES */
+
 static int test_evp_cipher_pipeline(void)
 {
     OSSL_PROVIDER *fake_pipeline = NULL;
@@ -6854,6 +7422,9 @@
 #endif
     ADD_TEST(test_EVP_Digest);
     ADD_TEST(test_EVP_md_null);
+#ifndef OPENSSL_NO_POLY1305
+    ADD_TEST(test_evp_mac_poly1305_no_key);
+#endif
     ADD_ALL_TESTS(test_EVP_PKEY_sign, 3);
 #ifndef OPENSSL_NO_DEPRECATED_3_0
     ADD_ALL_TESTS(test_EVP_PKEY_sign_with_app_method, 2);
@@ -6904,6 +7475,7 @@
     ADD_TEST(test_RSA_get_set_params);
     ADD_TEST(test_RSA_OAEP_set_get_params);
     ADD_TEST(test_RSA_OAEP_set_null_label);
+    ADD_TEST(test_RSA_verify_recover_rejects_short_buffer);
     ADD_TEST(test_RSA_encrypt);
 #ifndef OPENSSL_NO_DEPRECATED_3_0
     ADD_TEST(test_RSA_legacy);
@@ -6932,7 +7504,8 @@
     ADD_ALL_TESTS(test_evp_iv_aes, 12);
 #ifndef OPENSSL_NO_DES
     ADD_ALL_TESTS(test_evp_iv_des, 6);
-#endif
+    ADD_TEST(test_EVP_CIPHER_get_type_des_ede3);
+#endif /* OPENSSL_NO_DES */
 #ifndef OPENSSL_NO_BF
     ADD_ALL_TESTS(test_evp_bf_default_keylen, 4);
 #endif
@@ -6987,6 +7560,12 @@
     ADD_TEST(test_aes_rc4_keylen_change_cve_2023_5363);
 #endif
 
+    ADD_ALL_TESTS(test_aead_oneshot_roundtrip, 2 * OSSL_NELEM(aead_oneshot_cfgs));
+
+    /* Test cases for CVE-2026-45446 */
+    ADD_TEST(test_aes_gcm_siv_empty_data);
+    ADD_TEST(test_aes_siv_ctx_reuse);
+
     ADD_TEST(test_invalid_ctx_for_digest);
 
     ADD_TEST(test_evp_cipher_negative_length);
diff -Nru openssl-3.5.6/test/evp_kdf_test.c openssl-3.5.7/test/evp_kdf_test.c
--- openssl-3.5.6/test/evp_kdf_test.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/evp_kdf_test.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2018-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2018-2026 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright (c) 2018-2020, Oracle and/or its affiliates.  All rights reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
@@ -683,7 +683,7 @@
     int mode = 0;
     OSSL_PARAM *params;
 
-    if (sizeof(len) > 32)
+    if (SIZE_MAX > 0xFFFFFFFFU)
         len = SIZE_MAX;
 
     params = construct_pbkdf2_params("passwordPASSWORDpassword", "sha256",
@@ -1003,22 +1003,8 @@
     EVP_KDF_CTX *kctx;
     OSSL_PARAM params[7];
     static unsigned char input_key[] = {
-        0x57,
-        0xD0,
-        0x29,
-        0x72,
-        0x98,
-        0xFF,
-        0xD9,
-        0xD3,
-        0x5D,
-        0xE5,
-        0xA4,
-        0x7F,
-        0xB4,
-        0xBD,
-        0xE2,
-        0x4B,
+        0x57, 0xD0, 0x29, 0x72, 0x98, 0xFF, 0xD9, 0xD3, 0x5D, 0xE5,
+        0xA4, 0x7F, 0xB4, 0xBD, 0xE2, 0x4B
     };
     static unsigned char constants[][5] = {
         { 0x00, 0x00, 0x00, 0x02, 0x99 },
@@ -1073,38 +1059,10 @@
     EVP_KDF_CTX *kctx;
     OSSL_PARAM params[7];
     static unsigned char input_key[] = {
-        0xB9,
-        0xD6,
-        0x82,
-        0x8B,
-        0x20,
-        0x56,
-        0xB7,
-        0xBE,
-        0x65,
-        0x6D,
-        0x88,
-        0xA1,
-        0x23,
-        0xB1,
-        0xFA,
-        0xC6,
-        0x82,
-        0x14,
-        0xAC,
-        0x2B,
-        0x72,
-        0x7E,
-        0xCF,
-        0x5F,
-        0x69,
-        0xAF,
-        0xE0,
-        0xC4,
-        0xDF,
-        0x2A,
-        0x6D,
-        0x2C,
+        0xB9, 0xD6, 0x82, 0x8B, 0x20, 0x56, 0xB7, 0xBE, 0x65, 0x6D,
+        0x88, 0xA1, 0x23, 0xB1, 0xFA, 0xC6, 0x82, 0x14, 0xAC, 0x2B,
+        0x72, 0x7E, 0xCF, 0x5F, 0x69, 0xAF, 0xE0, 0xC4, 0xDF, 0x2A,
+        0x6D, 0x2C
     };
     static unsigned char constants[][5] = {
         { 0x00, 0x00, 0x00, 0x02, 0x99 },
@@ -1112,108 +1070,18 @@
         { 0x00, 0x00, 0x00, 0x02, 0x55 },
     };
     static unsigned char outputs[][32] = {
-        {
-            0xE4,
-            0x67,
-            0xF9,
-            0xA9,
-            0x55,
-            0x2B,
-            0xC7,
-            0xD3,
-            0x15,
-            0x5A,
-            0x62,
-            0x20,
-            0xAF,
-            0x9C,
-            0x19,
-            0x22,
-            0x0E,
-            0xEE,
-            0xD4,
-            0xFF,
-            0x78,
-            0xB0,
-            0xD1,
-            0xE6,
-            0xA1,
-            0x54,
-            0x49,
-            0x91,
-            0x46,
-            0x1A,
-            0x9E,
-            0x50,
-        },
-        {
-            0x41,
-            0x2A,
-            0xEF,
-            0xC3,
-            0x62,
-            0xA7,
-            0x28,
-            0x5F,
-            0xC3,
-            0x96,
-            0x6C,
-            0x6A,
-            0x51,
-            0x81,
-            0xE7,
-            0x60,
-            0x5A,
-            0xE6,
-            0x75,
-            0x23,
-            0x5B,
-            0x6D,
-            0x54,
-            0x9F,
-            0xBF,
-            0xC9,
-            0xAB,
-            0x66,
-            0x30,
-            0xA4,
-            0xC6,
-            0x04,
-        },
-        {
-            0xFA,
-            0x62,
-            0x4F,
-            0xA0,
-            0xE5,
-            0x23,
-            0x99,
-            0x3F,
-            0xA3,
-            0x88,
-            0xAE,
-            0xFD,
-            0xC6,
-            0x7E,
-            0x67,
-            0xEB,
-            0xCD,
-            0x8C,
-            0x08,
-            0xE8,
-            0xA0,
-            0x24,
-            0x6B,
-            0x1D,
-            0x73,
-            0xB0,
-            0xD1,
-            0xDD,
-            0x9F,
-            0xC5,
-            0x82,
-            0xB0,
-        },
+        { 0xE4, 0x67, 0xF9, 0xA9, 0x55, 0x2B, 0xC7, 0xD3, 0x15, 0x5A,
+            0x62, 0x20, 0xAF, 0x9C, 0x19, 0x22, 0x0E, 0xEE, 0xD4, 0xFF,
+            0x78, 0xB0, 0xD1, 0xE6, 0xA1, 0x54, 0x49, 0x91, 0x46, 0x1A,
+            0x9E, 0x50 },
+        { 0x41, 0x2A, 0xEF, 0xC3, 0x62, 0xA7, 0x28, 0x5F, 0xC3, 0x96,
+            0x6C, 0x6A, 0x51, 0x81, 0xE7, 0x60, 0x5A, 0xE6, 0x75, 0x23,
+            0x5B, 0x6D, 0x54, 0x9F, 0xBF, 0xC9, 0xAB, 0x66, 0x30, 0xA4,
+            0xC6, 0x04 },
+        { 0xFA, 0x62, 0x4F, 0xA0, 0xE5, 0x23, 0x99, 0x3F, 0xA3, 0x88,
+            0xAE, 0xFD, 0xC6, 0x7E, 0x67, 0xEB, 0xCD, 0x8C, 0x08, 0xE8,
+            0xA0, 0x24, 0x6B, 0x1D, 0x73, 0xB0, 0xD1, 0xDD, 0x9F, 0xC5,
+            0x82, 0xB0 },
     };
     static unsigned char iv[16] = { 0 };
     unsigned char result[32] = { 0 };
@@ -1430,56 +1298,14 @@
     char *label = "prf", *digest = "sha256", *prf_input = "test",
          *mac = "HMAC";
     static unsigned char input_key[] = {
-        0x37,
-        0x05,
-        0xD9,
-        0x60,
-        0x80,
-        0xC1,
-        0x77,
-        0x28,
-        0xA0,
-        0xE8,
-        0x00,
-        0xEA,
-        0xB6,
-        0xE0,
-        0xD2,
-        0x3C,
+        0x37, 0x05, 0xD9, 0x60, 0x80, 0xC1, 0x77, 0x28, 0xA0, 0xE8,
+        0x00, 0xEA, 0xB6, 0xE0, 0xD2, 0x3C
     };
     static unsigned char output[] = {
-        0x9D,
-        0x18,
-        0x86,
-        0x16,
-        0xF6,
-        0x38,
-        0x52,
-        0xFE,
-        0x86,
-        0x91,
-        0x5B,
-        0xB8,
-        0x40,
-        0xB4,
-        0xA8,
-        0x86,
-        0xFF,
-        0x3E,
-        0x6B,
-        0xB0,
-        0xF8,
-        0x19,
-        0xB4,
-        0x9B,
-        0x89,
-        0x33,
-        0x93,
-        0xD3,
-        0x93,
-        0x85,
-        0x42,
-        0x95,
+        0x9D, 0x18, 0x86, 0x16, 0xF6, 0x38, 0x52, 0xFE, 0x86, 0x91,
+        0x5B, 0xB8, 0x40, 0xB4, 0xA8, 0x86, 0xFF, 0x3E, 0x6B, 0xB0,
+        0xF8, 0x19, 0xB4, 0x9B, 0x89, 0x33, 0x93, 0xD3, 0x93, 0x85,
+        0x42, 0x95
     };
     unsigned char result[sizeof(output)] = { 0 };
 
@@ -1512,88 +1338,17 @@
     char *label = "prf", *digest = "sha384", *prf_input = "test",
          *mac = "HMAC";
     static unsigned char input_key[] = {
-        0x6D,
-        0x40,
-        0x4D,
-        0x37,
-        0xFA,
-        0xF7,
-        0x9F,
-        0x9D,
-        0xF0,
-        0xD3,
-        0x35,
-        0x68,
-        0xD3,
-        0x20,
-        0x66,
-        0x98,
-        0x00,
-        0xEB,
-        0x48,
-        0x36,
-        0x47,
-        0x2E,
-        0xA8,
-        0xA0,
-        0x26,
-        0xD1,
-        0x6B,
-        0x71,
-        0x82,
-        0x46,
-        0x0C,
-        0x52,
+        0x6D, 0x40, 0x4D, 0x37, 0xFA, 0xF7, 0x9F, 0x9D, 0xF0, 0xD3,
+        0x35, 0x68, 0xD3, 0x20, 0x66, 0x98, 0x00, 0xEB, 0x48, 0x36,
+        0x47, 0x2E, 0xA8, 0xA0, 0x26, 0xD1, 0x6B, 0x71, 0x82, 0x46,
+        0x0C, 0x52
     };
     static unsigned char output[] = {
-        0x98,
-        0x01,
-        0xF6,
-        0x9A,
-        0x36,
-        0x8C,
-        0x2B,
-        0xF6,
-        0x75,
-        0xE5,
-        0x95,
-        0x21,
-        0xE1,
-        0x77,
-        0xD9,
-        0xA0,
-        0x7F,
-        0x67,
-        0xEF,
-        0xE1,
-        0xCF,
-        0xDE,
-        0x8D,
-        0x3C,
-        0x8D,
-        0x6F,
-        0x6A,
-        0x02,
-        0x56,
-        0xE3,
-        0xB1,
-        0x7D,
-        0xB3,
-        0xC1,
-        0xB6,
-        0x2A,
-        0xD1,
-        0xB8,
-        0x55,
-        0x33,
-        0x60,
-        0xD1,
-        0x73,
-        0x67,
-        0xEB,
-        0x15,
-        0x14,
-        0xD2,
+        0x98, 0x01, 0xF6, 0x9A, 0x36, 0x8C, 0x2B, 0xF6, 0x75, 0xE5,
+        0x95, 0x21, 0xE1, 0x77, 0xD9, 0xA0, 0x7F, 0x67, 0xEF, 0xE1,
+        0xCF, 0xDE, 0x8D, 0x3C, 0x8D, 0x6F, 0x6A, 0x02, 0x56, 0xE3,
+        0xB1, 0x7D, 0xB3, 0xC1, 0xB6, 0x2A, 0xD1, 0xB8, 0x55, 0x33,
+        0x60, 0xD1, 0x73, 0x67, 0xEB, 0x15, 0x14, 0xD2
     };
     unsigned char result[sizeof(output)] = { 0 };
 
@@ -1636,103 +1391,22 @@
     int use_separator = 0;
 
     static unsigned char input_key[] = {
-        0xc1,
-        0x0b,
-        0x15,
-        0x2e,
-        0x8c,
-        0x97,
-        0xb7,
-        0x7e,
-        0x18,
-        0x70,
-        0x4e,
-        0x0f,
-        0x0b,
-        0xd3,
-        0x83,
-        0x05,
+        0xc1, 0x0b, 0x15, 0x2e, 0x8c, 0x97, 0xb7, 0x7e, 0x18, 0x70,
+        0x4e, 0x0f, 0x0b, 0xd3, 0x83, 0x05
     };
     static unsigned char fixed_input[] = {
-        0x98,
-        0xcd,
-        0x4c,
-        0xbb,
-        0xbe,
-        0xbe,
-        0x15,
-        0xd1,
-        0x7d,
-        0xc8,
-        0x6e,
-        0x6d,
-        0xba,
-        0xd8,
-        0x00,
-        0xa2,
-        0xdc,
-        0xbd,
-        0x64,
-        0xf7,
-        0xc7,
-        0xad,
-        0x0e,
-        0x78,
-        0xe9,
-        0xcf,
-        0x94,
-        0xff,
-        0xdb,
-        0xa8,
-        0x9d,
-        0x03,
-        0xe9,
-        0x7e,
-        0xad,
-        0xf6,
-        0xc4,
-        0xf7,
-        0xb8,
-        0x06,
-        0xca,
-        0xf5,
-        0x2a,
-        0xa3,
-        0x8f,
-        0x09,
-        0xd0,
-        0xeb,
-        0x71,
-        0xd7,
-        0x1f,
-        0x49,
-        0x7b,
-        0xcc,
-        0x69,
-        0x06,
-        0xb4,
-        0x8d,
-        0x36,
-        0xc4,
-
+        0x98, 0xcd, 0x4c, 0xbb, 0xbe, 0xbe, 0x15, 0xd1,
+        0x7d, 0xc8, 0x6e, 0x6d, 0xba, 0xd8, 0x00, 0xa2,
+        0xdc, 0xbd, 0x64, 0xf7, 0xc7, 0xad, 0x0e, 0x78,
+        0xe9, 0xcf, 0x94, 0xff, 0xdb, 0xa8, 0x9d, 0x03,
+        0xe9, 0x7e, 0xad, 0xf6, 0xc4, 0xf7, 0xb8, 0x06,
+        0xca, 0xf5, 0x2a, 0xa3, 0x8f, 0x09, 0xd0, 0xeb,
+        0x71, 0xd7, 0x1f, 0x49, 0x7b, 0xcc, 0x69, 0x06,
+        0xb4, 0x8d, 0x36, 0xc4
     };
     static unsigned char output[] = {
-        0x26,
-        0xfa,
-        0xf6,
-        0x19,
-        0x08,
-        0xad,
-        0x9e,
-        0xe8,
-        0x81,
-        0xb8,
-        0x30,
-        0x5c,
-        0x22,
-        0x1d,
-        0xb5,
-        0x3f,
+        0x26, 0xfa, 0xf6, 0x19, 0x08, 0xad, 0x9e, 0xe8, 0x81, 0xb8,
+        0x30, 0x5c, 0x22, 0x1d, 0xb5, 0x3f
     };
     unsigned char result[sizeof(output)] = { 0 };
 
diff -Nru openssl-3.5.6/test/evp_libctx_test.c openssl-3.5.7/test/evp_libctx_test.c
--- openssl-3.5.6/test/evp_libctx_test.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/evp_libctx_test.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2020-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2020-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -359,70 +359,13 @@
         0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10
     };
     unsigned char key[64] = {
-        0x00,
-        0x01,
-        0x02,
-        0x03,
-        0x04,
-        0x05,
-        0x06,
-        0x07,
-        0x08,
-        0x09,
-        0x0a,
-        0x0b,
-        0x0c,
-        0x0d,
-        0x0e,
-        0x0f,
-        0x01,
-        0x01,
-        0x02,
-        0x03,
-        0x04,
-        0x05,
-        0x06,
-        0x07,
-        0x08,
-        0x09,
-        0x0a,
-        0x0b,
-        0x0c,
-        0x0d,
-        0x0e,
-        0x0f,
-        0x02,
-        0x01,
-        0x02,
-        0x03,
-        0x04,
-        0x05,
-        0x06,
-        0x07,
-        0x08,
-        0x09,
-        0x0a,
-        0x0b,
-        0x0c,
-        0x0d,
-        0x0e,
-        0x0f,
-        0x03,
-        0x01,
-        0x02,
-        0x03,
-        0x04,
-        0x05,
-        0x06,
-        0x07,
-        0x08,
-        0x09,
-        0x0a,
-        0x0b,
-        0x0c,
-        0x0d,
-        0x0e,
-        0x0f,
+        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
+        0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x01, 0x01, 0x02, 0x03,
+        0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,
+        0x0e, 0x0f, 0x02, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+        0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x03, 0x01,
+        0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b,
+        0x0c, 0x0d, 0x0e, 0x0f
     };
     unsigned char iv[48] = {
         0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08,
@@ -503,104 +446,19 @@
     unsigned char out2[256];
     unsigned char out3[256];
     static const unsigned char in[32] = {
-        0x08,
-        0x09,
-        0x0a,
-        0x0b,
-        0x0c,
-        0x0d,
-        0x0e,
-        0x0f,
-        0xba,
-        0xbe,
-        0xba,
-        0xbe,
-        0x00,
-        0x00,
-        0xba,
-        0xbe,
-        0x01,
-        0x01,
-        0x02,
-        0x03,
-        0x04,
-        0x05,
-        0x06,
-        0x07,
-        0x08,
-        0x09,
-        0x0a,
-        0x0b,
-        0x0c,
-        0x0d,
-        0x0e,
-        0x0f,
+        0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xba, 0xbe,
+        0xba, 0xbe, 0x00, 0x00, 0xba, 0xbe, 0x01, 0x01, 0x02, 0x03,
+        0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,
+        0x0e, 0x0f
     };
     static const unsigned char key[64] = {
-        0x00,
-        0x01,
-        0x02,
-        0x03,
-        0x04,
-        0x05,
-        0x06,
-        0x07,
-        0x08,
-        0x09,
-        0x0a,
-        0x0b,
-        0x0c,
-        0x0d,
-        0x0e,
-        0x0f,
-        0x01,
-        0x01,
-        0x02,
-        0x03,
-        0x04,
-        0x05,
-        0x06,
-        0x07,
-        0x08,
-        0x09,
-        0x0a,
-        0x0b,
-        0x0c,
-        0x0d,
-        0x0e,
-        0x0f,
-        0x02,
-        0x01,
-        0x02,
-        0x03,
-        0x04,
-        0x05,
-        0x06,
-        0x07,
-        0x08,
-        0x09,
-        0x0a,
-        0x0b,
-        0x0c,
-        0x0d,
-        0x0e,
-        0x0f,
-        0x03,
-        0x01,
-        0x02,
-        0x03,
-        0x04,
-        0x05,
-        0x06,
-        0x07,
-        0x08,
-        0x09,
-        0x0a,
-        0x0b,
-        0x0c,
-        0x0d,
-        0x0e,
-        0x0f,
+        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
+        0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x01, 0x01, 0x02, 0x03,
+        0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,
+        0x0e, 0x0f, 0x02, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+        0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x03, 0x01,
+        0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b,
+        0x0c, 0x0d, 0x0e, 0x0f
     };
     static const unsigned char iv[48] = {
         0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08,
diff -Nru openssl-3.5.6/test/evp_pkey_provided_test.c openssl-3.5.7/test/evp_pkey_provided_test.c
--- openssl-3.5.6/test/evp_pkey_provided_test.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/evp_pkey_provided_test.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -902,34 +902,9 @@
      *                 -pkeyopt priv_len:224 -text
      */
     static const unsigned char priv_data[] = {
-        0x88,
-        0x85,
-        0xe7,
-        0x9f,
-        0xee,
-        0x6d,
-        0xc5,
-        0x7c,
-        0x78,
-        0xaf,
-        0x63,
-        0x5d,
-        0x38,
-        0x2a,
-        0xd0,
-        0xed,
-        0x56,
-        0x4b,
-        0x47,
-        0x21,
-        0x2b,
-        0xfa,
-        0x55,
-        0xfa,
-        0x87,
-        0xe8,
-        0xa9,
-        0x7b,
+        0x88, 0x85, 0xe7, 0x9f, 0xee, 0x6d, 0xc5, 0x7c, 0x78, 0xaf,
+        0x63, 0x5d, 0x38, 0x2a, 0xd0, 0xed, 0x56, 0x4b, 0x47, 0x21,
+        0x2b, 0xfa, 0x55, 0xfa, 0x87, 0xe8, 0xa9, 0x7b
     };
     static const unsigned char pub_data[] = {
         0x00, 0xd6, 0x2d, 0x77, 0xe0, 0xd3, 0x7d, 0xf8, 0xeb, 0x98, 0x50, 0xa1,
@@ -1142,34 +1117,9 @@
      *                 -pkeyopt group:ffdhe2048 -pkeyopt priv_len:224 -text
      */
     static const unsigned char priv_data[] = {
-        0x88,
-        0x85,
-        0xe7,
-        0x9f,
-        0xee,
-        0x6d,
-        0xc5,
-        0x7c,
-        0x78,
-        0xaf,
-        0x63,
-        0x5d,
-        0x38,
-        0x2a,
-        0xd0,
-        0xed,
-        0x56,
-        0x4b,
-        0x47,
-        0x21,
-        0x2b,
-        0xfa,
-        0x55,
-        0xfa,
-        0x87,
-        0xe8,
-        0xa9,
-        0x7b,
+        0x88, 0x85, 0xe7, 0x9f, 0xee, 0x6d, 0xc5, 0x7c, 0x78, 0xaf,
+        0x63, 0x5d, 0x38, 0x2a, 0xd0, 0xed, 0x56, 0x4b, 0x47, 0x21,
+        0x2b, 0xfa, 0x55, 0xfa, 0x87, 0xe8, 0xa9, 0x7b
     };
     static const unsigned char pub_data[] = {
         0xd6, 0x2d, 0x77, 0xe0, 0xd3, 0x7d, 0xf8, 0xeb, 0x98, 0x50, 0xa1, 0x82,
@@ -1648,6 +1598,11 @@
     BIGNUM *a = NULL;
     BIGNUM *b = NULL;
     BIGNUM *p = NULL;
+    OSSL_PARAM probe[2] = {
+        OSSL_PARAM_DEFN(OSSL_PKEY_PARAM_PRIV_KEY, OSSL_PARAM_UNSIGNED_INTEGER,
+            NULL, 0),
+        OSSL_PARAM_END
+    };
 
     if (!TEST_ptr(bld = OSSL_PARAM_BLD_new()))
         goto err;
@@ -1735,6 +1690,18 @@
             || !TEST_BN_eq(group_b, b))
             goto err;
 
+        /*
+         * Probe the EC private-key BN length via the explicit-params
+         * path; with NULL data, return_size receives the required
+         * (padded) buffer size, which equals the byte length of the
+         * group order.
+         */
+        probe[0].return_size = OSSL_PARAM_UNMODIFIED;
+        if (!TEST_true(EVP_PKEY_get_params(pk, probe))
+            || !TEST_size_t_eq(probe[0].return_size,
+                BN_num_bytes(EC_GROUP_get0_order(group))))
+            goto err;
+
         EC_GROUP_free(group);
         group = NULL;
         BN_free(group_p);
diff -Nru openssl-3.5.6/test/evp_skey_test.c openssl-3.5.7/test/evp_skey_test.c
--- openssl-3.5.6/test/evp_skey_test.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/evp_skey_test.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -38,22 +38,8 @@
     EVP_CIPHER *fake_cipher = NULL;
     EVP_CIPHER_CTX *ctx = NULL;
     const unsigned char import_key[KEY_SIZE] = {
-        0x53,
-        0x4B,
-        0x45,
-        0x59,
-        0x53,
-        0x4B,
-        0x45,
-        0x59,
-        0x53,
-        0x4B,
-        0x45,
-        0x59,
-        0x53,
-        0x4B,
-        0x45,
-        0x59,
+        0x53, 0x4B, 0x45, 0x59, 0x53, 0x4B, 0x45, 0x59, 0x53, 0x4B,
+        0x45, 0x59, 0x53, 0x4B, 0x45, 0x59
     };
     OSSL_PARAM params[3];
     OSSL_PARAM *export_params = NULL;
diff -Nru openssl-3.5.6/test/helpers/predefined_dhparams.c openssl-3.5.7/test/helpers/predefined_dhparams.c
--- openssl-3.5.6/test/helpers/predefined_dhparams.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/helpers/predefined_dhparams.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -72,73 +72,16 @@
 EVP_PKEY *get_dh512(OSSL_LIB_CTX *libctx)
 {
     static unsigned char dh512_p[] = {
-        0xCB,
-        0xC8,
-        0xE1,
-        0x86,
-        0xD0,
-        0x1F,
-        0x94,
-        0x17,
-        0xA6,
-        0x99,
-        0xF0,
-        0xC6,
-        0x1F,
-        0x0D,
-        0xAC,
-        0xB6,
-        0x25,
-        0x3E,
-        0x06,
-        0x39,
-        0xCA,
-        0x72,
-        0x04,
-        0xB0,
-        0x6E,
-        0xDA,
-        0xC0,
-        0x61,
-        0xE6,
-        0x7A,
-        0x77,
-        0x25,
-        0xE8,
-        0x3B,
-        0xB9,
-        0x5F,
-        0x9A,
-        0xB6,
-        0xB5,
-        0xFE,
-        0x99,
-        0x0B,
-        0xA1,
-        0x93,
-        0x4E,
-        0x35,
-        0x33,
-        0xB8,
-        0xE1,
-        0xF1,
-        0x13,
-        0x4F,
-        0x59,
-        0x1A,
-        0xD2,
-        0x57,
-        0xC0,
-        0x26,
-        0x21,
-        0x33,
-        0x02,
-        0xC5,
-        0xAE,
-        0x23,
+        0xCB, 0xC8, 0xE1, 0x86, 0xD0, 0x1F, 0x94, 0x17, 0xA6, 0x99,
+        0xF0, 0xC6, 0x1F, 0x0D, 0xAC, 0xB6, 0x25, 0x3E, 0x06, 0x39,
+        0xCA, 0x72, 0x04, 0xB0, 0x6E, 0xDA, 0xC0, 0x61, 0xE6, 0x7A,
+        0x77, 0x25, 0xE8, 0x3B, 0xB9, 0x5F, 0x9A, 0xB6, 0xB5, 0xFE,
+        0x99, 0x0B, 0xA1, 0x93, 0x4E, 0x35, 0x33, 0xB8, 0xE1, 0xF1,
+        0x13, 0x4F, 0x59, 0x1A, 0xD2, 0x57, 0xC0, 0x26, 0x21, 0x33,
+        0x02, 0xC5, 0xAE, 0x23
     };
     static unsigned char dh512_g[] = {
-        0x02,
+        0x02
     };
 
     return get_dh_from_pg(libctx, "DH", dh512_p, sizeof(dh512_p),
@@ -148,161 +91,27 @@
 EVP_PKEY *get_dhx512(OSSL_LIB_CTX *libctx)
 {
     static unsigned char dhx512_p[] = {
-        0x00,
-        0xe8,
-        0x1a,
-        0xb7,
-        0x9a,
-        0x02,
-        0x65,
-        0x64,
-        0x94,
-        0x7b,
-        0xba,
-        0x09,
-        0x1c,
-        0x12,
-        0x27,
-        0x1e,
-        0xea,
-        0x89,
-        0x32,
-        0x64,
-        0x78,
-        0xf8,
-        0x1c,
-        0x78,
-        0x8e,
-        0x96,
-        0xc3,
-        0xc6,
-        0x9f,
-        0x41,
-        0x05,
-        0x41,
-        0x65,
-        0xae,
-        0xe3,
-        0x05,
-        0xea,
-        0x66,
-        0x21,
-        0xf7,
-        0x38,
-        0xb7,
-        0x2b,
-        0x32,
-        0x40,
-        0x5a,
-        0x14,
-        0x86,
-        0x51,
-        0x94,
-        0xb1,
-        0xcf,
-        0x01,
-        0xe3,
-        0x27,
-        0x28,
-        0xf6,
-        0x75,
-        0xa3,
-        0x15,
-        0xbb,
-        0x12,
-        0x4d,
-        0x99,
-        0xe7,
+        0x00, 0xe8, 0x1a, 0xb7, 0x9a, 0x02, 0x65, 0x64, 0x94, 0x7b,
+        0xba, 0x09, 0x1c, 0x12, 0x27, 0x1e, 0xea, 0x89, 0x32, 0x64,
+        0x78, 0xf8, 0x1c, 0x78, 0x8e, 0x96, 0xc3, 0xc6, 0x9f, 0x41,
+        0x05, 0x41, 0x65, 0xae, 0xe3, 0x05, 0xea, 0x66, 0x21, 0xf7,
+        0x38, 0xb7, 0x2b, 0x32, 0x40, 0x5a, 0x14, 0x86, 0x51, 0x94,
+        0xb1, 0xcf, 0x01, 0xe3, 0x27, 0x28, 0xf6, 0x75, 0xa3, 0x15,
+        0xbb, 0x12, 0x4d, 0x99, 0xe7
     };
     static unsigned char dhx512_g[] = {
-        0x00,
-        0x91,
-        0xc1,
-        0x43,
-        0x6d,
-        0x0d,
-        0xb0,
-        0xa4,
-        0xde,
-        0x41,
-        0xb7,
-        0x93,
-        0xad,
-        0x51,
-        0x94,
-        0x1b,
-        0x43,
-        0xd8,
-        0x42,
-        0xf1,
-        0x5e,
-        0x46,
-        0x83,
-        0x5d,
-        0xf1,
-        0xd1,
-        0xf0,
-        0x41,
-        0x10,
-        0xd1,
-        0x1c,
-        0x5e,
-        0xad,
-        0x9b,
-        0x68,
-        0xb1,
-        0x6f,
-        0xf5,
-        0x8e,
-        0xaa,
-        0x6d,
-        0x71,
-        0x88,
-        0x37,
-        0xdf,
-        0x05,
-        0xf7,
-        0x6e,
-        0x7a,
-        0xb4,
-        0x25,
-        0x10,
-        0x6c,
-        0x7f,
-        0x38,
-        0xb4,
-        0xc8,
-        0xfc,
-        0xcc,
-        0x0c,
-        0x6a,
-        0x02,
-        0x08,
-        0x61,
-        0xf6,
+        0x00, 0x91, 0xc1, 0x43, 0x6d, 0x0d, 0xb0, 0xa4, 0xde, 0x41,
+        0xb7, 0x93, 0xad, 0x51, 0x94, 0x1b, 0x43, 0xd8, 0x42, 0xf1,
+        0x5e, 0x46, 0x83, 0x5d, 0xf1, 0xd1, 0xf0, 0x41, 0x10, 0xd1,
+        0x1c, 0x5e, 0xad, 0x9b, 0x68, 0xb1, 0x6f, 0xf5, 0x8e, 0xaa,
+        0x6d, 0x71, 0x88, 0x37, 0xdf, 0x05, 0xf7, 0x6e, 0x7a, 0xb4,
+        0x25, 0x10, 0x6c, 0x7f, 0x38, 0xb4, 0xc8, 0xfc, 0xcc, 0x0c,
+        0x6a, 0x02, 0x08, 0x61, 0xf6
     };
     static unsigned char dhx512_q[] = {
-        0x00,
-        0xdd,
-        0xf6,
-        0x35,
-        0xad,
-        0xfa,
-        0x70,
-        0xc7,
-        0xe7,
-        0xa8,
-        0xf0,
-        0xe3,
-        0xda,
-        0x79,
-        0x34,
-        0x3f,
-        0x5b,
-        0xcf,
-        0x73,
-        0x82,
-        0x91,
+        0x00, 0xdd, 0xf6, 0x35, 0xad, 0xfa, 0x70, 0xc7, 0xe7, 0xa8,
+        0xf0, 0xe3, 0xda, 0x79, 0x34, 0x3f, 0x5b, 0xcf, 0x73, 0x82,
+        0x91
     };
 
     return get_dh_from_pg(libctx, "X9.42 DH",
@@ -314,264 +123,34 @@
 EVP_PKEY *get_dh1024dsa(OSSL_LIB_CTX *libctx)
 {
     static unsigned char dh1024_p[] = {
-        0xC8,
-        0x00,
-        0xF7,
-        0x08,
-        0x07,
-        0x89,
-        0x4D,
-        0x90,
-        0x53,
-        0xF3,
-        0xD5,
-        0x00,
-        0x21,
-        0x1B,
-        0xF7,
-        0x31,
-        0xA6,
-        0xA2,
-        0xDA,
-        0x23,
-        0x9A,
-        0xC7,
-        0x87,
-        0x19,
-        0x3B,
-        0x47,
-        0xB6,
-        0x8C,
-        0x04,
-        0x6F,
-        0xFF,
-        0xC6,
-        0x9B,
-        0xB8,
-        0x65,
-        0xD2,
-        0xC2,
-        0x5F,
-        0x31,
-        0x83,
-        0x4A,
-        0xA7,
-        0x5F,
-        0x2F,
-        0x88,
-        0x38,
-        0xB6,
-        0x55,
-        0xCF,
-        0xD9,
-        0x87,
-        0x6D,
-        0x6F,
-        0x9F,
-        0xDA,
-        0xAC,
-        0xA6,
-        0x48,
-        0xAF,
-        0xFC,
-        0x33,
-        0x84,
-        0x37,
-        0x5B,
-        0x82,
-        0x4A,
-        0x31,
-        0x5D,
-        0xE7,
-        0xBD,
-        0x52,
-        0x97,
-        0xA1,
-        0x77,
-        0xBF,
-        0x10,
-        0x9E,
-        0x37,
-        0xEA,
-        0x64,
-        0xFA,
-        0xCA,
-        0x28,
-        0x8D,
-        0x9D,
-        0x3B,
-        0xD2,
-        0x6E,
-        0x09,
-        0x5C,
-        0x68,
-        0xC7,
-        0x45,
-        0x90,
-        0xFD,
-        0xBB,
-        0x70,
-        0xC9,
-        0x3A,
-        0xBB,
-        0xDF,
-        0xD4,
-        0x21,
-        0x0F,
-        0xC4,
-        0x6A,
-        0x3C,
-        0xF6,
-        0x61,
-        0xCF,
-        0x3F,
-        0xD6,
-        0x13,
-        0xF1,
-        0x5F,
-        0xBC,
-        0xCF,
-        0xBC,
-        0x26,
-        0x9E,
-        0xBC,
-        0x0B,
-        0xBD,
-        0xAB,
-        0x5D,
-        0xC9,
-        0x54,
-        0x39,
+        0xC8, 0x00, 0xF7, 0x08, 0x07, 0x89, 0x4D, 0x90, 0x53, 0xF3,
+        0xD5, 0x00, 0x21, 0x1B, 0xF7, 0x31, 0xA6, 0xA2, 0xDA, 0x23,
+        0x9A, 0xC7, 0x87, 0x19, 0x3B, 0x47, 0xB6, 0x8C, 0x04, 0x6F,
+        0xFF, 0xC6, 0x9B, 0xB8, 0x65, 0xD2, 0xC2, 0x5F, 0x31, 0x83,
+        0x4A, 0xA7, 0x5F, 0x2F, 0x88, 0x38, 0xB6, 0x55, 0xCF, 0xD9,
+        0x87, 0x6D, 0x6F, 0x9F, 0xDA, 0xAC, 0xA6, 0x48, 0xAF, 0xFC,
+        0x33, 0x84, 0x37, 0x5B, 0x82, 0x4A, 0x31, 0x5D, 0xE7, 0xBD,
+        0x52, 0x97, 0xA1, 0x77, 0xBF, 0x10, 0x9E, 0x37, 0xEA, 0x64,
+        0xFA, 0xCA, 0x28, 0x8D, 0x9D, 0x3B, 0xD2, 0x6E, 0x09, 0x5C,
+        0x68, 0xC7, 0x45, 0x90, 0xFD, 0xBB, 0x70, 0xC9, 0x3A, 0xBB,
+        0xDF, 0xD4, 0x21, 0x0F, 0xC4, 0x6A, 0x3C, 0xF6, 0x61, 0xCF,
+        0x3F, 0xD6, 0x13, 0xF1, 0x5F, 0xBC, 0xCF, 0xBC, 0x26, 0x9E,
+        0xBC, 0x0B, 0xBD, 0xAB, 0x5D, 0xC9, 0x54, 0x39
     };
     static unsigned char dh1024_g[] = {
-        0x3B,
-        0x40,
-        0x86,
-        0xE7,
-        0xF3,
-        0x6C,
-        0xDE,
-        0x67,
-        0x1C,
-        0xCC,
-        0x80,
-        0x05,
-        0x5A,
-        0xDF,
-        0xFE,
-        0xBD,
-        0x20,
-        0x27,
-        0x74,
-        0x6C,
-        0x24,
-        0xC9,
-        0x03,
-        0xF3,
-        0xE1,
-        0x8D,
-        0xC3,
-        0x7D,
-        0x98,
-        0x27,
-        0x40,
-        0x08,
-        0xB8,
-        0x8C,
-        0x6A,
-        0xE9,
-        0xBB,
-        0x1A,
-        0x3A,
-        0xD6,
-        0x86,
-        0x83,
-        0x5E,
-        0x72,
-        0x41,
-        0xCE,
-        0x85,
-        0x3C,
-        0xD2,
-        0xB3,
-        0xFC,
-        0x13,
-        0xCE,
-        0x37,
-        0x81,
-        0x9E,
-        0x4C,
-        0x1C,
-        0x7B,
-        0x65,
-        0xD3,
-        0xE6,
-        0xA6,
-        0x00,
-        0xF5,
-        0x5A,
-        0x95,
-        0x43,
-        0x5E,
-        0x81,
-        0xCF,
-        0x60,
-        0xA2,
-        0x23,
-        0xFC,
-        0x36,
-        0xA7,
-        0x5D,
-        0x7A,
-        0x4C,
-        0x06,
-        0x91,
-        0x6E,
-        0xF6,
-        0x57,
-        0xEE,
-        0x36,
-        0xCB,
-        0x06,
-        0xEA,
-        0xF5,
-        0x3D,
-        0x95,
-        0x49,
-        0xCB,
-        0xA7,
-        0xDD,
-        0x81,
-        0xDF,
-        0x80,
-        0x09,
-        0x4A,
-        0x97,
-        0x4D,
-        0xA8,
-        0x22,
-        0x72,
-        0xA1,
-        0x7F,
-        0xC4,
-        0x70,
-        0x56,
-        0x70,
-        0xE8,
-        0x20,
-        0x10,
-        0x18,
-        0x8F,
-        0x2E,
-        0x60,
-        0x07,
-        0xE7,
-        0x68,
-        0x1A,
-        0x82,
-        0x5D,
-        0x32,
-        0xA2,
+        0x3B, 0x40, 0x86, 0xE7, 0xF3, 0x6C, 0xDE, 0x67, 0x1C, 0xCC,
+        0x80, 0x05, 0x5A, 0xDF, 0xFE, 0xBD, 0x20, 0x27, 0x74, 0x6C,
+        0x24, 0xC9, 0x03, 0xF3, 0xE1, 0x8D, 0xC3, 0x7D, 0x98, 0x27,
+        0x40, 0x08, 0xB8, 0x8C, 0x6A, 0xE9, 0xBB, 0x1A, 0x3A, 0xD6,
+        0x86, 0x83, 0x5E, 0x72, 0x41, 0xCE, 0x85, 0x3C, 0xD2, 0xB3,
+        0xFC, 0x13, 0xCE, 0x37, 0x81, 0x9E, 0x4C, 0x1C, 0x7B, 0x65,
+        0xD3, 0xE6, 0xA6, 0x00, 0xF5, 0x5A, 0x95, 0x43, 0x5E, 0x81,
+        0xCF, 0x60, 0xA2, 0x23, 0xFC, 0x36, 0xA7, 0x5D, 0x7A, 0x4C,
+        0x06, 0x91, 0x6E, 0xF6, 0x57, 0xEE, 0x36, 0xCB, 0x06, 0xEA,
+        0xF5, 0x3D, 0x95, 0x49, 0xCB, 0xA7, 0xDD, 0x81, 0xDF, 0x80,
+        0x09, 0x4A, 0x97, 0x4D, 0xA8, 0x22, 0x72, 0xA1, 0x7F, 0xC4,
+        0x70, 0x56, 0x70, 0xE8, 0x20, 0x10, 0x18, 0x8F, 0x2E, 0x60,
+        0x07, 0xE7, 0x68, 0x1A, 0x82, 0x5D, 0x32, 0xA2
     };
 
     return get_dh_from_pg(libctx, "DH", dh1024_p, sizeof(dh1024_p),
diff -Nru openssl-3.5.6/test/hpke_test.c openssl-3.5.7/test/hpke_test.c
--- openssl-3.5.6/test/hpke_test.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/hpke_test.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -287,38 +287,10 @@
     0xb7, 0xac, 0xcf, 0xaf, 0xf8, 0x99, 0x50, 0x98
 };
 static const unsigned char first_ikmepub[] = {
-    0x0a,
-    0xd0,
-    0x95,
-    0x0d,
-    0x9f,
-    0xb9,
-    0x58,
-    0x8e,
-    0x59,
-    0x69,
-    0x0b,
-    0x74,
-    0xf1,
-    0x23,
-    0x7e,
-    0xcd,
-    0xf1,
-    0xd7,
-    0x75,
-    0xcd,
-    0x60,
-    0xbe,
-    0x2e,
-    0xca,
-    0x57,
-    0xaf,
-    0x5a,
-    0x4b,
-    0x04,
-    0x71,
-    0xc9,
-    0x1b,
+    0x0a, 0xd0, 0x95, 0x0d, 0x9f, 0xb9, 0x58, 0x8e, 0x59, 0x69,
+    0x0b, 0x74, 0xf1, 0x23, 0x7e, 0xcd, 0xf1, 0xd7, 0x75, 0xcd,
+    0x60, 0xbe, 0x2e, 0xca, 0x57, 0xaf, 0x5a, 0x4b, 0x04, 0x71,
+    0xc9, 0x1b
 };
 static const unsigned char first_ikmrpub[] = {
     0x9f, 0xed, 0x7e, 0x8c, 0x17, 0x38, 0x75, 0x60,
@@ -445,38 +417,10 @@
     0x98, 0x12, 0xe6, 0x67, 0x06, 0xdf, 0x32, 0x34
 };
 static const unsigned char second_ikmepub[] = {
-    0x37,
-    0xfd,
-    0xa3,
-    0x56,
-    0x7b,
-    0xdb,
-    0xd6,
-    0x28,
-    0xe8,
-    0x86,
-    0x68,
-    0xc3,
-    0xc8,
-    0xd7,
-    0xe9,
-    0x7d,
-    0x1d,
-    0x12,
-    0x53,
-    0xb6,
-    0xd4,
-    0xea,
-    0x6d,
-    0x44,
-    0xc1,
-    0x50,
-    0xf7,
-    0x41,
-    0xf1,
-    0xbf,
-    0x44,
-    0x31,
+    0x37, 0xfd, 0xa3, 0x56, 0x7b, 0xdb, 0xd6, 0x28, 0xe8, 0x86,
+    0x68, 0xc3, 0xc8, 0xd7, 0xe9, 0x7d, 0x1d, 0x12, 0x53, 0xb6,
+    0xd4, 0xea, 0x6d, 0x44, 0xc1, 0x50, 0xf7, 0x41, 0xf1, 0xbf,
+    0x44, 0x31
 };
 static const unsigned char second_ikmr[] = {
     0x6d, 0xb9, 0xdf, 0x30, 0xaa, 0x07, 0xdd, 0x42,
@@ -594,71 +538,13 @@
     0x1f, 0x5a, 0xa2, 0x28, 0x16, 0xce, 0x86, 0x0e
 };
 static const unsigned char third_ikmepub[] = {
-    0x04,
-    0xa9,
-    0x27,
-    0x19,
-    0xc6,
-    0x19,
-    0x5d,
-    0x50,
-    0x85,
-    0x10,
-    0x4f,
-    0x46,
-    0x9a,
-    0x8b,
-    0x98,
-    0x14,
-    0xd5,
-    0x83,
-    0x8f,
-    0xf7,
-    0x2b,
-    0x60,
-    0x50,
-    0x1e,
-    0x2c,
-    0x44,
-    0x66,
-    0xe5,
-    0xe6,
-    0x7b,
-    0x32,
-    0x5a,
-    0xc9,
-    0x85,
-    0x36,
-    0xd7,
-    0xb6,
-    0x1a,
-    0x1a,
-    0xf4,
-    0xb7,
-    0x8e,
-    0x5b,
-    0x7f,
-    0x95,
-    0x1c,
-    0x09,
-    0x00,
-    0xbe,
-    0x86,
-    0x3c,
-    0x40,
-    0x3c,
-    0xe6,
-    0x5c,
-    0x9b,
-    0xfc,
-    0xb9,
-    0x38,
-    0x26,
-    0x57,
-    0x22,
-    0x2d,
-    0x18,
-    0xc4,
+    0x04, 0xa9, 0x27, 0x19, 0xc6, 0x19, 0x5d, 0x50, 0x85, 0x10,
+    0x4f, 0x46, 0x9a, 0x8b, 0x98, 0x14, 0xd5, 0x83, 0x8f, 0xf7,
+    0x2b, 0x60, 0x50, 0x1e, 0x2c, 0x44, 0x66, 0xe5, 0xe6, 0x7b,
+    0x32, 0x5a, 0xc9, 0x85, 0x36, 0xd7, 0xb6, 0x1a, 0x1a, 0xf4,
+    0xb7, 0x8e, 0x5b, 0x7f, 0x95, 0x1c, 0x09, 0x00, 0xbe, 0x86,
+    0x3c, 0x40, 0x3c, 0xe6, 0x5c, 0x9b, 0xfc, 0xb9, 0x38, 0x26,
+    0x57, 0x22, 0x2d, 0x18, 0xc4
 };
 static const unsigned char third_ikmr[] = {
     0x66, 0x8b, 0x37, 0x17, 0x1f, 0x10, 0x72, 0xf3,
diff -Nru openssl-3.5.6/test/http_test.c openssl-3.5.7/test/http_test.c
--- openssl-3.5.6/test/http_test.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/http_test.c	2026-06-09 13:54:25.000000000 +0200
@@ -11,6 +11,7 @@
 #include <openssl/http.h>
 #include <openssl/pem.h>
 #include <openssl/x509v3.h>
+#include <openssl/err.h>
 #include <string.h>
 
 #include "testutil.h"
@@ -422,6 +423,57 @@
     return test_http_url_invalid("https://[FF01::101]pkix");
 }
 
+static int test_http_crlf_rejected(void)
+{
+    BIO *wbio = BIO_new(BIO_s_mem());
+    BIO *rbio = BIO_new(BIO_s_mem());
+    BIO *req = BIO_new(BIO_s_mem());
+    BIO *proxy_bio = BIO_new(BIO_s_mem());
+    OSSL_HTTP_REQ_CTX *rctx = NULL;
+    int res = 0;
+
+    if (!TEST_ptr(wbio)
+        || !TEST_ptr(rbio)
+        || !TEST_ptr(req)
+        || !TEST_ptr(proxy_bio)
+        || !TEST_int_eq(BIO_puts(req, "x"), 1)
+        || !TEST_ptr(rctx = OSSL_HTTP_REQ_CTX_new(wbio, rbio, 0)))
+        goto err;
+
+    ERR_clear_error();
+    res = TEST_false(OSSL_HTTP_REQ_CTX_set_request_line(rctx, 0 /* GET */,
+              NULL, NULL, "/path\r\nInjected: value"))
+        && TEST_false(OSSL_HTTP_REQ_CTX_set_request_line(rctx, 0 /* GET */,
+            "server\r\nInjected: value", "80", RPATH))
+        && TEST_false(OSSL_HTTP_REQ_CTX_set_request_line(rctx, 0 /* GET */,
+            "server", "80\r\nInjected: value", RPATH))
+        && TEST_true(OSSL_HTTP_REQ_CTX_set_request_line(rctx, 0 /* GET */,
+            NULL, NULL, RPATH))
+        && TEST_false(OSSL_HTTP_REQ_CTX_add1_header(rctx,
+            "X-Test\r\nInjected", "value"))
+        && TEST_false(OSSL_HTTP_REQ_CTX_add1_header(rctx,
+            "X-Test", "value\r\nInjected: value"))
+        && TEST_false(OSSL_HTTP_set1_request(rctx, RPATH, NULL,
+            "text/plain\r\nInjected: value", req,
+            NULL, 0 /* expect_asn1 */, 0 /* max_resp_len */,
+            0 /* timeout */, 0 /* keep_alive */))
+        && TEST_false(OSSL_HTTP_proxy_connect(proxy_bio,
+            "server\r\nInjected: value", "443", NULL, NULL,
+            0 /* timeout */, NULL, NULL))
+        && TEST_false(OSSL_HTTP_proxy_connect(proxy_bio,
+            "server", "443\r\nInjected: value", NULL, NULL,
+            0 /* timeout */, NULL, NULL));
+
+err:
+    ERR_clear_error();
+    OSSL_HTTP_REQ_CTX_free(rctx);
+    BIO_free(wbio);
+    BIO_free(rbio);
+    BIO_free(req);
+    BIO_free(proxy_bio);
+    return res;
+}
+
 static int test_http_get_txt(void)
 {
     return test_http_method(1 /* GET */, 1, HTTP_STATUS_CODE_OK);
@@ -575,6 +627,14 @@
     return test_http_resp_hdr_limit(256);
 }
 
+static int test_http_adapt_proxy_empty_server(void)
+{
+    const char *proxy = "http://proxy.local:8080";
+
+    return TEST_str_eq(OSSL_HTTP_adapt_proxy(proxy, "abc", "", 0), proxy)
+        && TEST_str_eq(OSSL_HTTP_adapt_proxy(proxy, "abc", "[]", 0), proxy);
+}
+
 void cleanup_tests(void)
 {
     X509_free(x509);
@@ -601,6 +661,7 @@
     ADD_TEST(test_http_url_invalid_prefix);
     ADD_TEST(test_http_url_invalid_port);
     ADD_TEST(test_http_url_invalid_path);
+    ADD_TEST(test_http_crlf_rejected);
 
     ADD_TEST(test_http_get_txt);
     ADD_TEST(test_http_get_txt_redirected);
@@ -625,5 +686,6 @@
     ADD_TEST(test_hdr_resp_hdr_limit_none);
     ADD_TEST(test_hdr_resp_hdr_limit_short);
     ADD_TEST(test_hdr_resp_hdr_limit_256);
+    ADD_TEST(test_http_adapt_proxy_empty_server);
     return 1;
 }
diff -Nru openssl-3.5.6/test/ideatest.c openssl-3.5.7/test/ideatest.c
--- openssl-3.5.6/test/ideatest.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/ideatest.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -35,22 +35,8 @@
 static const unsigned char text[] = "Hello to all people out there";
 
 static const unsigned char cfb_key[16] = {
-    0xe1,
-    0xf0,
-    0xc3,
-    0xd2,
-    0xa5,
-    0xb4,
-    0x87,
-    0x96,
-    0x69,
-    0x78,
-    0x4b,
-    0x5a,
-    0x2d,
-    0x3c,
-    0x0f,
-    0x1e,
+    0xe1, 0xf0, 0xc3, 0xd2, 0xa5, 0xb4, 0x87, 0x96, 0x69, 0x78,
+    0x4b, 0x5a, 0x2d, 0x3c, 0x0f, 0x1e
 };
 static const unsigned char cfb_iv[80] = {
     0x34, 0x12, 0x78, 0x56, 0xab, 0x90, 0xef, 0xcd
diff -Nru openssl-3.5.6/test/ml_kem_evp_extra_test.c openssl-3.5.7/test/ml_kem_evp_extra_test.c
--- openssl-3.5.6/test/ml_kem_evp_extra_test.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/ml_kem_evp_extra_test.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2015-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -20,6 +20,7 @@
 #include <openssl/param_build.h>
 #include <openssl/rand.h>
 #include <crypto/ml_kem.h>
+#include "crypto/evp.h"
 #include "testutil.h"
 
 static OSSL_LIB_CTX *testctx = NULL;
@@ -401,6 +402,77 @@
     return ret == 0;
 }
 
+#ifndef OPENSSL_NO_EC
+static const char *mlx_kem_algs[] = {
+#ifndef OPENSSL_NO_ECX
+    "X25519MLKEM768",
+#endif
+    "SecP256r1MLKEM768",
+    "SecP384r1MLKEM1024",
+};
+#endif
+
+/*
+ * Test that mlx_kem_dup() with partial selection (public-only) does not
+ * corrupt the original key. Before the fix, the default branch of the
+ * switch in mlx_kem_dup() would call mlx_kem_key_free() on a shallow copy
+ * without nulling mkey/xkey first, causing a double-free when the original
+ * key was later freed.
+ */
+#ifndef OPENSSL_NO_EC
+static int test_mlx_kem_dup_partial_selection(int idx)
+{
+    const char *alg = mlx_kem_algs[idx];
+    EVP_PKEY_CTX *genctx = NULL;
+    EVP_PKEY_CTX *encctx = NULL;
+    EVP_PKEY *keypair = NULL;
+    EVP_PKEY *dest = NULL;
+    size_t wrpkeylen = 0, genkeylen = 0;
+    int ret = 0;
+
+    /* Generate an MLX KEM keypair */
+    if (!TEST_ptr(genctx = EVP_PKEY_CTX_new_from_name(testctx, alg, NULL))
+        || !TEST_int_eq(EVP_PKEY_keygen_init(genctx), 1)
+        || !TEST_int_eq(EVP_PKEY_keygen(genctx, &keypair), 1))
+        goto err;
+
+    /*
+     * Attempt a partial copy (public-key only). EVP_PKEY_PUBLIC_KEY includes
+     * OSSL_KEYMGMT_SELECT_PUBLIC_KEY (0x02) but not private, so
+     * selection & OSSL_KEYMGMT_SELECT_KEYPAIR == 0x02 which hits the default
+     * branch in mlx_kem_dup(). This should fail gracefully without corrupting
+     * the source key.
+     */
+    if (!TEST_ptr(dest = EVP_PKEY_new()))
+        goto err;
+    /* Expected to fail — partial duplication is not supported for MLX KEM */
+    evp_keymgmt_util_copy(dest, keypair, EVP_PKEY_PUBLIC_KEY);
+    ERR_clear_error();
+
+    /*
+     * Verify the original keypair is still intact by performing an
+     * encapsulate operation. If the partial copy corrupted the key
+     * (double-freed mkey/xkey), this would crash or trigger ASan.
+     */
+    if (!TEST_ptr(encctx = EVP_PKEY_CTX_new_from_pkey(testctx, keypair, NULL))
+        || !TEST_int_gt(EVP_PKEY_encapsulate_init(encctx, NULL), 0)
+        || !TEST_int_gt(EVP_PKEY_encapsulate(encctx, NULL, &wrpkeylen,
+                            NULL, &genkeylen),
+            0)
+        || !TEST_size_t_gt(wrpkeylen, 0)
+        || !TEST_size_t_gt(genkeylen, 0))
+        goto err;
+
+    ret = 1;
+err:
+    EVP_PKEY_CTX_free(encctx);
+    EVP_PKEY_free(dest);
+    EVP_PKEY_free(keypair);
+    EVP_PKEY_CTX_free(genctx);
+    return ret;
+}
+#endif /* OPENSSL_NO_EC */
+
 int setup_tests(void)
 {
     int test_rand = 0;
@@ -428,5 +500,8 @@
     }
 
     ADD_TEST(test_ml_kem);
+#ifndef OPENSSL_NO_EC
+    ADD_ALL_TESTS(test_mlx_kem_dup_partial_selection, OSSL_NELEM(mlx_kem_algs));
+#endif
     return 1;
 }
diff -Nru openssl-3.5.6/test/param_build_test.c openssl-3.5.7/test/param_build_test.c
--- openssl-3.5.6/test/param_build_test.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/param_build_test.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright (c) 2019, Oracle and/or its affiliates.  All rights reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
@@ -117,8 +117,12 @@
         || !TEST_true(OSSL_PARAM_BLD_push_BN(bld, "negativebignumber", nbn))
         || !TEST_true(OSSL_PARAM_BLD_push_utf8_string(bld, "utf8_s", "foo",
             sizeof("foo")))
+        || !TEST_true(OSSL_PARAM_BLD_push_octet_string(bld, "octet_s", NULL,
+            0))
         || !TEST_true(OSSL_PARAM_BLD_push_utf8_ptr(bld, "utf8_p", "bar-boom",
             0))
+        || !TEST_true(OSSL_PARAM_BLD_push_octet_ptr(bld, "octet_p", NULL,
+            0))
         || !TEST_true(OSSL_PARAM_BLD_push_int(bld, "i", -6))
         || !TEST_ptr(params_blt = OSSL_PARAM_BLD_to_param(bld)))
         goto err;
@@ -189,10 +193,16 @@
         || !TEST_str_eq(p->data, "foo")
         || !TEST_true(OSSL_PARAM_get_utf8_string(p, &utf, 0))
         || !TEST_str_eq(utf, "foo")
+        /* Check NULL octet string */
+        || !TEST_ptr(p = OSSL_PARAM_locate(params, "octet_s"))
+        || !TEST_size_t_eq(p->data_size, 0)
         /* Check UTF8 pointer */
         || !TEST_ptr(p = OSSL_PARAM_locate(params, "utf8_p"))
         || !TEST_true(OSSL_PARAM_get_utf8_ptr(p, &cutf))
         || !TEST_str_eq(cutf, "bar-boom")
+        /* Check NULL octet ptr */
+        || !TEST_ptr(p = OSSL_PARAM_locate(params, "octet_p"))
+        || !TEST_size_t_eq(p->data_size, 0)
         /* Check BN (zero BN becomes unsigned integer) */
         || !TEST_ptr(p = OSSL_PARAM_locate(params, "zeronumber"))
         || !TEST_str_eq(p->key, "zeronumber")
diff -Nru openssl-3.5.6/test/pbetest.c openssl-3.5.7/test/pbetest.c
--- openssl-3.5.6/test/pbetest.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/pbetest.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2021-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -23,43 +23,15 @@
 static const char pbe_password[] = "MyVoiceIsMyPassport";
 
 static unsigned char pbe_salt[] = {
-    0x01,
-    0x02,
-    0x03,
-    0x04,
-    0x05,
-    0x06,
-    0x07,
-    0x08,
+    0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
 };
 
 static const int pbe_iter = 1000;
 
 static unsigned char pbe_plaintext[] = {
-    0x57,
-    0x65,
-    0x20,
-    0x61,
-    0x72,
-    0x65,
-    0x20,
-    0x61,
-    0x6c,
-    0x6c,
-    0x20,
-    0x6d,
-    0x61,
-    0x64,
-    0x65,
-    0x20,
-    0x6f,
-    0x66,
-    0x20,
-    0x73,
-    0x74,
-    0x61,
-    0x72,
-    0x73,
+    0x57, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x6c, 0x6c,
+    0x20, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x73,
+    0x74, 0x61, 0x72, 0x73
 };
 #endif
 
@@ -67,67 +39,18 @@
 
 #if !defined OPENSSL_NO_RC4 && !defined OPENSSL_NO_MD5
 static const unsigned char pbe_ciphertext_rc4_md5[] = {
-    0x21,
-    0x90,
-    0xfa,
-    0xee,
-    0x95,
-    0x66,
-    0x59,
-    0x45,
-    0xfa,
-    0x1e,
-    0x9f,
-    0xe2,
-    0x25,
-    0xd2,
-    0xf9,
-    0x71,
-    0x94,
-    0xe4,
-    0x3d,
-    0xc9,
-    0x7c,
-    0xb0,
-    0x07,
-    0x23,
+    0x21, 0x90, 0xfa, 0xee, 0x95, 0x66, 0x59, 0x45, 0xfa, 0x1e,
+    0x9f, 0xe2, 0x25, 0xd2, 0xf9, 0x71, 0x94, 0xe4, 0x3d, 0xc9,
+    0x7c, 0xb0, 0x07, 0x23
 };
 #endif
 
 #if !defined OPENSSL_NO_DES && !defined OPENSSL_NO_SHA1
 static const unsigned char pbe_ciphertext_des_sha1[] = {
-    0xce,
-    0x4b,
-    0xb0,
-    0x0a,
-    0x7b,
-    0x48,
-    0xd7,
-    0xe3,
-    0x9a,
-    0x9f,
-    0x46,
-    0xd6,
-    0x41,
-    0x42,
-    0x4b,
-    0x44,
-    0x36,
-    0x45,
-    0x5f,
-    0x60,
-    0x8f,
-    0x3c,
-    0xd0,
-    0x55,
-    0xd0,
-    0x8d,
-    0xa9,
-    0xab,
-    0x78,
-    0x5b,
-    0x63,
-    0xaf,
+    0xce, 0x4b, 0xb0, 0x0a, 0x7b, 0x48, 0xd7, 0xe3, 0x9a, 0x9f,
+    0x46, 0xd6, 0x41, 0x42, 0x4b, 0x44, 0x36, 0x45, 0x5f, 0x60,
+    0x8f, 0x3c, 0xd0, 0x55, 0xd0, 0x8d, 0xa9, 0xab, 0x78, 0x5b,
+    0x63, 0xaf
 };
 #endif
 
diff -Nru openssl-3.5.6/test/pkcs12_format_test.c openssl-3.5.7/test/pkcs12_format_test.c
--- openssl-3.5.6/test/pkcs12_format_test.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/pkcs12_format_test.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2020-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -31,2226 +31,237 @@
  */
 
 static const unsigned char CERT1[] = {
-    0x30,
-    0x82,
-    0x01,
-    0xed,
-    0x30,
-    0x82,
-    0x01,
-    0x56,
-    0xa0,
-    0x03,
-    0x02,
-    0x01,
-    0x02,
-    0x02,
-    0x09,
-    0x00,
-    0x8b,
-    0x4b,
-    0x5e,
-    0x6c,
-    0x03,
-    0x28,
-    0x4e,
-    0xe6,
-    0x30,
-    0x0d,
-    0x06,
-    0x09,
-    0x2a,
-    0x86,
-    0x48,
-    0x86,
-    0xf7,
-    0x0d,
-    0x01,
-    0x01,
-    0x0b,
-    0x05,
-    0x00,
-    0x30,
-    0x19,
-    0x31,
-    0x17,
-    0x30,
-    0x15,
-    0x06,
-    0x03,
-    0x55,
-    0x04,
-    0x03,
-    0x0c,
-    0x0e,
-    0x50,
-    0x31,
-    0x32,
-    0x54,
-    0x65,
-    0x73,
-    0x74,
-    0x2d,
-    0x52,
-    0x6f,
-    0x6f,
-    0x74,
-    0x2d,
-    0x41,
-    0x30,
-    0x1e,
-    0x17,
-    0x0d,
-    0x31,
-    0x39,
-    0x30,
-    0x39,
-    0x33,
-    0x30,
-    0x30,
-    0x30,
-    0x34,
-    0x36,
-    0x35,
-    0x36,
-    0x5a,
-    0x17,
-    0x0d,
-    0x32,
-    0x39,
-    0x30,
-    0x39,
-    0x32,
-    0x37,
-    0x30,
-    0x30,
-    0x34,
-    0x36,
-    0x35,
-    0x36,
-    0x5a,
-    0x30,
-    0x1b,
-    0x31,
-    0x19,
-    0x30,
-    0x17,
-    0x06,
-    0x03,
-    0x55,
-    0x04,
-    0x03,
-    0x0c,
-    0x10,
-    0x50,
-    0x31,
-    0x32,
-    0x54,
-    0x65,
-    0x73,
-    0x74,
-    0x2d,
-    0x53,
-    0x65,
-    0x72,
-    0x76,
-    0x65,
-    0x72,
-    0x2d,
-    0x31,
-    0x30,
-    0x81,
-    0x9f,
-    0x30,
-    0x0d,
-    0x06,
-    0x09,
-    0x2a,
-    0x86,
-    0x48,
-    0x86,
-    0xf7,
-    0x0d,
-    0x01,
-    0x01,
-    0x01,
-    0x05,
-    0x00,
-    0x03,
-    0x81,
-    0x8d,
-    0x00,
-    0x30,
-    0x81,
-    0x89,
-    0x02,
-    0x81,
-    0x81,
-    0x00,
-    0xbc,
-    0xdc,
-    0x6f,
-    0x8c,
-    0x7a,
-    0x2a,
-    0x4b,
-    0xea,
-    0x66,
-    0x66,
-    0x04,
-    0xa9,
-    0x05,
-    0x92,
-    0x53,
-    0xd7,
-    0x13,
-    0x3c,
-    0x49,
-    0xe1,
-    0xc8,
-    0xbb,
-    0xdf,
-    0x3d,
-    0xcb,
-    0x88,
-    0x31,
-    0x07,
-    0x20,
-    0x59,
-    0x93,
-    0x24,
-    0x7f,
-    0x7d,
-    0xc6,
-    0x84,
-    0x81,
-    0x16,
-    0x64,
-    0x4a,
-    0x52,
-    0xa6,
-    0x30,
-    0x44,
-    0xdc,
-    0x1a,
-    0x30,
-    0xde,
-    0xae,
-    0x29,
-    0x18,
-    0xcf,
-    0xc7,
-    0xf3,
-    0xcf,
-    0x0c,
-    0xb7,
-    0x8e,
-    0x2b,
-    0x1e,
-    0x21,
-    0x01,
-    0x0b,
-    0xfb,
-    0xe5,
-    0xe6,
-    0xcf,
-    0x2b,
-    0x84,
-    0xe1,
-    0x33,
-    0xf8,
-    0xba,
-    0x02,
-    0xfc,
-    0x30,
-    0xfa,
-    0xc4,
-    0x33,
-    0xc7,
-    0x37,
-    0xc6,
-    0x7f,
-    0x72,
-    0x31,
-    0x92,
-    0x1d,
-    0x8f,
-    0xa0,
-    0xfb,
-    0xe5,
-    0x4a,
-    0x08,
-    0x31,
-    0x78,
-    0x80,
-    0x9c,
-    0x23,
-    0xb4,
-    0xe9,
-    0x19,
-    0x56,
-    0x04,
-    0xfa,
-    0x0d,
-    0x07,
-    0x04,
-    0xb7,
-    0x43,
-    0xac,
-    0x4c,
-    0x49,
-    0x7c,
-    0xc2,
-    0xa1,
-    0x44,
-    0xc1,
-    0x48,
-    0x7d,
-    0x28,
-    0xe5,
-    0x23,
-    0x66,
-    0x07,
-    0x22,
-    0xd5,
-    0xf0,
-    0xf1,
-    0x02,
-    0x03,
-    0x01,
-    0x00,
-    0x01,
-    0xa3,
-    0x3b,
-    0x30,
-    0x39,
-    0x30,
-    0x1f,
-    0x06,
-    0x03,
-    0x55,
-    0x1d,
-    0x23,
-    0x04,
-    0x18,
-    0x30,
-    0x16,
-    0x80,
-    0x14,
-    0xdb,
-    0xbb,
-    0xb8,
-    0x92,
-    0x4e,
-    0x24,
-    0x0b,
-    0x1b,
-    0xbb,
-    0x78,
-    0x33,
-    0xf9,
-    0x01,
-    0x02,
-    0x23,
-    0x0d,
-    0x96,
-    0x18,
-    0x30,
-    0x47,
-    0x30,
-    0x09,
-    0x06,
-    0x03,
-    0x55,
-    0x1d,
-    0x13,
-    0x04,
-    0x02,
-    0x30,
-    0x00,
-    0x30,
-    0x0b,
-    0x06,
-    0x03,
-    0x55,
-    0x1d,
-    0x0f,
-    0x04,
-    0x04,
-    0x03,
-    0x02,
-    0x04,
-    0xf0,
-    0x30,
-    0x0d,
-    0x06,
-    0x09,
-    0x2a,
-    0x86,
-    0x48,
-    0x86,
-    0xf7,
-    0x0d,
-    0x01,
-    0x01,
-    0x0b,
-    0x05,
-    0x00,
-    0x03,
-    0x81,
-    0x81,
-    0x00,
-    0x1c,
-    0x13,
-    0xdc,
-    0x02,
-    0xf1,
-    0x44,
-    0x36,
-    0x65,
-    0xa9,
-    0xbe,
-    0x30,
-    0x1c,
-    0x66,
-    0x14,
-    0x20,
-    0x86,
-    0x5a,
-    0xa8,
-    0x69,
-    0x25,
-    0xf8,
-    0x1a,
-    0xb6,
-    0x9e,
-    0x5e,
-    0xe9,
-    0x89,
-    0xb8,
-    0x67,
-    0x70,
-    0x19,
-    0x87,
-    0x60,
-    0xeb,
-    0x4b,
-    0x11,
-    0x71,
-    0x85,
-    0xf8,
-    0xe9,
-    0xa7,
-    0x3e,
-    0x20,
-    0x42,
-    0xec,
-    0x43,
-    0x25,
-    0x01,
-    0x03,
-    0xe5,
-    0x4d,
-    0x83,
-    0x22,
-    0xf5,
-    0x8e,
-    0x3a,
-    0x1a,
-    0x1b,
-    0xd4,
-    0x1c,
-    0xda,
-    0x6b,
-    0x9d,
-    0x10,
-    0x1b,
-    0xee,
-    0x67,
-    0x4e,
-    0x1f,
-    0x69,
-    0xab,
-    0xbc,
-    0xaa,
-    0x62,
-    0x8e,
-    0x9e,
-    0xc6,
-    0xee,
-    0xd6,
-    0x09,
-    0xc0,
-    0xca,
-    0xe0,
-    0xaa,
-    0x9f,
-    0x07,
-    0xb2,
-    0xc2,
-    0xbb,
-    0x31,
-    0x96,
-    0xa2,
-    0x04,
-    0x62,
-    0xd3,
-    0x13,
-    0x32,
-    0x29,
-    0x67,
-    0x6e,
-    0xad,
-    0x2e,
-    0x0b,
-    0xea,
-    0x04,
-    0x7c,
-    0x8c,
-    0x5a,
-    0x5d,
-    0xac,
-    0x14,
-    0xaa,
-    0x61,
-    0x7f,
-    0x28,
-    0x6c,
-    0x2d,
-    0x64,
-    0x2d,
-    0xc3,
-    0xaf,
-    0x77,
-    0x52,
-    0x90,
-    0xb4,
-    0x37,
-    0xc0,
-    0x30,
+    0x30, 0x82, 0x01, 0xed, 0x30, 0x82, 0x01, 0x56, 0xa0, 0x03,
+    0x02, 0x01, 0x02, 0x02, 0x09, 0x00, 0x8b, 0x4b, 0x5e, 0x6c,
+    0x03, 0x28, 0x4e, 0xe6, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
+    0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30,
+    0x19, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x03,
+    0x0c, 0x0e, 0x50, 0x31, 0x32, 0x54, 0x65, 0x73, 0x74, 0x2d,
+    0x52, 0x6f, 0x6f, 0x74, 0x2d, 0x41, 0x30, 0x1e, 0x17, 0x0d,
+    0x31, 0x39, 0x30, 0x39, 0x33, 0x30, 0x30, 0x30, 0x34, 0x36,
+    0x35, 0x36, 0x5a, 0x17, 0x0d, 0x32, 0x39, 0x30, 0x39, 0x32,
+    0x37, 0x30, 0x30, 0x34, 0x36, 0x35, 0x36, 0x5a, 0x30, 0x1b,
+    0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c,
+    0x10, 0x50, 0x31, 0x32, 0x54, 0x65, 0x73, 0x74, 0x2d, 0x53,
+    0x65, 0x72, 0x76, 0x65, 0x72, 0x2d, 0x31, 0x30, 0x81, 0x9f,
+    0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
+    0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30,
+    0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xbc, 0xdc, 0x6f, 0x8c,
+    0x7a, 0x2a, 0x4b, 0xea, 0x66, 0x66, 0x04, 0xa9, 0x05, 0x92,
+    0x53, 0xd7, 0x13, 0x3c, 0x49, 0xe1, 0xc8, 0xbb, 0xdf, 0x3d,
+    0xcb, 0x88, 0x31, 0x07, 0x20, 0x59, 0x93, 0x24, 0x7f, 0x7d,
+    0xc6, 0x84, 0x81, 0x16, 0x64, 0x4a, 0x52, 0xa6, 0x30, 0x44,
+    0xdc, 0x1a, 0x30, 0xde, 0xae, 0x29, 0x18, 0xcf, 0xc7, 0xf3,
+    0xcf, 0x0c, 0xb7, 0x8e, 0x2b, 0x1e, 0x21, 0x01, 0x0b, 0xfb,
+    0xe5, 0xe6, 0xcf, 0x2b, 0x84, 0xe1, 0x33, 0xf8, 0xba, 0x02,
+    0xfc, 0x30, 0xfa, 0xc4, 0x33, 0xc7, 0x37, 0xc6, 0x7f, 0x72,
+    0x31, 0x92, 0x1d, 0x8f, 0xa0, 0xfb, 0xe5, 0x4a, 0x08, 0x31,
+    0x78, 0x80, 0x9c, 0x23, 0xb4, 0xe9, 0x19, 0x56, 0x04, 0xfa,
+    0x0d, 0x07, 0x04, 0xb7, 0x43, 0xac, 0x4c, 0x49, 0x7c, 0xc2,
+    0xa1, 0x44, 0xc1, 0x48, 0x7d, 0x28, 0xe5, 0x23, 0x66, 0x07,
+    0x22, 0xd5, 0xf0, 0xf1, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3,
+    0x3b, 0x30, 0x39, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23,
+    0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xdb, 0xbb, 0xb8, 0x92,
+    0x4e, 0x24, 0x0b, 0x1b, 0xbb, 0x78, 0x33, 0xf9, 0x01, 0x02,
+    0x23, 0x0d, 0x96, 0x18, 0x30, 0x47, 0x30, 0x09, 0x06, 0x03,
+    0x55, 0x1d, 0x13, 0x04, 0x02, 0x30, 0x00, 0x30, 0x0b, 0x06,
+    0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x04, 0xf0,
+    0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
+    0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x1c,
+    0x13, 0xdc, 0x02, 0xf1, 0x44, 0x36, 0x65, 0xa9, 0xbe, 0x30,
+    0x1c, 0x66, 0x14, 0x20, 0x86, 0x5a, 0xa8, 0x69, 0x25, 0xf8,
+    0x1a, 0xb6, 0x9e, 0x5e, 0xe9, 0x89, 0xb8, 0x67, 0x70, 0x19,
+    0x87, 0x60, 0xeb, 0x4b, 0x11, 0x71, 0x85, 0xf8, 0xe9, 0xa7,
+    0x3e, 0x20, 0x42, 0xec, 0x43, 0x25, 0x01, 0x03, 0xe5, 0x4d,
+    0x83, 0x22, 0xf5, 0x8e, 0x3a, 0x1a, 0x1b, 0xd4, 0x1c, 0xda,
+    0x6b, 0x9d, 0x10, 0x1b, 0xee, 0x67, 0x4e, 0x1f, 0x69, 0xab,
+    0xbc, 0xaa, 0x62, 0x8e, 0x9e, 0xc6, 0xee, 0xd6, 0x09, 0xc0,
+    0xca, 0xe0, 0xaa, 0x9f, 0x07, 0xb2, 0xc2, 0xbb, 0x31, 0x96,
+    0xa2, 0x04, 0x62, 0xd3, 0x13, 0x32, 0x29, 0x67, 0x6e, 0xad,
+    0x2e, 0x0b, 0xea, 0x04, 0x7c, 0x8c, 0x5a, 0x5d, 0xac, 0x14,
+    0xaa, 0x61, 0x7f, 0x28, 0x6c, 0x2d, 0x64, 0x2d, 0xc3, 0xaf,
+    0x77, 0x52, 0x90, 0xb4, 0x37, 0xc0, 0x30
 };
 
 static const unsigned char CERT2[] = {
-    0x30,
-    0x82,
-    0x01,
-    0xed,
-    0x30,
-    0x82,
-    0x01,
-    0x56,
-    0xa0,
-    0x03,
-    0x02,
-    0x01,
-    0x02,
-    0x02,
-    0x09,
-    0x00,
-    0x8b,
-    0x4b,
-    0x5e,
-    0x6c,
-    0x03,
-    0x28,
-    0x4e,
-    0xe7,
-    0x30,
-    0x0d,
-    0x06,
-    0x09,
-    0x2a,
-    0x86,
-    0x48,
-    0x86,
-    0xf7,
-    0x0d,
-    0x01,
-    0x01,
-    0x0b,
-    0x05,
-    0x00,
-    0x30,
-    0x19,
-    0x31,
-    0x17,
-    0x30,
-    0x15,
-    0x06,
-    0x03,
-    0x55,
-    0x04,
-    0x03,
-    0x0c,
-    0x0e,
-    0x50,
-    0x31,
-    0x32,
-    0x54,
-    0x65,
-    0x73,
-    0x74,
-    0x2d,
-    0x52,
-    0x6f,
-    0x6f,
-    0x74,
-    0x2d,
-    0x41,
-    0x30,
-    0x1e,
-    0x17,
-    0x0d,
-    0x31,
-    0x39,
-    0x30,
-    0x39,
-    0x33,
-    0x30,
-    0x30,
-    0x30,
-    0x34,
-    0x36,
-    0x35,
-    0x36,
-    0x5a,
-    0x17,
-    0x0d,
-    0x32,
-    0x39,
-    0x30,
-    0x39,
-    0x32,
-    0x37,
-    0x30,
-    0x30,
-    0x34,
-    0x36,
-    0x35,
-    0x36,
-    0x5a,
-    0x30,
-    0x1b,
-    0x31,
-    0x19,
-    0x30,
-    0x17,
-    0x06,
-    0x03,
-    0x55,
-    0x04,
-    0x03,
-    0x0c,
-    0x10,
-    0x50,
-    0x31,
-    0x32,
-    0x54,
-    0x65,
-    0x73,
-    0x74,
-    0x2d,
-    0x43,
-    0x6c,
-    0x69,
-    0x65,
-    0x6e,
-    0x74,
-    0x2d,
-    0x31,
-    0x30,
-    0x81,
-    0x9f,
-    0x30,
-    0x0d,
-    0x06,
-    0x09,
-    0x2a,
-    0x86,
-    0x48,
-    0x86,
-    0xf7,
-    0x0d,
-    0x01,
-    0x01,
-    0x01,
-    0x05,
-    0x00,
-    0x03,
-    0x81,
-    0x8d,
-    0x00,
-    0x30,
-    0x81,
-    0x89,
-    0x02,
-    0x81,
-    0x81,
-    0x00,
-    0xa8,
-    0x6e,
-    0x40,
-    0x86,
-    0x9f,
-    0x98,
-    0x59,
-    0xfb,
-    0x57,
-    0xbf,
-    0xc1,
-    0x55,
-    0x12,
-    0x38,
-    0xeb,
-    0xb3,
-    0x46,
-    0x34,
-    0xc9,
-    0x35,
-    0x4d,
-    0xfd,
-    0x03,
-    0xe9,
-    0x3a,
-    0x88,
-    0x9e,
-    0x97,
-    0x8f,
-    0xf4,
-    0xec,
-    0x36,
-    0x7b,
-    0x3f,
-    0xba,
-    0xb8,
-    0xa5,
-    0x96,
-    0x30,
-    0x03,
-    0xc5,
-    0xc6,
-    0xd9,
-    0xa8,
-    0x4e,
-    0xbc,
-    0x23,
-    0x51,
-    0xa1,
-    0x96,
-    0xd2,
-    0x03,
-    0x98,
-    0x73,
-    0xb6,
-    0x17,
-    0x9c,
-    0x77,
-    0xd4,
-    0x95,
-    0x1e,
-    0x1b,
-    0xb3,
-    0x1b,
-    0xc8,
-    0x71,
-    0xd1,
-    0x2e,
-    0x31,
-    0xc7,
-    0x6a,
-    0x75,
-    0x57,
-    0x08,
-    0x7f,
-    0xba,
-    0x70,
-    0x76,
-    0xf7,
-    0x67,
-    0xf4,
-    0x4e,
-    0xbe,
-    0xfc,
-    0x70,
-    0x61,
-    0x41,
-    0x07,
-    0x2b,
-    0x7c,
-    0x3c,
-    0x3b,
-    0xb3,
-    0xbc,
-    0xd5,
-    0xa8,
-    0xbd,
-    0x28,
-    0xd8,
-    0x49,
-    0xd3,
-    0xe1,
-    0x78,
-    0xc8,
-    0xc1,
-    0x42,
-    0x5e,
-    0x18,
-    0x36,
-    0xa8,
-    0x41,
-    0xf7,
-    0xc8,
-    0xaa,
-    0x35,
-    0xfe,
-    0x2d,
-    0xd1,
-    0xb4,
-    0xcc,
-    0x00,
-    0x67,
-    0xae,
-    0x79,
-    0xd3,
-    0x28,
-    0xd5,
-    0x5b,
-    0x02,
-    0x03,
-    0x01,
-    0x00,
-    0x01,
-    0xa3,
-    0x3b,
-    0x30,
-    0x39,
-    0x30,
-    0x1f,
-    0x06,
-    0x03,
-    0x55,
-    0x1d,
-    0x23,
-    0x04,
-    0x18,
-    0x30,
-    0x16,
-    0x80,
-    0x14,
-    0xdb,
-    0xbb,
-    0xb8,
-    0x92,
-    0x4e,
-    0x24,
-    0x0b,
-    0x1b,
-    0xbb,
-    0x78,
-    0x33,
-    0xf9,
-    0x01,
-    0x02,
-    0x23,
-    0x0d,
-    0x96,
-    0x18,
-    0x30,
-    0x47,
-    0x30,
-    0x09,
-    0x06,
-    0x03,
-    0x55,
-    0x1d,
-    0x13,
-    0x04,
-    0x02,
-    0x30,
-    0x00,
-    0x30,
-    0x0b,
-    0x06,
-    0x03,
-    0x55,
-    0x1d,
-    0x0f,
-    0x04,
-    0x04,
-    0x03,
-    0x02,
-    0x04,
-    0xf0,
-    0x30,
-    0x0d,
-    0x06,
-    0x09,
-    0x2a,
-    0x86,
-    0x48,
-    0x86,
-    0xf7,
-    0x0d,
-    0x01,
-    0x01,
-    0x0b,
-    0x05,
-    0x00,
-    0x03,
-    0x81,
-    0x81,
-    0x00,
-    0x3b,
-    0xa6,
-    0x73,
-    0xbe,
-    0xe0,
-    0x28,
-    0xed,
-    0x1f,
-    0x29,
-    0x78,
-    0x4c,
-    0xc0,
-    0x1f,
-    0xe9,
-    0x85,
-    0xc6,
-    0x8f,
-    0xe3,
-    0x87,
-    0x7c,
-    0xd9,
-    0xe7,
-    0x0a,
-    0x37,
-    0xe8,
-    0xaa,
-    0xb5,
-    0xd2,
-    0x7f,
-    0xf8,
-    0x90,
-    0x20,
-    0x80,
-    0x35,
-    0xa7,
-    0x79,
-    0x2b,
-    0x04,
-    0xa7,
-    0xbf,
-    0xe6,
-    0x7b,
-    0x58,
-    0xcb,
-    0xec,
-    0x0e,
-    0x58,
-    0xef,
-    0x2a,
-    0x70,
-    0x8a,
-    0x56,
-    0x8a,
-    0xcf,
-    0x6b,
-    0x7a,
-    0x74,
-    0x0c,
-    0xf4,
-    0x15,
-    0x37,
-    0x93,
-    0xcd,
-    0xe6,
-    0xb2,
-    0xa1,
-    0x83,
-    0x09,
-    0xdb,
-    0x9e,
-    0x4f,
-    0xff,
-    0x6a,
-    0x17,
-    0x4f,
-    0x33,
-    0xc9,
-    0xcc,
-    0x90,
-    0x2a,
-    0x67,
-    0xff,
-    0x16,
-    0x78,
-    0xa8,
-    0x2c,
-    0x10,
-    0xe0,
-    0x52,
-    0x8c,
-    0xe6,
-    0xe9,
-    0x90,
-    0x8d,
-    0xe0,
-    0x62,
-    0x04,
-    0x9a,
-    0x0f,
-    0x44,
-    0x01,
-    0x82,
-    0x14,
-    0x92,
-    0x44,
-    0x25,
-    0x69,
-    0x22,
-    0xb7,
-    0xb8,
-    0xc5,
-    0x94,
-    0x4c,
-    0x4b,
-    0x1c,
-    0x9b,
-    0x92,
-    0x60,
-    0x66,
-    0x90,
-    0x4e,
-    0xb9,
-    0xa8,
-    0x4c,
-    0x89,
-    0xbb,
-    0x0f,
-    0x0b,
+    0x30, 0x82, 0x01, 0xed, 0x30, 0x82, 0x01, 0x56, 0xa0, 0x03,
+    0x02, 0x01, 0x02, 0x02, 0x09, 0x00, 0x8b, 0x4b, 0x5e, 0x6c,
+    0x03, 0x28, 0x4e, 0xe7, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
+    0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30,
+    0x19, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x03,
+    0x0c, 0x0e, 0x50, 0x31, 0x32, 0x54, 0x65, 0x73, 0x74, 0x2d,
+    0x52, 0x6f, 0x6f, 0x74, 0x2d, 0x41, 0x30, 0x1e, 0x17, 0x0d,
+    0x31, 0x39, 0x30, 0x39, 0x33, 0x30, 0x30, 0x30, 0x34, 0x36,
+    0x35, 0x36, 0x5a, 0x17, 0x0d, 0x32, 0x39, 0x30, 0x39, 0x32,
+    0x37, 0x30, 0x30, 0x34, 0x36, 0x35, 0x36, 0x5a, 0x30, 0x1b,
+    0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c,
+    0x10, 0x50, 0x31, 0x32, 0x54, 0x65, 0x73, 0x74, 0x2d, 0x43,
+    0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2d, 0x31, 0x30, 0x81, 0x9f,
+    0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
+    0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30,
+    0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xa8, 0x6e, 0x40, 0x86,
+    0x9f, 0x98, 0x59, 0xfb, 0x57, 0xbf, 0xc1, 0x55, 0x12, 0x38,
+    0xeb, 0xb3, 0x46, 0x34, 0xc9, 0x35, 0x4d, 0xfd, 0x03, 0xe9,
+    0x3a, 0x88, 0x9e, 0x97, 0x8f, 0xf4, 0xec, 0x36, 0x7b, 0x3f,
+    0xba, 0xb8, 0xa5, 0x96, 0x30, 0x03, 0xc5, 0xc6, 0xd9, 0xa8,
+    0x4e, 0xbc, 0x23, 0x51, 0xa1, 0x96, 0xd2, 0x03, 0x98, 0x73,
+    0xb6, 0x17, 0x9c, 0x77, 0xd4, 0x95, 0x1e, 0x1b, 0xb3, 0x1b,
+    0xc8, 0x71, 0xd1, 0x2e, 0x31, 0xc7, 0x6a, 0x75, 0x57, 0x08,
+    0x7f, 0xba, 0x70, 0x76, 0xf7, 0x67, 0xf4, 0x4e, 0xbe, 0xfc,
+    0x70, 0x61, 0x41, 0x07, 0x2b, 0x7c, 0x3c, 0x3b, 0xb3, 0xbc,
+    0xd5, 0xa8, 0xbd, 0x28, 0xd8, 0x49, 0xd3, 0xe1, 0x78, 0xc8,
+    0xc1, 0x42, 0x5e, 0x18, 0x36, 0xa8, 0x41, 0xf7, 0xc8, 0xaa,
+    0x35, 0xfe, 0x2d, 0xd1, 0xb4, 0xcc, 0x00, 0x67, 0xae, 0x79,
+    0xd3, 0x28, 0xd5, 0x5b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3,
+    0x3b, 0x30, 0x39, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23,
+    0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xdb, 0xbb, 0xb8, 0x92,
+    0x4e, 0x24, 0x0b, 0x1b, 0xbb, 0x78, 0x33, 0xf9, 0x01, 0x02,
+    0x23, 0x0d, 0x96, 0x18, 0x30, 0x47, 0x30, 0x09, 0x06, 0x03,
+    0x55, 0x1d, 0x13, 0x04, 0x02, 0x30, 0x00, 0x30, 0x0b, 0x06,
+    0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x04, 0xf0,
+    0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
+    0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x3b,
+    0xa6, 0x73, 0xbe, 0xe0, 0x28, 0xed, 0x1f, 0x29, 0x78, 0x4c,
+    0xc0, 0x1f, 0xe9, 0x85, 0xc6, 0x8f, 0xe3, 0x87, 0x7c, 0xd9,
+    0xe7, 0x0a, 0x37, 0xe8, 0xaa, 0xb5, 0xd2, 0x7f, 0xf8, 0x90,
+    0x20, 0x80, 0x35, 0xa7, 0x79, 0x2b, 0x04, 0xa7, 0xbf, 0xe6,
+    0x7b, 0x58, 0xcb, 0xec, 0x0e, 0x58, 0xef, 0x2a, 0x70, 0x8a,
+    0x56, 0x8a, 0xcf, 0x6b, 0x7a, 0x74, 0x0c, 0xf4, 0x15, 0x37,
+    0x93, 0xcd, 0xe6, 0xb2, 0xa1, 0x83, 0x09, 0xdb, 0x9e, 0x4f,
+    0xff, 0x6a, 0x17, 0x4f, 0x33, 0xc9, 0xcc, 0x90, 0x2a, 0x67,
+    0xff, 0x16, 0x78, 0xa8, 0x2c, 0x10, 0xe0, 0x52, 0x8c, 0xe6,
+    0xe9, 0x90, 0x8d, 0xe0, 0x62, 0x04, 0x9a, 0x0f, 0x44, 0x01,
+    0x82, 0x14, 0x92, 0x44, 0x25, 0x69, 0x22, 0xb7, 0xb8, 0xc5,
+    0x94, 0x4c, 0x4b, 0x1c, 0x9b, 0x92, 0x60, 0x66, 0x90, 0x4e,
+    0xb9, 0xa8, 0x4c, 0x89, 0xbb, 0x0f, 0x0b
 };
 
 static const unsigned char KEY1[] = {
-    0x30,
-    0x82,
-    0x02,
-    0x5d,
-    0x02,
-    0x01,
-    0x00,
-    0x02,
-    0x81,
-    0x81,
-    0x00,
-    0xbc,
-    0xdc,
-    0x6f,
-    0x8c,
-    0x7a,
-    0x2a,
-    0x4b,
-    0xea,
-    0x66,
-    0x66,
-    0x04,
-    0xa9,
-    0x05,
-    0x92,
-    0x53,
-    0xd7,
-    0x13,
-    0x3c,
-    0x49,
-    0xe1,
-    0xc8,
-    0xbb,
-    0xdf,
-    0x3d,
-    0xcb,
-    0x88,
-    0x31,
-    0x07,
-    0x20,
-    0x59,
-    0x93,
-    0x24,
-    0x7f,
-    0x7d,
-    0xc6,
-    0x84,
-    0x81,
-    0x16,
-    0x64,
-    0x4a,
-    0x52,
-    0xa6,
-    0x30,
-    0x44,
-    0xdc,
-    0x1a,
-    0x30,
-    0xde,
-    0xae,
-    0x29,
-    0x18,
-    0xcf,
-    0xc7,
-    0xf3,
-    0xcf,
-    0x0c,
-    0xb7,
-    0x8e,
-    0x2b,
-    0x1e,
-    0x21,
-    0x01,
-    0x0b,
-    0xfb,
-    0xe5,
-    0xe6,
-    0xcf,
-    0x2b,
-    0x84,
-    0xe1,
-    0x33,
-    0xf8,
-    0xba,
-    0x02,
-    0xfc,
-    0x30,
-    0xfa,
-    0xc4,
-    0x33,
-    0xc7,
-    0x37,
-    0xc6,
-    0x7f,
-    0x72,
-    0x31,
-    0x92,
-    0x1d,
-    0x8f,
-    0xa0,
-    0xfb,
-    0xe5,
-    0x4a,
-    0x08,
-    0x31,
-    0x78,
-    0x80,
-    0x9c,
-    0x23,
-    0xb4,
-    0xe9,
-    0x19,
-    0x56,
-    0x04,
-    0xfa,
-    0x0d,
-    0x07,
-    0x04,
-    0xb7,
-    0x43,
-    0xac,
-    0x4c,
-    0x49,
-    0x7c,
-    0xc2,
-    0xa1,
-    0x44,
-    0xc1,
-    0x48,
-    0x7d,
-    0x28,
-    0xe5,
-    0x23,
-    0x66,
-    0x07,
-    0x22,
-    0xd5,
-    0xf0,
-    0xf1,
-    0x02,
-    0x03,
-    0x01,
-    0x00,
-    0x01,
-    0x02,
-    0x81,
-    0x81,
-    0x00,
-    0xa5,
-    0x6d,
-    0xf9,
-    0x8f,
-    0xf5,
-    0x5a,
-    0xa3,
-    0x50,
-    0xd9,
-    0x0d,
-    0x37,
-    0xbb,
-    0xce,
-    0x13,
-    0x94,
-    0xb8,
-    0xea,
-    0x32,
-    0x7f,
-    0x0c,
-    0xf5,
-    0x46,
-    0x0b,
-    0x90,
-    0x17,
-    0x7e,
-    0x5e,
-    0x63,
-    0xbd,
-    0xa4,
-    0x78,
-    0xcd,
-    0x19,
-    0x97,
-    0xd4,
-    0x92,
-    0x30,
-    0x78,
-    0xaa,
-    0xb4,
-    0xa7,
-    0x9c,
-    0xc6,
-    0xdf,
-    0x2a,
-    0x65,
-    0x0e,
-    0xb5,
-    0x9f,
-    0x9c,
-    0x84,
-    0x0d,
-    0x4d,
-    0x3a,
-    0x74,
-    0xfc,
-    0xd0,
-    0xb4,
-    0x09,
-    0x74,
-    0xc4,
-    0xb8,
-    0x24,
-    0x03,
-    0xa8,
-    0xf0,
-    0xf8,
-    0x0d,
-    0x5c,
-    0x8e,
-    0xdf,
-    0x4b,
-    0xe1,
-    0x0a,
-    0x8f,
-    0x4f,
-    0xd5,
-    0xc7,
-    0x9b,
-    0x54,
-    0x55,
-    0x8f,
-    0x00,
-    0x5c,
-    0xea,
-    0x4c,
-    0x73,
-    0xf9,
-    0x1b,
-    0xbf,
-    0xb8,
-    0x93,
-    0x33,
-    0x20,
-    0xce,
-    0x45,
-    0xd9,
-    0x03,
-    0x02,
-    0xb2,
-    0x36,
-    0xc5,
-    0x0a,
-    0x30,
-    0x50,
-    0x78,
-    0x80,
-    0x66,
-    0x00,
-    0x22,
-    0x38,
-    0x86,
-    0xcf,
-    0x63,
-    0x4a,
-    0x5c,
-    0xbf,
-    0x2b,
-    0xd9,
-    0x6e,
-    0xe6,
-    0xf0,
-    0x39,
-    0xad,
-    0x12,
-    0x25,
-    0x41,
-    0xb9,
-    0x02,
-    0x41,
-    0x00,
-    0xf3,
-    0x7c,
-    0x07,
-    0x99,
-    0x64,
-    0x3a,
-    0x28,
-    0x8c,
-    0x8d,
-    0x05,
-    0xfe,
-    0x32,
-    0xb5,
-    0x4c,
-    0x8c,
-    0x6d,
-    0xde,
-    0x3d,
-    0x16,
-    0x08,
-    0xa0,
-    0x01,
-    0x61,
-    0x4f,
-    0x8e,
-    0xa0,
-    0xf7,
-    0x26,
-    0x26,
-    0xb5,
-    0x8e,
-    0xc0,
-    0x7a,
-    0xce,
-    0x86,
-    0x34,
-    0xde,
-    0xb8,
-    0xef,
-    0x86,
-    0x01,
-    0xbe,
-    0x24,
-    0xaa,
-    0x9b,
-    0x36,
-    0x93,
-    0x72,
-    0x9b,
-    0xf9,
-    0xc6,
-    0xcb,
-    0x76,
-    0x84,
-    0x67,
-    0x06,
-    0x06,
-    0x30,
-    0x50,
-    0xdf,
-    0x42,
-    0x17,
-    0xe0,
-    0xa7,
-    0x02,
-    0x41,
-    0x00,
-    0xc6,
-    0x91,
-    0xa0,
-    0x41,
-    0x34,
-    0x11,
-    0x67,
-    0x4b,
-    0x08,
-    0x0f,
-    0xda,
-    0xa7,
-    0x99,
-    0xec,
-    0x58,
-    0x11,
-    0xa5,
-    0x82,
-    0xdb,
-    0x50,
-    0xfe,
-    0x77,
-    0xe2,
-    0xd1,
-    0x53,
-    0x9c,
-    0x7d,
-    0xe8,
-    0xbf,
-    0xe7,
-    0x7c,
-    0xa9,
-    0x01,
-    0xb1,
-    0x87,
-    0xc3,
-    0x52,
-    0x79,
-    0x9e,
-    0x2c,
-    0xa7,
-    0x6f,
-    0x02,
-    0x37,
-    0x32,
-    0xef,
-    0x24,
-    0x31,
-    0x21,
-    0x0b,
-    0x86,
-    0x05,
-    0x32,
-    0x4a,
-    0x2e,
-    0x0b,
-    0x65,
-    0x05,
-    0xd3,
-    0xd6,
-    0x30,
-    0xb2,
-    0xfc,
-    0xa7,
-    0x02,
-    0x41,
-    0x00,
-    0xc2,
-    0xed,
-    0x31,
-    0xdc,
-    0x40,
-    0x9c,
-    0x3a,
-    0xe8,
-    0x42,
-    0xe2,
-    0x60,
-    0x5e,
-    0x52,
-    0x3c,
-    0xc5,
-    0x54,
-    0x14,
-    0x0e,
-    0x8d,
-    0x7c,
-    0x3c,
-    0x34,
-    0xbe,
-    0xa6,
-    0x05,
-    0x86,
-    0xa2,
-    0x36,
-    0x5d,
-    0xd9,
-    0x0e,
-    0x3e,
-    0xd4,
-    0x52,
-    0x50,
-    0xa9,
-    0x35,
-    0x01,
-    0x93,
-    0x68,
-    0x92,
-    0x2e,
-    0x9a,
-    0x86,
-    0x27,
-    0x1a,
-    0xab,
-    0x32,
-    0x9e,
-    0xe2,
-    0x79,
-    0x9f,
-    0x5b,
-    0xf3,
-    0xa5,
-    0xd2,
-    0xf1,
-    0xd3,
-    0x6e,
-    0x7b,
-    0x3e,
-    0x1b,
-    0x85,
-    0x93,
-    0x02,
-    0x40,
-    0x68,
-    0xb8,
-    0xb6,
-    0x7e,
-    0x8c,
-    0xba,
-    0x3c,
-    0xf2,
-    0x8a,
-    0x2e,
-    0xea,
-    0x4f,
-    0x07,
-    0xd3,
-    0x68,
-    0x62,
-    0xee,
-    0x1a,
-    0x04,
-    0x16,
-    0x44,
-    0x0d,
-    0xef,
-    0xf6,
-    0x1b,
-    0x95,
-    0x65,
-    0xa5,
-    0xd1,
-    0x47,
-    0x81,
-    0x2c,
-    0x14,
-    0xb3,
-    0x8e,
-    0xf9,
-    0x08,
-    0xcf,
-    0x11,
-    0x07,
-    0x55,
-    0xca,
-    0x2a,
-    0xad,
-    0xf7,
-    0xd3,
-    0xbd,
-    0x0f,
-    0x97,
-    0xf0,
-    0xde,
-    0xde,
-    0x70,
-    0xb6,
-    0x44,
-    0x70,
-    0x47,
-    0xf7,
-    0xf9,
-    0xcf,
-    0x75,
-    0x61,
-    0x7f,
-    0xf3,
-    0x02,
-    0x40,
-    0x38,
-    0x4a,
-    0x67,
-    0xaf,
-    0xae,
-    0xb6,
-    0xb2,
-    0x6a,
-    0x00,
-    0x25,
-    0x5a,
-    0xa4,
-    0x65,
-    0x20,
-    0xb1,
-    0x13,
-    0xbd,
-    0x83,
-    0xff,
-    0xb4,
-    0xbc,
-    0xf4,
-    0xdd,
-    0xa1,
-    0xbb,
-    0x1c,
-    0x96,
-    0x37,
-    0x35,
-    0xf4,
-    0xbf,
-    0xed,
-    0x4c,
-    0xed,
-    0x92,
-    0xe8,
-    0xac,
-    0xc9,
-    0xc1,
-    0xa5,
-    0xa3,
-    0x23,
-    0x66,
-    0x40,
-    0x8a,
-    0xa1,
-    0xe6,
-    0xe3,
-    0x95,
-    0xfe,
-    0xc4,
-    0x53,
-    0xf5,
-    0x7d,
-    0x6e,
-    0xca,
-    0x45,
-    0x42,
-    0xe4,
-    0xc2,
-    0x9f,
-    0xe5,
-    0x1e,
-    0xb5,
+    0x30, 0x82, 0x02, 0x5d, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81,
+    0x00, 0xbc, 0xdc, 0x6f, 0x8c, 0x7a, 0x2a, 0x4b, 0xea, 0x66,
+    0x66, 0x04, 0xa9, 0x05, 0x92, 0x53, 0xd7, 0x13, 0x3c, 0x49,
+    0xe1, 0xc8, 0xbb, 0xdf, 0x3d, 0xcb, 0x88, 0x31, 0x07, 0x20,
+    0x59, 0x93, 0x24, 0x7f, 0x7d, 0xc6, 0x84, 0x81, 0x16, 0x64,
+    0x4a, 0x52, 0xa6, 0x30, 0x44, 0xdc, 0x1a, 0x30, 0xde, 0xae,
+    0x29, 0x18, 0xcf, 0xc7, 0xf3, 0xcf, 0x0c, 0xb7, 0x8e, 0x2b,
+    0x1e, 0x21, 0x01, 0x0b, 0xfb, 0xe5, 0xe6, 0xcf, 0x2b, 0x84,
+    0xe1, 0x33, 0xf8, 0xba, 0x02, 0xfc, 0x30, 0xfa, 0xc4, 0x33,
+    0xc7, 0x37, 0xc6, 0x7f, 0x72, 0x31, 0x92, 0x1d, 0x8f, 0xa0,
+    0xfb, 0xe5, 0x4a, 0x08, 0x31, 0x78, 0x80, 0x9c, 0x23, 0xb4,
+    0xe9, 0x19, 0x56, 0x04, 0xfa, 0x0d, 0x07, 0x04, 0xb7, 0x43,
+    0xac, 0x4c, 0x49, 0x7c, 0xc2, 0xa1, 0x44, 0xc1, 0x48, 0x7d,
+    0x28, 0xe5, 0x23, 0x66, 0x07, 0x22, 0xd5, 0xf0, 0xf1, 0x02,
+    0x03, 0x01, 0x00, 0x01, 0x02, 0x81, 0x81, 0x00, 0xa5, 0x6d,
+    0xf9, 0x8f, 0xf5, 0x5a, 0xa3, 0x50, 0xd9, 0x0d, 0x37, 0xbb,
+    0xce, 0x13, 0x94, 0xb8, 0xea, 0x32, 0x7f, 0x0c, 0xf5, 0x46,
+    0x0b, 0x90, 0x17, 0x7e, 0x5e, 0x63, 0xbd, 0xa4, 0x78, 0xcd,
+    0x19, 0x97, 0xd4, 0x92, 0x30, 0x78, 0xaa, 0xb4, 0xa7, 0x9c,
+    0xc6, 0xdf, 0x2a, 0x65, 0x0e, 0xb5, 0x9f, 0x9c, 0x84, 0x0d,
+    0x4d, 0x3a, 0x74, 0xfc, 0xd0, 0xb4, 0x09, 0x74, 0xc4, 0xb8,
+    0x24, 0x03, 0xa8, 0xf0, 0xf8, 0x0d, 0x5c, 0x8e, 0xdf, 0x4b,
+    0xe1, 0x0a, 0x8f, 0x4f, 0xd5, 0xc7, 0x9b, 0x54, 0x55, 0x8f,
+    0x00, 0x5c, 0xea, 0x4c, 0x73, 0xf9, 0x1b, 0xbf, 0xb8, 0x93,
+    0x33, 0x20, 0xce, 0x45, 0xd9, 0x03, 0x02, 0xb2, 0x36, 0xc5,
+    0x0a, 0x30, 0x50, 0x78, 0x80, 0x66, 0x00, 0x22, 0x38, 0x86,
+    0xcf, 0x63, 0x4a, 0x5c, 0xbf, 0x2b, 0xd9, 0x6e, 0xe6, 0xf0,
+    0x39, 0xad, 0x12, 0x25, 0x41, 0xb9, 0x02, 0x41, 0x00, 0xf3,
+    0x7c, 0x07, 0x99, 0x64, 0x3a, 0x28, 0x8c, 0x8d, 0x05, 0xfe,
+    0x32, 0xb5, 0x4c, 0x8c, 0x6d, 0xde, 0x3d, 0x16, 0x08, 0xa0,
+    0x01, 0x61, 0x4f, 0x8e, 0xa0, 0xf7, 0x26, 0x26, 0xb5, 0x8e,
+    0xc0, 0x7a, 0xce, 0x86, 0x34, 0xde, 0xb8, 0xef, 0x86, 0x01,
+    0xbe, 0x24, 0xaa, 0x9b, 0x36, 0x93, 0x72, 0x9b, 0xf9, 0xc6,
+    0xcb, 0x76, 0x84, 0x67, 0x06, 0x06, 0x30, 0x50, 0xdf, 0x42,
+    0x17, 0xe0, 0xa7, 0x02, 0x41, 0x00, 0xc6, 0x91, 0xa0, 0x41,
+    0x34, 0x11, 0x67, 0x4b, 0x08, 0x0f, 0xda, 0xa7, 0x99, 0xec,
+    0x58, 0x11, 0xa5, 0x82, 0xdb, 0x50, 0xfe, 0x77, 0xe2, 0xd1,
+    0x53, 0x9c, 0x7d, 0xe8, 0xbf, 0xe7, 0x7c, 0xa9, 0x01, 0xb1,
+    0x87, 0xc3, 0x52, 0x79, 0x9e, 0x2c, 0xa7, 0x6f, 0x02, 0x37,
+    0x32, 0xef, 0x24, 0x31, 0x21, 0x0b, 0x86, 0x05, 0x32, 0x4a,
+    0x2e, 0x0b, 0x65, 0x05, 0xd3, 0xd6, 0x30, 0xb2, 0xfc, 0xa7,
+    0x02, 0x41, 0x00, 0xc2, 0xed, 0x31, 0xdc, 0x40, 0x9c, 0x3a,
+    0xe8, 0x42, 0xe2, 0x60, 0x5e, 0x52, 0x3c, 0xc5, 0x54, 0x14,
+    0x0e, 0x8d, 0x7c, 0x3c, 0x34, 0xbe, 0xa6, 0x05, 0x86, 0xa2,
+    0x36, 0x5d, 0xd9, 0x0e, 0x3e, 0xd4, 0x52, 0x50, 0xa9, 0x35,
+    0x01, 0x93, 0x68, 0x92, 0x2e, 0x9a, 0x86, 0x27, 0x1a, 0xab,
+    0x32, 0x9e, 0xe2, 0x79, 0x9f, 0x5b, 0xf3, 0xa5, 0xd2, 0xf1,
+    0xd3, 0x6e, 0x7b, 0x3e, 0x1b, 0x85, 0x93, 0x02, 0x40, 0x68,
+    0xb8, 0xb6, 0x7e, 0x8c, 0xba, 0x3c, 0xf2, 0x8a, 0x2e, 0xea,
+    0x4f, 0x07, 0xd3, 0x68, 0x62, 0xee, 0x1a, 0x04, 0x16, 0x44,
+    0x0d, 0xef, 0xf6, 0x1b, 0x95, 0x65, 0xa5, 0xd1, 0x47, 0x81,
+    0x2c, 0x14, 0xb3, 0x8e, 0xf9, 0x08, 0xcf, 0x11, 0x07, 0x55,
+    0xca, 0x2a, 0xad, 0xf7, 0xd3, 0xbd, 0x0f, 0x97, 0xf0, 0xde,
+    0xde, 0x70, 0xb6, 0x44, 0x70, 0x47, 0xf7, 0xf9, 0xcf, 0x75,
+    0x61, 0x7f, 0xf3, 0x02, 0x40, 0x38, 0x4a, 0x67, 0xaf, 0xae,
+    0xb6, 0xb2, 0x6a, 0x00, 0x25, 0x5a, 0xa4, 0x65, 0x20, 0xb1,
+    0x13, 0xbd, 0x83, 0xff, 0xb4, 0xbc, 0xf4, 0xdd, 0xa1, 0xbb,
+    0x1c, 0x96, 0x37, 0x35, 0xf4, 0xbf, 0xed, 0x4c, 0xed, 0x92,
+    0xe8, 0xac, 0xc9, 0xc1, 0xa5, 0xa3, 0x23, 0x66, 0x40, 0x8a,
+    0xa1, 0xe6, 0xe3, 0x95, 0xfe, 0xc4, 0x53, 0xf5, 0x7d, 0x6e,
+    0xca, 0x45, 0x42, 0xe4, 0xc2, 0x9f, 0xe5, 0x1e, 0xb5
 };
 
 static const unsigned char KEY2[] = {
-    0x30,
-    0x82,
-    0x02,
-    0x5c,
-    0x02,
-    0x01,
-    0x00,
-    0x02,
-    0x81,
-    0x81,
-    0x00,
-    0xa8,
-    0x6e,
-    0x40,
-    0x86,
-    0x9f,
-    0x98,
-    0x59,
-    0xfb,
-    0x57,
-    0xbf,
-    0xc1,
-    0x55,
-    0x12,
-    0x38,
-    0xeb,
-    0xb3,
-    0x46,
-    0x34,
-    0xc9,
-    0x35,
-    0x4d,
-    0xfd,
-    0x03,
-    0xe9,
-    0x3a,
-    0x88,
-    0x9e,
-    0x97,
-    0x8f,
-    0xf4,
-    0xec,
-    0x36,
-    0x7b,
-    0x3f,
-    0xba,
-    0xb8,
-    0xa5,
-    0x96,
-    0x30,
-    0x03,
-    0xc5,
-    0xc6,
-    0xd9,
-    0xa8,
-    0x4e,
-    0xbc,
-    0x23,
-    0x51,
-    0xa1,
-    0x96,
-    0xd2,
-    0x03,
-    0x98,
-    0x73,
-    0xb6,
-    0x17,
-    0x9c,
-    0x77,
-    0xd4,
-    0x95,
-    0x1e,
-    0x1b,
-    0xb3,
-    0x1b,
-    0xc8,
-    0x71,
-    0xd1,
-    0x2e,
-    0x31,
-    0xc7,
-    0x6a,
-    0x75,
-    0x57,
-    0x08,
-    0x7f,
-    0xba,
-    0x70,
-    0x76,
-    0xf7,
-    0x67,
-    0xf4,
-    0x4e,
-    0xbe,
-    0xfc,
-    0x70,
-    0x61,
-    0x41,
-    0x07,
-    0x2b,
-    0x7c,
-    0x3c,
-    0x3b,
-    0xb3,
-    0xbc,
-    0xd5,
-    0xa8,
-    0xbd,
-    0x28,
-    0xd8,
-    0x49,
-    0xd3,
-    0xe1,
-    0x78,
-    0xc8,
-    0xc1,
-    0x42,
-    0x5e,
-    0x18,
-    0x36,
-    0xa8,
-    0x41,
-    0xf7,
-    0xc8,
-    0xaa,
-    0x35,
-    0xfe,
-    0x2d,
-    0xd1,
-    0xb4,
-    0xcc,
-    0x00,
-    0x67,
-    0xae,
-    0x79,
-    0xd3,
-    0x28,
-    0xd5,
-    0x5b,
-    0x02,
-    0x03,
-    0x01,
-    0x00,
-    0x01,
-    0x02,
-    0x81,
-    0x81,
-    0x00,
-    0xa6,
-    0x00,
-    0x83,
-    0xf8,
-    0x2b,
-    0x33,
-    0xac,
-    0xfb,
-    0xdb,
-    0xf0,
-    0x52,
-    0x4b,
-    0xd6,
-    0x39,
-    0xe3,
-    0x94,
-    0x3d,
-    0x8d,
-    0xa9,
-    0x01,
-    0xb0,
-    0x6b,
-    0xbe,
-    0x7f,
-    0x10,
-    0x01,
-    0xb6,
-    0xcd,
-    0x0a,
-    0x45,
-    0x0a,
-    0xca,
-    0x67,
-    0x8e,
-    0xd8,
-    0x29,
-    0x44,
-    0x8a,
-    0x51,
-    0xa8,
-    0x66,
-    0x35,
-    0x26,
-    0x30,
-    0x8b,
-    0xe9,
-    0x41,
-    0xa6,
-    0x22,
-    0xec,
-    0xd2,
-    0xf0,
-    0x58,
-    0x41,
-    0x33,
-    0x26,
-    0xf2,
-    0x3f,
-    0xe8,
-    0x75,
-    0x4f,
-    0xc7,
-    0x5d,
-    0x2e,
-    0x5a,
-    0xa8,
-    0x7a,
-    0xd2,
-    0xbf,
-    0x59,
-    0xa0,
-    0x86,
-    0x79,
-    0x0b,
-    0x92,
-    0x6c,
-    0x95,
-    0x5d,
-    0x87,
-    0x63,
-    0x5c,
-    0xd6,
-    0x1a,
-    0xc0,
-    0xf6,
-    0x7a,
-    0x15,
-    0x8d,
-    0xc7,
-    0x3c,
-    0xb6,
-    0x9e,
-    0xa6,
-    0x58,
-    0x46,
-    0x9b,
-    0xbf,
-    0x3e,
-    0x28,
-    0x8c,
-    0xdf,
-    0x1a,
-    0x87,
-    0xaa,
-    0x7e,
-    0xf5,
-    0xf2,
-    0xcb,
-    0x5e,
-    0x84,
-    0x2d,
-    0xf6,
-    0x82,
-    0x7e,
-    0x89,
-    0x4e,
-    0xf5,
-    0xe6,
-    0x3c,
-    0x92,
-    0x80,
-    0x1e,
-    0x98,
-    0x1c,
-    0x6a,
-    0x7b,
-    0x57,
-    0x01,
-    0x02,
-    0x41,
-    0x00,
-    0xdd,
-    0x60,
-    0x95,
-    0xd7,
-    0xa1,
-    0x9d,
-    0x0c,
-    0xa1,
-    0x84,
-    0xc5,
-    0x39,
-    0xca,
-    0x67,
-    0x4c,
-    0x1c,
-    0x06,
-    0x71,
-    0x5b,
-    0x5c,
-    0x2d,
-    0x8d,
-    0xce,
-    0xcd,
-    0xe2,
-    0x79,
-    0xc8,
-    0x33,
-    0xbe,
-    0x50,
-    0x37,
-    0x60,
-    0x9f,
-    0x3b,
-    0xb9,
-    0x59,
-    0x55,
-    0x22,
-    0x1f,
-    0xa5,
-    0x4b,
-    0x1d,
-    0xca,
-    0x38,
-    0xa0,
-    0xab,
-    0x87,
-    0x9c,
-    0x86,
-    0x0e,
-    0xdb,
-    0x1c,
-    0x4f,
-    0x4f,
-    0x07,
-    0xed,
-    0x18,
-    0x3f,
-    0x05,
-    0x3c,
-    0xec,
-    0x78,
-    0x11,
-    0xf6,
-    0x99,
-    0x02,
-    0x41,
-    0x00,
-    0xc2,
-    0xc5,
-    0xcf,
-    0xbe,
-    0x95,
-    0x91,
-    0xeb,
-    0xcf,
-    0x47,
-    0xf3,
-    0x33,
-    0x32,
-    0xc7,
-    0x7e,
-    0x93,
-    0x56,
-    0xf7,
-    0xd8,
-    0xf9,
-    0xd4,
-    0xb6,
-    0xd6,
-    0x20,
-    0xac,
-    0xba,
-    0x8a,
-    0x20,
-    0x19,
-    0x14,
-    0xab,
-    0xc5,
-    0x5d,
-    0xb2,
-    0x08,
-    0xcc,
-    0x77,
-    0x7c,
-    0x65,
-    0xa8,
-    0xdb,
-    0x66,
-    0x97,
-    0x36,
-    0x44,
-    0x2c,
-    0x63,
-    0xc0,
-    0x6a,
-    0x7e,
-    0xb0,
-    0x0b,
-    0x5c,
-    0x90,
-    0x12,
-    0x50,
-    0xb4,
-    0x36,
-    0x60,
-    0xc3,
-    0x1f,
-    0x22,
-    0x0c,
-    0xc8,
-    0x13,
-    0x02,
-    0x40,
-    0x33,
-    0xc8,
-    0x7e,
-    0x04,
-    0x7c,
-    0x97,
-    0x61,
-    0xf6,
-    0xfe,
-    0x39,
-    0xac,
-    0x34,
-    0xfe,
-    0x48,
-    0xbd,
-    0x5d,
-    0x7c,
-    0x72,
-    0xa4,
-    0x73,
-    0x3b,
-    0x72,
-    0x9e,
-    0x92,
-    0x55,
-    0x6e,
-    0x51,
-    0x3c,
-    0x39,
-    0x43,
-    0x5a,
-    0xe4,
-    0xa4,
-    0x71,
-    0xcc,
-    0xc5,
-    0xaf,
-    0x3f,
-    0xbb,
-    0xc8,
-    0x80,
-    0x65,
-    0x67,
-    0x2d,
-    0x9e,
-    0x32,
-    0x10,
-    0x99,
-    0x03,
-    0x2c,
-    0x99,
-    0xc8,
-    0xab,
-    0x71,
-    0xed,
-    0x31,
-    0xf8,
-    0xbb,
-    0xde,
-    0xee,
-    0x69,
-    0x7f,
-    0xba,
-    0x31,
-    0x02,
-    0x40,
-    0x7e,
-    0xbc,
-    0x60,
-    0x55,
-    0x4e,
-    0xd5,
-    0xc8,
-    0x6e,
-    0xf4,
-    0x0e,
-    0x57,
-    0xbe,
-    0x2e,
-    0xf9,
-    0x39,
-    0xbe,
-    0x59,
-    0x3f,
-    0xa2,
-    0x30,
-    0xbb,
-    0x57,
-    0xd1,
-    0xa3,
-    0x13,
-    0x2e,
-    0x55,
-    0x7c,
-    0x7c,
-    0x6a,
-    0xd8,
-    0xde,
-    0x02,
-    0xbe,
-    0x9e,
-    0xed,
-    0x10,
-    0xd0,
-    0xc5,
-    0x73,
-    0x1d,
-    0xea,
-    0x3e,
-    0xb1,
-    0x55,
-    0x81,
-    0x02,
-    0xef,
-    0x48,
-    0xc8,
-    0x1c,
-    0x5c,
-    0x7a,
-    0x92,
-    0xb0,
-    0x58,
-    0xd3,
-    0x19,
-    0x5b,
-    0x5d,
-    0xa2,
-    0xb6,
-    0x56,
-    0x69,
-    0x02,
-    0x40,
-    0x1e,
-    0x00,
-    0x6a,
-    0x9f,
-    0xba,
-    0xee,
-    0x46,
-    0x5a,
-    0xc5,
-    0xb5,
-    0x9f,
-    0x91,
-    0x33,
-    0xdd,
-    0xc9,
-    0x96,
-    0x75,
-    0xb7,
-    0x87,
-    0xcf,
-    0x18,
-    0x1c,
-    0xb7,
-    0xb9,
-    0x3f,
-    0x04,
-    0x10,
-    0xb8,
-    0x75,
-    0xa9,
-    0xb8,
-    0xa0,
-    0x31,
-    0x35,
-    0x03,
-    0x30,
-    0x89,
-    0xc8,
-    0x37,
-    0x68,
-    0x20,
-    0x30,
-    0x99,
-    0x39,
-    0x96,
-    0xd6,
-    0x2b,
-    0x3d,
-    0x5e,
-    0x45,
-    0x84,
-    0xf7,
-    0xd2,
-    0x61,
-    0x50,
-    0xc9,
-    0x50,
-    0xba,
-    0x8d,
-    0x08,
-    0xaa,
-    0xd0,
-    0x08,
-    0x1e,
+    0x30, 0x82, 0x02, 0x5c, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81,
+    0x00, 0xa8, 0x6e, 0x40, 0x86, 0x9f, 0x98, 0x59, 0xfb, 0x57,
+    0xbf, 0xc1, 0x55, 0x12, 0x38, 0xeb, 0xb3, 0x46, 0x34, 0xc9,
+    0x35, 0x4d, 0xfd, 0x03, 0xe9, 0x3a, 0x88, 0x9e, 0x97, 0x8f,
+    0xf4, 0xec, 0x36, 0x7b, 0x3f, 0xba, 0xb8, 0xa5, 0x96, 0x30,
+    0x03, 0xc5, 0xc6, 0xd9, 0xa8, 0x4e, 0xbc, 0x23, 0x51, 0xa1,
+    0x96, 0xd2, 0x03, 0x98, 0x73, 0xb6, 0x17, 0x9c, 0x77, 0xd4,
+    0x95, 0x1e, 0x1b, 0xb3, 0x1b, 0xc8, 0x71, 0xd1, 0x2e, 0x31,
+    0xc7, 0x6a, 0x75, 0x57, 0x08, 0x7f, 0xba, 0x70, 0x76, 0xf7,
+    0x67, 0xf4, 0x4e, 0xbe, 0xfc, 0x70, 0x61, 0x41, 0x07, 0x2b,
+    0x7c, 0x3c, 0x3b, 0xb3, 0xbc, 0xd5, 0xa8, 0xbd, 0x28, 0xd8,
+    0x49, 0xd3, 0xe1, 0x78, 0xc8, 0xc1, 0x42, 0x5e, 0x18, 0x36,
+    0xa8, 0x41, 0xf7, 0xc8, 0xaa, 0x35, 0xfe, 0x2d, 0xd1, 0xb4,
+    0xcc, 0x00, 0x67, 0xae, 0x79, 0xd3, 0x28, 0xd5, 0x5b, 0x02,
+    0x03, 0x01, 0x00, 0x01, 0x02, 0x81, 0x81, 0x00, 0xa6, 0x00,
+    0x83, 0xf8, 0x2b, 0x33, 0xac, 0xfb, 0xdb, 0xf0, 0x52, 0x4b,
+    0xd6, 0x39, 0xe3, 0x94, 0x3d, 0x8d, 0xa9, 0x01, 0xb0, 0x6b,
+    0xbe, 0x7f, 0x10, 0x01, 0xb6, 0xcd, 0x0a, 0x45, 0x0a, 0xca,
+    0x67, 0x8e, 0xd8, 0x29, 0x44, 0x8a, 0x51, 0xa8, 0x66, 0x35,
+    0x26, 0x30, 0x8b, 0xe9, 0x41, 0xa6, 0x22, 0xec, 0xd2, 0xf0,
+    0x58, 0x41, 0x33, 0x26, 0xf2, 0x3f, 0xe8, 0x75, 0x4f, 0xc7,
+    0x5d, 0x2e, 0x5a, 0xa8, 0x7a, 0xd2, 0xbf, 0x59, 0xa0, 0x86,
+    0x79, 0x0b, 0x92, 0x6c, 0x95, 0x5d, 0x87, 0x63, 0x5c, 0xd6,
+    0x1a, 0xc0, 0xf6, 0x7a, 0x15, 0x8d, 0xc7, 0x3c, 0xb6, 0x9e,
+    0xa6, 0x58, 0x46, 0x9b, 0xbf, 0x3e, 0x28, 0x8c, 0xdf, 0x1a,
+    0x87, 0xaa, 0x7e, 0xf5, 0xf2, 0xcb, 0x5e, 0x84, 0x2d, 0xf6,
+    0x82, 0x7e, 0x89, 0x4e, 0xf5, 0xe6, 0x3c, 0x92, 0x80, 0x1e,
+    0x98, 0x1c, 0x6a, 0x7b, 0x57, 0x01, 0x02, 0x41, 0x00, 0xdd,
+    0x60, 0x95, 0xd7, 0xa1, 0x9d, 0x0c, 0xa1, 0x84, 0xc5, 0x39,
+    0xca, 0x67, 0x4c, 0x1c, 0x06, 0x71, 0x5b, 0x5c, 0x2d, 0x8d,
+    0xce, 0xcd, 0xe2, 0x79, 0xc8, 0x33, 0xbe, 0x50, 0x37, 0x60,
+    0x9f, 0x3b, 0xb9, 0x59, 0x55, 0x22, 0x1f, 0xa5, 0x4b, 0x1d,
+    0xca, 0x38, 0xa0, 0xab, 0x87, 0x9c, 0x86, 0x0e, 0xdb, 0x1c,
+    0x4f, 0x4f, 0x07, 0xed, 0x18, 0x3f, 0x05, 0x3c, 0xec, 0x78,
+    0x11, 0xf6, 0x99, 0x02, 0x41, 0x00, 0xc2, 0xc5, 0xcf, 0xbe,
+    0x95, 0x91, 0xeb, 0xcf, 0x47, 0xf3, 0x33, 0x32, 0xc7, 0x7e,
+    0x93, 0x56, 0xf7, 0xd8, 0xf9, 0xd4, 0xb6, 0xd6, 0x20, 0xac,
+    0xba, 0x8a, 0x20, 0x19, 0x14, 0xab, 0xc5, 0x5d, 0xb2, 0x08,
+    0xcc, 0x77, 0x7c, 0x65, 0xa8, 0xdb, 0x66, 0x97, 0x36, 0x44,
+    0x2c, 0x63, 0xc0, 0x6a, 0x7e, 0xb0, 0x0b, 0x5c, 0x90, 0x12,
+    0x50, 0xb4, 0x36, 0x60, 0xc3, 0x1f, 0x22, 0x0c, 0xc8, 0x13,
+    0x02, 0x40, 0x33, 0xc8, 0x7e, 0x04, 0x7c, 0x97, 0x61, 0xf6,
+    0xfe, 0x39, 0xac, 0x34, 0xfe, 0x48, 0xbd, 0x5d, 0x7c, 0x72,
+    0xa4, 0x73, 0x3b, 0x72, 0x9e, 0x92, 0x55, 0x6e, 0x51, 0x3c,
+    0x39, 0x43, 0x5a, 0xe4, 0xa4, 0x71, 0xcc, 0xc5, 0xaf, 0x3f,
+    0xbb, 0xc8, 0x80, 0x65, 0x67, 0x2d, 0x9e, 0x32, 0x10, 0x99,
+    0x03, 0x2c, 0x99, 0xc8, 0xab, 0x71, 0xed, 0x31, 0xf8, 0xbb,
+    0xde, 0xee, 0x69, 0x7f, 0xba, 0x31, 0x02, 0x40, 0x7e, 0xbc,
+    0x60, 0x55, 0x4e, 0xd5, 0xc8, 0x6e, 0xf4, 0x0e, 0x57, 0xbe,
+    0x2e, 0xf9, 0x39, 0xbe, 0x59, 0x3f, 0xa2, 0x30, 0xbb, 0x57,
+    0xd1, 0xa3, 0x13, 0x2e, 0x55, 0x7c, 0x7c, 0x6a, 0xd8, 0xde,
+    0x02, 0xbe, 0x9e, 0xed, 0x10, 0xd0, 0xc5, 0x73, 0x1d, 0xea,
+    0x3e, 0xb1, 0x55, 0x81, 0x02, 0xef, 0x48, 0xc8, 0x1c, 0x5c,
+    0x7a, 0x92, 0xb0, 0x58, 0xd3, 0x19, 0x5b, 0x5d, 0xa2, 0xb6,
+    0x56, 0x69, 0x02, 0x40, 0x1e, 0x00, 0x6a, 0x9f, 0xba, 0xee,
+    0x46, 0x5a, 0xc5, 0xb5, 0x9f, 0x91, 0x33, 0xdd, 0xc9, 0x96,
+    0x75, 0xb7, 0x87, 0xcf, 0x18, 0x1c, 0xb7, 0xb9, 0x3f, 0x04,
+    0x10, 0xb8, 0x75, 0xa9, 0xb8, 0xa0, 0x31, 0x35, 0x03, 0x30,
+    0x89, 0xc8, 0x37, 0x68, 0x20, 0x30, 0x99, 0x39, 0x96, 0xd6,
+    0x2b, 0x3d, 0x5e, 0x45, 0x84, 0xf7, 0xd2, 0x61, 0x50, 0xc9,
+    0x50, 0xba, 0x8d, 0x08, 0xaa, 0xd0, 0x08, 0x1e
 };
 
 static const PKCS12_ATTR ATTRS1[] = {
@@ -2873,615 +884,67 @@
     const unsigned char *p;
 
     static const unsigned char rsa_key[] = {
-        0x30,
-        0x82,
-        0x02,
-        0x5d,
-        0x02,
-        0x01,
-        0x00,
-        0x02,
-        0x81,
-        0x81,
-        0x00,
-        0xbb,
-        0x24,
-        0x7a,
-        0x09,
-        0x7e,
-        0x0e,
-        0xb2,
-        0x37,
-        0x32,
-        0xcc,
-        0x39,
-        0x67,
-        0xad,
-        0xf1,
-        0x9e,
-        0x3d,
-        0x6b,
-        0x82,
-        0x83,
-        0xd1,
-        0xd0,
-        0xac,
-        0xa4,
-        0xc0,
-        0x18,
-        0xbe,
-        0x8d,
-        0x98,
-        0x00,
-        0xc0,
-        0x7b,
-        0xff,
-        0x07,
-        0x44,
-        0xc9,
-        0xca,
-        0x1c,
-        0xba,
-        0x36,
-        0xe1,
-        0x27,
-        0x69,
-        0xff,
-        0xb1,
-        0xe3,
-        0x8d,
-        0x8b,
-        0xee,
-        0x57,
-        0xa9,
-        0x3a,
-        0xaa,
-        0x16,
-        0x43,
-        0x39,
-        0x54,
-        0x19,
-        0x7c,
-        0xae,
-        0x69,
-        0x24,
-        0x14,
-        0xf6,
-        0x64,
-        0xff,
-        0xbc,
-        0x74,
-        0xc6,
-        0x67,
-        0x6c,
-        0x4c,
-        0xf1,
-        0x02,
-        0x49,
-        0x69,
-        0xc7,
-        0x2b,
-        0xe1,
-        0xe1,
-        0xa1,
-        0xa3,
-        0x43,
-        0x14,
-        0xf4,
-        0x77,
-        0x8f,
-        0xc8,
-        0xd0,
-        0x85,
-        0x5a,
-        0x35,
-        0x95,
-        0xac,
-        0x62,
-        0xa9,
-        0xc1,
-        0x21,
-        0x00,
-        0x77,
-        0xa0,
-        0x8b,
-        0x97,
-        0x30,
-        0xb4,
-        0x5a,
-        0x2c,
-        0xb8,
-        0x90,
-        0x2f,
-        0x48,
-        0xa0,
-        0x05,
-        0x28,
-        0x4b,
-        0xf2,
-        0x0f,
-        0x8d,
-        0xec,
-        0x8b,
-        0x4d,
-        0x03,
-        0x42,
-        0x75,
-        0xd6,
-        0xad,
-        0x81,
-        0xc0,
-        0x11,
-        0x02,
-        0x03,
-        0x01,
-        0x00,
-        0x01,
-        0x02,
-        0x81,
-        0x80,
-        0x00,
-        0xfc,
-        0xb9,
-        0x4a,
-        0x26,
-        0x07,
-        0x89,
-        0x51,
-        0x2b,
-        0x53,
-        0x72,
-        0x91,
-        0xe0,
-        0x18,
-        0x3e,
-        0xa6,
-        0x5e,
-        0x31,
-        0xef,
-        0x9c,
-        0x0c,
-        0x16,
-        0x24,
-        0x42,
-        0xd0,
-        0x28,
-        0x33,
-        0xf9,
-        0xfa,
-        0xd0,
-        0x3c,
-        0x54,
-        0x04,
-        0x06,
-        0xc0,
-        0x15,
-        0xf5,
-        0x1b,
-        0x9a,
-        0xb3,
-        0x24,
-        0x31,
-        0xab,
-        0x3c,
-        0x6b,
-        0x47,
-        0x43,
-        0xb0,
-        0xd2,
-        0xa9,
-        0xdc,
-        0x05,
-        0xe1,
-        0x81,
-        0x59,
-        0xb6,
-        0x04,
-        0xe9,
-        0x66,
-        0x61,
-        0xaa,
-        0xd7,
-        0x0b,
-        0x00,
-        0x8f,
-        0x3d,
-        0xe5,
-        0xbf,
-        0xa2,
-        0xf8,
-        0x5e,
-        0x25,
-        0x6c,
-        0x1e,
-        0x22,
-        0x0f,
-        0xb4,
-        0xfd,
-        0x41,
-        0xe2,
-        0x03,
-        0x31,
-        0x5f,
-        0xda,
-        0x20,
-        0xc5,
-        0xc0,
-        0xf3,
-        0x55,
-        0x0e,
-        0xe1,
-        0xc9,
-        0xec,
-        0xd7,
-        0x3e,
-        0x2a,
-        0x0c,
-        0x01,
-        0xca,
-        0x7b,
-        0x22,
-        0xcb,
-        0xac,
-        0xf4,
-        0x2b,
-        0x27,
-        0xf0,
-        0x78,
-        0x5f,
-        0xb5,
-        0xc2,
-        0xf9,
-        0xe8,
-        0x14,
-        0x5a,
-        0x6e,
-        0x7e,
-        0x86,
-        0xbd,
-        0x6a,
-        0x9b,
-        0x20,
-        0x0c,
-        0xba,
-        0xcc,
-        0x97,
-        0x20,
-        0x11,
-        0x02,
-        0x41,
-        0x00,
-        0xc9,
-        0x59,
-        0x9f,
-        0x29,
-        0x8a,
-        0x5b,
-        0x9f,
-        0xe3,
-        0x2a,
-        0xd8,
-        0x7e,
-        0xc2,
-        0x40,
-        0x9f,
-        0xa8,
-        0x45,
-        0xe5,
-        0x3e,
-        0x11,
-        0x8d,
-        0x3c,
-        0xed,
-        0x6e,
-        0xab,
-        0xce,
-        0xd0,
-        0x65,
-        0x46,
-        0xd8,
-        0xc7,
-        0x07,
-        0x63,
-        0xb5,
-        0x23,
-        0x34,
-        0xf4,
-        0x9f,
-        0x7e,
-        0x1c,
-        0xc7,
-        0xc7,
-        0xf9,
-        0x65,
-        0xd1,
-        0xf4,
-        0x04,
-        0x42,
-        0x38,
-        0xbe,
-        0x3a,
-        0x0c,
-        0x9d,
-        0x08,
-        0x25,
-        0xfc,
-        0xa3,
-        0x71,
-        0xd9,
-        0xae,
-        0x0c,
-        0x39,
-        0x61,
-        0xf4,
-        0x89,
-        0x02,
-        0x41,
-        0x00,
-        0xed,
-        0xef,
-        0xab,
-        0xa9,
-        0xd5,
-        0x39,
-        0x9c,
-        0xee,
-        0x59,
-        0x1b,
-        0xff,
-        0xcf,
-        0x48,
-        0x44,
-        0x1b,
-        0xb6,
-        0x32,
-        0xe7,
-        0x46,
-        0x24,
-        0xf3,
-        0x04,
-        0x7f,
-        0xde,
-        0x95,
-        0x08,
-        0x6d,
-        0x75,
-        0x9e,
-        0x67,
-        0x17,
-        0xba,
-        0x5c,
-        0xa4,
-        0xd4,
-        0xe2,
-        0xe2,
-        0x4d,
-        0x77,
-        0xce,
-        0xeb,
-        0x66,
-        0x29,
-        0xc5,
-        0x96,
-        0xe0,
-        0x62,
-        0xbb,
-        0xe5,
-        0xac,
-        0xdc,
-        0x44,
-        0x62,
-        0x54,
-        0x86,
-        0xed,
-        0x64,
-        0x0c,
-        0xce,
-        0xd0,
-        0x60,
-        0x03,
-        0x9d,
-        0x49,
-        0x02,
-        0x40,
-        0x54,
-        0xd9,
-        0x18,
-        0x72,
-        0x27,
-        0xe4,
-        0xbe,
-        0x76,
-        0xbb,
-        0x1a,
-        0x6a,
-        0x28,
-        0x2f,
-        0x95,
-        0x58,
-        0x12,
-        0xc4,
-        0x2c,
-        0xa8,
-        0xb6,
-        0xcc,
-        0xe2,
-        0xfd,
-        0x0d,
-        0x17,
-        0x64,
-        0xc8,
-        0x18,
-        0xd7,
-        0xc6,
-        0xdf,
-        0x3d,
-        0x4c,
-        0x1a,
-        0x9e,
-        0xf9,
-        0x2a,
-        0xb0,
-        0xb9,
-        0x2e,
-        0x12,
-        0xfd,
-        0xec,
-        0xc3,
-        0x51,
-        0xc1,
-        0xed,
-        0xa9,
-        0xfd,
-        0xb7,
-        0x76,
-        0x93,
-        0x41,
-        0xd8,
-        0xc8,
-        0x22,
-        0x94,
-        0x1a,
-        0x77,
-        0xf6,
-        0x9c,
-        0xc3,
-        0xc3,
-        0x89,
-        0x02,
-        0x41,
-        0x00,
-        0x8e,
-        0xf9,
-        0xa7,
-        0x08,
-        0xad,
-        0xb5,
-        0x2a,
-        0x04,
-        0xdb,
-        0x8d,
-        0x04,
-        0xa1,
-        0xb5,
-        0x06,
-        0x20,
-        0x34,
-        0xd2,
-        0xcf,
-        0xc0,
-        0x89,
-        0xb1,
-        0x72,
-        0x31,
-        0xb8,
-        0x39,
-        0x8b,
-        0xcf,
-        0xe2,
-        0x8e,
-        0xa5,
-        0xda,
-        0x4f,
-        0x45,
-        0x1e,
-        0x53,
-        0x42,
-        0x66,
-        0xc4,
-        0x30,
-        0x4b,
-        0x29,
-        0x8e,
-        0xc1,
-        0x69,
-        0x17,
-        0x29,
-        0x8c,
-        0x8a,
-        0xe6,
-        0x0f,
-        0x82,
-        0x68,
-        0xa1,
-        0x41,
-        0xb3,
-        0xb6,
-        0x70,
-        0x99,
-        0x75,
-        0xa9,
-        0x27,
-        0x18,
-        0xe4,
-        0xe9,
-        0x02,
-        0x41,
-        0x00,
-        0x89,
-        0xea,
-        0x6e,
-        0x6d,
-        0x70,
-        0xdf,
-        0x25,
-        0x5f,
-        0x18,
-        0x3f,
-        0x48,
-        0xda,
-        0x63,
-        0x10,
-        0x8b,
-        0xfe,
-        0xa8,
-        0x0c,
-        0x94,
-        0x0f,
-        0xde,
-        0x97,
-        0x56,
-        0x53,
-        0x89,
-        0x94,
-        0xe2,
-        0x1e,
-        0x2c,
-        0x74,
-        0x3c,
-        0x91,
-        0x81,
-        0x34,
-        0x0b,
-        0xa6,
-        0x40,
-        0xf8,
-        0xcb,
-        0x2a,
-        0x60,
-        0x8c,
-        0xe0,
-        0x02,
-        0xb7,
-        0x89,
-        0x93,
-        0xcf,
-        0x18,
-        0x9f,
-        0x49,
-        0x54,
-        0xfd,
-        0x7d,
-        0x3f,
-        0x9a,
-        0xef,
-        0xd4,
-        0xa4,
-        0x4f,
-        0xc1,
-        0x45,
-        0x99,
-        0x91,
+        0x30, 0x82, 0x02, 0x5d, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81,
+        0x00, 0xbb, 0x24, 0x7a, 0x09, 0x7e, 0x0e, 0xb2, 0x37, 0x32,
+        0xcc, 0x39, 0x67, 0xad, 0xf1, 0x9e, 0x3d, 0x6b, 0x82, 0x83,
+        0xd1, 0xd0, 0xac, 0xa4, 0xc0, 0x18, 0xbe, 0x8d, 0x98, 0x00,
+        0xc0, 0x7b, 0xff, 0x07, 0x44, 0xc9, 0xca, 0x1c, 0xba, 0x36,
+        0xe1, 0x27, 0x69, 0xff, 0xb1, 0xe3, 0x8d, 0x8b, 0xee, 0x57,
+        0xa9, 0x3a, 0xaa, 0x16, 0x43, 0x39, 0x54, 0x19, 0x7c, 0xae,
+        0x69, 0x24, 0x14, 0xf6, 0x64, 0xff, 0xbc, 0x74, 0xc6, 0x67,
+        0x6c, 0x4c, 0xf1, 0x02, 0x49, 0x69, 0xc7, 0x2b, 0xe1, 0xe1,
+        0xa1, 0xa3, 0x43, 0x14, 0xf4, 0x77, 0x8f, 0xc8, 0xd0, 0x85,
+        0x5a, 0x35, 0x95, 0xac, 0x62, 0xa9, 0xc1, 0x21, 0x00, 0x77,
+        0xa0, 0x8b, 0x97, 0x30, 0xb4, 0x5a, 0x2c, 0xb8, 0x90, 0x2f,
+        0x48, 0xa0, 0x05, 0x28, 0x4b, 0xf2, 0x0f, 0x8d, 0xec, 0x8b,
+        0x4d, 0x03, 0x42, 0x75, 0xd6, 0xad, 0x81, 0xc0, 0x11, 0x02,
+        0x03, 0x01, 0x00, 0x01, 0x02, 0x81, 0x80, 0x00, 0xfc, 0xb9,
+        0x4a, 0x26, 0x07, 0x89, 0x51, 0x2b, 0x53, 0x72, 0x91, 0xe0,
+        0x18, 0x3e, 0xa6, 0x5e, 0x31, 0xef, 0x9c, 0x0c, 0x16, 0x24,
+        0x42, 0xd0, 0x28, 0x33, 0xf9, 0xfa, 0xd0, 0x3c, 0x54, 0x04,
+        0x06, 0xc0, 0x15, 0xf5, 0x1b, 0x9a, 0xb3, 0x24, 0x31, 0xab,
+        0x3c, 0x6b, 0x47, 0x43, 0xb0, 0xd2, 0xa9, 0xdc, 0x05, 0xe1,
+        0x81, 0x59, 0xb6, 0x04, 0xe9, 0x66, 0x61, 0xaa, 0xd7, 0x0b,
+        0x00, 0x8f, 0x3d, 0xe5, 0xbf, 0xa2, 0xf8, 0x5e, 0x25, 0x6c,
+        0x1e, 0x22, 0x0f, 0xb4, 0xfd, 0x41, 0xe2, 0x03, 0x31, 0x5f,
+        0xda, 0x20, 0xc5, 0xc0, 0xf3, 0x55, 0x0e, 0xe1, 0xc9, 0xec,
+        0xd7, 0x3e, 0x2a, 0x0c, 0x01, 0xca, 0x7b, 0x22, 0xcb, 0xac,
+        0xf4, 0x2b, 0x27, 0xf0, 0x78, 0x5f, 0xb5, 0xc2, 0xf9, 0xe8,
+        0x14, 0x5a, 0x6e, 0x7e, 0x86, 0xbd, 0x6a, 0x9b, 0x20, 0x0c,
+        0xba, 0xcc, 0x97, 0x20, 0x11, 0x02, 0x41, 0x00, 0xc9, 0x59,
+        0x9f, 0x29, 0x8a, 0x5b, 0x9f, 0xe3, 0x2a, 0xd8, 0x7e, 0xc2,
+        0x40, 0x9f, 0xa8, 0x45, 0xe5, 0x3e, 0x11, 0x8d, 0x3c, 0xed,
+        0x6e, 0xab, 0xce, 0xd0, 0x65, 0x46, 0xd8, 0xc7, 0x07, 0x63,
+        0xb5, 0x23, 0x34, 0xf4, 0x9f, 0x7e, 0x1c, 0xc7, 0xc7, 0xf9,
+        0x65, 0xd1, 0xf4, 0x04, 0x42, 0x38, 0xbe, 0x3a, 0x0c, 0x9d,
+        0x08, 0x25, 0xfc, 0xa3, 0x71, 0xd9, 0xae, 0x0c, 0x39, 0x61,
+        0xf4, 0x89, 0x02, 0x41, 0x00, 0xed, 0xef, 0xab, 0xa9, 0xd5,
+        0x39, 0x9c, 0xee, 0x59, 0x1b, 0xff, 0xcf, 0x48, 0x44, 0x1b,
+        0xb6, 0x32, 0xe7, 0x46, 0x24, 0xf3, 0x04, 0x7f, 0xde, 0x95,
+        0x08, 0x6d, 0x75, 0x9e, 0x67, 0x17, 0xba, 0x5c, 0xa4, 0xd4,
+        0xe2, 0xe2, 0x4d, 0x77, 0xce, 0xeb, 0x66, 0x29, 0xc5, 0x96,
+        0xe0, 0x62, 0xbb, 0xe5, 0xac, 0xdc, 0x44, 0x62, 0x54, 0x86,
+        0xed, 0x64, 0x0c, 0xce, 0xd0, 0x60, 0x03, 0x9d, 0x49, 0x02,
+        0x40, 0x54, 0xd9, 0x18, 0x72, 0x27, 0xe4, 0xbe, 0x76, 0xbb,
+        0x1a, 0x6a, 0x28, 0x2f, 0x95, 0x58, 0x12, 0xc4, 0x2c, 0xa8,
+        0xb6, 0xcc, 0xe2, 0xfd, 0x0d, 0x17, 0x64, 0xc8, 0x18, 0xd7,
+        0xc6, 0xdf, 0x3d, 0x4c, 0x1a, 0x9e, 0xf9, 0x2a, 0xb0, 0xb9,
+        0x2e, 0x12, 0xfd, 0xec, 0xc3, 0x51, 0xc1, 0xed, 0xa9, 0xfd,
+        0xb7, 0x76, 0x93, 0x41, 0xd8, 0xc8, 0x22, 0x94, 0x1a, 0x77,
+        0xf6, 0x9c, 0xc3, 0xc3, 0x89, 0x02, 0x41, 0x00, 0x8e, 0xf9,
+        0xa7, 0x08, 0xad, 0xb5, 0x2a, 0x04, 0xdb, 0x8d, 0x04, 0xa1,
+        0xb5, 0x06, 0x20, 0x34, 0xd2, 0xcf, 0xc0, 0x89, 0xb1, 0x72,
+        0x31, 0xb8, 0x39, 0x8b, 0xcf, 0xe2, 0x8e, 0xa5, 0xda, 0x4f,
+        0x45, 0x1e, 0x53, 0x42, 0x66, 0xc4, 0x30, 0x4b, 0x29, 0x8e,
+        0xc1, 0x69, 0x17, 0x29, 0x8c, 0x8a, 0xe6, 0x0f, 0x82, 0x68,
+        0xa1, 0x41, 0xb3, 0xb6, 0x70, 0x99, 0x75, 0xa9, 0x27, 0x18,
+        0xe4, 0xe9, 0x02, 0x41, 0x00, 0x89, 0xea, 0x6e, 0x6d, 0x70,
+        0xdf, 0x25, 0x5f, 0x18, 0x3f, 0x48, 0xda, 0x63, 0x10, 0x8b,
+        0xfe, 0xa8, 0x0c, 0x94, 0x0f, 0xde, 0x97, 0x56, 0x53, 0x89,
+        0x94, 0xe2, 0x1e, 0x2c, 0x74, 0x3c, 0x91, 0x81, 0x34, 0x0b,
+        0xa6, 0x40, 0xf8, 0xcb, 0x2a, 0x60, 0x8c, 0xe0, 0x02, 0xb7,
+        0x89, 0x93, 0xcf, 0x18, 0x9f, 0x49, 0x54, 0xfd, 0x7d, 0x3f,
+        0x9a, 0xef, 0xd4, 0xa4, 0x4f, 0xc1, 0x45, 0x99, 0x91
     };
 
     p = rsa_key;
diff -Nru openssl-3.5.6/test/quicapitest.c openssl-3.5.7/test/quicapitest.c
--- openssl-3.5.6/test/quicapitest.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/quicapitest.c	2026-06-09 13:54:25.000000000 +0200
@@ -19,6 +19,7 @@
 #include "testutil.h"
 #include "testutil/output.h"
 #include "../ssl/ssl_local.h"
+#include "../ssl/quic/quic_channel_local.h"
 #include "internal/quic_error.h"
 
 static OSSL_LIB_CTX *libctx = NULL;
@@ -2689,6 +2690,84 @@
     return testresult;
 }
 
+/*
+ * Verify that the SSL* received in the info callback after SSL_new_from_listener
+ * is the outer QUIC connection object, not the inner TLS SSL.
+ */
+static SSL *new_from_listener_info_cb_ssl = NULL;
+
+static void new_from_listener_info_cb(const SSL *ssl, int type, int val)
+{
+    if (type == SSL_CB_HANDSHAKE_DONE)
+        new_from_listener_info_cb_ssl = (SSL *)ssl;
+}
+
+static int test_ssl_new_from_listener_user_ssl(void)
+{
+    SSL_CTX *lctx = NULL, *sctx = NULL;
+    SSL *qlistener = NULL, *qserver = NULL, *qconn = NULL;
+    BIO *lbio = NULL, *sbio = NULL;
+    BIO_ADDR *addr = NULL;
+    struct in_addr ina;
+    int ret = 0, chk;
+
+    ina.s_addr = htonl(0x1f000001);
+    new_from_listener_info_cb_ssl = NULL;
+
+    if (!TEST_ptr(lctx = create_server_ctx())
+        || !TEST_ptr(sctx = create_server_ctx())
+        || !TEST_true(BIO_new_bio_dgram_pair(&lbio, 0, &sbio, 0)))
+        goto err;
+
+    /*
+     * Register an info callback on the listener CTX. The inner TLS connection
+     * created by ossl_quic_new_from_listener inherits this CTX, so when the TLS
+     * handshake completes it invokes the callback with user_ssl. That must be
+     * qconn (the outer QUIC object), not the inner TLS SSL object.
+     */
+    SSL_CTX_set_info_callback(lctx, new_from_listener_info_cb);
+
+    if (!TEST_ptr(addr = create_addr(&ina, 8041))
+        || !TEST_true(bio_addr_bind(lbio, addr)))
+        goto err;
+    addr = NULL;
+
+    if (!TEST_ptr(addr = create_addr(&ina, 4081))
+        || !TEST_true(bio_addr_bind(sbio, addr)))
+        goto err;
+    addr = NULL;
+
+    qlistener = ql_create(lctx, lbio);
+    lbio = NULL;
+    qserver = ql_create(sctx, sbio);
+    sbio = NULL;
+    if (!TEST_ptr(qlistener) || !TEST_ptr(qserver)
+        || !TEST_ptr(qconn = SSL_new_from_listener(qlistener, 0))
+        || !TEST_ptr(addr = create_addr(&ina, 4081))
+        || !TEST_true(qc_init(qconn, addr)))
+        goto err;
+
+    while ((chk = SSL_do_handshake(qconn)) == -1) {
+        SSL_handle_events(qserver);
+        SSL_handle_events(qlistener);
+    }
+
+    ret = TEST_int_gt(chk, 0)
+        && TEST_ptr(new_from_listener_info_cb_ssl)
+        && TEST_ptr_eq(new_from_listener_info_cb_ssl, qconn);
+
+err:
+    SSL_free(qconn);
+    SSL_free(qlistener);
+    SSL_free(qserver);
+    BIO_free(lbio);
+    BIO_free(sbio);
+    SSL_CTX_free(sctx);
+    SSL_CTX_free(lctx);
+    BIO_ADDR_free(addr);
+    return ret;
+}
+
 static int test_server_method_with_ssl_new(void)
 {
     SSL_CTX *ctx = NULL;
@@ -2941,6 +3020,74 @@
     return TEST_skip("EC(X) keys are not supported in this build");
 #endif
 }
+
+static int test_quic_resize_txe(void)
+{
+    SSL_CTX *cctx = NULL;
+    SSL *clientquic = NULL;
+    QUIC_TSERVER *qtserv = NULL;
+    QUIC_CHANNEL *ch = NULL;
+    unsigned char msg[] = "resize test";
+    unsigned char buf[sizeof(msg)];
+    size_t numbytes = 0;
+    int ret = 0;
+
+    if (!TEST_ptr(cctx = SSL_CTX_new_ex(libctx, NULL, OSSL_QUIC_client_method())))
+        goto end;
+
+    if (!TEST_true(qtest_create_quic_objects(libctx, cctx, NULL,
+            cert, privkey, 0,
+            &qtserv, &clientquic,
+            NULL, NULL)))
+        goto end;
+
+    if (!TEST_true(qtest_create_quic_connection(qtserv, clientquic)))
+        goto end;
+
+    /*
+     * Client writes first to open stream 0 (client-initiated bidirectional).
+     * The server must see the stream before it can write back on it.
+     */
+    if (!TEST_true(SSL_write_ex(clientquic, msg, sizeof(msg), &numbytes))
+        || !TEST_size_t_eq(numbytes, sizeof(msg)))
+        goto end;
+
+    ossl_quic_tserver_tick(qtserv);
+    if (!TEST_true(ossl_quic_tserver_read(qtserv, 0, buf, sizeof(buf),
+            &numbytes)))
+        goto end;
+
+    /*
+     * Increase the server's QTX MDPL above the initial allocation size
+     * (QUIC_MIN_INITIAL_DGRAM_LEN = 1200). All TXEs in the free list have
+     * alloc_len = 1200, so the next write will trigger qtx_resize_txe.
+     */
+    ch = ossl_quic_tserver_get_channel(qtserv);
+    if (!TEST_true(ossl_qtx_set_mdpl(ch->qtx,
+            QUIC_MIN_INITIAL_DGRAM_LEN + 250)))
+        goto end;
+
+    /* Trigger a server write: exercises qtx_resize_txe via qtx_reserve_txe */
+    if (!TEST_true(ossl_quic_tserver_write(qtserv, 0,
+            msg, sizeof(msg), &numbytes))
+        || !TEST_size_t_eq(numbytes, sizeof(msg)))
+        goto end;
+
+    ossl_quic_tserver_tick(qtserv);
+    SSL_handle_events(clientquic);
+
+    if (!TEST_true(SSL_read_ex(clientquic, buf, sizeof(buf), &numbytes))
+        || !TEST_mem_eq(buf, numbytes, msg, sizeof(msg)))
+        goto end;
+
+    ret = 1;
+end:
+    ossl_quic_tserver_free(qtserv);
+    SSL_free(clientquic);
+    SSL_CTX_free(cctx);
+    return ret;
+}
+
 /***********************************************************************************/
 OPT_TEST_DECLARE_USAGE("provider config certsdir datadir\n")
 
@@ -3036,6 +3183,7 @@
     ADD_TEST(test_domain_flags);
     ADD_TEST(test_early_ticks);
     ADD_TEST(test_ssl_new_from_listener);
+    ADD_TEST(test_ssl_new_from_listener_user_ssl);
 #ifndef OPENSSL_NO_SSL_TRACE
     ADD_TEST(test_new_token);
 #endif
@@ -3043,6 +3191,8 @@
     ADD_TEST(test_ssl_accept_connection);
     ADD_TEST(test_ssl_set_verify);
     ADD_TEST(test_client_hello_retry);
+    ADD_TEST(test_quic_resize_txe);
+
     return 1;
 err:
     cleanup_tests();
diff -Nru openssl-3.5.6/test/quic_record_test.c openssl-3.5.7/test/quic_record_test.c
--- openssl-3.5.6/test/quic_record_test.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/quic_record_test.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -232,131 +232,22 @@
 /* 4. Real World - Retry (S2C) */
 static const unsigned char rx_script_4_in[] = {
     0xf0, /* Long; Retry */
-    0x00,
-    0x00,
-    0x00,
-    0x01, /* Version 1 */
+    0x00, 0x00, 0x00, 0x01, /* Version 1 */
     0x00, /* DCID */
-    0x04,
-    0xad,
-    0x15,
-    0x3f,
-    0xae, /* SCID */
+    0x04, 0xad, 0x15, 0x3f, 0xae, /* SCID */
     /* Retry Token, including 16-byte Retry Integrity Tag */
-    0xf6,
-    0x8b,
-    0x6e,
-    0xa3,
-    0xdc,
-    0x40,
-    0x38,
-    0xc6,
-    0xa5,
-    0x99,
-    0x1c,
-    0xa9,
-    0x77,
-    0xe6,
-    0x1d,
-    0x4f,
-    0x09,
-    0x36,
-    0x12,
-    0x26,
-    0x00,
-    0x56,
-    0x0b,
-    0x29,
-    0x7d,
-    0x5e,
-    0xda,
-    0x39,
-    0xc6,
-    0x61,
-    0x57,
-    0x69,
-    0x15,
-    0xff,
-    0x93,
-    0x39,
-    0x95,
-    0xf0,
-    0x57,
-    0xf1,
-    0xe5,
-    0x36,
-    0x08,
-    0xad,
-    0xd2,
-    0x75,
-    0xa9,
-    0x68,
-    0x29,
-    0xed,
-    0xaa,
-    0x03,
-    0x0e,
-    0x5f,
-    0xac,
-    0xbd,
-    0x26,
-    0x07,
-    0x95,
-    0x4e,
-    0x48,
-    0x61,
-    0x26,
-    0xc5,
-    0xe2,
-    0x6c,
-    0x60,
-    0xbf,
-    0xa8,
-    0x6f,
-    0x51,
-    0xbb,
-    0x1d,
-    0xf7,
-    0x98,
-    0x95,
-    0x3b,
-    0x2c,
-    0x50,
-    0x79,
-    0xcc,
-    0xde,
-    0x27,
-    0x84,
-    0x44,
-    0x9b,
-    0xb2,
-    0x4a,
-    0x94,
-    0x4d,
-    0x4d,
-    0x3d,
-    0xbc,
-    0x00,
-    0x9d,
-    0x69,
-    0xad,
-    0x45,
-    0x89,
-    0x04,
-    0x48,
-    0xca,
-    0x04,
-    0xf6,
-    0x3a,
-    0x62,
-    0xc1,
-    0x38,
-    0x9d,
-    0x82,
-    0xb3,
-    0x45,
-    0x62,
-    0x4c,
+    0xf6, 0x8b, 0x6e, 0xa3, 0xdc, 0x40, 0x38, 0xc6, 0xa5, 0x99,
+    0x1c, 0xa9, 0x77, 0xe6, 0x1d, 0x4f, 0x09, 0x36, 0x12, 0x26,
+    0x00, 0x56, 0x0b, 0x29, 0x7d, 0x5e, 0xda, 0x39, 0xc6, 0x61,
+    0x57, 0x69, 0x15, 0xff, 0x93, 0x39, 0x95, 0xf0, 0x57, 0xf1,
+    0xe5, 0x36, 0x08, 0xad, 0xd2, 0x75, 0xa9, 0x68, 0x29, 0xed,
+    0xaa, 0x03, 0x0e, 0x5f, 0xac, 0xbd, 0x26, 0x07, 0x95, 0x4e,
+    0x48, 0x61, 0x26, 0xc5, 0xe2, 0x6c, 0x60, 0xbf, 0xa8, 0x6f,
+    0x51, 0xbb, 0x1d, 0xf7, 0x98, 0x95, 0x3b, 0x2c, 0x50, 0x79,
+    0xcc, 0xde, 0x27, 0x84, 0x44, 0x9b, 0xb2, 0x4a, 0x94, 0x4d,
+    0x4d, 0x3d, 0xbc, 0x00, 0x9d, 0x69, 0xad, 0x45, 0x89, 0x04,
+    0x48, 0xca, 0x04, 0xf6, 0x3a, 0x62, 0xc1, 0x38, 0x9d, 0x82,
+    0xb3, 0x45, 0x62, 0x4c
 };
 
 static const QUIC_PKT_HDR rx_script_4_expect_hdr = {
@@ -411,38 +302,10 @@
 };
 
 static const unsigned char rx_script_5_1rtt_secret[32] = {
-    0x53,
-    0xf2,
-    0x1b,
-    0x94,
-    0xa7,
-    0x65,
-    0xf7,
-    0x76,
-    0xfb,
-    0x06,
-    0x27,
-    0xaa,
-    0xd2,
-    0x3f,
-    0xe0,
-    0x9a,
-    0xbb,
-    0xcf,
-    0x99,
-    0x6f,
-    0x13,
-    0x2c,
-    0x6a,
-    0x37,
-    0x95,
-    0xf3,
-    0xda,
-    0x21,
-    0xcb,
-    0xcb,
-    0xa5,
-    0x26,
+    0x53, 0xf2, 0x1b, 0x94, 0xa7, 0x65, 0xf7, 0x76, 0xfb, 0x06,
+    0x27, 0xaa, 0xd2, 0x3f, 0xe0, 0x9a, 0xbb, 0xcf, 0x99, 0x6f,
+    0x13, 0x2c, 0x6a, 0x37, 0x95, 0xf3, 0xda, 0x21, 0xcb, 0xcb,
+    0xa5, 0x26
 };
 
 static const unsigned char rx_script_5_in[] = {
@@ -463,470 +326,53 @@
     0xd2, /* Length (466) */
     0xe3,
     0xab, /* PN (0) */
-    0x22,
-    0x35,
-    0x34,
-    0x12,
-    0xcf,
-    0x20,
-    0x2b,
-    0x16,
-    0xaf,
-    0x08,
-    0xd4,
-    0xe0,
-    0x94,
-    0x8b,
-    0x1e,
-    0x62,
-    0xdf,
-    0x31,
-    0x61,
-    0xcc,
-    0xf9,
-    0xfa,
-    0x66,
-    0x4f,
-    0x18,
-    0x61,
-    0x07,
-    0xcb,
-    0x13,
-    0xd3,
-    0xf9,
-    0xbf,
-    0xe2,
-    0x8e,
-    0x25,
-    0x8d,
-    0xd1,
-    0xdf,
-    0x58,
-    0x9c,
-    0x05,
-    0x20,
-    0xf9,
-    0xf2,
-    0x01,
-    0x20,
-    0xe9,
-    0x39,
-    0xc3,
-    0x80,
-    0x77,
-    0xec,
-    0xa4,
-    0x57,
-    0xcf,
-    0x57,
-    0x8c,
-    0xdd,
-    0x68,
-    0x82,
-    0x91,
-    0xfe,
-    0x71,
-    0xa0,
-    0xfa,
-    0x56,
-    0x4c,
-    0xf2,
-    0xe7,
-    0x2b,
-    0xd0,
-    0xc0,
-    0xda,
-    0x81,
-    0xe2,
-    0x39,
-    0xb5,
-    0xf0,
-    0x0f,
-    0xd9,
-    0x07,
-    0xd5,
-    0x67,
-    0x09,
-    0x02,
-    0xf0,
-    0xff,
-    0x74,
-    0xb0,
-    0xa0,
-    0xd9,
-    0x3a,
-    0x7e,
-    0xb6,
-    0x57,
-    0x82,
-    0x47,
-    0x18,
-    0x66,
-    0xed,
-    0xe2,
-    0x18,
-    0x4d,
-    0xc2,
-    0x5c,
-    0x9f,
-    0x05,
-    0x09,
-    0x18,
-    0x24,
-    0x0e,
-    0x3f,
-    0x3d,
-    0xf9,
-    0x15,
-    0x8b,
-    0x08,
-    0xfd,
-    0x25,
-    0xe9,
-    0xc9,
-    0xb7,
-    0x8c,
-    0x18,
-    0x7b,
-    0xf3,
-    0x37,
-    0x58,
-    0xf0,
-    0xf0,
-    0xac,
-    0x33,
-    0x55,
-    0x3f,
-    0x39,
-    0xbc,
-    0x62,
-    0x03,
-    0x8a,
-    0xc0,
-    0xd6,
-    0xcc,
-    0x49,
-    0x47,
-    0xeb,
-    0x85,
-    0xb6,
-    0x72,
-    0xd7,
-    0xf8,
-    0xdc,
-    0x01,
-    0x32,
-    0xec,
-    0x1b,
-    0x4e,
-    0x38,
-    0x6e,
-    0x2c,
-    0xc5,
-    0x80,
-    0xf2,
-    0x43,
-    0x4a,
-    0xf5,
-    0xe5,
-    0xa2,
-    0xf8,
-    0x76,
-    0xa7,
-    0xa8,
-    0x57,
-    0x32,
-    0x67,
-    0x72,
-    0xeb,
-    0x82,
-    0xac,
-    0x3e,
-    0xc0,
-    0x15,
-    0x67,
-    0xac,
-    0x32,
-    0x19,
-    0x18,
-    0x0a,
-    0xef,
-    0x20,
-    0xa1,
-    0xe8,
-    0xaf,
-    0xac,
-    0x33,
-    0x87,
-    0x4c,
-    0x55,
-    0x05,
-    0x9b,
-    0x78,
-    0xf0,
-    0x3a,
-    0xce,
-    0x02,
-    0x28,
-    0x06,
-    0x84,
-    0x61,
-    0x97,
-    0xac,
-    0x87,
-    0x8f,
-    0x25,
-    0xe7,
-    0x1b,
-    0xa3,
-    0x02,
-    0x08,
-    0x4c,
-    0x2e,
-    0xef,
-    0xbd,
-    0x4f,
-    0x82,
-    0xe7,
-    0x37,
-    0x6c,
-    0x27,
-    0x6f,
-    0x85,
-    0xb4,
-    0xbc,
-    0x79,
-    0x38,
-    0x45,
-    0x80,
-    0x8a,
-    0xda,
-    0x2f,
-    0x11,
-    0x11,
-    0xac,
-    0x9c,
-    0xf3,
-    0x93,
-    0xc1,
-    0x49,
-    0x1b,
-    0x94,
-    0x12,
-    0x77,
-    0x07,
-    0xdc,
-    0xbf,
-    0xc2,
-    0xfd,
-    0x8b,
-    0xf6,
-    0xf1,
-    0x66,
-    0x1c,
-    0x7f,
-    0x07,
-    0xbf,
-    0x1f,
-    0xae,
-    0x27,
-    0x6c,
-    0x66,
-    0xe9,
-    0xa3,
-    0x64,
-    0x7a,
-    0x96,
-    0x78,
-    0x45,
-    0xfe,
-    0x4b,
-    0x8c,
-    0x6f,
-    0x7f,
-    0x03,
-    0x47,
-    0x3c,
-    0xd7,
-    0xf7,
-    0x63,
-    0x92,
-    0x58,
-    0x5b,
-    0x63,
-    0x83,
-    0x03,
-    0x05,
-    0xc3,
-    0x5d,
-    0x36,
-    0x62,
-    0x63,
-    0x5e,
-    0xcf,
-    0xfe,
-    0x0a,
-    0x29,
-    0xfa,
-    0xeb,
-    0xc8,
-    0xaf,
-    0xce,
-    0x31,
-    0x07,
-    0x6a,
-    0x09,
-    0x41,
-    0xc0,
-    0x2d,
-    0x98,
-    0x70,
-    0x05,
-    0x3b,
-    0x41,
-    0xfc,
-    0x7d,
-    0x61,
-    0xe0,
-    0x41,
-    0x7d,
-    0x13,
-    0x41,
-    0x51,
-    0x52,
-    0xb4,
-    0x78,
-    0xd5,
-    0x46,
-    0x51,
-    0x3b,
-    0xf1,
-    0xcd,
-    0xcc,
-    0x2e,
-    0x49,
-    0x30,
-    0x8b,
-    0x2a,
-    0xd2,
-    0xe6,
-    0x69,
-    0xb5,
-    0x6b,
-    0x7a,
-    0xf4,
-    0xbb,
-    0xd1,
-    0xf8,
-    0x4a,
-    0xe8,
-    0x53,
-    0x10,
-    0x46,
-    0x85,
-    0x8d,
-    0x66,
-    0x8e,
-    0x2b,
-    0xe8,
-    0x5d,
-    0xab,
-    0x7e,
-    0xfe,
-    0x5a,
-    0x79,
-    0xcf,
-    0xc5,
-    0x0c,
-    0x30,
-    0x9e,
-    0x98,
-    0x02,
-    0xb3,
-    0xa6,
-    0xd5,
-    0xfa,
-    0x25,
-    0xa8,
-    0xc8,
-    0xc1,
-    0xd9,
-    0x51,
-    0x60,
-    0x57,
-    0x5d,
-    0xfe,
-    0x75,
-    0x97,
-    0x05,
-    0xda,
-    0xbb,
-    0xc6,
-    0x6a,
-    0xbe,
-    0x5c,
-    0xa5,
-    0x65,
-    0x0a,
-    0x12,
-    0x33,
-    0x1c,
-    0xdf,
-    0xee,
-    0x08,
-    0xa9,
-    0x13,
-    0x13,
-    0x28,
-    0xce,
-    0x61,
-    0x59,
-    0xd1,
-    0x4e,
-    0xc7,
-    0x74,
-    0xfd,
-    0x64,
-    0xde,
-    0x08,
-    0xce,
-    0xda,
-    0x3f,
-    0xec,
-    0xad,
-    0xc9,
-    0xe1,
-    0xf9,
-    0x1f,
-    0x74,
-    0xf6,
-    0x86,
-    0x37,
-    0x6a,
-    0xa0,
-    0xc8,
-    0x0b,
-    0x1b,
-    0x94,
-    0x98,
-    0x86,
-    0x81,
-    0x3b,
-    0xfc,
-    0x47,
-    0x6c,
-    0xc9,
-    0x3e,
-    0x3c,
-    0x30,
-    0xc5,
-    0x9e,
-    0xb2,
-    0x32,
-    0x47,
-    0xf5,
-    0x0c,
-    0x6f,
+    0x22, 0x35, 0x34, 0x12, 0xcf, 0x20, 0x2b, 0x16, 0xaf, 0x08,
+    0xd4, 0xe0, 0x94, 0x8b, 0x1e, 0x62, 0xdf, 0x31, 0x61, 0xcc,
+    0xf9, 0xfa, 0x66, 0x4f, 0x18, 0x61, 0x07, 0xcb, 0x13, 0xd3,
+    0xf9, 0xbf, 0xe2, 0x8e, 0x25, 0x8d, 0xd1, 0xdf, 0x58, 0x9c,
+    0x05, 0x20, 0xf9, 0xf2, 0x01, 0x20, 0xe9, 0x39, 0xc3, 0x80,
+    0x77, 0xec, 0xa4, 0x57, 0xcf, 0x57, 0x8c, 0xdd, 0x68, 0x82,
+    0x91, 0xfe, 0x71, 0xa0, 0xfa, 0x56, 0x4c, 0xf2, 0xe7, 0x2b,
+    0xd0, 0xc0, 0xda, 0x81, 0xe2, 0x39, 0xb5, 0xf0, 0x0f, 0xd9,
+    0x07, 0xd5, 0x67, 0x09, 0x02, 0xf0, 0xff, 0x74, 0xb0, 0xa0,
+    0xd9, 0x3a, 0x7e, 0xb6, 0x57, 0x82, 0x47, 0x18, 0x66, 0xed,
+    0xe2, 0x18, 0x4d, 0xc2, 0x5c, 0x9f, 0x05, 0x09, 0x18, 0x24,
+    0x0e, 0x3f, 0x3d, 0xf9, 0x15, 0x8b, 0x08, 0xfd, 0x25, 0xe9,
+    0xc9, 0xb7, 0x8c, 0x18, 0x7b, 0xf3, 0x37, 0x58, 0xf0, 0xf0,
+    0xac, 0x33, 0x55, 0x3f, 0x39, 0xbc, 0x62, 0x03, 0x8a, 0xc0,
+    0xd6, 0xcc, 0x49, 0x47, 0xeb, 0x85, 0xb6, 0x72, 0xd7, 0xf8,
+    0xdc, 0x01, 0x32, 0xec, 0x1b, 0x4e, 0x38, 0x6e, 0x2c, 0xc5,
+    0x80, 0xf2, 0x43, 0x4a, 0xf5, 0xe5, 0xa2, 0xf8, 0x76, 0xa7,
+    0xa8, 0x57, 0x32, 0x67, 0x72, 0xeb, 0x82, 0xac, 0x3e, 0xc0,
+    0x15, 0x67, 0xac, 0x32, 0x19, 0x18, 0x0a, 0xef, 0x20, 0xa1,
+    0xe8, 0xaf, 0xac, 0x33, 0x87, 0x4c, 0x55, 0x05, 0x9b, 0x78,
+    0xf0, 0x3a, 0xce, 0x02, 0x28, 0x06, 0x84, 0x61, 0x97, 0xac,
+    0x87, 0x8f, 0x25, 0xe7, 0x1b, 0xa3, 0x02, 0x08, 0x4c, 0x2e,
+    0xef, 0xbd, 0x4f, 0x82, 0xe7, 0x37, 0x6c, 0x27, 0x6f, 0x85,
+    0xb4, 0xbc, 0x79, 0x38, 0x45, 0x80, 0x8a, 0xda, 0x2f, 0x11,
+    0x11, 0xac, 0x9c, 0xf3, 0x93, 0xc1, 0x49, 0x1b, 0x94, 0x12,
+    0x77, 0x07, 0xdc, 0xbf, 0xc2, 0xfd, 0x8b, 0xf6, 0xf1, 0x66,
+    0x1c, 0x7f, 0x07, 0xbf, 0x1f, 0xae, 0x27, 0x6c, 0x66, 0xe9,
+    0xa3, 0x64, 0x7a, 0x96, 0x78, 0x45, 0xfe, 0x4b, 0x8c, 0x6f,
+    0x7f, 0x03, 0x47, 0x3c, 0xd7, 0xf7, 0x63, 0x92, 0x58, 0x5b,
+    0x63, 0x83, 0x03, 0x05, 0xc3, 0x5d, 0x36, 0x62, 0x63, 0x5e,
+    0xcf, 0xfe, 0x0a, 0x29, 0xfa, 0xeb, 0xc8, 0xaf, 0xce, 0x31,
+    0x07, 0x6a, 0x09, 0x41, 0xc0, 0x2d, 0x98, 0x70, 0x05, 0x3b,
+    0x41, 0xfc, 0x7d, 0x61, 0xe0, 0x41, 0x7d, 0x13, 0x41, 0x51,
+    0x52, 0xb4, 0x78, 0xd5, 0x46, 0x51, 0x3b, 0xf1, 0xcd, 0xcc,
+    0x2e, 0x49, 0x30, 0x8b, 0x2a, 0xd2, 0xe6, 0x69, 0xb5, 0x6b,
+    0x7a, 0xf4, 0xbb, 0xd1, 0xf8, 0x4a, 0xe8, 0x53, 0x10, 0x46,
+    0x85, 0x8d, 0x66, 0x8e, 0x2b, 0xe8, 0x5d, 0xab, 0x7e, 0xfe,
+    0x5a, 0x79, 0xcf, 0xc5, 0x0c, 0x30, 0x9e, 0x98, 0x02, 0xb3,
+    0xa6, 0xd5, 0xfa, 0x25, 0xa8, 0xc8, 0xc1, 0xd9, 0x51, 0x60,
+    0x57, 0x5d, 0xfe, 0x75, 0x97, 0x05, 0xda, 0xbb, 0xc6, 0x6a,
+    0xbe, 0x5c, 0xa5, 0x65, 0x0a, 0x12, 0x33, 0x1c, 0xdf, 0xee,
+    0x08, 0xa9, 0x13, 0x13, 0x28, 0xce, 0x61, 0x59, 0xd1, 0x4e,
+    0xc7, 0x74, 0xfd, 0x64, 0xde, 0x08, 0xce, 0xda, 0x3f, 0xec,
+    0xad, 0xc9, 0xe1, 0xf9, 0x1f, 0x74, 0xf6, 0x86, 0x37, 0x6a,
+    0xa0, 0xc8, 0x0b, 0x1b, 0x94, 0x98, 0x86, 0x81, 0x3b, 0xfc,
+    0x47, 0x6c, 0xc9, 0x3e, 0x3c, 0x30, 0xc5, 0x9e, 0xb2, 0x32,
+    0x47, 0xf5, 0x0c, 0x6f,
 
     /* Second Packet: Handshake */
     0xe6, /* Long, Handshake, PN Length=2 bytes */
@@ -944,765 +390,87 @@
     0x9c, /* Length (668) */
     0x9c,
     0x55, /* PN (0) */
-    0x55,
-    0xd4,
-    0x50,
-    0x02,
-    0x1a,
-    0x57,
-    0x84,
-    0x22,
-    0xcd,
-    0x01,
-    0xe5,
-    0x42,
-    0x1b,
-    0x1e,
-    0x06,
-    0xf1,
-    0x86,
-    0xe2,
-    0x90,
-    0xf8,
-    0x9c,
-    0x3d,
-    0xa2,
-    0x7c,
-    0xde,
-    0x2b,
-    0xc9,
-    0x2e,
-    0xcd,
-    0xa8,
-    0x4f,
-    0x5a,
-    0x20,
-    0xca,
-    0x96,
-    0xb6,
-    0x11,
-    0x4b,
-    0xc8,
-    0x71,
-    0x32,
-    0xb5,
-    0xc7,
-    0x1a,
-    0x69,
-    0x7f,
-    0x1e,
-    0x37,
-    0x49,
-    0xfb,
-    0x08,
-    0xce,
-    0x83,
-    0x5f,
-    0x02,
-    0x6d,
-    0x8a,
-    0x8f,
-    0xe7,
-    0x5d,
-    0xe1,
-    0x34,
-    0x31,
-    0x22,
-    0x53,
-    0x53,
-    0x32,
-    0xcb,
-    0x04,
-    0x21,
-    0xce,
-    0xbc,
-    0xa5,
-    0x1b,
-    0xdd,
-    0x4d,
-    0xd5,
-    0x1c,
-    0xd6,
-    0x5d,
-    0x88,
-    0x29,
-    0x5a,
-    0x19,
-    0x71,
-    0x6a,
-    0xc2,
-    0xfa,
-    0xb7,
-    0xb4,
-    0x7d,
-    0xd1,
-    0x72,
-    0x93,
-    0x8f,
-    0x7c,
-    0xb5,
-    0x36,
-    0x1b,
-    0xea,
-    0xf3,
-    0xf1,
-    0xd7,
-    0x6e,
-    0xd3,
-    0x91,
-    0x96,
-    0x62,
-    0x4d,
-    0xc6,
-    0xec,
-    0xb7,
-    0xb0,
-    0xb7,
-    0x9b,
-    0x95,
-    0x8b,
-    0x14,
-    0x8d,
-    0x1a,
-    0x0d,
-    0xb6,
-    0x3e,
-    0xec,
-    0xfe,
-    0x3b,
-    0x51,
-    0xea,
-    0x1a,
-    0x05,
-    0x14,
-    0x12,
-    0x93,
-    0x0e,
-    0x7e,
-    0xe6,
-    0xa2,
-    0xc5,
-    0x22,
-    0x87,
-    0x65,
-    0xf8,
-    0x5d,
-    0x3c,
-    0x55,
-    0x18,
-    0xcb,
-    0xe9,
-    0xef,
-    0x23,
-    0x43,
-    0xfe,
-    0xe8,
-    0x0d,
-    0xb2,
-    0x0f,
-    0xc5,
-    0xf4,
-    0xb3,
-    0xde,
-    0x0c,
-    0xea,
-    0xa4,
-    0x48,
-    0x8e,
-    0xbf,
-    0x1f,
-    0xc7,
-    0x99,
-    0x53,
-    0x8c,
-    0xc1,
-    0x3d,
-    0xba,
-    0xf4,
-    0x8e,
-    0x8e,
-    0x02,
-    0x52,
-    0xf6,
-    0x1f,
-    0xcf,
-    0x1d,
-    0xaa,
-    0xb3,
-    0xcb,
-    0x08,
-    0xc2,
-    0xe1,
-    0x70,
-    0x68,
-    0x74,
-    0x78,
-    0xa9,
-    0x30,
-    0x67,
-    0xba,
-    0x2b,
-    0xea,
-    0x35,
-    0x63,
-    0x47,
-    0xff,
-    0x29,
-    0x73,
-    0x29,
-    0xc6,
-    0xe8,
-    0x08,
-    0xa9,
-    0x1e,
-    0x8f,
-    0x28,
-    0x41,
-    0xa4,
-    0x24,
-    0x54,
-    0x26,
-    0x5f,
-    0x42,
-    0x77,
-    0xb1,
-    0x2b,
-    0x3d,
-    0x65,
-    0x67,
-    0x60,
-    0xa7,
-    0x23,
-    0x0d,
-    0xa7,
-    0xf4,
-    0xd6,
-    0xe9,
-    0x4e,
-    0x58,
-    0x43,
-    0x9f,
-    0x3c,
-    0x9e,
-    0x77,
-    0x61,
-    0xe5,
-    0x04,
-    0x4f,
-    0x73,
-    0xc9,
-    0x10,
-    0x79,
-    0xd0,
-    0xda,
-    0x3b,
-    0xc6,
-    0x19,
-    0x93,
-    0x9f,
-    0x48,
-    0x3b,
-    0x76,
-    0x38,
-    0xa1,
-    0x72,
-    0x49,
-    0x7d,
-    0x86,
-    0x7f,
-    0xe8,
-    0x1b,
-    0xa9,
-    0x5b,
-    0xc0,
-    0x47,
-    0xa0,
-    0x9c,
-    0x3f,
-    0x65,
-    0x60,
-    0x76,
-    0x59,
-    0xaf,
-    0x20,
-    0x2d,
-    0x40,
-    0xa6,
-    0x80,
-    0x49,
-    0x5a,
-    0x8f,
-    0x09,
-    0xf8,
-    0xf6,
-    0x97,
-    0xc1,
-    0xbd,
-    0xe1,
-    0x9f,
-    0x9b,
-    0xa2,
-    0x4c,
-    0x7b,
-    0x88,
-    0xac,
-    0xbe,
-    0x4b,
-    0x11,
-    0x28,
-    0xd7,
-    0x67,
-    0xe6,
-    0xad,
-    0xaf,
-    0xd0,
-    0xad,
-    0x01,
-    0x29,
-    0xa4,
-    0x4a,
-    0xc4,
-    0xb8,
-    0x2e,
-    0x42,
-    0x79,
-    0x24,
-    0x9e,
-    0xd5,
-    0x34,
-    0xae,
-    0x45,
-    0xf1,
-    0x0b,
-    0x38,
-    0x4a,
-    0x76,
-    0xfb,
-    0x50,
-    0xa2,
-    0x99,
-    0xc9,
-    0x5b,
-    0x6d,
-    0xc0,
-    0xb7,
-    0x55,
-    0xd8,
-    0x8d,
-    0x49,
-    0xdd,
-    0x1b,
-    0xb8,
-    0xec,
-    0x10,
-    0x57,
-    0x9e,
-    0x33,
-    0xb4,
-    0x10,
-    0x16,
-    0x19,
-    0xac,
-    0x69,
-    0xa2,
-    0x19,
-    0x1b,
-    0xd0,
-    0x77,
-    0x45,
-    0xeb,
-    0x49,
-    0x5c,
-    0xc5,
-    0x7c,
-    0xbe,
-    0x4b,
-    0x4a,
-    0x22,
-    0x5c,
-    0x3d,
-    0x0e,
-    0x6e,
-    0xe5,
-    0x4b,
-    0x36,
-    0x06,
-    0x63,
-    0x03,
-    0x97,
-    0xab,
-    0xed,
-    0xdc,
-    0xea,
-    0x64,
-    0xc2,
-    0x70,
-    0xb6,
-    0x7e,
-    0x35,
-    0xfb,
-    0x13,
-    0x66,
-    0x37,
-    0xa3,
-    0x3f,
-    0x28,
-    0x16,
-    0x6c,
-    0xe7,
-    0xd4,
-    0xe6,
-    0xca,
-    0x26,
-    0x0f,
-    0x19,
-    0xdd,
-    0x02,
-    0xae,
-    0xc1,
-    0xcf,
-    0x18,
-    0x7d,
-    0x56,
-    0xe6,
-    0x52,
-    0xf3,
-    0x37,
-    0xb5,
-    0x86,
-    0x9d,
-    0x1d,
-    0x55,
-    0xb3,
-    0x95,
-    0x19,
-    0x19,
-    0xa5,
-    0x44,
-    0x95,
-    0x81,
-    0xed,
-    0x02,
-    0x18,
-    0xf1,
-    0x85,
-    0x57,
-    0x78,
-    0x28,
-    0xc4,
-    0x9a,
-    0xba,
-    0xe8,
-    0x5e,
-    0x22,
-    0x8d,
-    0xc1,
-    0x7b,
-    0x2a,
-    0x8a,
-    0xc8,
-    0xb9,
-    0xdd,
-    0x82,
-    0xb2,
-    0x7b,
-    0x9f,
-    0x3d,
-    0xf5,
-    0x27,
-    0x2a,
-    0x48,
-    0x53,
-    0xc7,
-    0xa0,
-    0x70,
-    0x0e,
-    0x9d,
-    0x61,
-    0xaa,
-    0xe2,
-    0xad,
-    0x28,
-    0xf2,
-    0xb4,
-    0xfc,
-    0x56,
-    0x6b,
-    0x89,
-    0xe7,
-    0xf9,
-    0x51,
-    0xc9,
-    0xe9,
-    0xd3,
-    0x8a,
-    0x8c,
-    0x7e,
-    0x86,
-    0xdd,
-    0xba,
-    0x2f,
-    0x39,
-    0xbf,
-    0x26,
-    0x62,
-    0x23,
-    0xd6,
-    0x98,
-    0x6d,
-    0x3e,
-    0x72,
-    0xd7,
-    0x1b,
-    0xe1,
-    0x62,
-    0x94,
-    0x35,
-    0xe2,
-    0x18,
-    0x19,
-    0x46,
-    0xb8,
-    0x2c,
-    0xb5,
-    0x8f,
-    0x8f,
-    0xb0,
-    0x5b,
-    0x76,
-    0x7b,
-    0x7e,
-    0xb8,
-    0xc6,
-    0xb7,
-    0xe9,
-    0x4e,
-    0x9d,
-    0x30,
-    0x68,
-    0x03,
-    0x1e,
-    0x19,
-    0x73,
-    0xc5,
-    0x3e,
-    0x24,
-    0xe2,
-    0x95,
-    0x60,
-    0x1b,
-    0x27,
-    0x93,
-    0x7c,
-    0x17,
-    0xc2,
-    0xc6,
-    0xa3,
-    0xbd,
-    0xbd,
-    0x70,
-    0xc6,
-    0x60,
-    0x59,
-    0xc8,
-    0x5c,
-    0xd7,
-    0x9a,
-    0xc4,
-    0x29,
-    0xac,
-    0x0f,
-    0xaa,
-    0x0d,
-    0xa9,
-    0x92,
-    0xa3,
-    0x95,
-    0xd7,
-    0x0f,
-    0x6f,
-    0x74,
-    0x99,
-    0x9b,
-    0xc1,
-    0xd3,
-    0x68,
-    0x6d,
-    0xac,
-    0x82,
-    0x2d,
-    0x32,
-    0x41,
-    0x9e,
-    0x0c,
-    0xf7,
-    0x31,
-    0x59,
-    0x4c,
-    0x93,
-    0x1c,
-    0x3b,
-    0x71,
-    0x69,
-    0xcf,
-    0xc5,
-    0xca,
-    0x2b,
-    0xdf,
-    0xe7,
-    0xaa,
-    0xfd,
-    0x1d,
-    0x71,
-    0x01,
-    0x7e,
-    0x1c,
-    0x70,
-    0x62,
-    0x20,
-    0x61,
-    0xf8,
-    0x35,
-    0xc1,
-    0x71,
-    0xe7,
-    0x02,
-    0x0d,
-    0x88,
-    0x44,
-    0xd9,
-    0x00,
-    0xc5,
-    0xcc,
-    0x63,
-    0xe4,
-    0xf0,
-    0x86,
-    0xa7,
-    0xd0,
-    0xfe,
-    0xcc,
-    0xb7,
-    0x1d,
-    0xfc,
-    0x21,
-    0x61,
-    0x54,
-    0x15,
-    0xea,
-    0x81,
-    0x5e,
-    0xc0,
-    0x31,
-    0xfa,
-    0xbf,
-    0x7d,
-    0xb9,
-    0x3b,
-    0xa2,
-    0x1e,
-    0x42,
-    0x73,
-    0x05,
-    0x3c,
-    0xdb,
-    0x21,
-    0x59,
-    0x4f,
-    0x63,
+    0x55, 0xd4, 0x50, 0x02, 0x1a, 0x57, 0x84, 0x22, 0xcd, 0x01,
+    0xe5, 0x42, 0x1b, 0x1e, 0x06, 0xf1, 0x86, 0xe2, 0x90, 0xf8,
+    0x9c, 0x3d, 0xa2, 0x7c, 0xde, 0x2b, 0xc9, 0x2e, 0xcd, 0xa8,
+    0x4f, 0x5a, 0x20, 0xca, 0x96, 0xb6, 0x11, 0x4b, 0xc8, 0x71,
+    0x32, 0xb5, 0xc7, 0x1a, 0x69, 0x7f, 0x1e, 0x37, 0x49, 0xfb,
+    0x08, 0xce, 0x83, 0x5f, 0x02, 0x6d, 0x8a, 0x8f, 0xe7, 0x5d,
+    0xe1, 0x34, 0x31, 0x22, 0x53, 0x53, 0x32, 0xcb, 0x04, 0x21,
+    0xce, 0xbc, 0xa5, 0x1b, 0xdd, 0x4d, 0xd5, 0x1c, 0xd6, 0x5d,
+    0x88, 0x29, 0x5a, 0x19, 0x71, 0x6a, 0xc2, 0xfa, 0xb7, 0xb4,
+    0x7d, 0xd1, 0x72, 0x93, 0x8f, 0x7c, 0xb5, 0x36, 0x1b, 0xea,
+    0xf3, 0xf1, 0xd7, 0x6e, 0xd3, 0x91, 0x96, 0x62, 0x4d, 0xc6,
+    0xec, 0xb7, 0xb0, 0xb7, 0x9b, 0x95, 0x8b, 0x14, 0x8d, 0x1a,
+    0x0d, 0xb6, 0x3e, 0xec, 0xfe, 0x3b, 0x51, 0xea, 0x1a, 0x05,
+    0x14, 0x12, 0x93, 0x0e, 0x7e, 0xe6, 0xa2, 0xc5, 0x22, 0x87,
+    0x65, 0xf8, 0x5d, 0x3c, 0x55, 0x18, 0xcb, 0xe9, 0xef, 0x23,
+    0x43, 0xfe, 0xe8, 0x0d, 0xb2, 0x0f, 0xc5, 0xf4, 0xb3, 0xde,
+    0x0c, 0xea, 0xa4, 0x48, 0x8e, 0xbf, 0x1f, 0xc7, 0x99, 0x53,
+    0x8c, 0xc1, 0x3d, 0xba, 0xf4, 0x8e, 0x8e, 0x02, 0x52, 0xf6,
+    0x1f, 0xcf, 0x1d, 0xaa, 0xb3, 0xcb, 0x08, 0xc2, 0xe1, 0x70,
+    0x68, 0x74, 0x78, 0xa9, 0x30, 0x67, 0xba, 0x2b, 0xea, 0x35,
+    0x63, 0x47, 0xff, 0x29, 0x73, 0x29, 0xc6, 0xe8, 0x08, 0xa9,
+    0x1e, 0x8f, 0x28, 0x41, 0xa4, 0x24, 0x54, 0x26, 0x5f, 0x42,
+    0x77, 0xb1, 0x2b, 0x3d, 0x65, 0x67, 0x60, 0xa7, 0x23, 0x0d,
+    0xa7, 0xf4, 0xd6, 0xe9, 0x4e, 0x58, 0x43, 0x9f, 0x3c, 0x9e,
+    0x77, 0x61, 0xe5, 0x04, 0x4f, 0x73, 0xc9, 0x10, 0x79, 0xd0,
+    0xda, 0x3b, 0xc6, 0x19, 0x93, 0x9f, 0x48, 0x3b, 0x76, 0x38,
+    0xa1, 0x72, 0x49, 0x7d, 0x86, 0x7f, 0xe8, 0x1b, 0xa9, 0x5b,
+    0xc0, 0x47, 0xa0, 0x9c, 0x3f, 0x65, 0x60, 0x76, 0x59, 0xaf,
+    0x20, 0x2d, 0x40, 0xa6, 0x80, 0x49, 0x5a, 0x8f, 0x09, 0xf8,
+    0xf6, 0x97, 0xc1, 0xbd, 0xe1, 0x9f, 0x9b, 0xa2, 0x4c, 0x7b,
+    0x88, 0xac, 0xbe, 0x4b, 0x11, 0x28, 0xd7, 0x67, 0xe6, 0xad,
+    0xaf, 0xd0, 0xad, 0x01, 0x29, 0xa4, 0x4a, 0xc4, 0xb8, 0x2e,
+    0x42, 0x79, 0x24, 0x9e, 0xd5, 0x34, 0xae, 0x45, 0xf1, 0x0b,
+    0x38, 0x4a, 0x76, 0xfb, 0x50, 0xa2, 0x99, 0xc9, 0x5b, 0x6d,
+    0xc0, 0xb7, 0x55, 0xd8, 0x8d, 0x49, 0xdd, 0x1b, 0xb8, 0xec,
+    0x10, 0x57, 0x9e, 0x33, 0xb4, 0x10, 0x16, 0x19, 0xac, 0x69,
+    0xa2, 0x19, 0x1b, 0xd0, 0x77, 0x45, 0xeb, 0x49, 0x5c, 0xc5,
+    0x7c, 0xbe, 0x4b, 0x4a, 0x22, 0x5c, 0x3d, 0x0e, 0x6e, 0xe5,
+    0x4b, 0x36, 0x06, 0x63, 0x03, 0x97, 0xab, 0xed, 0xdc, 0xea,
+    0x64, 0xc2, 0x70, 0xb6, 0x7e, 0x35, 0xfb, 0x13, 0x66, 0x37,
+    0xa3, 0x3f, 0x28, 0x16, 0x6c, 0xe7, 0xd4, 0xe6, 0xca, 0x26,
+    0x0f, 0x19, 0xdd, 0x02, 0xae, 0xc1, 0xcf, 0x18, 0x7d, 0x56,
+    0xe6, 0x52, 0xf3, 0x37, 0xb5, 0x86, 0x9d, 0x1d, 0x55, 0xb3,
+    0x95, 0x19, 0x19, 0xa5, 0x44, 0x95, 0x81, 0xed, 0x02, 0x18,
+    0xf1, 0x85, 0x57, 0x78, 0x28, 0xc4, 0x9a, 0xba, 0xe8, 0x5e,
+    0x22, 0x8d, 0xc1, 0x7b, 0x2a, 0x8a, 0xc8, 0xb9, 0xdd, 0x82,
+    0xb2, 0x7b, 0x9f, 0x3d, 0xf5, 0x27, 0x2a, 0x48, 0x53, 0xc7,
+    0xa0, 0x70, 0x0e, 0x9d, 0x61, 0xaa, 0xe2, 0xad, 0x28, 0xf2,
+    0xb4, 0xfc, 0x56, 0x6b, 0x89, 0xe7, 0xf9, 0x51, 0xc9, 0xe9,
+    0xd3, 0x8a, 0x8c, 0x7e, 0x86, 0xdd, 0xba, 0x2f, 0x39, 0xbf,
+    0x26, 0x62, 0x23, 0xd6, 0x98, 0x6d, 0x3e, 0x72, 0xd7, 0x1b,
+    0xe1, 0x62, 0x94, 0x35, 0xe2, 0x18, 0x19, 0x46, 0xb8, 0x2c,
+    0xb5, 0x8f, 0x8f, 0xb0, 0x5b, 0x76, 0x7b, 0x7e, 0xb8, 0xc6,
+    0xb7, 0xe9, 0x4e, 0x9d, 0x30, 0x68, 0x03, 0x1e, 0x19, 0x73,
+    0xc5, 0x3e, 0x24, 0xe2, 0x95, 0x60, 0x1b, 0x27, 0x93, 0x7c,
+    0x17, 0xc2, 0xc6, 0xa3, 0xbd, 0xbd, 0x70, 0xc6, 0x60, 0x59,
+    0xc8, 0x5c, 0xd7, 0x9a, 0xc4, 0x29, 0xac, 0x0f, 0xaa, 0x0d,
+    0xa9, 0x92, 0xa3, 0x95, 0xd7, 0x0f, 0x6f, 0x74, 0x99, 0x9b,
+    0xc1, 0xd3, 0x68, 0x6d, 0xac, 0x82, 0x2d, 0x32, 0x41, 0x9e,
+    0x0c, 0xf7, 0x31, 0x59, 0x4c, 0x93, 0x1c, 0x3b, 0x71, 0x69,
+    0xcf, 0xc5, 0xca, 0x2b, 0xdf, 0xe7, 0xaa, 0xfd, 0x1d, 0x71,
+    0x01, 0x7e, 0x1c, 0x70, 0x62, 0x20, 0x61, 0xf8, 0x35, 0xc1,
+    0x71, 0xe7, 0x02, 0x0d, 0x88, 0x44, 0xd9, 0x00, 0xc5, 0xcc,
+    0x63, 0xe4, 0xf0, 0x86, 0xa7, 0xd0, 0xfe, 0xcc, 0xb7, 0x1d,
+    0xfc, 0x21, 0x61, 0x54, 0x15, 0xea, 0x81, 0x5e, 0xc0, 0x31,
+    0xfa, 0xbf, 0x7d, 0xb9, 0x3b, 0xa2, 0x1e, 0x42, 0x73, 0x05,
+    0x3c, 0xdb, 0x21, 0x59, 0x4f, 0x63,
 
     /* Third Packet: 1-RTT */
     0x5f, /* Short, 1-RTT, Spin=0, KP=0, PN Length=2 bytes */
     0x68,
     0x47, /* PN (0) */
-    0xa3,
-    0x3c,
-    0xa5,
-    0x27,
-    0x5e,
-    0xf9,
-    0x8d,
-    0xec,
-    0xea,
-    0x6c,
-    0x09,
-    0x18,
-    0x40,
-    0x80,
-    0xee,
-    0x9f,
-    0x6f,
-    0x73,
-    0x5c,
-    0x49,
-    0xe3,
-    0xec,
-    0xb7,
-    0x58,
-    0x05,
-    0x66,
-    0x8f,
-    0xa3,
-    0x52,
-    0x37,
-    0xa1,
-    0x22,
-    0x1f,
-    0xc6,
-    0x92,
-    0xd6,
-    0x59,
-    0x04,
-    0x99,
-    0xcb,
-    0x44,
-    0xef,
-    0x66,
-    0x05,
-    0x2d,
-    0xd0,
-    0x85,
-    0x24,
-    0xbb,
-    0xe3,
-    0xa1,
-    0xd1,
-    0xbe,
-    0xf7,
-    0x54,
-    0xad,
-    0x65,
-    0xf4,
-    0xd4,
-    0x59,
-    0x54,
-    0x87,
-    0x4e,
-    0x22,
-    0x4f,
-    0x06,
-    0x07,
-    0xa7,
-    0x8a,
-    0x14,
-    0x89,
-    0xd1,
-    0x3f,
-    0xd3,
-    0xe4,
-    0x6f,
-    0x71,
-    0x8f,
-    0x9a,
-    0xd2,
-    0x3b,
-    0x61,
-    0x0a,
-    0xba,
-    0x9a,
-    0x31,
-    0x56,
-    0xc7,
+    0xa3, 0x3c, 0xa5, 0x27, 0x5e, 0xf9, 0x8d, 0xec, 0xea, 0x6c,
+    0x09, 0x18, 0x40, 0x80, 0xee, 0x9f, 0x6f, 0x73, 0x5c, 0x49,
+    0xe3, 0xec, 0xb7, 0x58, 0x05, 0x66, 0x8f, 0xa3, 0x52, 0x37,
+    0xa1, 0x22, 0x1f, 0xc6, 0x92, 0xd6, 0x59, 0x04, 0x99, 0xcb,
+    0x44, 0xef, 0x66, 0x05, 0x2d, 0xd0, 0x85, 0x24, 0xbb, 0xe3,
+    0xa1, 0xd1, 0xbe, 0xf7, 0x54, 0xad, 0x65, 0xf4, 0xd4, 0x59,
+    0x54, 0x87, 0x4e, 0x22, 0x4f, 0x06, 0x07, 0xa7, 0x8a, 0x14,
+    0x89, 0xd1, 0x3f, 0xd3, 0xe4, 0x6f, 0x71, 0x8f, 0x9a, 0xd2,
+    0x3b, 0x61, 0x0a, 0xba, 0x9a, 0x31, 0x56, 0xc7
 };
 
 static const QUIC_PKT_HDR rx_script_5a_expect_hdr = {
@@ -1723,454 +491,51 @@
 };
 
 static const unsigned char rx_script_5a_body[] = {
-    0x02,
-    0x03,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x06,
-    0x00,
-    0x40,
-    0x5a,
-    0x02,
-    0x00,
-    0x00,
-    0x56,
-    0x03,
-    0x03,
-    0xe2,
-    0xd2,
-    0x0a,
-    0x3b,
-    0xa2,
-    0xc4,
-    0xd2,
-    0x29,
-    0xc8,
-    0xe8,
-    0xba,
-    0x23,
-    0x31,
-    0x88,
-    0x2c,
-    0x71,
-    0xeb,
-    0xba,
-    0x42,
-    0x5f,
-    0x94,
-    0xe9,
-    0x0a,
-    0x90,
-    0x35,
-    0x31,
-    0x1e,
-    0xca,
-    0xed,
-    0xf8,
-    0x8a,
-    0x8d,
-    0x00,
-    0x13,
-    0x01,
-    0x00,
-    0x00,
-    0x2e,
-    0x00,
-    0x2b,
-    0x00,
-    0x02,
-    0x03,
-    0x04,
-    0x00,
-    0x33,
-    0x00,
-    0x24,
-    0x00,
-    0x1d,
-    0x00,
-    0x20,
-    0x96,
-    0x0b,
-    0x4b,
-    0x30,
-    0x66,
-    0x3a,
-    0x75,
-    0x01,
-    0x4a,
-    0xdc,
-    0x2a,
-    0x75,
-    0x1f,
-    0xce,
-    0x7a,
-    0x30,
-    0x9d,
-    0x00,
-    0xca,
-    0x20,
-    0xb4,
-    0xe0,
-    0x6b,
-    0x81,
-    0x23,
-    0x18,
-    0x0b,
-    0x20,
-    0x1f,
-    0x54,
-    0x86,
-    0x1d,
+    0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x40, 0x5a, 0x02, 0x00,
+    0x00, 0x56, 0x03, 0x03, 0xe2, 0xd2, 0x0a, 0x3b, 0xa2, 0xc4,
+    0xd2, 0x29, 0xc8, 0xe8, 0xba, 0x23, 0x31, 0x88, 0x2c, 0x71,
+    0xeb, 0xba, 0x42, 0x5f, 0x94, 0xe9, 0x0a, 0x90, 0x35, 0x31,
+    0x1e, 0xca, 0xed, 0xf8, 0x8a, 0x8d, 0x00, 0x13, 0x01, 0x00,
+    0x00, 0x2e, 0x00, 0x2b, 0x00, 0x02, 0x03, 0x04, 0x00, 0x33,
+    0x00, 0x24, 0x00, 0x1d, 0x00, 0x20, 0x96, 0x0b, 0x4b, 0x30,
+    0x66, 0x3a, 0x75, 0x01, 0x4a, 0xdc, 0x2a, 0x75, 0x1f, 0xce,
+    0x7a, 0x30, 0x9d, 0x00, 0xca, 0x20, 0xb4, 0xe0, 0x6b, 0x81,
+    0x23, 0x18, 0x0b, 0x20, 0x1f, 0x54, 0x86, 0x1d
 };
 
 static const QUIC_PKT_HDR rx_script_5b_expect_hdr = {
@@ -2191,656 +556,71 @@
 };
 
 static const unsigned char rx_script_5b_body[] = {
-    0x06,
-    0x00,
-    0x42,
-    0x86,
-    0x08,
-    0x00,
-    0x00,
-    0x7d,
-    0x00,
-    0x7b,
-    0x00,
-    0x10,
-    0x00,
-    0x08,
-    0x00,
-    0x06,
-    0x05,
-    0x64,
-    0x75,
-    0x6d,
-    0x6d,
-    0x79,
-    0x00,
-    0x39,
-    0x00,
-    0x6b,
-    0x4b,
-    0x20,
-    0x0b,
-    0x1b,
-    0xe1,
-    0x1f,
-    0xd0,
-    0x78,
-    0xc0,
-    0x69,
-    0x72,
-    0x9c,
-    0xe2,
-    0xf7,
-    0x05,
-    0x04,
-    0x80,
-    0x08,
-    0x00,
-    0x00,
-    0x06,
-    0x04,
-    0x80,
-    0x08,
-    0x00,
-    0x00,
-    0x07,
-    0x04,
-    0x80,
-    0x08,
-    0x00,
-    0x00,
-    0x04,
-    0x04,
-    0x80,
-    0x0c,
-    0x00,
-    0x00,
-    0x08,
-    0x02,
-    0x40,
-    0x64,
-    0x09,
-    0x02,
-    0x40,
-    0x64,
-    0x01,
-    0x04,
-    0x80,
-    0x00,
-    0x75,
-    0x30,
-    0x03,
-    0x02,
-    0x45,
-    0xac,
-    0x0b,
-    0x01,
-    0x1a,
-    0x0c,
-    0x00,
-    0x02,
-    0x10,
-    0x41,
-    0x94,
-    0x41,
-    0x8d,
-    0x0d,
-    0xfb,
-    0x60,
-    0x7b,
-    0xdc,
-    0xcc,
-    0xa2,
-    0x9c,
-    0x3e,
-    0xa5,
-    0xdf,
-    0x8d,
-    0x00,
-    0x08,
-    0x2d,
-    0x71,
-    0x8a,
-    0x38,
-    0xdf,
-    0xdd,
-    0xe0,
-    0x03,
-    0x0e,
-    0x01,
-    0x04,
-    0x0f,
-    0x04,
-    0x83,
-    0xd0,
-    0x0a,
-    0x27,
-    0x10,
-    0x04,
-    0xad,
-    0x15,
-    0x3f,
-    0xae,
-    0x20,
-    0x01,
-    0x00,
-    0x0b,
-    0x00,
-    0x01,
-    0x8f,
-    0x00,
-    0x00,
-    0x01,
-    0x8b,
-    0x00,
-    0x01,
-    0x86,
-    0x30,
-    0x82,
-    0x01,
-    0x82,
-    0x30,
-    0x82,
-    0x01,
-    0x29,
-    0xa0,
-    0x03,
-    0x02,
-    0x01,
-    0x02,
-    0x02,
-    0x14,
-    0x0a,
-    0x73,
-    0x0f,
-    0x86,
-    0x18,
-    0xf2,
-    0xc3,
-    0x30,
-    0x01,
-    0xd2,
-    0xc0,
-    0xc1,
-    0x62,
-    0x52,
-    0x13,
-    0xf1,
-    0x9c,
-    0x13,
-    0x39,
-    0xb5,
-    0x30,
-    0x0a,
-    0x06,
-    0x08,
-    0x2a,
-    0x86,
-    0x48,
-    0xce,
-    0x3d,
-    0x04,
-    0x03,
-    0x02,
-    0x30,
-    0x17,
-    0x31,
-    0x15,
-    0x30,
-    0x13,
-    0x06,
-    0x03,
-    0x55,
-    0x04,
-    0x03,
-    0x0c,
-    0x0c,
-    0x6d,
-    0x61,
-    0x70,
-    0x61,
-    0x6b,
-    0x74,
-    0x2e,
-    0x6c,
-    0x6f,
-    0x63,
-    0x61,
-    0x6c,
-    0x30,
-    0x1e,
-    0x17,
-    0x0d,
-    0x32,
-    0x32,
-    0x30,
-    0x38,
-    0x30,
-    0x32,
-    0x31,
-    0x32,
-    0x30,
-    0x30,
-    0x31,
-    0x38,
-    0x5a,
-    0x17,
-    0x0d,
-    0x32,
-    0x32,
-    0x30,
-    0x39,
-    0x30,
-    0x31,
-    0x31,
-    0x32,
-    0x30,
-    0x30,
-    0x31,
-    0x38,
-    0x5a,
-    0x30,
-    0x17,
-    0x31,
-    0x15,
-    0x30,
-    0x13,
-    0x06,
-    0x03,
-    0x55,
-    0x04,
-    0x03,
-    0x0c,
-    0x0c,
-    0x6d,
-    0x61,
-    0x70,
-    0x61,
-    0x6b,
-    0x74,
-    0x2e,
-    0x6c,
-    0x6f,
-    0x63,
-    0x61,
-    0x6c,
-    0x30,
-    0x59,
-    0x30,
-    0x13,
-    0x06,
-    0x07,
-    0x2a,
-    0x86,
-    0x48,
-    0xce,
-    0x3d,
-    0x02,
-    0x01,
-    0x06,
-    0x08,
-    0x2a,
-    0x86,
-    0x48,
-    0xce,
-    0x3d,
-    0x03,
-    0x01,
-    0x07,
-    0x03,
-    0x42,
-    0x00,
-    0x04,
-    0x67,
-    0xf4,
-    0xd3,
-    0x8f,
-    0x15,
-    0x6d,
-    0xee,
-    0x85,
-    0xcc,
-    0x2a,
-    0x77,
-    0xfc,
-    0x0b,
-    0x8f,
-    0x9f,
-    0xcf,
-    0xa9,
-    0x95,
-    0x5d,
-    0x5b,
-    0xcd,
-    0xb7,
-    0x8b,
-    0xba,
-    0x31,
-    0x0a,
-    0x73,
-    0x62,
-    0xc5,
-    0xd0,
-    0x0e,
-    0x07,
-    0x90,
-    0xae,
-    0x38,
-    0x43,
-    0x79,
-    0xce,
-    0x5e,
-    0x33,
-    0xad,
-    0x31,
-    0xbf,
-    0x9f,
-    0x2a,
-    0x56,
-    0x83,
-    0xa5,
-    0x24,
-    0x16,
-    0xab,
-    0x0c,
-    0xf1,
-    0x64,
-    0xbe,
-    0xe4,
-    0x93,
-    0xb5,
-    0x89,
-    0xd6,
-    0x05,
-    0xe4,
-    0xf7,
-    0x7b,
-    0xa3,
-    0x53,
-    0x30,
-    0x51,
-    0x30,
-    0x1d,
-    0x06,
-    0x03,
-    0x55,
-    0x1d,
-    0x0e,
-    0x04,
-    0x16,
-    0x04,
-    0x14,
-    0x02,
-    0x64,
-    0x0f,
-    0x55,
-    0x69,
-    0x14,
-    0x91,
-    0x19,
-    0xed,
-    0xf9,
-    0x1a,
-    0xe9,
-    0x1d,
-    0xa5,
-    0x5a,
-    0xd0,
-    0x48,
-    0x96,
-    0x9f,
-    0x60,
-    0x30,
-    0x1f,
-    0x06,
-    0x03,
-    0x55,
-    0x1d,
-    0x23,
-    0x04,
-    0x18,
-    0x30,
-    0x16,
-    0x80,
-    0x14,
-    0x02,
-    0x64,
-    0x0f,
-    0x55,
-    0x69,
-    0x14,
-    0x91,
-    0x19,
-    0xed,
-    0xf9,
-    0x1a,
-    0xe9,
-    0x1d,
-    0xa5,
-    0x5a,
-    0xd0,
-    0x48,
-    0x96,
-    0x9f,
-    0x60,
-    0x30,
-    0x0f,
-    0x06,
-    0x03,
-    0x55,
-    0x1d,
-    0x13,
-    0x01,
-    0x01,
-    0xff,
-    0x04,
-    0x05,
-    0x30,
-    0x03,
-    0x01,
-    0x01,
-    0xff,
-    0x30,
-    0x0a,
-    0x06,
-    0x08,
-    0x2a,
-    0x86,
-    0x48,
-    0xce,
-    0x3d,
-    0x04,
-    0x03,
-    0x02,
-    0x03,
-    0x47,
-    0x00,
-    0x30,
-    0x44,
-    0x02,
-    0x20,
-    0x0a,
-    0x82,
-    0x92,
-    0x6e,
-    0xd3,
-    0xc6,
-    0x66,
-    0xd9,
-    0xd3,
-    0x75,
-    0xff,
-    0x71,
-    0x3b,
-    0x61,
-    0x46,
-    0x21,
-    0x00,
-    0xe6,
-    0x21,
-    0x5d,
-    0x9c,
-    0x86,
-    0xe9,
-    0x65,
-    0x40,
-    0x4f,
-    0xeb,
-    0x70,
-    0x4f,
-    0x2c,
-    0xad,
-    0x00,
-    0x02,
-    0x20,
-    0x08,
-    0xc2,
-    0x07,
-    0x5d,
-    0x16,
-    0xfc,
-    0x54,
-    0x34,
-    0x2b,
-    0xb4,
-    0x18,
-    0x67,
-    0x44,
-    0x81,
-    0xc9,
-    0xa9,
-    0x67,
-    0x2e,
-    0xce,
-    0xa1,
-    0x02,
-    0x9f,
-    0x3b,
-    0xe5,
-    0x61,
-    0x16,
-    0x0b,
-    0x50,
-    0xf6,
-    0xa1,
-    0x50,
-    0x94,
-    0x00,
-    0x00,
-    0x0f,
-    0x00,
-    0x00,
-    0x4a,
-    0x04,
-    0x03,
-    0x00,
-    0x46,
-    0x30,
-    0x44,
-    0x02,
-    0x20,
-    0x7d,
-    0x57,
-    0x17,
-    0x14,
-    0x46,
-    0x09,
-    0x95,
-    0x70,
-    0x09,
-    0x45,
-    0xe8,
-    0x9e,
-    0x5c,
-    0x87,
-    0x55,
-    0xd9,
-    0x08,
-    0xc6,
-    0x5e,
-    0x47,
-    0x73,
-    0x5e,
-    0xb1,
-    0xc9,
-    0xef,
-    0xcb,
-    0xe5,
-    0x7f,
-    0xcc,
-    0xb0,
-    0x28,
-    0xbc,
-    0x02,
-    0x20,
-    0x5d,
-    0xe4,
-    0x2b,
-    0x83,
-    0xd9,
-    0x78,
-    0x75,
-    0x45,
-    0xf3,
-    0x22,
-    0x2b,
-    0x38,
-    0xeb,
-    0x68,
-    0xe5,
-    0x71,
-    0x5d,
-    0xcb,
-    0xc3,
-    0x68,
-    0xb3,
-    0x0e,
-    0x7d,
-    0x5e,
-    0x1d,
-    0xc2,
-    0x1b,
-    0x8a,
-    0x62,
-    0x80,
-    0x48,
-    0x3e,
-    0x14,
-    0x00,
-    0x00,
-    0x20,
-    0x37,
-    0xcd,
-    0x55,
-    0xca,
-    0x3f,
-    0x4b,
-    0xf0,
-    0x95,
-    0xf8,
-    0xe4,
-    0xfe,
-    0x59,
-    0xab,
-    0xbc,
-    0xc1,
-    0x8f,
-    0x0c,
-    0x3f,
-    0x41,
-    0x59,
-    0xf6,
-    0x96,
-    0xdb,
-    0x75,
-    0xae,
-    0xe7,
-    0x86,
-    0x1a,
-    0x92,
-    0xa7,
-    0x53,
-    0x0a,
+    0x06, 0x00, 0x42, 0x86, 0x08, 0x00, 0x00, 0x7d, 0x00, 0x7b,
+    0x00, 0x10, 0x00, 0x08, 0x00, 0x06, 0x05, 0x64, 0x75, 0x6d,
+    0x6d, 0x79, 0x00, 0x39, 0x00, 0x6b, 0x4b, 0x20, 0x0b, 0x1b,
+    0xe1, 0x1f, 0xd0, 0x78, 0xc0, 0x69, 0x72, 0x9c, 0xe2, 0xf7,
+    0x05, 0x04, 0x80, 0x08, 0x00, 0x00, 0x06, 0x04, 0x80, 0x08,
+    0x00, 0x00, 0x07, 0x04, 0x80, 0x08, 0x00, 0x00, 0x04, 0x04,
+    0x80, 0x0c, 0x00, 0x00, 0x08, 0x02, 0x40, 0x64, 0x09, 0x02,
+    0x40, 0x64, 0x01, 0x04, 0x80, 0x00, 0x75, 0x30, 0x03, 0x02,
+    0x45, 0xac, 0x0b, 0x01, 0x1a, 0x0c, 0x00, 0x02, 0x10, 0x41,
+    0x94, 0x41, 0x8d, 0x0d, 0xfb, 0x60, 0x7b, 0xdc, 0xcc, 0xa2,
+    0x9c, 0x3e, 0xa5, 0xdf, 0x8d, 0x00, 0x08, 0x2d, 0x71, 0x8a,
+    0x38, 0xdf, 0xdd, 0xe0, 0x03, 0x0e, 0x01, 0x04, 0x0f, 0x04,
+    0x83, 0xd0, 0x0a, 0x27, 0x10, 0x04, 0xad, 0x15, 0x3f, 0xae,
+    0x20, 0x01, 0x00, 0x0b, 0x00, 0x01, 0x8f, 0x00, 0x00, 0x01,
+    0x8b, 0x00, 0x01, 0x86, 0x30, 0x82, 0x01, 0x82, 0x30, 0x82,
+    0x01, 0x29, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x0a,
+    0x73, 0x0f, 0x86, 0x18, 0xf2, 0xc3, 0x30, 0x01, 0xd2, 0xc0,
+    0xc1, 0x62, 0x52, 0x13, 0xf1, 0x9c, 0x13, 0x39, 0xb5, 0x30,
+    0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03,
+    0x02, 0x30, 0x17, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55,
+    0x04, 0x03, 0x0c, 0x0c, 0x6d, 0x61, 0x70, 0x61, 0x6b, 0x74,
+    0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x30, 0x1e, 0x17, 0x0d,
+    0x32, 0x32, 0x30, 0x38, 0x30, 0x32, 0x31, 0x32, 0x30, 0x30,
+    0x31, 0x38, 0x5a, 0x17, 0x0d, 0x32, 0x32, 0x30, 0x39, 0x30,
+    0x31, 0x31, 0x32, 0x30, 0x30, 0x31, 0x38, 0x5a, 0x30, 0x17,
+    0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c,
+    0x0c, 0x6d, 0x61, 0x70, 0x61, 0x6b, 0x74, 0x2e, 0x6c, 0x6f,
+    0x63, 0x61, 0x6c, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a,
+    0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86,
+    0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04,
+    0x67, 0xf4, 0xd3, 0x8f, 0x15, 0x6d, 0xee, 0x85, 0xcc, 0x2a,
+    0x77, 0xfc, 0x0b, 0x8f, 0x9f, 0xcf, 0xa9, 0x95, 0x5d, 0x5b,
+    0xcd, 0xb7, 0x8b, 0xba, 0x31, 0x0a, 0x73, 0x62, 0xc5, 0xd0,
+    0x0e, 0x07, 0x90, 0xae, 0x38, 0x43, 0x79, 0xce, 0x5e, 0x33,
+    0xad, 0x31, 0xbf, 0x9f, 0x2a, 0x56, 0x83, 0xa5, 0x24, 0x16,
+    0xab, 0x0c, 0xf1, 0x64, 0xbe, 0xe4, 0x93, 0xb5, 0x89, 0xd6,
+    0x05, 0xe4, 0xf7, 0x7b, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d,
+    0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x02,
+    0x64, 0x0f, 0x55, 0x69, 0x14, 0x91, 0x19, 0xed, 0xf9, 0x1a,
+    0xe9, 0x1d, 0xa5, 0x5a, 0xd0, 0x48, 0x96, 0x9f, 0x60, 0x30,
+    0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16,
+    0x80, 0x14, 0x02, 0x64, 0x0f, 0x55, 0x69, 0x14, 0x91, 0x19,
+    0xed, 0xf9, 0x1a, 0xe9, 0x1d, 0xa5, 0x5a, 0xd0, 0x48, 0x96,
+    0x9f, 0x60, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01,
+    0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30,
+    0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03,
+    0x02, 0x03, 0x47, 0x00, 0x30, 0x44, 0x02, 0x20, 0x0a, 0x82,
+    0x92, 0x6e, 0xd3, 0xc6, 0x66, 0xd9, 0xd3, 0x75, 0xff, 0x71,
+    0x3b, 0x61, 0x46, 0x21, 0x00, 0xe6, 0x21, 0x5d, 0x9c, 0x86,
+    0xe9, 0x65, 0x40, 0x4f, 0xeb, 0x70, 0x4f, 0x2c, 0xad, 0x00,
+    0x02, 0x20, 0x08, 0xc2, 0x07, 0x5d, 0x16, 0xfc, 0x54, 0x34,
+    0x2b, 0xb4, 0x18, 0x67, 0x44, 0x81, 0xc9, 0xa9, 0x67, 0x2e,
+    0xce, 0xa1, 0x02, 0x9f, 0x3b, 0xe5, 0x61, 0x16, 0x0b, 0x50,
+    0xf6, 0xa1, 0x50, 0x94, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x4a,
+    0x04, 0x03, 0x00, 0x46, 0x30, 0x44, 0x02, 0x20, 0x7d, 0x57,
+    0x17, 0x14, 0x46, 0x09, 0x95, 0x70, 0x09, 0x45, 0xe8, 0x9e,
+    0x5c, 0x87, 0x55, 0xd9, 0x08, 0xc6, 0x5e, 0x47, 0x73, 0x5e,
+    0xb1, 0xc9, 0xef, 0xcb, 0xe5, 0x7f, 0xcc, 0xb0, 0x28, 0xbc,
+    0x02, 0x20, 0x5d, 0xe4, 0x2b, 0x83, 0xd9, 0x78, 0x75, 0x45,
+    0xf3, 0x22, 0x2b, 0x38, 0xeb, 0x68, 0xe5, 0x71, 0x5d, 0xcb,
+    0xc3, 0x68, 0xb3, 0x0e, 0x7d, 0x5e, 0x1d, 0xc2, 0x1b, 0x8a,
+    0x62, 0x80, 0x48, 0x3e, 0x14, 0x00, 0x00, 0x20, 0x37, 0xcd,
+    0x55, 0xca, 0x3f, 0x4b, 0xf0, 0x95, 0xf8, 0xe4, 0xfe, 0x59,
+    0xab, 0xbc, 0xc1, 0x8f, 0x0c, 0x3f, 0x41, 0x59, 0xf6, 0x96,
+    0xdb, 0x75, 0xae, 0xe7, 0x86, 0x1a, 0x92, 0xa7, 0x53, 0x0a
 };
 
 static const QUIC_PKT_HDR rx_script_5c_expect_hdr = {
@@ -2861,78 +641,14 @@
 };
 
 static const unsigned char rx_script_5c_body[] = {
-    0x18,
-    0x03,
-    0x00,
-    0x04,
-    0x92,
-    0xec,
-    0xaa,
-    0xd6,
-    0x47,
-    0xd8,
-    0x8b,
-    0x56,
-    0x3b,
-    0x5f,
-    0x67,
-    0xe6,
-    0xb9,
-    0xb9,
-    0xca,
-    0x72,
-    0xca,
-    0xf2,
-    0x49,
-    0x7d,
-    0x18,
-    0x02,
-    0x00,
-    0x04,
-    0xa9,
-    0x6e,
-    0x9b,
-    0x84,
-    0x26,
-    0x43,
-    0x00,
-    0xc7,
-    0x55,
-    0x71,
-    0x67,
-    0x2e,
-    0x52,
-    0xdd,
-    0x47,
-    0xfd,
-    0x06,
-    0x51,
-    0x33,
-    0x08,
-    0x18,
-    0x01,
-    0x00,
-    0x04,
-    0x36,
-    0xd5,
-    0x1f,
-    0x06,
-    0x4e,
-    0xbf,
-    0xb4,
-    0xc9,
-    0xef,
-    0x97,
-    0x1e,
-    0x9a,
-    0x3c,
-    0xab,
-    0x1e,
-    0xfc,
-    0xb7,
-    0x90,
-    0xc3,
-    0x1a,
+    0x18, 0x03, 0x00, 0x04, 0x92, 0xec, 0xaa, 0xd6, 0x47, 0xd8,
+    0x8b, 0x56, 0x3b, 0x5f, 0x67, 0xe6, 0xb9, 0xb9, 0xca, 0x72,
+    0xca, 0xf2, 0x49, 0x7d, 0x18, 0x02, 0x00, 0x04, 0xa9, 0x6e,
+    0x9b, 0x84, 0x26, 0x43, 0x00, 0xc7, 0x55, 0x71, 0x67, 0x2e,
+    0x52, 0xdd, 0x47, 0xfd, 0x06, 0x51, 0x33, 0x08, 0x18, 0x01,
+    0x00, 0x04, 0x36, 0xd5, 0x1f, 0x06, 0x4e, 0xbf, 0xb4, 0xc9,
+    0xef, 0x97, 0x1e, 0x9a, 0x3c, 0xab, 0x1e, 0xfc, 0xb7, 0x90,
+    0xc3, 0x1a
 };
 
 static const struct rx_test_op rx_script_5[] = {
@@ -3007,105 +723,19 @@
 };
 
 static const unsigned char rx_script_6_handshake_secret[48] = {
-    0xd1,
-    0x41,
-    0xb0,
-    0xf6,
-    0x0d,
-    0x8b,
-    0xbd,
-    0xe8,
-    0x5b,
-    0xa8,
-    0xff,
-    0xd7,
-    0x18,
-    0x9a,
-    0x23,
-    0x7b,
-    0x13,
-    0x5c,
-    0x1e,
-    0x90,
-    0x1d,
-    0x08,
-    0x95,
-    0xcc,
-    0xc5,
-    0x8e,
-    0x73,
-    0x4e,
-    0x02,
-    0x6f,
-    0x3c,
-    0xb6,
-    0x26,
-    0x77,
-    0x8d,
-    0x53,
-    0xc5,
-    0x62,
-    0x9f,
-    0xb5,
-    0xf0,
-    0x88,
-    0xfb,
-    0xe5,
-    0x14,
-    0x71,
-    0xab,
-    0xe6,
+    0xd1, 0x41, 0xb0, 0xf6, 0x0d, 0x8b, 0xbd, 0xe8, 0x5b, 0xa8,
+    0xff, 0xd7, 0x18, 0x9a, 0x23, 0x7b, 0x13, 0x5c, 0x1e, 0x90,
+    0x1d, 0x08, 0x95, 0xcc, 0xc5, 0x8e, 0x73, 0x4e, 0x02, 0x6f,
+    0x3c, 0xb6, 0x26, 0x77, 0x8d, 0x53, 0xc5, 0x62, 0x9f, 0xb5,
+    0xf0, 0x88, 0xfb, 0xe5, 0x14, 0x71, 0xab, 0xe6
 };
 
 static const unsigned char rx_script_6_1rtt_secret[48] = {
-    0x2d,
-    0x6b,
-    0x9d,
-    0xd4,
-    0x39,
-    0xa0,
-    0xe7,
-    0xff,
-    0x17,
-    0xe2,
-    0xcb,
-    0x5c,
-    0x0d,
-    0x4a,
-    0xf6,
-    0x3f,
-    0xf4,
-    0xfe,
-    0xfc,
-    0xe5,
-    0x22,
-    0xfa,
-    0xf5,
-    0x5b,
-    0xc0,
-    0xb2,
-    0x18,
-    0xbb,
-    0x92,
-    0x4d,
-    0x35,
-    0xea,
-    0x67,
-    0xa6,
-    0xe7,
-    0xc1,
-    0x90,
-    0x10,
-    0xc9,
-    0x14,
-    0x46,
-    0xf5,
-    0x95,
-    0x57,
-    0x8b,
-    0x90,
-    0x88,
-    0x5d,
+    0x2d, 0x6b, 0x9d, 0xd4, 0x39, 0xa0, 0xe7, 0xff, 0x17, 0xe2,
+    0xcb, 0x5c, 0x0d, 0x4a, 0xf6, 0x3f, 0xf4, 0xfe, 0xfc, 0xe5,
+    0x22, 0xfa, 0xf5, 0x5b, 0xc0, 0xb2, 0x18, 0xbb, 0x92, 0x4d,
+    0x35, 0xea, 0x67, 0xa6, 0xe7, 0xc1, 0x90, 0x10, 0xc9, 0x14,
+    0x46, 0xf5, 0x95, 0x57, 0x8b, 0x90, 0x88, 0x5d
 };
 
 static const unsigned char rx_script_6_in[] = {
@@ -3126,450 +756,51 @@
     0xbe, /* Length (446) */
     0xa9,
     0xe2, /* PN (0) */
-    0x83,
-    0x39,
-    0x95,
-    0x8f,
-    0x8f,
-    0x8c,
-    0xa9,
-    0xaf,
-    0x10,
-    0x29,
-    0x3d,
-    0xfc,
-    0x56,
-    0x4a,
-    0x1c,
-    0x4b,
-    0xc9,
-    0x48,
-    0xb1,
-    0xaf,
-    0x36,
-    0xd5,
-    0xac,
-    0x95,
-    0xbf,
-    0xfd,
-    0x2c,
-    0x4d,
-    0x70,
-    0x2e,
-    0x5b,
-    0x7c,
-    0x22,
-    0x5f,
-    0x5f,
-    0xee,
-    0x10,
-    0x8f,
-    0xfb,
-    0x0b,
-    0x5f,
-    0x9d,
-    0x7e,
-    0x68,
-    0x2f,
-    0x94,
-    0x0b,
-    0xdb,
-    0xed,
-    0xef,
-    0xfa,
-    0x4e,
-    0xc6,
-    0xd5,
-    0xe7,
-    0xef,
-    0xe0,
-    0x78,
-    0x3c,
-    0xdc,
-    0xe9,
-    0xd8,
-    0xe8,
-    0x56,
-    0x71,
-    0xd7,
-    0xe7,
-    0x6c,
-    0x7f,
-    0x5d,
-    0xaa,
-    0x7a,
-    0x52,
-    0x1d,
-    0x95,
-    0x7a,
-    0x80,
-    0x70,
-    0x38,
-    0xc0,
-    0x8b,
-    0xa1,
-    0x2f,
-    0x09,
-    0x16,
-    0xd2,
-    0xec,
-    0xa3,
-    0x23,
-    0x72,
-    0x45,
-    0x3c,
-    0xbd,
-    0x8c,
-    0xda,
-    0xbb,
-    0x37,
-    0x5a,
-    0x8d,
-    0xb2,
-    0x00,
-    0x7e,
-    0x67,
-    0x0c,
-    0xa0,
-    0x32,
-    0xdd,
-    0x80,
-    0x07,
-    0x71,
-    0xb0,
-    0x95,
-    0x21,
-    0xbc,
-    0x1e,
-    0xbd,
-    0x63,
-    0x0a,
-    0x10,
-    0xe7,
-    0x4b,
-    0x6e,
-    0x2e,
-    0x85,
-    0x3a,
-    0x65,
-    0xf7,
-    0x06,
-    0x6e,
-    0x7e,
-    0x8f,
-    0x65,
-    0x8c,
-    0xb1,
-    0x93,
-    0xe9,
-    0x0d,
-    0xe8,
-    0x46,
-    0xe7,
-    0xcf,
-    0xa7,
-    0xd2,
-    0x8b,
-    0x15,
-    0x23,
-    0xec,
-    0xc3,
-    0xec,
-    0x44,
-    0xda,
-    0x62,
-    0x15,
-    0x35,
-    0x34,
-    0x2f,
-    0x62,
-    0x77,
-    0xc8,
-    0x1f,
-    0x83,
-    0x22,
-    0x00,
-    0xe5,
-    0xc0,
-    0x89,
-    0xb8,
-    0x97,
-    0xd2,
-    0x37,
-    0x02,
-    0xea,
-    0xa2,
-    0x35,
-    0xbf,
-    0x19,
-    0xf0,
-    0xba,
-    0x1d,
-    0xb7,
-    0xaa,
-    0x36,
-    0xbb,
-    0x11,
-    0x60,
-    0xc3,
-    0x45,
-    0x1f,
-    0xe5,
-    0x18,
-    0xde,
-    0x4c,
-    0x01,
-    0x23,
-    0x2d,
-    0x17,
-    0x78,
-    0xdd,
-    0x4c,
-    0x8a,
-    0x1e,
-    0x1b,
-    0xd4,
-    0xda,
-    0x56,
-    0x43,
-    0x13,
-    0xa4,
-    0x4f,
-    0xfd,
-    0xd5,
-    0x92,
-    0x6a,
-    0x05,
-    0x5f,
-    0x14,
-    0x63,
-    0x85,
-    0x7d,
-    0xf1,
-    0x31,
-    0xb8,
-    0x27,
-    0x0b,
-    0xa6,
-    0xb5,
-    0x50,
-    0xca,
-    0x8b,
-    0x0e,
-    0xa1,
-    0x0d,
-    0xf9,
-    0xc4,
-    0xea,
-    0x6a,
-    0x6e,
-    0x4b,
-    0x6d,
-    0xdf,
-    0x49,
-    0xe8,
-    0x32,
-    0xf6,
-    0x85,
-    0xc4,
-    0x29,
-    0x26,
-    0x32,
-    0xfb,
-    0x5e,
-    0xa8,
-    0x55,
-    0x6b,
-    0x67,
-    0xe9,
-    0xaa,
-    0x35,
-    0x33,
-    0x90,
-    0xd8,
-    0x2a,
-    0x71,
-    0x0b,
-    0x6a,
-    0x48,
-    0xc4,
-    0xa3,
-    0x8b,
-    0xe0,
-    0xe7,
-    0x00,
-    0x3d,
-    0xee,
-    0x30,
-    0x70,
-    0x84,
-    0xbd,
-    0xa3,
-    0x3c,
-    0x9e,
-    0xa3,
-    0x5c,
-    0x69,
-    0xab,
-    0x55,
-    0x7b,
-    0xe2,
-    0xe5,
-    0x86,
-    0x13,
-    0xcb,
-    0x93,
-    0x3f,
-    0xcb,
-    0x3e,
-    0x6d,
-    0xc9,
-    0xc2,
-    0x10,
-    0x2b,
-    0x00,
-    0x9b,
-    0x3f,
-    0x14,
-    0x4e,
-    0x04,
-    0x27,
-    0xc0,
-    0xae,
-    0x1d,
-    0x48,
-    0x89,
-    0x3a,
-    0xf4,
-    0xac,
-    0xe0,
-    0x05,
-    0x07,
-    0xc9,
-    0x74,
-    0x6e,
-    0x21,
-    0x01,
-    0xe9,
-    0x26,
-    0xfd,
-    0xb4,
-    0xb2,
-    0x2a,
-    0xda,
-    0x72,
-    0xda,
-    0xbf,
-    0x63,
-    0x9d,
-    0x37,
-    0xaf,
-    0x90,
-    0x05,
-    0xd6,
-    0x89,
-    0xc7,
-    0xa6,
-    0x81,
-    0x4e,
-    0x2a,
-    0x30,
-    0xe3,
-    0x05,
-    0x88,
-    0x9f,
-    0xd0,
-    0xba,
-    0x8d,
-    0xc4,
-    0x21,
-    0x52,
-    0x5a,
-    0x7a,
-    0xe1,
-    0xad,
-    0xd3,
-    0x88,
-    0xc2,
-    0x18,
-    0xad,
-    0x4c,
-    0xb1,
-    0x66,
-    0x73,
-    0x1b,
-    0xf2,
-    0xd1,
-    0xb9,
-    0x43,
-    0xaa,
-    0xc4,
-    0x66,
-    0xcd,
-    0x42,
-    0xfa,
-    0x80,
-    0xec,
-    0xa1,
-    0x7c,
-    0x45,
-    0x02,
-    0x53,
-    0x45,
-    0xd5,
-    0x07,
-    0xd4,
-    0x70,
-    0x12,
-    0x1b,
-    0x08,
-    0x05,
-    0x6e,
-    0x99,
-    0x0a,
-    0xd3,
-    0x5b,
-    0x99,
-    0x6b,
-    0x65,
-    0xc4,
-    0xc0,
-    0x04,
-    0x1b,
-    0x75,
-    0xf2,
-    0x86,
-    0x99,
-    0x09,
-    0x4a,
-    0x50,
-    0x70,
-    0x00,
-    0x7a,
-    0x93,
-    0xaa,
-    0xe6,
-    0xf4,
-    0x03,
-    0x29,
-    0x06,
-    0xa4,
-    0x30,
-    0x6d,
-    0x52,
-    0xbd,
-    0x60,
-    0xd1,
-    0x7e,
-    0xd6,
-    0x07,
-    0xc0,
-    0x41,
-    0x01,
-    0x12,
-    0x3e,
-    0x16,
-    0x94,
+    0x83, 0x39, 0x95, 0x8f, 0x8f, 0x8c, 0xa9, 0xaf, 0x10, 0x29,
+    0x3d, 0xfc, 0x56, 0x4a, 0x1c, 0x4b, 0xc9, 0x48, 0xb1, 0xaf,
+    0x36, 0xd5, 0xac, 0x95, 0xbf, 0xfd, 0x2c, 0x4d, 0x70, 0x2e,
+    0x5b, 0x7c, 0x22, 0x5f, 0x5f, 0xee, 0x10, 0x8f, 0xfb, 0x0b,
+    0x5f, 0x9d, 0x7e, 0x68, 0x2f, 0x94, 0x0b, 0xdb, 0xed, 0xef,
+    0xfa, 0x4e, 0xc6, 0xd5, 0xe7, 0xef, 0xe0, 0x78, 0x3c, 0xdc,
+    0xe9, 0xd8, 0xe8, 0x56, 0x71, 0xd7, 0xe7, 0x6c, 0x7f, 0x5d,
+    0xaa, 0x7a, 0x52, 0x1d, 0x95, 0x7a, 0x80, 0x70, 0x38, 0xc0,
+    0x8b, 0xa1, 0x2f, 0x09, 0x16, 0xd2, 0xec, 0xa3, 0x23, 0x72,
+    0x45, 0x3c, 0xbd, 0x8c, 0xda, 0xbb, 0x37, 0x5a, 0x8d, 0xb2,
+    0x00, 0x7e, 0x67, 0x0c, 0xa0, 0x32, 0xdd, 0x80, 0x07, 0x71,
+    0xb0, 0x95, 0x21, 0xbc, 0x1e, 0xbd, 0x63, 0x0a, 0x10, 0xe7,
+    0x4b, 0x6e, 0x2e, 0x85, 0x3a, 0x65, 0xf7, 0x06, 0x6e, 0x7e,
+    0x8f, 0x65, 0x8c, 0xb1, 0x93, 0xe9, 0x0d, 0xe8, 0x46, 0xe7,
+    0xcf, 0xa7, 0xd2, 0x8b, 0x15, 0x23, 0xec, 0xc3, 0xec, 0x44,
+    0xda, 0x62, 0x15, 0x35, 0x34, 0x2f, 0x62, 0x77, 0xc8, 0x1f,
+    0x83, 0x22, 0x00, 0xe5, 0xc0, 0x89, 0xb8, 0x97, 0xd2, 0x37,
+    0x02, 0xea, 0xa2, 0x35, 0xbf, 0x19, 0xf0, 0xba, 0x1d, 0xb7,
+    0xaa, 0x36, 0xbb, 0x11, 0x60, 0xc3, 0x45, 0x1f, 0xe5, 0x18,
+    0xde, 0x4c, 0x01, 0x23, 0x2d, 0x17, 0x78, 0xdd, 0x4c, 0x8a,
+    0x1e, 0x1b, 0xd4, 0xda, 0x56, 0x43, 0x13, 0xa4, 0x4f, 0xfd,
+    0xd5, 0x92, 0x6a, 0x05, 0x5f, 0x14, 0x63, 0x85, 0x7d, 0xf1,
+    0x31, 0xb8, 0x27, 0x0b, 0xa6, 0xb5, 0x50, 0xca, 0x8b, 0x0e,
+    0xa1, 0x0d, 0xf9, 0xc4, 0xea, 0x6a, 0x6e, 0x4b, 0x6d, 0xdf,
+    0x49, 0xe8, 0x32, 0xf6, 0x85, 0xc4, 0x29, 0x26, 0x32, 0xfb,
+    0x5e, 0xa8, 0x55, 0x6b, 0x67, 0xe9, 0xaa, 0x35, 0x33, 0x90,
+    0xd8, 0x2a, 0x71, 0x0b, 0x6a, 0x48, 0xc4, 0xa3, 0x8b, 0xe0,
+    0xe7, 0x00, 0x3d, 0xee, 0x30, 0x70, 0x84, 0xbd, 0xa3, 0x3c,
+    0x9e, 0xa3, 0x5c, 0x69, 0xab, 0x55, 0x7b, 0xe2, 0xe5, 0x86,
+    0x13, 0xcb, 0x93, 0x3f, 0xcb, 0x3e, 0x6d, 0xc9, 0xc2, 0x10,
+    0x2b, 0x00, 0x9b, 0x3f, 0x14, 0x4e, 0x04, 0x27, 0xc0, 0xae,
+    0x1d, 0x48, 0x89, 0x3a, 0xf4, 0xac, 0xe0, 0x05, 0x07, 0xc9,
+    0x74, 0x6e, 0x21, 0x01, 0xe9, 0x26, 0xfd, 0xb4, 0xb2, 0x2a,
+    0xda, 0x72, 0xda, 0xbf, 0x63, 0x9d, 0x37, 0xaf, 0x90, 0x05,
+    0xd6, 0x89, 0xc7, 0xa6, 0x81, 0x4e, 0x2a, 0x30, 0xe3, 0x05,
+    0x88, 0x9f, 0xd0, 0xba, 0x8d, 0xc4, 0x21, 0x52, 0x5a, 0x7a,
+    0xe1, 0xad, 0xd3, 0x88, 0xc2, 0x18, 0xad, 0x4c, 0xb1, 0x66,
+    0x73, 0x1b, 0xf2, 0xd1, 0xb9, 0x43, 0xaa, 0xc4, 0x66, 0xcd,
+    0x42, 0xfa, 0x80, 0xec, 0xa1, 0x7c, 0x45, 0x02, 0x53, 0x45,
+    0xd5, 0x07, 0xd4, 0x70, 0x12, 0x1b, 0x08, 0x05, 0x6e, 0x99,
+    0x0a, 0xd3, 0x5b, 0x99, 0x6b, 0x65, 0xc4, 0xc0, 0x04, 0x1b,
+    0x75, 0xf2, 0x86, 0x99, 0x09, 0x4a, 0x50, 0x70, 0x00, 0x7a,
+    0x93, 0xaa, 0xe6, 0xf4, 0x03, 0x29, 0x06, 0xa4, 0x30, 0x6d,
+    0x52, 0xbd, 0x60, 0xd1, 0x7e, 0xd6, 0x07, 0xc0, 0x41, 0x01,
+    0x12, 0x3e, 0x16, 0x94,
 
     /* Second Packet: Handshake */
     0xea, /* Long, Handshake, PN Length=2 bytes */
@@ -3587,785 +818,89 @@
     0xb0, /* Length (688) */
     0x3a,
     0xc5, /* PN (0) */
-    0x3b,
-    0x8e,
-    0x4c,
-    0x01,
-    0x72,
-    0x6b,
-    0xfa,
-    0xbb,
-    0xad,
-    0xf9,
-    0x9e,
-    0x21,
-    0xb1,
-    0xd0,
-    0x01,
-    0xf1,
-    0xd4,
-    0x67,
-    0x8d,
-    0x2c,
-    0xee,
-    0x04,
-    0x60,
-    0x4a,
-    0xe2,
-    0xe4,
-    0xc6,
-    0x89,
-    0x01,
-    0xae,
-    0x3c,
-    0x1f,
-    0xf7,
-    0xe6,
-    0xf7,
-    0xac,
-    0x26,
-    0xcf,
-    0x3c,
-    0x6d,
-    0x1d,
-    0xfd,
-    0x11,
-    0x02,
-    0x51,
-    0x73,
-    0xb5,
-    0xe1,
-    0xb2,
-    0x44,
-    0x42,
-    0x32,
-    0x0f,
-    0xf5,
-    0x3d,
-    0x55,
-    0x2d,
-    0x1f,
-    0x02,
-    0x29,
-    0x51,
-    0x35,
-    0xdb,
-    0xc7,
-    0x7a,
-    0x34,
-    0x4b,
-    0xec,
-    0x60,
-    0x49,
-    0xa2,
-    0x90,
-    0x11,
-    0xef,
-    0x5a,
-    0xa9,
-    0x1c,
-    0xf7,
-    0xd9,
-    0x21,
-    0x68,
-    0x1c,
-    0x2b,
-    0xc6,
-    0x57,
-    0xde,
-    0xb1,
-    0x0b,
-    0x31,
-    0xed,
-    0xef,
-    0x16,
-    0xba,
-    0x08,
-    0xb9,
-    0xe2,
-    0xd9,
-    0xd0,
-    0xd8,
-    0x1f,
-    0xc4,
-    0x32,
-    0xe8,
-    0x45,
-    0x2a,
-    0x86,
-    0xe4,
-    0xd3,
-    0xaf,
-    0x72,
-    0x4f,
-    0x30,
-    0x01,
-    0x71,
-    0x15,
-    0x9b,
-    0xa9,
-    0x55,
-    0x35,
-    0xf7,
-    0x39,
-    0x7e,
-    0x6a,
-    0x59,
-    0x18,
-    0x4f,
-    0xe6,
-    0xdf,
-    0xb5,
-    0x0d,
-    0xc2,
-    0xe7,
-    0xb2,
-    0xa1,
-    0xa6,
-    0xa3,
-    0x9c,
-    0xf0,
-    0x0d,
-    0x59,
-    0x05,
-    0x49,
-    0x95,
-    0xfa,
-    0xcc,
-    0x72,
-    0xd7,
-    0xc0,
-    0x84,
-    0x2e,
-    0xc4,
-    0x1c,
-    0xd4,
-    0xa0,
-    0xe3,
-    0x6c,
-    0x5a,
-    0x8c,
-    0x94,
-    0x4d,
-    0x37,
-    0x1a,
-    0x1c,
-    0x68,
-    0x93,
-    0x5f,
-    0xe5,
-    0x99,
-    0x27,
-    0xc6,
-    0x06,
-    0xaa,
-    0x1f,
-    0x29,
-    0x17,
-    0xc5,
-    0x8c,
-    0x3d,
-    0x53,
-    0xa7,
-    0x05,
-    0x3a,
-    0x44,
-    0x53,
-    0x86,
-    0xed,
-    0x56,
-    0x99,
-    0x4c,
-    0xe2,
-    0x7b,
-    0x3a,
-    0x1e,
-    0x5d,
-    0x6d,
-    0xac,
-    0x78,
-    0x1e,
-    0xfa,
-    0x55,
-    0x58,
-    0x6e,
-    0x72,
-    0xee,
-    0xf9,
-    0x33,
-    0x64,
-    0x7f,
-    0x93,
-    0x3c,
-    0xfe,
-    0x18,
-    0x97,
-    0x6b,
-    0x02,
-    0x74,
-    0x90,
-    0x0d,
-    0xba,
-    0x89,
-    0xc0,
-    0x22,
-    0x0a,
-    0x0a,
-    0x37,
-    0x4c,
-    0x28,
-    0x74,
-    0xa7,
-    0x3a,
-    0x44,
-    0x74,
-    0x42,
-    0xff,
-    0xf1,
-    0xd2,
-    0x8d,
-    0x0c,
-    0xc1,
-    0xed,
-    0x98,
-    0x98,
-    0x8e,
-    0xa8,
-    0x6b,
-    0x95,
-    0x6a,
-    0x86,
-    0x0b,
-    0xb4,
-    0x95,
-    0x58,
-    0x34,
-    0x12,
-    0xb0,
-    0xc0,
-    0xf8,
-    0x2d,
-    0x5b,
-    0x40,
-    0x51,
-    0x80,
-    0x07,
-    0x91,
-    0x31,
-    0x77,
-    0xd3,
-    0x06,
-    0xa5,
-    0xe5,
-    0x1f,
-    0xe2,
-    0xf8,
-    0x92,
-    0xe4,
-    0x23,
-    0x2b,
-    0xf0,
-    0x4c,
-    0xa9,
-    0xa5,
-    0x6c,
-    0x6f,
-    0xaf,
-    0xaf,
-    0xbf,
-    0x97,
-    0xcf,
-    0x46,
-    0xf2,
-    0x8d,
-    0x61,
-    0x0e,
-    0x73,
-    0xcd,
-    0xc5,
-    0xde,
-    0xda,
-    0x50,
-    0x82,
-    0x61,
-    0x6d,
-    0xb1,
-    0xa2,
-    0xbe,
-    0x6b,
-    0x99,
-    0xcd,
-    0x5b,
-    0x99,
-    0x8f,
-    0x66,
-    0xab,
-    0x11,
-    0x78,
-    0xcc,
-    0xdb,
-    0x66,
-    0x98,
-    0xca,
-    0x19,
-    0x92,
-    0xf4,
-    0x05,
-    0xae,
-    0xe6,
-    0xf3,
-    0xe7,
-    0xf0,
-    0x30,
-    0x28,
-    0x31,
-    0x74,
-    0xff,
-    0xe2,
-    0xb3,
-    0x3a,
-    0x4f,
-    0x79,
-    0xe7,
-    0x2a,
-    0x9f,
-    0xe3,
-    0x41,
-    0xb2,
-    0x88,
-    0xc8,
-    0x8f,
-    0x77,
-    0x57,
-    0x42,
-    0x65,
-    0xdb,
-    0x07,
-    0xf6,
-    0x5f,
-    0xb8,
-    0x34,
-    0x17,
-    0xe3,
-    0x8d,
-    0x22,
-    0x5b,
-    0x88,
-    0x94,
-    0x60,
-    0x97,
-    0x32,
-    0x3d,
-    0x8a,
-    0x51,
-    0x9d,
-    0xb5,
-    0xac,
-    0xd7,
-    0x99,
-    0x96,
-    0x23,
-    0x6d,
-    0xc9,
-    0xab,
-    0x61,
-    0x41,
-    0x8f,
-    0x72,
-    0x1b,
-    0xf8,
-    0x84,
-    0xd9,
-    0x57,
-    0x88,
-    0x68,
-    0x3d,
-    0x73,
-    0x5f,
-    0xb1,
-    0x18,
-    0x5c,
-    0x3a,
-    0x35,
-    0xd2,
-    0xc5,
-    0xb7,
-    0x29,
-    0xc7,
-    0x95,
-    0xdd,
-    0x21,
-    0xc0,
-    0x78,
-    0x49,
-    0xf3,
-    0x24,
-    0xe0,
-    0x4c,
-    0x5c,
-    0x32,
-    0x08,
-    0xb7,
-    0x00,
-    0x43,
-    0x70,
-    0x5a,
-    0x95,
-    0x23,
-    0x91,
-    0xf5,
-    0xb7,
-    0x61,
-    0x85,
-    0x6f,
-    0xb3,
-    0xa4,
-    0x6b,
-    0x05,
-    0x9d,
-    0x39,
-    0xa3,
-    0xb1,
-    0x1c,
-    0x61,
-    0xc5,
-    0xa5,
-    0xe7,
-    0x9a,
-    0xe9,
-    0x5d,
-    0xaa,
-    0xca,
-    0x11,
-    0xd8,
-    0x4b,
-    0xa4,
-    0x9c,
-    0x18,
-    0x4e,
-    0x2b,
-    0x2d,
-    0x75,
-    0xc1,
-    0x12,
-    0x20,
-    0xe4,
-    0x66,
-    0xa5,
-    0x59,
-    0x67,
-    0x4b,
-    0xcc,
-    0x52,
-    0x2d,
-    0xfa,
-    0xaa,
-    0xa4,
-    0xe9,
-    0xfc,
-    0x79,
-    0xd7,
-    0xff,
-    0x03,
-    0x3e,
-    0xec,
-    0xba,
-    0x97,
-    0x37,
-    0x52,
-    0xc1,
-    0x57,
-    0x31,
-    0x8e,
-    0x57,
-    0x0c,
-    0x54,
-    0x92,
-    0x9c,
-    0x25,
-    0x5c,
-    0xfa,
-    0x9f,
-    0xa5,
-    0x36,
-    0x18,
-    0xd0,
-    0xaa,
-    0xf3,
-    0x3b,
-    0x5b,
-    0x59,
-    0xbd,
-    0x33,
-    0x5e,
-    0x7d,
-    0x74,
-    0x7c,
-    0xaf,
-    0xe9,
-    0x54,
-    0x80,
-    0xc4,
-    0xb4,
-    0xa1,
-    0x24,
-    0x9e,
-    0x23,
-    0x0d,
-    0xbf,
-    0x4e,
-    0x0f,
-    0xaf,
-    0xa5,
-    0x16,
-    0xcb,
-    0x3b,
-    0xfa,
-    0x33,
-    0xa5,
-    0x68,
-    0xa6,
-    0x64,
-    0x48,
-    0x2f,
-    0x5e,
-    0xfa,
-    0x64,
-    0x4e,
-    0xe3,
-    0x27,
-    0x4f,
-    0x13,
-    0xe6,
-    0x37,
-    0xf6,
-    0xb9,
-    0x63,
-    0x4b,
-    0xdc,
-    0x49,
-    0x3c,
-    0x5e,
-    0x9e,
-    0x06,
-    0xea,
-    0xac,
-    0xa3,
-    0xdf,
-    0x6c,
-    0x49,
-    0xfb,
-    0xa1,
-    0x01,
-    0x4f,
-    0x6f,
-    0x74,
-    0x1f,
-    0xd3,
-    0x26,
-    0xa1,
-    0x92,
-    0x3e,
-    0xe0,
-    0x73,
-    0xd6,
-    0x3b,
-    0x67,
-    0x13,
-    0x53,
-    0x2e,
-    0xcb,
-    0xbc,
-    0x83,
-    0xd0,
-    0x6e,
-    0x28,
-    0xb1,
-    0xcb,
-    0xd9,
-    0x66,
-    0xe0,
-    0x33,
-    0x59,
-    0x45,
-    0xd3,
-    0x13,
-    0xc2,
-    0x48,
-    0xd5,
-    0x9e,
-    0x88,
-    0xba,
-    0x75,
-    0x7b,
-    0xb1,
-    0xfe,
-    0x6f,
-    0xec,
-    0xde,
-    0xff,
-    0x14,
-    0x59,
-    0x75,
-    0xbf,
-    0x1a,
-    0x74,
-    0x47,
-    0xc5,
-    0xd8,
-    0xe8,
-    0x1b,
-    0x3c,
-    0x86,
-    0xd7,
-    0x1f,
-    0x99,
-    0x11,
-    0xd3,
-    0x29,
-    0xfd,
-    0x5d,
-    0x22,
-    0x7e,
-    0x03,
-    0x78,
-    0xed,
-    0x62,
-    0x0e,
-    0xbe,
-    0x6d,
-    0x75,
-    0xf4,
-    0xa8,
-    0x6e,
-    0xc7,
-    0x21,
-    0x76,
-    0xc5,
-    0xa0,
-    0x0c,
-    0xaa,
-    0x58,
-    0x78,
-    0x7e,
-    0x6e,
-    0xfc,
-    0x1e,
-    0x2a,
-    0x1c,
-    0xdd,
-    0xe5,
-    0x78,
-    0x08,
-    0xbd,
-    0xdb,
-    0xea,
-    0x8f,
-    0x8a,
-    0xa5,
-    0xbf,
-    0x93,
-    0xfe,
-    0x0f,
-    0x03,
-    0xa1,
-    0xc8,
-    0x64,
-    0x9f,
-    0x4a,
+    0x3b, 0x8e, 0x4c, 0x01, 0x72, 0x6b, 0xfa, 0xbb, 0xad, 0xf9,
+    0x9e, 0x21, 0xb1, 0xd0, 0x01, 0xf1, 0xd4, 0x67, 0x8d, 0x2c,
+    0xee, 0x04, 0x60, 0x4a, 0xe2, 0xe4, 0xc6, 0x89, 0x01, 0xae,
+    0x3c, 0x1f, 0xf7, 0xe6, 0xf7, 0xac, 0x26, 0xcf, 0x3c, 0x6d,
+    0x1d, 0xfd, 0x11, 0x02, 0x51, 0x73, 0xb5, 0xe1, 0xb2, 0x44,
+    0x42, 0x32, 0x0f, 0xf5, 0x3d, 0x55, 0x2d, 0x1f, 0x02, 0x29,
+    0x51, 0x35, 0xdb, 0xc7, 0x7a, 0x34, 0x4b, 0xec, 0x60, 0x49,
+    0xa2, 0x90, 0x11, 0xef, 0x5a, 0xa9, 0x1c, 0xf7, 0xd9, 0x21,
+    0x68, 0x1c, 0x2b, 0xc6, 0x57, 0xde, 0xb1, 0x0b, 0x31, 0xed,
+    0xef, 0x16, 0xba, 0x08, 0xb9, 0xe2, 0xd9, 0xd0, 0xd8, 0x1f,
+    0xc4, 0x32, 0xe8, 0x45, 0x2a, 0x86, 0xe4, 0xd3, 0xaf, 0x72,
+    0x4f, 0x30, 0x01, 0x71, 0x15, 0x9b, 0xa9, 0x55, 0x35, 0xf7,
+    0x39, 0x7e, 0x6a, 0x59, 0x18, 0x4f, 0xe6, 0xdf, 0xb5, 0x0d,
+    0xc2, 0xe7, 0xb2, 0xa1, 0xa6, 0xa3, 0x9c, 0xf0, 0x0d, 0x59,
+    0x05, 0x49, 0x95, 0xfa, 0xcc, 0x72, 0xd7, 0xc0, 0x84, 0x2e,
+    0xc4, 0x1c, 0xd4, 0xa0, 0xe3, 0x6c, 0x5a, 0x8c, 0x94, 0x4d,
+    0x37, 0x1a, 0x1c, 0x68, 0x93, 0x5f, 0xe5, 0x99, 0x27, 0xc6,
+    0x06, 0xaa, 0x1f, 0x29, 0x17, 0xc5, 0x8c, 0x3d, 0x53, 0xa7,
+    0x05, 0x3a, 0x44, 0x53, 0x86, 0xed, 0x56, 0x99, 0x4c, 0xe2,
+    0x7b, 0x3a, 0x1e, 0x5d, 0x6d, 0xac, 0x78, 0x1e, 0xfa, 0x55,
+    0x58, 0x6e, 0x72, 0xee, 0xf9, 0x33, 0x64, 0x7f, 0x93, 0x3c,
+    0xfe, 0x18, 0x97, 0x6b, 0x02, 0x74, 0x90, 0x0d, 0xba, 0x89,
+    0xc0, 0x22, 0x0a, 0x0a, 0x37, 0x4c, 0x28, 0x74, 0xa7, 0x3a,
+    0x44, 0x74, 0x42, 0xff, 0xf1, 0xd2, 0x8d, 0x0c, 0xc1, 0xed,
+    0x98, 0x98, 0x8e, 0xa8, 0x6b, 0x95, 0x6a, 0x86, 0x0b, 0xb4,
+    0x95, 0x58, 0x34, 0x12, 0xb0, 0xc0, 0xf8, 0x2d, 0x5b, 0x40,
+    0x51, 0x80, 0x07, 0x91, 0x31, 0x77, 0xd3, 0x06, 0xa5, 0xe5,
+    0x1f, 0xe2, 0xf8, 0x92, 0xe4, 0x23, 0x2b, 0xf0, 0x4c, 0xa9,
+    0xa5, 0x6c, 0x6f, 0xaf, 0xaf, 0xbf, 0x97, 0xcf, 0x46, 0xf2,
+    0x8d, 0x61, 0x0e, 0x73, 0xcd, 0xc5, 0xde, 0xda, 0x50, 0x82,
+    0x61, 0x6d, 0xb1, 0xa2, 0xbe, 0x6b, 0x99, 0xcd, 0x5b, 0x99,
+    0x8f, 0x66, 0xab, 0x11, 0x78, 0xcc, 0xdb, 0x66, 0x98, 0xca,
+    0x19, 0x92, 0xf4, 0x05, 0xae, 0xe6, 0xf3, 0xe7, 0xf0, 0x30,
+    0x28, 0x31, 0x74, 0xff, 0xe2, 0xb3, 0x3a, 0x4f, 0x79, 0xe7,
+    0x2a, 0x9f, 0xe3, 0x41, 0xb2, 0x88, 0xc8, 0x8f, 0x77, 0x57,
+    0x42, 0x65, 0xdb, 0x07, 0xf6, 0x5f, 0xb8, 0x34, 0x17, 0xe3,
+    0x8d, 0x22, 0x5b, 0x88, 0x94, 0x60, 0x97, 0x32, 0x3d, 0x8a,
+    0x51, 0x9d, 0xb5, 0xac, 0xd7, 0x99, 0x96, 0x23, 0x6d, 0xc9,
+    0xab, 0x61, 0x41, 0x8f, 0x72, 0x1b, 0xf8, 0x84, 0xd9, 0x57,
+    0x88, 0x68, 0x3d, 0x73, 0x5f, 0xb1, 0x18, 0x5c, 0x3a, 0x35,
+    0xd2, 0xc5, 0xb7, 0x29, 0xc7, 0x95, 0xdd, 0x21, 0xc0, 0x78,
+    0x49, 0xf3, 0x24, 0xe0, 0x4c, 0x5c, 0x32, 0x08, 0xb7, 0x00,
+    0x43, 0x70, 0x5a, 0x95, 0x23, 0x91, 0xf5, 0xb7, 0x61, 0x85,
+    0x6f, 0xb3, 0xa4, 0x6b, 0x05, 0x9d, 0x39, 0xa3, 0xb1, 0x1c,
+    0x61, 0xc5, 0xa5, 0xe7, 0x9a, 0xe9, 0x5d, 0xaa, 0xca, 0x11,
+    0xd8, 0x4b, 0xa4, 0x9c, 0x18, 0x4e, 0x2b, 0x2d, 0x75, 0xc1,
+    0x12, 0x20, 0xe4, 0x66, 0xa5, 0x59, 0x67, 0x4b, 0xcc, 0x52,
+    0x2d, 0xfa, 0xaa, 0xa4, 0xe9, 0xfc, 0x79, 0xd7, 0xff, 0x03,
+    0x3e, 0xec, 0xba, 0x97, 0x37, 0x52, 0xc1, 0x57, 0x31, 0x8e,
+    0x57, 0x0c, 0x54, 0x92, 0x9c, 0x25, 0x5c, 0xfa, 0x9f, 0xa5,
+    0x36, 0x18, 0xd0, 0xaa, 0xf3, 0x3b, 0x5b, 0x59, 0xbd, 0x33,
+    0x5e, 0x7d, 0x74, 0x7c, 0xaf, 0xe9, 0x54, 0x80, 0xc4, 0xb4,
+    0xa1, 0x24, 0x9e, 0x23, 0x0d, 0xbf, 0x4e, 0x0f, 0xaf, 0xa5,
+    0x16, 0xcb, 0x3b, 0xfa, 0x33, 0xa5, 0x68, 0xa6, 0x64, 0x48,
+    0x2f, 0x5e, 0xfa, 0x64, 0x4e, 0xe3, 0x27, 0x4f, 0x13, 0xe6,
+    0x37, 0xf6, 0xb9, 0x63, 0x4b, 0xdc, 0x49, 0x3c, 0x5e, 0x9e,
+    0x06, 0xea, 0xac, 0xa3, 0xdf, 0x6c, 0x49, 0xfb, 0xa1, 0x01,
+    0x4f, 0x6f, 0x74, 0x1f, 0xd3, 0x26, 0xa1, 0x92, 0x3e, 0xe0,
+    0x73, 0xd6, 0x3b, 0x67, 0x13, 0x53, 0x2e, 0xcb, 0xbc, 0x83,
+    0xd0, 0x6e, 0x28, 0xb1, 0xcb, 0xd9, 0x66, 0xe0, 0x33, 0x59,
+    0x45, 0xd3, 0x13, 0xc2, 0x48, 0xd5, 0x9e, 0x88, 0xba, 0x75,
+    0x7b, 0xb1, 0xfe, 0x6f, 0xec, 0xde, 0xff, 0x14, 0x59, 0x75,
+    0xbf, 0x1a, 0x74, 0x47, 0xc5, 0xd8, 0xe8, 0x1b, 0x3c, 0x86,
+    0xd7, 0x1f, 0x99, 0x11, 0xd3, 0x29, 0xfd, 0x5d, 0x22, 0x7e,
+    0x03, 0x78, 0xed, 0x62, 0x0e, 0xbe, 0x6d, 0x75, 0xf4, 0xa8,
+    0x6e, 0xc7, 0x21, 0x76, 0xc5, 0xa0, 0x0c, 0xaa, 0x58, 0x78,
+    0x7e, 0x6e, 0xfc, 0x1e, 0x2a, 0x1c, 0xdd, 0xe5, 0x78, 0x08,
+    0xbd, 0xdb, 0xea, 0x8f, 0x8a, 0xa5, 0xbf, 0x93, 0xfe, 0x0f,
+    0x03, 0xa1, 0xc8, 0x64, 0x9f, 0x4a,
 
     /* Third Packet: 1-RTT */
     0x48, /* Short, 1-RTT, Spin=0, KP=0, PN Length=2 bytes */
     0x3e,
     0x28, /* PN (0) */
-    0xb9,
-    0xdb,
-    0x61,
-    0xf8,
-    0x8b,
-    0x3a,
-    0xef,
-    0x26,
-    0x69,
-    0xf2,
-    0x57,
-    0xc6,
-    0x84,
-    0x25,
-    0x6b,
-    0x77,
-    0xbe,
-    0x8c,
-    0x43,
-    0x32,
-    0xf3,
-    0x9a,
-    0xd1,
-    0x85,
-    0x14,
-    0xbc,
-    0x89,
-    0x3b,
-    0x9c,
-    0xf3,
-    0xfc,
-    0x00,
-    0xa1,
-    0x3a,
-    0xc3,
-    0xc4,
-    0x1e,
-    0xdf,
-    0xd0,
-    0x11,
-    0x70,
-    0xd9,
-    0x02,
-    0x7a,
-    0xd4,
-    0xef,
-    0x86,
-    0x67,
-    0xb1,
-    0x1e,
-    0x5d,
-    0xe3,
-    0x7f,
-    0x82,
-    0x14,
-    0x52,
-    0xa5,
-    0x8a,
-    0x89,
-    0xa7,
-    0x98,
-    0x75,
-    0x2f,
-    0x8a,
-    0x00,
-    0xf3,
-    0xbd,
-    0x49,
-    0x26,
-    0x4d,
-    0x0c,
-    0xc7,
-    0x38,
-    0xe7,
-    0x91,
-    0x85,
-    0xc9,
-    0x21,
-    0x6a,
-    0x1c,
-    0xc4,
-    0xa3,
-    0x0e,
-    0xd8,
-    0xfe,
-    0xb1,
-    0x25,
-    0x1a,
+    0xb9, 0xdb, 0x61, 0xf8, 0x8b, 0x3a, 0xef, 0x26, 0x69, 0xf2,
+    0x57, 0xc6, 0x84, 0x25, 0x6b, 0x77, 0xbe, 0x8c, 0x43, 0x32,
+    0xf3, 0x9a, 0xd1, 0x85, 0x14, 0xbc, 0x89, 0x3b, 0x9c, 0xf3,
+    0xfc, 0x00, 0xa1, 0x3a, 0xc3, 0xc4, 0x1e, 0xdf, 0xd0, 0x11,
+    0x70, 0xd9, 0x02, 0x7a, 0xd4, 0xef, 0x86, 0x67, 0xb1, 0x1e,
+    0x5d, 0xe3, 0x7f, 0x82, 0x14, 0x52, 0xa5, 0x8a, 0x89, 0xa7,
+    0x98, 0x75, 0x2f, 0x8a, 0x00, 0xf3, 0xbd, 0x49, 0x26, 0x4d,
+    0x0c, 0xc7, 0x38, 0xe7, 0x91, 0x85, 0xc9, 0x21, 0x6a, 0x1c,
+    0xc4, 0xa3, 0x0e, 0xd8, 0xfe, 0xb1, 0x25, 0x1a
 };
 
 static const QUIC_PKT_HDR rx_script_6a_expect_hdr = {
@@ -4386,434 +921,49 @@
 };
 
 static const unsigned char rx_script_6a_body[] = {
-    0x02,
-    0x03,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x06,
-    0x00,
-    0x40,
-    0x5a,
-    0x02,
-    0x00,
-    0x00,
-    0x56,
-    0x03,
-    0x03,
-    0xc3,
-    0x45,
-    0xe8,
-    0xb8,
-    0xf9,
-    0x7c,
-    0x9f,
-    0x5d,
-    0xcf,
-    0x66,
-    0x25,
-    0xe4,
-    0x91,
-    0x0e,
-    0xb0,
-    0x5a,
-    0x14,
-    0xce,
-    0xaf,
-    0xea,
-    0x83,
-    0x12,
-    0xde,
-    0x68,
-    0xd9,
-    0x31,
-    0xf2,
-    0x23,
-    0x11,
-    0x3a,
-    0x15,
-    0xcb,
-    0x00,
-    0x13,
-    0x02,
-    0x00,
-    0x00,
-    0x2e,
-    0x00,
-    0x2b,
-    0x00,
-    0x02,
-    0x03,
-    0x04,
-    0x00,
-    0x33,
-    0x00,
-    0x24,
-    0x00,
-    0x1d,
-    0x00,
-    0x20,
-    0xab,
-    0xd3,
-    0xc6,
-    0x9f,
-    0x36,
-    0xd3,
-    0x52,
-    0x93,
-    0x87,
-    0xee,
-    0x92,
-    0x01,
-    0xa2,
-    0xd6,
-    0x9a,
-    0x5e,
-    0x61,
-    0x43,
-    0xcc,
-    0x4a,
-    0xcc,
-    0x7a,
-    0xcd,
-    0x83,
-    0xb2,
-    0xd9,
-    0xad,
-    0xd1,
-    0x14,
-    0xdc,
-    0x84,
-    0x61,
+    0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x40, 0x5a, 0x02, 0x00,
+    0x00, 0x56, 0x03, 0x03, 0xc3, 0x45, 0xe8, 0xb8, 0xf9, 0x7c,
+    0x9f, 0x5d, 0xcf, 0x66, 0x25, 0xe4, 0x91, 0x0e, 0xb0, 0x5a,
+    0x14, 0xce, 0xaf, 0xea, 0x83, 0x12, 0xde, 0x68, 0xd9, 0x31,
+    0xf2, 0x23, 0x11, 0x3a, 0x15, 0xcb, 0x00, 0x13, 0x02, 0x00,
+    0x00, 0x2e, 0x00, 0x2b, 0x00, 0x02, 0x03, 0x04, 0x00, 0x33,
+    0x00, 0x24, 0x00, 0x1d, 0x00, 0x20, 0xab, 0xd3, 0xc6, 0x9f,
+    0x36, 0xd3, 0x52, 0x93, 0x87, 0xee, 0x92, 0x01, 0xa2, 0xd6,
+    0x9a, 0x5e, 0x61, 0x43, 0xcc, 0x4a, 0xcc, 0x7a, 0xcd, 0x83,
+    0xb2, 0xd9, 0xad, 0xd1, 0x14, 0xdc, 0x84, 0x61
 };
 
 static const QUIC_PKT_HDR rx_script_6b_expect_hdr = {
@@ -4834,676 +984,73 @@
 };
 
 static const unsigned char rx_script_6b_body[] = {
-    0x06,
-    0x00,
-    0x42,
-    0x9a,
-    0x08,
-    0x00,
-    0x00,
-    0x80,
-    0x00,
-    0x7e,
-    0x00,
-    0x10,
-    0x00,
-    0x08,
-    0x00,
-    0x06,
-    0x05,
-    0x64,
-    0x75,
-    0x6d,
-    0x6d,
-    0x79,
-    0x00,
-    0x39,
-    0x00,
-    0x6e,
-    0x47,
-    0xfa,
-    0x05,
-    0x5a,
-    0xe0,
-    0xec,
-    0x4a,
-    0xf3,
-    0x05,
-    0x04,
-    0x80,
-    0x08,
-    0x00,
-    0x00,
-    0x06,
-    0x04,
-    0x80,
-    0x08,
-    0x00,
-    0x00,
-    0x07,
-    0x04,
-    0x80,
-    0x08,
-    0x00,
-    0x00,
-    0x04,
-    0x04,
-    0x80,
-    0x0c,
-    0x00,
-    0x00,
-    0x08,
-    0x02,
-    0x40,
-    0x64,
-    0x09,
-    0x02,
-    0x40,
-    0x64,
-    0x01,
-    0x04,
-    0x80,
-    0x00,
-    0x75,
-    0x30,
-    0x03,
-    0x02,
-    0x45,
-    0xac,
-    0x0b,
-    0x01,
-    0x1a,
-    0x0c,
-    0x00,
-    0x02,
-    0x10,
-    0x35,
-    0xd7,
-    0x7d,
-    0x8b,
-    0xc5,
-    0xb1,
-    0x89,
-    0xb1,
-    0x5c,
-    0x23,
-    0x74,
-    0x50,
-    0xfd,
-    0x47,
-    0xfe,
-    0xd2,
-    0x00,
-    0x11,
-    0x96,
-    0x38,
-    0x27,
-    0xde,
-    0x7d,
-    0xfb,
-    0x2b,
-    0x38,
-    0x56,
-    0xe5,
-    0x2a,
-    0xb8,
-    0x6b,
-    0xfa,
-    0xaa,
-    0xde,
-    0x81,
-    0x0e,
-    0x01,
-    0x04,
-    0x0f,
-    0x04,
-    0x36,
-    0xf4,
-    0x75,
-    0x2d,
-    0x10,
-    0x04,
-    0xac,
-    0x88,
-    0x95,
-    0xbd,
-    0x20,
-    0x01,
-    0x00,
-    0x0b,
-    0x00,
-    0x01,
-    0x8f,
-    0x00,
-    0x00,
-    0x01,
-    0x8b,
-    0x00,
-    0x01,
-    0x86,
-    0x30,
-    0x82,
-    0x01,
-    0x82,
-    0x30,
-    0x82,
-    0x01,
-    0x29,
-    0xa0,
-    0x03,
-    0x02,
-    0x01,
-    0x02,
-    0x02,
-    0x14,
-    0x0a,
-    0x73,
-    0x0f,
-    0x86,
-    0x18,
-    0xf2,
-    0xc3,
-    0x30,
-    0x01,
-    0xd2,
-    0xc0,
-    0xc1,
-    0x62,
-    0x52,
-    0x13,
-    0xf1,
-    0x9c,
-    0x13,
-    0x39,
-    0xb5,
-    0x30,
-    0x0a,
-    0x06,
-    0x08,
-    0x2a,
-    0x86,
-    0x48,
-    0xce,
-    0x3d,
-    0x04,
-    0x03,
-    0x02,
-    0x30,
-    0x17,
-    0x31,
-    0x15,
-    0x30,
-    0x13,
-    0x06,
-    0x03,
-    0x55,
-    0x04,
-    0x03,
-    0x0c,
-    0x0c,
-    0x6d,
-    0x61,
-    0x70,
-    0x61,
-    0x6b,
-    0x74,
-    0x2e,
-    0x6c,
-    0x6f,
-    0x63,
-    0x61,
-    0x6c,
-    0x30,
-    0x1e,
-    0x17,
-    0x0d,
-    0x32,
-    0x32,
-    0x30,
-    0x38,
-    0x30,
-    0x32,
-    0x31,
-    0x32,
-    0x30,
-    0x30,
-    0x31,
-    0x38,
-    0x5a,
-    0x17,
-    0x0d,
-    0x32,
-    0x32,
-    0x30,
-    0x39,
-    0x30,
-    0x31,
-    0x31,
-    0x32,
-    0x30,
-    0x30,
-    0x31,
-    0x38,
-    0x5a,
-    0x30,
-    0x17,
-    0x31,
-    0x15,
-    0x30,
-    0x13,
-    0x06,
-    0x03,
-    0x55,
-    0x04,
-    0x03,
-    0x0c,
-    0x0c,
-    0x6d,
-    0x61,
-    0x70,
-    0x61,
-    0x6b,
-    0x74,
-    0x2e,
-    0x6c,
-    0x6f,
-    0x63,
-    0x61,
-    0x6c,
-    0x30,
-    0x59,
-    0x30,
-    0x13,
-    0x06,
-    0x07,
-    0x2a,
-    0x86,
-    0x48,
-    0xce,
-    0x3d,
-    0x02,
-    0x01,
-    0x06,
-    0x08,
-    0x2a,
-    0x86,
-    0x48,
-    0xce,
-    0x3d,
-    0x03,
-    0x01,
-    0x07,
-    0x03,
-    0x42,
-    0x00,
-    0x04,
-    0x67,
-    0xf4,
-    0xd3,
-    0x8f,
-    0x15,
-    0x6d,
-    0xee,
-    0x85,
-    0xcc,
-    0x2a,
-    0x77,
-    0xfc,
-    0x0b,
-    0x8f,
-    0x9f,
-    0xcf,
-    0xa9,
-    0x95,
-    0x5d,
-    0x5b,
-    0xcd,
-    0xb7,
-    0x8b,
-    0xba,
-    0x31,
-    0x0a,
-    0x73,
-    0x62,
-    0xc5,
-    0xd0,
-    0x0e,
-    0x07,
-    0x90,
-    0xae,
-    0x38,
-    0x43,
-    0x79,
-    0xce,
-    0x5e,
-    0x33,
-    0xad,
-    0x31,
-    0xbf,
-    0x9f,
-    0x2a,
-    0x56,
-    0x83,
-    0xa5,
-    0x24,
-    0x16,
-    0xab,
-    0x0c,
-    0xf1,
-    0x64,
-    0xbe,
-    0xe4,
-    0x93,
-    0xb5,
-    0x89,
-    0xd6,
-    0x05,
-    0xe4,
-    0xf7,
-    0x7b,
-    0xa3,
-    0x53,
-    0x30,
-    0x51,
-    0x30,
-    0x1d,
-    0x06,
-    0x03,
-    0x55,
-    0x1d,
-    0x0e,
-    0x04,
-    0x16,
-    0x04,
-    0x14,
-    0x02,
-    0x64,
-    0x0f,
-    0x55,
-    0x69,
-    0x14,
-    0x91,
-    0x19,
-    0xed,
-    0xf9,
-    0x1a,
-    0xe9,
-    0x1d,
-    0xa5,
-    0x5a,
-    0xd0,
-    0x48,
-    0x96,
-    0x9f,
-    0x60,
-    0x30,
-    0x1f,
-    0x06,
-    0x03,
-    0x55,
-    0x1d,
-    0x23,
-    0x04,
-    0x18,
-    0x30,
-    0x16,
-    0x80,
-    0x14,
-    0x02,
-    0x64,
-    0x0f,
-    0x55,
-    0x69,
-    0x14,
-    0x91,
-    0x19,
-    0xed,
-    0xf9,
-    0x1a,
-    0xe9,
-    0x1d,
-    0xa5,
-    0x5a,
-    0xd0,
-    0x48,
-    0x96,
-    0x9f,
-    0x60,
-    0x30,
-    0x0f,
-    0x06,
-    0x03,
-    0x55,
-    0x1d,
-    0x13,
-    0x01,
-    0x01,
-    0xff,
-    0x04,
-    0x05,
-    0x30,
-    0x03,
-    0x01,
-    0x01,
-    0xff,
-    0x30,
-    0x0a,
-    0x06,
-    0x08,
-    0x2a,
-    0x86,
-    0x48,
-    0xce,
-    0x3d,
-    0x04,
-    0x03,
-    0x02,
-    0x03,
-    0x47,
-    0x00,
-    0x30,
-    0x44,
-    0x02,
-    0x20,
-    0x0a,
-    0x82,
-    0x92,
-    0x6e,
-    0xd3,
-    0xc6,
-    0x66,
-    0xd9,
-    0xd3,
-    0x75,
-    0xff,
-    0x71,
-    0x3b,
-    0x61,
-    0x46,
-    0x21,
-    0x00,
-    0xe6,
-    0x21,
-    0x5d,
-    0x9c,
-    0x86,
-    0xe9,
-    0x65,
-    0x40,
-    0x4f,
-    0xeb,
-    0x70,
-    0x4f,
-    0x2c,
-    0xad,
-    0x00,
-    0x02,
-    0x20,
-    0x08,
-    0xc2,
-    0x07,
-    0x5d,
-    0x16,
-    0xfc,
-    0x54,
-    0x34,
-    0x2b,
-    0xb4,
-    0x18,
-    0x67,
-    0x44,
-    0x81,
-    0xc9,
-    0xa9,
-    0x67,
-    0x2e,
-    0xce,
-    0xa1,
-    0x02,
-    0x9f,
-    0x3b,
-    0xe5,
-    0x61,
-    0x16,
-    0x0b,
-    0x50,
-    0xf6,
-    0xa1,
-    0x50,
-    0x94,
-    0x00,
-    0x00,
-    0x0f,
-    0x00,
-    0x00,
-    0x4b,
-    0x04,
-    0x03,
-    0x00,
-    0x47,
-    0x30,
-    0x45,
-    0x02,
-    0x20,
-    0x78,
-    0x9e,
-    0xe0,
-    0x6a,
-    0x7a,
-    0xbd,
-    0xc3,
-    0x84,
-    0x3d,
-    0x25,
-    0x6a,
-    0x59,
-    0x23,
-    0x97,
-    0x52,
-    0x64,
-    0x4e,
-    0xb6,
-    0x9f,
-    0xcc,
-    0xd3,
-    0xd7,
-    0xa9,
-    0x29,
-    0x44,
-    0x75,
-    0x6d,
-    0x50,
-    0xfc,
-    0x22,
-    0xde,
-    0xd3,
-    0x02,
-    0x21,
-    0x00,
-    0xe5,
-    0x28,
-    0xd6,
-    0x5a,
-    0xd1,
-    0xec,
-    0x4a,
-    0xcc,
-    0x20,
-    0xb4,
-    0xea,
-    0x15,
-    0xfb,
-    0x8e,
-    0x73,
-    0xa8,
-    0x6b,
-    0xbb,
-    0x42,
-    0x70,
-    0x90,
-    0x08,
-    0x6e,
-    0x74,
-    0x6f,
-    0x5a,
-    0x05,
-    0xb5,
-    0x39,
-    0xee,
-    0x01,
-    0x04,
-    0x14,
-    0x00,
-    0x00,
-    0x30,
-    0xff,
-    0x9f,
-    0xb2,
-    0x1d,
-    0xcb,
-    0x4f,
-    0xfc,
-    0x7a,
-    0xac,
-    0xf4,
-    0x75,
-    0x24,
-    0x83,
-    0x5f,
-    0x8d,
-    0xa3,
-    0x3e,
-    0x9d,
-    0xef,
-    0x43,
-    0x67,
-    0x89,
-    0x5d,
-    0x55,
-    0xc7,
-    0xce,
-    0x80,
-    0xab,
-    0xc3,
-    0xc7,
-    0x74,
-    0xc7,
-    0xb2,
-    0x91,
-    0x27,
-    0xce,
-    0xd8,
-    0x5e,
-    0xc4,
-    0x4e,
-    0x96,
-    0x19,
-    0x68,
-    0x2d,
-    0xbe,
-    0x6f,
-    0x49,
-    0xfa,
+    0x06, 0x00, 0x42, 0x9a, 0x08, 0x00, 0x00, 0x80, 0x00, 0x7e,
+    0x00, 0x10, 0x00, 0x08, 0x00, 0x06, 0x05, 0x64, 0x75, 0x6d,
+    0x6d, 0x79, 0x00, 0x39, 0x00, 0x6e, 0x47, 0xfa, 0x05, 0x5a,
+    0xe0, 0xec, 0x4a, 0xf3, 0x05, 0x04, 0x80, 0x08, 0x00, 0x00,
+    0x06, 0x04, 0x80, 0x08, 0x00, 0x00, 0x07, 0x04, 0x80, 0x08,
+    0x00, 0x00, 0x04, 0x04, 0x80, 0x0c, 0x00, 0x00, 0x08, 0x02,
+    0x40, 0x64, 0x09, 0x02, 0x40, 0x64, 0x01, 0x04, 0x80, 0x00,
+    0x75, 0x30, 0x03, 0x02, 0x45, 0xac, 0x0b, 0x01, 0x1a, 0x0c,
+    0x00, 0x02, 0x10, 0x35, 0xd7, 0x7d, 0x8b, 0xc5, 0xb1, 0x89,
+    0xb1, 0x5c, 0x23, 0x74, 0x50, 0xfd, 0x47, 0xfe, 0xd2, 0x00,
+    0x11, 0x96, 0x38, 0x27, 0xde, 0x7d, 0xfb, 0x2b, 0x38, 0x56,
+    0xe5, 0x2a, 0xb8, 0x6b, 0xfa, 0xaa, 0xde, 0x81, 0x0e, 0x01,
+    0x04, 0x0f, 0x04, 0x36, 0xf4, 0x75, 0x2d, 0x10, 0x04, 0xac,
+    0x88, 0x95, 0xbd, 0x20, 0x01, 0x00, 0x0b, 0x00, 0x01, 0x8f,
+    0x00, 0x00, 0x01, 0x8b, 0x00, 0x01, 0x86, 0x30, 0x82, 0x01,
+    0x82, 0x30, 0x82, 0x01, 0x29, 0xa0, 0x03, 0x02, 0x01, 0x02,
+    0x02, 0x14, 0x0a, 0x73, 0x0f, 0x86, 0x18, 0xf2, 0xc3, 0x30,
+    0x01, 0xd2, 0xc0, 0xc1, 0x62, 0x52, 0x13, 0xf1, 0x9c, 0x13,
+    0x39, 0xb5, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce,
+    0x3d, 0x04, 0x03, 0x02, 0x30, 0x17, 0x31, 0x15, 0x30, 0x13,
+    0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x0c, 0x6d, 0x61, 0x70,
+    0x61, 0x6b, 0x74, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x30,
+    0x1e, 0x17, 0x0d, 0x32, 0x32, 0x30, 0x38, 0x30, 0x32, 0x31,
+    0x32, 0x30, 0x30, 0x31, 0x38, 0x5a, 0x17, 0x0d, 0x32, 0x32,
+    0x30, 0x39, 0x30, 0x31, 0x31, 0x32, 0x30, 0x30, 0x31, 0x38,
+    0x5a, 0x30, 0x17, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55,
+    0x04, 0x03, 0x0c, 0x0c, 0x6d, 0x61, 0x70, 0x61, 0x6b, 0x74,
+    0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x30, 0x59, 0x30, 0x13,
+    0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06,
+    0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03,
+    0x42, 0x00, 0x04, 0x67, 0xf4, 0xd3, 0x8f, 0x15, 0x6d, 0xee,
+    0x85, 0xcc, 0x2a, 0x77, 0xfc, 0x0b, 0x8f, 0x9f, 0xcf, 0xa9,
+    0x95, 0x5d, 0x5b, 0xcd, 0xb7, 0x8b, 0xba, 0x31, 0x0a, 0x73,
+    0x62, 0xc5, 0xd0, 0x0e, 0x07, 0x90, 0xae, 0x38, 0x43, 0x79,
+    0xce, 0x5e, 0x33, 0xad, 0x31, 0xbf, 0x9f, 0x2a, 0x56, 0x83,
+    0xa5, 0x24, 0x16, 0xab, 0x0c, 0xf1, 0x64, 0xbe, 0xe4, 0x93,
+    0xb5, 0x89, 0xd6, 0x05, 0xe4, 0xf7, 0x7b, 0xa3, 0x53, 0x30,
+    0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16,
+    0x04, 0x14, 0x02, 0x64, 0x0f, 0x55, 0x69, 0x14, 0x91, 0x19,
+    0xed, 0xf9, 0x1a, 0xe9, 0x1d, 0xa5, 0x5a, 0xd0, 0x48, 0x96,
+    0x9f, 0x60, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04,
+    0x18, 0x30, 0x16, 0x80, 0x14, 0x02, 0x64, 0x0f, 0x55, 0x69,
+    0x14, 0x91, 0x19, 0xed, 0xf9, 0x1a, 0xe9, 0x1d, 0xa5, 0x5a,
+    0xd0, 0x48, 0x96, 0x9f, 0x60, 0x30, 0x0f, 0x06, 0x03, 0x55,
+    0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01,
+    0x01, 0xff, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce,
+    0x3d, 0x04, 0x03, 0x02, 0x03, 0x47, 0x00, 0x30, 0x44, 0x02,
+    0x20, 0x0a, 0x82, 0x92, 0x6e, 0xd3, 0xc6, 0x66, 0xd9, 0xd3,
+    0x75, 0xff, 0x71, 0x3b, 0x61, 0x46, 0x21, 0x00, 0xe6, 0x21,
+    0x5d, 0x9c, 0x86, 0xe9, 0x65, 0x40, 0x4f, 0xeb, 0x70, 0x4f,
+    0x2c, 0xad, 0x00, 0x02, 0x20, 0x08, 0xc2, 0x07, 0x5d, 0x16,
+    0xfc, 0x54, 0x34, 0x2b, 0xb4, 0x18, 0x67, 0x44, 0x81, 0xc9,
+    0xa9, 0x67, 0x2e, 0xce, 0xa1, 0x02, 0x9f, 0x3b, 0xe5, 0x61,
+    0x16, 0x0b, 0x50, 0xf6, 0xa1, 0x50, 0x94, 0x00, 0x00, 0x0f,
+    0x00, 0x00, 0x4b, 0x04, 0x03, 0x00, 0x47, 0x30, 0x45, 0x02,
+    0x20, 0x78, 0x9e, 0xe0, 0x6a, 0x7a, 0xbd, 0xc3, 0x84, 0x3d,
+    0x25, 0x6a, 0x59, 0x23, 0x97, 0x52, 0x64, 0x4e, 0xb6, 0x9f,
+    0xcc, 0xd3, 0xd7, 0xa9, 0x29, 0x44, 0x75, 0x6d, 0x50, 0xfc,
+    0x22, 0xde, 0xd3, 0x02, 0x21, 0x00, 0xe5, 0x28, 0xd6, 0x5a,
+    0xd1, 0xec, 0x4a, 0xcc, 0x20, 0xb4, 0xea, 0x15, 0xfb, 0x8e,
+    0x73, 0xa8, 0x6b, 0xbb, 0x42, 0x70, 0x90, 0x08, 0x6e, 0x74,
+    0x6f, 0x5a, 0x05, 0xb5, 0x39, 0xee, 0x01, 0x04, 0x14, 0x00,
+    0x00, 0x30, 0xff, 0x9f, 0xb2, 0x1d, 0xcb, 0x4f, 0xfc, 0x7a,
+    0xac, 0xf4, 0x75, 0x24, 0x83, 0x5f, 0x8d, 0xa3, 0x3e, 0x9d,
+    0xef, 0x43, 0x67, 0x89, 0x5d, 0x55, 0xc7, 0xce, 0x80, 0xab,
+    0xc3, 0xc7, 0x74, 0xc7, 0xb2, 0x91, 0x27, 0xce, 0xd8, 0x5e,
+    0xc4, 0x4e, 0x96, 0x19, 0x68, 0x2d, 0xbe, 0x6f, 0x49, 0xfa
 };
 
 static const QUIC_PKT_HDR rx_script_6c_expect_hdr = {
@@ -5524,78 +1071,14 @@
 };
 
 static const unsigned char rx_script_6c_body[] = {
-    0x18,
-    0x03,
-    0x00,
-    0x04,
-    0xf2,
-    0x94,
-    0x49,
-    0xc3,
-    0x34,
-    0xa1,
-    0xf4,
-    0x0f,
-    0xcb,
-    0xb8,
-    0x03,
-    0x04,
-    0x1f,
-    0xc8,
-    0x69,
-    0xb9,
-    0x3b,
-    0xd5,
-    0xc6,
-    0x93,
-    0x18,
-    0x02,
-    0x00,
-    0x04,
-    0x9a,
-    0x4f,
-    0xec,
-    0x52,
-    0xde,
-    0xd2,
-    0xc8,
-    0xb7,
-    0x1c,
-    0x0c,
-    0xf3,
-    0x4e,
-    0x46,
-    0xf0,
-    0x6c,
-    0x54,
-    0x34,
-    0x1b,
-    0x0d,
-    0x98,
-    0x18,
-    0x01,
-    0x00,
-    0x04,
-    0xe3,
-    0x33,
-    0x9e,
-    0x59,
-    0x00,
-    0x69,
-    0xc3,
-    0xac,
-    0xfc,
-    0x58,
-    0x0e,
-    0xa4,
-    0xf4,
-    0xf3,
-    0x23,
-    0x1b,
-    0xd6,
-    0x8e,
-    0x5b,
-    0x08,
+    0x18, 0x03, 0x00, 0x04, 0xf2, 0x94, 0x49, 0xc3, 0x34, 0xa1,
+    0xf4, 0x0f, 0xcb, 0xb8, 0x03, 0x04, 0x1f, 0xc8, 0x69, 0xb9,
+    0x3b, 0xd5, 0xc6, 0x93, 0x18, 0x02, 0x00, 0x04, 0x9a, 0x4f,
+    0xec, 0x52, 0xde, 0xd2, 0xc8, 0xb7, 0x1c, 0x0c, 0xf3, 0x4e,
+    0x46, 0xf0, 0x6c, 0x54, 0x34, 0x1b, 0x0d, 0x98, 0x18, 0x01,
+    0x00, 0x04, 0xe3, 0x33, 0x9e, 0x59, 0x00, 0x69, 0xc3, 0xac,
+    0xfc, 0x58, 0x0e, 0xa4, 0xf4, 0xf3, 0x23, 0x1b, 0xd6, 0x8e,
+    0x5b, 0x08
 };
 
 static const struct rx_test_op rx_script_6[] = {
@@ -5665,73 +1148,17 @@
 };
 
 static const unsigned char rx_script_7_handshake_secret[32] = {
-    0x85,
-    0x44,
-    0xa4,
-    0x02,
-    0x46,
-    0x5b,
-    0x2a,
-    0x92,
-    0x80,
-    0x71,
-    0xfd,
-    0x11,
-    0x89,
-    0x73,
-    0x84,
-    0xeb,
-    0x3e,
-    0x0d,
-    0x89,
-    0x4f,
-    0x71,
-    0xdc,
-    0x9c,
-    0xdd,
-    0x55,
-    0x77,
-    0x9e,
-    0x79,
-    0x7b,
-    0xeb,
-    0xfa,
-    0x86,
+    0x85, 0x44, 0xa4, 0x02, 0x46, 0x5b, 0x2a, 0x92, 0x80, 0x71,
+    0xfd, 0x11, 0x89, 0x73, 0x84, 0xeb, 0x3e, 0x0d, 0x89, 0x4f,
+    0x71, 0xdc, 0x9c, 0xdd, 0x55, 0x77, 0x9e, 0x79, 0x7b, 0xeb,
+    0xfa, 0x86
 };
 
 static const unsigned char rx_script_7_1rtt_secret[32] = {
-    0x4a,
-    0x77,
-    0xb6,
-    0x0e,
-    0xfd,
-    0x90,
-    0xca,
-    0xbf,
-    0xc0,
-    0x1a,
-    0x64,
-    0x9f,
-    0xc0,
-    0x03,
-    0xd3,
-    0x8d,
-    0xc5,
-    0x41,
-    0x04,
-    0x50,
-    0xb1,
-    0x5b,
-    0x74,
-    0xe7,
-    0xe3,
-    0x99,
-    0x0c,
-    0xdf,
-    0x74,
-    0x61,
-    0x35,
-    0xe6,
+    0x4a, 0x77, 0xb6, 0x0e, 0xfd, 0x90, 0xca, 0xbf, 0xc0, 0x1a,
+    0x64, 0x9f, 0xc0, 0x03, 0xd3, 0x8d, 0xc5, 0x41, 0x04, 0x50,
+    0xb1, 0x5b, 0x74, 0xe7, 0xe3, 0x99, 0x0c, 0xdf, 0x74, 0x61,
+    0x35, 0xe6
 };
 
 static const unsigned char rx_script_7_in[] = {
@@ -5752,463 +1179,52 @@
     0xcb, /* Length (459) */
     0x3c,
     0xe0, /* PN (0) */
-    0x85,
-    0x05,
-    0xc2,
-    0x4d,
-    0x0f,
-    0xf3,
-    0x62,
-    0x51,
-    0x04,
-    0x33,
-    0xfa,
-    0xb5,
-    0xa3,
-    0x02,
-    0xbd,
-    0x5c,
-    0x22,
-    0x0c,
-    0x1d,
-    0xda,
-    0x06,
-    0xf1,
-    0xd7,
-    0xe0,
-    0xc8,
-    0x56,
-    0xb0,
-    0x3d,
-    0xc1,
-    0x49,
-    0x8c,
-    0xc2,
-    0x88,
-    0x5a,
-    0x0e,
-    0xd5,
-    0x67,
-    0x72,
-    0xec,
-    0xcc,
-    0x7a,
-    0x2b,
-    0x46,
-    0x17,
-    0x49,
-    0x4b,
-    0x28,
-    0x6a,
-    0x89,
-    0x71,
-    0xfd,
-    0x31,
-    0x9a,
-    0xa1,
-    0x97,
-    0x64,
-    0xe2,
-    0xbf,
-    0xa0,
-    0x6d,
-    0xf6,
-    0x76,
-    0x83,
-    0x28,
-    0xc4,
-    0xd5,
-    0x39,
-    0x87,
-    0x22,
-    0x7c,
-    0x11,
-    0x9a,
-    0x53,
-    0x66,
-    0xb4,
-    0x27,
-    0xf1,
-    0xab,
-    0x6f,
-    0x49,
-    0x43,
-    0x3f,
-    0x9a,
-    0x23,
-    0xd3,
-    0x53,
-    0x06,
-    0xe8,
-    0x14,
-    0xfd,
-    0xc0,
-    0x67,
-    0x1f,
-    0x88,
-    0x2a,
-    0xa8,
-    0xae,
-    0x5f,
-    0x05,
-    0x0a,
-    0xeb,
-    0x66,
-    0x72,
-    0x8c,
-    0x46,
-    0xcc,
-    0x54,
-    0x21,
-    0x5e,
-    0x14,
-    0xfe,
-    0x68,
-    0xc7,
-    0xf7,
-    0x60,
-    0x67,
-    0xb5,
-    0xa7,
-    0x0d,
-    0xf4,
-    0xe1,
-    0xff,
-    0x60,
-    0xe3,
-    0x11,
-    0x38,
-    0x92,
-    0x90,
-    0xc2,
-    0x48,
-    0x28,
-    0xbf,
-    0xf3,
-    0x85,
-    0x27,
-    0xfe,
-    0xbf,
-    0x42,
-    0x26,
-    0x1a,
-    0x4e,
-    0x78,
-    0xf1,
-    0xf0,
-    0x88,
-    0x16,
-    0x1b,
-    0x64,
-    0x5f,
-    0x66,
-    0x02,
-    0x0b,
-    0x45,
-    0x3d,
-    0x38,
-    0xd9,
-    0x09,
-    0xd5,
-    0xff,
-    0xc2,
-    0x68,
-    0x02,
-    0x2c,
-    0xc4,
-    0x3f,
-    0x60,
-    0x6e,
-    0x2f,
-    0x7f,
-    0x43,
-    0xf7,
-    0x1a,
-    0x37,
-    0xcc,
-    0xe0,
-    0xe0,
-    0x4b,
-    0x96,
-    0xc1,
-    0xb1,
-    0x8b,
-    0x1c,
-    0x7c,
-    0x6e,
-    0x80,
-    0xe3,
-    0x92,
-    0x9b,
-    0x86,
-    0x87,
-    0x1f,
-    0x9a,
-    0x6a,
-    0x62,
-    0x18,
-    0xf4,
-    0x86,
-    0xc2,
-    0x3e,
-    0x33,
-    0xa3,
-    0xbf,
-    0x43,
-    0x96,
-    0x6e,
-    0xff,
-    0x94,
-    0xaf,
-    0x6d,
-    0x23,
-    0x5c,
-    0x42,
-    0xed,
-    0xe7,
-    0xb9,
-    0x2c,
-    0x33,
-    0xb0,
-    0xc6,
-    0x3d,
-    0x44,
-    0x00,
-    0x0b,
-    0xa3,
-    0x39,
-    0xa8,
-    0xeb,
-    0x8c,
-    0x81,
-    0x1a,
-    0x99,
-    0x20,
-    0xbd,
-    0xfa,
-    0xf3,
-    0xf4,
-    0xf0,
-    0x11,
-    0xd8,
-    0x41,
-    0x31,
-    0x8d,
-    0xdc,
-    0x0d,
-    0x00,
-    0xa6,
-    0x31,
-    0x40,
-    0xc6,
-    0xc6,
-    0xad,
-    0x74,
-    0x93,
-    0x62,
-    0x1c,
-    0x55,
-    0xce,
-    0x5f,
-    0x8c,
-    0x5b,
-    0x3c,
-    0xcb,
-    0x25,
-    0x5e,
-    0xbf,
-    0xed,
-    0xbb,
-    0x3c,
-    0x97,
-    0x4b,
-    0x62,
-    0xe0,
-    0xba,
-    0xf1,
-    0xb0,
-    0x30,
-    0xbf,
-    0x35,
-    0x89,
-    0x7e,
-    0x25,
-    0x61,
-    0x54,
-    0x86,
-    0x52,
-    0x11,
-    0x86,
-    0x90,
-    0xc3,
-    0xf5,
-    0xad,
-    0xa0,
-    0x96,
-    0x30,
-    0xb2,
-    0xf0,
-    0xa6,
-    0x79,
-    0x39,
-    0x1c,
-    0x51,
-    0x42,
-    0xa1,
-    0x00,
-    0x6f,
-    0x55,
-    0x7d,
-    0xdc,
-    0xd0,
-    0x7c,
-    0xcf,
-    0x01,
-    0x88,
-    0x03,
-    0xd7,
-    0x2d,
-    0x65,
-    0x2b,
-    0x40,
-    0xee,
-    0xba,
-    0x10,
-    0xd8,
-    0x0c,
-    0x85,
-    0x14,
-    0xb7,
-    0x4d,
-    0x9e,
-    0x7d,
-    0x7c,
-    0xde,
-    0x7f,
-    0x0d,
-    0x0e,
-    0x3b,
-    0x3d,
-    0xe3,
-    0xd3,
-    0x63,
-    0xc2,
-    0xed,
-    0xc7,
-    0x41,
-    0xaf,
-    0x05,
-    0x85,
-    0x87,
-    0x46,
-    0x55,
-    0x7e,
-    0xbe,
-    0x14,
-    0x5b,
-    0x98,
-    0xae,
-    0x6e,
-    0x67,
-    0x1a,
-    0x65,
-    0xc6,
-    0xcf,
-    0xe1,
-    0x28,
-    0x50,
-    0x6b,
-    0xb4,
-    0xf6,
-    0xba,
-    0x63,
-    0xbc,
-    0xf1,
-    0xd7,
-    0xa4,
-    0x97,
-    0x2d,
-    0x4d,
-    0x04,
-    0x26,
-    0x96,
-    0xec,
-    0x0c,
-    0xd4,
-    0xae,
-    0x6a,
-    0xca,
-    0x7e,
-    0x65,
-    0xc5,
-    0x43,
-    0x7e,
-    0xf8,
-    0x77,
-    0x61,
-    0xd0,
-    0x2c,
-    0xe5,
-    0x37,
-    0x0a,
-    0xb3,
-    0x7a,
-    0x8c,
-    0x2a,
-    0xa1,
-    0xdc,
-    0x29,
-    0xdb,
-    0xec,
-    0xca,
-    0xdc,
-    0xfe,
-    0xdd,
-    0x38,
-    0xd2,
-    0x13,
-    0x9f,
-    0x94,
-    0x6d,
-    0x5b,
-    0x87,
-    0xf3,
-    0x15,
-    0xa8,
-    0xe5,
-    0xe9,
-    0x65,
-    0x1d,
-    0x4f,
-    0x92,
-    0x1b,
-    0xf4,
-    0xa6,
-    0xa4,
-    0xd6,
-    0x22,
-    0xfc,
-    0x26,
-    0x1b,
-    0x35,
-    0xa4,
-    0x1c,
-    0x88,
-    0x9f,
-    0x7d,
-    0xe0,
-    0x9a,
-    0x89,
-    0x0f,
-    0x6c,
-    0xc1,
-    0xda,
-    0x6e,
-    0x45,
-    0xce,
-    0x74,
-    0xb1,
-    0xff,
+    0x85, 0x05, 0xc2, 0x4d, 0x0f, 0xf3, 0x62, 0x51, 0x04, 0x33,
+    0xfa, 0xb5, 0xa3, 0x02, 0xbd, 0x5c, 0x22, 0x0c, 0x1d, 0xda,
+    0x06, 0xf1, 0xd7, 0xe0, 0xc8, 0x56, 0xb0, 0x3d, 0xc1, 0x49,
+    0x8c, 0xc2, 0x88, 0x5a, 0x0e, 0xd5, 0x67, 0x72, 0xec, 0xcc,
+    0x7a, 0x2b, 0x46, 0x17, 0x49, 0x4b, 0x28, 0x6a, 0x89, 0x71,
+    0xfd, 0x31, 0x9a, 0xa1, 0x97, 0x64, 0xe2, 0xbf, 0xa0, 0x6d,
+    0xf6, 0x76, 0x83, 0x28, 0xc4, 0xd5, 0x39, 0x87, 0x22, 0x7c,
+    0x11, 0x9a, 0x53, 0x66, 0xb4, 0x27, 0xf1, 0xab, 0x6f, 0x49,
+    0x43, 0x3f, 0x9a, 0x23, 0xd3, 0x53, 0x06, 0xe8, 0x14, 0xfd,
+    0xc0, 0x67, 0x1f, 0x88, 0x2a, 0xa8, 0xae, 0x5f, 0x05, 0x0a,
+    0xeb, 0x66, 0x72, 0x8c, 0x46, 0xcc, 0x54, 0x21, 0x5e, 0x14,
+    0xfe, 0x68, 0xc7, 0xf7, 0x60, 0x67, 0xb5, 0xa7, 0x0d, 0xf4,
+    0xe1, 0xff, 0x60, 0xe3, 0x11, 0x38, 0x92, 0x90, 0xc2, 0x48,
+    0x28, 0xbf, 0xf3, 0x85, 0x27, 0xfe, 0xbf, 0x42, 0x26, 0x1a,
+    0x4e, 0x78, 0xf1, 0xf0, 0x88, 0x16, 0x1b, 0x64, 0x5f, 0x66,
+    0x02, 0x0b, 0x45, 0x3d, 0x38, 0xd9, 0x09, 0xd5, 0xff, 0xc2,
+    0x68, 0x02, 0x2c, 0xc4, 0x3f, 0x60, 0x6e, 0x2f, 0x7f, 0x43,
+    0xf7, 0x1a, 0x37, 0xcc, 0xe0, 0xe0, 0x4b, 0x96, 0xc1, 0xb1,
+    0x8b, 0x1c, 0x7c, 0x6e, 0x80, 0xe3, 0x92, 0x9b, 0x86, 0x87,
+    0x1f, 0x9a, 0x6a, 0x62, 0x18, 0xf4, 0x86, 0xc2, 0x3e, 0x33,
+    0xa3, 0xbf, 0x43, 0x96, 0x6e, 0xff, 0x94, 0xaf, 0x6d, 0x23,
+    0x5c, 0x42, 0xed, 0xe7, 0xb9, 0x2c, 0x33, 0xb0, 0xc6, 0x3d,
+    0x44, 0x00, 0x0b, 0xa3, 0x39, 0xa8, 0xeb, 0x8c, 0x81, 0x1a,
+    0x99, 0x20, 0xbd, 0xfa, 0xf3, 0xf4, 0xf0, 0x11, 0xd8, 0x41,
+    0x31, 0x8d, 0xdc, 0x0d, 0x00, 0xa6, 0x31, 0x40, 0xc6, 0xc6,
+    0xad, 0x74, 0x93, 0x62, 0x1c, 0x55, 0xce, 0x5f, 0x8c, 0x5b,
+    0x3c, 0xcb, 0x25, 0x5e, 0xbf, 0xed, 0xbb, 0x3c, 0x97, 0x4b,
+    0x62, 0xe0, 0xba, 0xf1, 0xb0, 0x30, 0xbf, 0x35, 0x89, 0x7e,
+    0x25, 0x61, 0x54, 0x86, 0x52, 0x11, 0x86, 0x90, 0xc3, 0xf5,
+    0xad, 0xa0, 0x96, 0x30, 0xb2, 0xf0, 0xa6, 0x79, 0x39, 0x1c,
+    0x51, 0x42, 0xa1, 0x00, 0x6f, 0x55, 0x7d, 0xdc, 0xd0, 0x7c,
+    0xcf, 0x01, 0x88, 0x03, 0xd7, 0x2d, 0x65, 0x2b, 0x40, 0xee,
+    0xba, 0x10, 0xd8, 0x0c, 0x85, 0x14, 0xb7, 0x4d, 0x9e, 0x7d,
+    0x7c, 0xde, 0x7f, 0x0d, 0x0e, 0x3b, 0x3d, 0xe3, 0xd3, 0x63,
+    0xc2, 0xed, 0xc7, 0x41, 0xaf, 0x05, 0x85, 0x87, 0x46, 0x55,
+    0x7e, 0xbe, 0x14, 0x5b, 0x98, 0xae, 0x6e, 0x67, 0x1a, 0x65,
+    0xc6, 0xcf, 0xe1, 0x28, 0x50, 0x6b, 0xb4, 0xf6, 0xba, 0x63,
+    0xbc, 0xf1, 0xd7, 0xa4, 0x97, 0x2d, 0x4d, 0x04, 0x26, 0x96,
+    0xec, 0x0c, 0xd4, 0xae, 0x6a, 0xca, 0x7e, 0x65, 0xc5, 0x43,
+    0x7e, 0xf8, 0x77, 0x61, 0xd0, 0x2c, 0xe5, 0x37, 0x0a, 0xb3,
+    0x7a, 0x8c, 0x2a, 0xa1, 0xdc, 0x29, 0xdb, 0xec, 0xca, 0xdc,
+    0xfe, 0xdd, 0x38, 0xd2, 0x13, 0x9f, 0x94, 0x6d, 0x5b, 0x87,
+    0xf3, 0x15, 0xa8, 0xe5, 0xe9, 0x65, 0x1d, 0x4f, 0x92, 0x1b,
+    0xf4, 0xa6, 0xa4, 0xd6, 0x22, 0xfc, 0x26, 0x1b, 0x35, 0xa4,
+    0x1c, 0x88, 0x9f, 0x7d, 0xe0, 0x9a, 0x89, 0x0f, 0x6c, 0xc1,
+    0xda, 0x6e, 0x45, 0xce, 0x74, 0xb1, 0xff,
 
     /* Second Packet: Handshake */
     0xeb, /* Long, Handshake, PN Length=2 bytes */
@@ -6226,772 +1242,88 @@
     0xa3, /* Length (675) */
     0x43,
     0x29, /* PN (0) */
-    0xff,
-    0xdb,
-    0xcf,
-    0x3c,
-    0x17,
-    0xcf,
-    0xdc,
-    0x42,
-    0x3a,
-    0x59,
-    0x88,
-    0xdb,
-    0x13,
-    0xef,
-    0x09,
-    0x3d,
-    0xf2,
-    0x24,
-    0xf3,
-    0xeb,
-    0xca,
-    0xb0,
-    0xe1,
-    0xa4,
-    0x67,
-    0x64,
-    0x65,
-    0x80,
-    0x5f,
-    0x73,
-    0x29,
-    0x69,
-    0x29,
-    0xba,
-    0x03,
-    0x77,
-    0x22,
-    0xc8,
-    0xa8,
-    0xd5,
-    0x21,
-    0xf2,
-    0xa2,
-    0x30,
-    0x7f,
-    0x86,
-    0x3a,
-    0x8a,
-    0xdd,
-    0x92,
-    0x33,
-    0xa6,
-    0x57,
-    0x21,
-    0x39,
-    0xdd,
-    0x34,
-    0xb4,
-    0x39,
-    0xa7,
-    0x6f,
-    0x0a,
-    0x14,
-    0xba,
-    0x9e,
-    0x3b,
-    0x3a,
-    0x6a,
-    0x4b,
-    0xc5,
-    0xda,
-    0x44,
-    0x82,
-    0xca,
-    0x52,
-    0x86,
-    0x68,
-    0x8a,
-    0x0c,
-    0x5e,
-    0xeb,
-    0x1e,
-    0x81,
-    0x43,
-    0x3a,
-    0x59,
-    0x2c,
-    0x26,
-    0x63,
-    0xa3,
-    0x89,
-    0x92,
-    0x80,
-    0xe9,
-    0x75,
-    0xc2,
-    0xdb,
-    0xb9,
-    0x58,
-    0x6d,
-    0xab,
-    0xfd,
-    0x21,
-    0xe0,
-    0x35,
-    0x79,
-    0x2e,
-    0x56,
-    0x7b,
-    0xfb,
-    0xb3,
-    0x7a,
-    0x05,
-    0x33,
-    0x0f,
-    0x13,
-    0xe5,
-    0xef,
-    0x04,
-    0x41,
-    0x69,
-    0x85,
-    0x91,
-    0x24,
-    0xce,
-    0xb5,
-    0x21,
-    0x8d,
-    0x0a,
-    0x13,
-    0xda,
-    0xae,
-    0x86,
-    0x2f,
-    0x25,
-    0x1f,
-    0x9c,
-    0x70,
-    0x8a,
-    0xaa,
-    0x05,
-    0xeb,
-    0x30,
-    0x93,
-    0x50,
-    0xc1,
-    0x39,
-    0xab,
-    0x99,
-    0x8a,
-    0x31,
-    0xc1,
-    0xc1,
-    0x5e,
-    0x39,
-    0xcf,
-    0x64,
-    0x3f,
-    0x9f,
-    0x5c,
-    0xa5,
-    0xa1,
-    0x88,
-    0xb2,
-    0x5f,
-    0x23,
-    0xcb,
-    0x76,
-    0xe5,
-    0xf3,
-    0x2d,
-    0xa0,
-    0xed,
-    0xad,
-    0xcf,
-    0x30,
-    0x05,
-    0x44,
-    0xdc,
-    0xa5,
-    0x81,
-    0xb1,
-    0x7f,
-    0x78,
-    0x0d,
-    0x4d,
-    0x96,
-    0xa3,
-    0xcb,
-    0xcb,
-    0x45,
-    0xcf,
-    0x5f,
-    0x22,
-    0xb8,
-    0x93,
-    0x2b,
-    0x16,
-    0xe0,
-    0x1c,
-    0x53,
-    0x34,
-    0x76,
-    0x3b,
-    0x7b,
-    0x78,
-    0xa1,
-    0x46,
-    0x40,
-    0x43,
-    0x4b,
-    0x0e,
-    0x1c,
-    0xfd,
-    0xcf,
-    0x01,
-    0xf1,
-    0x2c,
-    0xee,
-    0xd0,
-    0xbd,
-    0x9f,
-    0x44,
-    0xd2,
-    0xd7,
-    0x13,
-    0xf9,
-    0x65,
-    0x82,
-    0xf5,
-    0x42,
-    0xec,
-    0x9f,
-    0x5d,
-    0x51,
-    0x5a,
-    0x7b,
-    0xf2,
-    0x39,
-    0xbb,
-    0xa6,
-    0x19,
-    0x5c,
-    0x73,
-    0x95,
-    0x65,
-    0x5b,
-    0x64,
-    0x2f,
-    0xda,
-    0x50,
-    0xd0,
-    0x02,
-    0x34,
-    0x3f,
-    0x35,
-    0xc1,
-    0xd6,
-    0x31,
-    0x3b,
-    0xcf,
-    0x3f,
-    0x81,
-    0x8d,
-    0xe0,
-    0x40,
-    0xfd,
-    0x6d,
-    0x32,
-    0x68,
-    0xa4,
-    0xf2,
-    0x4e,
-    0x3a,
-    0x4a,
-    0x42,
-    0x2c,
-    0x07,
-    0x2d,
-    0x27,
-    0xa3,
-    0x34,
-    0xe7,
-    0x27,
-    0x87,
-    0x80,
-    0x76,
-    0xc0,
-    0xa0,
-    0x72,
-    0x05,
-    0xf2,
-    0x88,
-    0x81,
-    0xe3,
-    0x32,
-    0x00,
-    0x76,
-    0x8d,
-    0x24,
-    0x5c,
-    0x97,
-    0x2d,
-    0xd6,
-    0xb8,
-    0x34,
-    0xf8,
-    0x1c,
-    0x1a,
-    0x6d,
-    0xc7,
-    0x3f,
-    0xcf,
-    0x56,
-    0xae,
-    0xec,
-    0x26,
-    0x74,
-    0x53,
-    0x69,
-    0xcd,
-    0x7a,
-    0x97,
-    0x29,
-    0xab,
-    0x12,
-    0x7d,
-    0x75,
-    0xf8,
-    0x8d,
-    0x5b,
-    0xc0,
-    0x77,
-    0x20,
-    0xb6,
-    0x6a,
-    0x0b,
-    0xce,
-    0x98,
-    0x50,
-    0xca,
-    0x47,
-    0x42,
-    0x1e,
-    0x5d,
-    0xc3,
-    0x24,
-    0x5a,
-    0x47,
-    0x48,
-    0x3b,
-    0xa0,
-    0x9e,
-    0x43,
-    0xe9,
-    0x8d,
-    0x18,
-    0x23,
-    0xda,
-    0x6f,
-    0x8c,
-    0xda,
-    0xd0,
-    0x3e,
-    0xdb,
-    0x37,
-    0xff,
-    0xfc,
-    0x7e,
-    0x17,
-    0xbe,
-    0x42,
-    0xfd,
-    0xdb,
-    0x51,
-    0xb1,
-    0xa4,
-    0xfd,
-    0x9a,
-    0x20,
-    0x27,
-    0x24,
-    0x17,
-    0x04,
-    0x70,
-    0xb6,
-    0x21,
-    0x87,
-    0x88,
-    0xe9,
-    0xda,
-    0x63,
-    0xcb,
-    0xcb,
-    0x1d,
-    0xaf,
-    0x4a,
-    0x46,
-    0x76,
-    0x88,
-    0xa1,
-    0xf8,
-    0x48,
-    0x6c,
-    0x06,
-    0xb4,
-    0x62,
-    0x1a,
-    0x67,
-    0x18,
-    0xb0,
-    0x1d,
-    0x58,
-    0x6a,
-    0xfe,
-    0x1f,
-    0xf1,
-    0x48,
-    0xff,
-    0xcb,
-    0xa4,
-    0xd1,
-    0xa8,
-    0x12,
-    0x1f,
-    0x45,
-    0x94,
-    0x2f,
-    0x55,
-    0x80,
-    0x6a,
-    0x06,
-    0xcc,
-    0x7b,
-    0xb0,
-    0xcc,
-    0xb8,
-    0x06,
-    0x52,
-    0x16,
-    0xe3,
-    0x6e,
-    0x7e,
-    0xb0,
-    0x42,
-    0xfd,
-    0x3b,
-    0x7e,
-    0x0a,
-    0x42,
-    0x7b,
-    0x73,
-    0xaf,
-    0x2c,
-    0xf3,
-    0xbd,
-    0xe5,
-    0x72,
-    0x8c,
-    0x16,
-    0xb2,
-    0xd7,
-    0x7a,
-    0x11,
-    0xb6,
-    0x9f,
-    0xd1,
-    0x69,
-    0xc1,
-    0x1a,
-    0xe0,
-    0x26,
-    0x26,
-    0x13,
-    0xe2,
-    0x75,
-    0xf5,
-    0x74,
-    0xae,
-    0x3f,
-    0xee,
-    0x1e,
-    0x09,
-    0x63,
-    0x5a,
-    0x30,
-    0x19,
-    0xa5,
-    0x59,
-    0x48,
-    0x90,
-    0x9b,
-    0x46,
-    0x56,
-    0xd8,
-    0x6f,
-    0x6b,
-    0x76,
-    0x82,
-    0x32,
-    0xc7,
-    0x29,
-    0x76,
-    0x2e,
-    0x32,
-    0xb6,
-    0x23,
-    0x99,
-    0xeb,
-    0x92,
-    0x5d,
-    0xc4,
-    0x4c,
-    0xa1,
-    0xe9,
-    0x26,
-    0x37,
-    0x9a,
-    0x7d,
-    0x4c,
-    0x16,
-    0x9c,
-    0x18,
-    0xe9,
-    0xc0,
-    0xff,
-    0x48,
-    0x79,
-    0xb1,
-    0x7b,
-    0x0b,
-    0x1e,
-    0x6f,
-    0xb1,
-    0x77,
-    0xa5,
-    0xd2,
-    0xc6,
-    0x9a,
-    0xa9,
-    0xfc,
-    0xd1,
-    0x0f,
-    0x69,
-    0xf3,
-    0xe0,
-    0x49,
-    0x70,
-    0x57,
-    0x80,
-    0x86,
-    0xa7,
-    0x3f,
-    0x54,
-    0xa8,
-    0x60,
-    0xfb,
-    0xe4,
-    0x06,
-    0xa3,
-    0x13,
-    0xb9,
-    0x2f,
-    0xa7,
-    0x37,
-    0x80,
-    0x0c,
-    0x43,
-    0xac,
-    0x2f,
-    0xae,
-    0x6e,
-    0x62,
-    0x2b,
-    0x53,
-    0xe4,
-    0xfe,
-    0x58,
-    0xd7,
-    0x8b,
-    0x96,
-    0xdc,
-    0xe6,
-    0xd3,
-    0x86,
-    0xb8,
-    0xd6,
-    0x42,
-    0x5b,
-    0x68,
-    0x03,
-    0x48,
-    0x3f,
-    0xcd,
-    0xee,
-    0x39,
-    0x8b,
-    0xc4,
-    0x53,
-    0x30,
-    0x87,
-    0x48,
-    0x2a,
-    0x01,
-    0x9d,
-    0x6f,
-    0x8e,
-    0x36,
-    0x75,
-    0x73,
-    0xef,
-    0x77,
-    0x3a,
-    0x82,
-    0xd8,
-    0x4c,
-    0x0e,
-    0x7f,
-    0xb3,
-    0x8f,
-    0x16,
-    0xd1,
-    0x10,
-    0xcf,
-    0x2f,
-    0xa3,
-    0xdf,
-    0x65,
-    0xba,
-    0x91,
-    0x79,
-    0xf6,
-    0x93,
-    0x60,
-    0x08,
-    0xe5,
-    0xdb,
-    0x73,
-    0x02,
-    0x7a,
-    0x0b,
-    0x0e,
-    0xcc,
-    0x3b,
-    0x1f,
-    0x08,
-    0x2d,
-    0x51,
-    0x3e,
-    0x87,
-    0x48,
-    0xd3,
-    0xd3,
-    0x75,
-    0xc2,
-    0x28,
-    0xa3,
-    0xf3,
-    0x02,
-    0xde,
-    0x8f,
-    0xa6,
-    0xbd,
-    0xb3,
-    0x19,
-    0xa0,
-    0xdb,
-    0x48,
-    0x51,
-    0x03,
-    0x5f,
-    0x98,
-    0xbe,
+    0xff, 0xdb, 0xcf, 0x3c, 0x17, 0xcf, 0xdc, 0x42, 0x3a, 0x59,
+    0x88, 0xdb, 0x13, 0xef, 0x09, 0x3d, 0xf2, 0x24, 0xf3, 0xeb,
+    0xca, 0xb0, 0xe1, 0xa4, 0x67, 0x64, 0x65, 0x80, 0x5f, 0x73,
+    0x29, 0x69, 0x29, 0xba, 0x03, 0x77, 0x22, 0xc8, 0xa8, 0xd5,
+    0x21, 0xf2, 0xa2, 0x30, 0x7f, 0x86, 0x3a, 0x8a, 0xdd, 0x92,
+    0x33, 0xa6, 0x57, 0x21, 0x39, 0xdd, 0x34, 0xb4, 0x39, 0xa7,
+    0x6f, 0x0a, 0x14, 0xba, 0x9e, 0x3b, 0x3a, 0x6a, 0x4b, 0xc5,
+    0xda, 0x44, 0x82, 0xca, 0x52, 0x86, 0x68, 0x8a, 0x0c, 0x5e,
+    0xeb, 0x1e, 0x81, 0x43, 0x3a, 0x59, 0x2c, 0x26, 0x63, 0xa3,
+    0x89, 0x92, 0x80, 0xe9, 0x75, 0xc2, 0xdb, 0xb9, 0x58, 0x6d,
+    0xab, 0xfd, 0x21, 0xe0, 0x35, 0x79, 0x2e, 0x56, 0x7b, 0xfb,
+    0xb3, 0x7a, 0x05, 0x33, 0x0f, 0x13, 0xe5, 0xef, 0x04, 0x41,
+    0x69, 0x85, 0x91, 0x24, 0xce, 0xb5, 0x21, 0x8d, 0x0a, 0x13,
+    0xda, 0xae, 0x86, 0x2f, 0x25, 0x1f, 0x9c, 0x70, 0x8a, 0xaa,
+    0x05, 0xeb, 0x30, 0x93, 0x50, 0xc1, 0x39, 0xab, 0x99, 0x8a,
+    0x31, 0xc1, 0xc1, 0x5e, 0x39, 0xcf, 0x64, 0x3f, 0x9f, 0x5c,
+    0xa5, 0xa1, 0x88, 0xb2, 0x5f, 0x23, 0xcb, 0x76, 0xe5, 0xf3,
+    0x2d, 0xa0, 0xed, 0xad, 0xcf, 0x30, 0x05, 0x44, 0xdc, 0xa5,
+    0x81, 0xb1, 0x7f, 0x78, 0x0d, 0x4d, 0x96, 0xa3, 0xcb, 0xcb,
+    0x45, 0xcf, 0x5f, 0x22, 0xb8, 0x93, 0x2b, 0x16, 0xe0, 0x1c,
+    0x53, 0x34, 0x76, 0x3b, 0x7b, 0x78, 0xa1, 0x46, 0x40, 0x43,
+    0x4b, 0x0e, 0x1c, 0xfd, 0xcf, 0x01, 0xf1, 0x2c, 0xee, 0xd0,
+    0xbd, 0x9f, 0x44, 0xd2, 0xd7, 0x13, 0xf9, 0x65, 0x82, 0xf5,
+    0x42, 0xec, 0x9f, 0x5d, 0x51, 0x5a, 0x7b, 0xf2, 0x39, 0xbb,
+    0xa6, 0x19, 0x5c, 0x73, 0x95, 0x65, 0x5b, 0x64, 0x2f, 0xda,
+    0x50, 0xd0, 0x02, 0x34, 0x3f, 0x35, 0xc1, 0xd6, 0x31, 0x3b,
+    0xcf, 0x3f, 0x81, 0x8d, 0xe0, 0x40, 0xfd, 0x6d, 0x32, 0x68,
+    0xa4, 0xf2, 0x4e, 0x3a, 0x4a, 0x42, 0x2c, 0x07, 0x2d, 0x27,
+    0xa3, 0x34, 0xe7, 0x27, 0x87, 0x80, 0x76, 0xc0, 0xa0, 0x72,
+    0x05, 0xf2, 0x88, 0x81, 0xe3, 0x32, 0x00, 0x76, 0x8d, 0x24,
+    0x5c, 0x97, 0x2d, 0xd6, 0xb8, 0x34, 0xf8, 0x1c, 0x1a, 0x6d,
+    0xc7, 0x3f, 0xcf, 0x56, 0xae, 0xec, 0x26, 0x74, 0x53, 0x69,
+    0xcd, 0x7a, 0x97, 0x29, 0xab, 0x12, 0x7d, 0x75, 0xf8, 0x8d,
+    0x5b, 0xc0, 0x77, 0x20, 0xb6, 0x6a, 0x0b, 0xce, 0x98, 0x50,
+    0xca, 0x47, 0x42, 0x1e, 0x5d, 0xc3, 0x24, 0x5a, 0x47, 0x48,
+    0x3b, 0xa0, 0x9e, 0x43, 0xe9, 0x8d, 0x18, 0x23, 0xda, 0x6f,
+    0x8c, 0xda, 0xd0, 0x3e, 0xdb, 0x37, 0xff, 0xfc, 0x7e, 0x17,
+    0xbe, 0x42, 0xfd, 0xdb, 0x51, 0xb1, 0xa4, 0xfd, 0x9a, 0x20,
+    0x27, 0x24, 0x17, 0x04, 0x70, 0xb6, 0x21, 0x87, 0x88, 0xe9,
+    0xda, 0x63, 0xcb, 0xcb, 0x1d, 0xaf, 0x4a, 0x46, 0x76, 0x88,
+    0xa1, 0xf8, 0x48, 0x6c, 0x06, 0xb4, 0x62, 0x1a, 0x67, 0x18,
+    0xb0, 0x1d, 0x58, 0x6a, 0xfe, 0x1f, 0xf1, 0x48, 0xff, 0xcb,
+    0xa4, 0xd1, 0xa8, 0x12, 0x1f, 0x45, 0x94, 0x2f, 0x55, 0x80,
+    0x6a, 0x06, 0xcc, 0x7b, 0xb0, 0xcc, 0xb8, 0x06, 0x52, 0x16,
+    0xe3, 0x6e, 0x7e, 0xb0, 0x42, 0xfd, 0x3b, 0x7e, 0x0a, 0x42,
+    0x7b, 0x73, 0xaf, 0x2c, 0xf3, 0xbd, 0xe5, 0x72, 0x8c, 0x16,
+    0xb2, 0xd7, 0x7a, 0x11, 0xb6, 0x9f, 0xd1, 0x69, 0xc1, 0x1a,
+    0xe0, 0x26, 0x26, 0x13, 0xe2, 0x75, 0xf5, 0x74, 0xae, 0x3f,
+    0xee, 0x1e, 0x09, 0x63, 0x5a, 0x30, 0x19, 0xa5, 0x59, 0x48,
+    0x90, 0x9b, 0x46, 0x56, 0xd8, 0x6f, 0x6b, 0x76, 0x82, 0x32,
+    0xc7, 0x29, 0x76, 0x2e, 0x32, 0xb6, 0x23, 0x99, 0xeb, 0x92,
+    0x5d, 0xc4, 0x4c, 0xa1, 0xe9, 0x26, 0x37, 0x9a, 0x7d, 0x4c,
+    0x16, 0x9c, 0x18, 0xe9, 0xc0, 0xff, 0x48, 0x79, 0xb1, 0x7b,
+    0x0b, 0x1e, 0x6f, 0xb1, 0x77, 0xa5, 0xd2, 0xc6, 0x9a, 0xa9,
+    0xfc, 0xd1, 0x0f, 0x69, 0xf3, 0xe0, 0x49, 0x70, 0x57, 0x80,
+    0x86, 0xa7, 0x3f, 0x54, 0xa8, 0x60, 0xfb, 0xe4, 0x06, 0xa3,
+    0x13, 0xb9, 0x2f, 0xa7, 0x37, 0x80, 0x0c, 0x43, 0xac, 0x2f,
+    0xae, 0x6e, 0x62, 0x2b, 0x53, 0xe4, 0xfe, 0x58, 0xd7, 0x8b,
+    0x96, 0xdc, 0xe6, 0xd3, 0x86, 0xb8, 0xd6, 0x42, 0x5b, 0x68,
+    0x03, 0x48, 0x3f, 0xcd, 0xee, 0x39, 0x8b, 0xc4, 0x53, 0x30,
+    0x87, 0x48, 0x2a, 0x01, 0x9d, 0x6f, 0x8e, 0x36, 0x75, 0x73,
+    0xef, 0x77, 0x3a, 0x82, 0xd8, 0x4c, 0x0e, 0x7f, 0xb3, 0x8f,
+    0x16, 0xd1, 0x10, 0xcf, 0x2f, 0xa3, 0xdf, 0x65, 0xba, 0x91,
+    0x79, 0xf6, 0x93, 0x60, 0x08, 0xe5, 0xdb, 0x73, 0x02, 0x7a,
+    0x0b, 0x0e, 0xcc, 0x3b, 0x1f, 0x08, 0x2d, 0x51, 0x3e, 0x87,
+    0x48, 0xd3, 0xd3, 0x75, 0xc2, 0x28, 0xa3, 0xf3, 0x02, 0xde,
+    0x8f, 0xa6, 0xbd, 0xb3, 0x19, 0xa0, 0xdb, 0x48, 0x51, 0x03,
+    0x5f, 0x98, 0xbe,
 
     /* Third Packet: 1-RTT */
     0x5c, /* Short, 1-RTT, Spin=0, KP=0, PN Length=2 bytes */
     0x4f,
     0x33, /* PN (0) */
-    0x16,
-    0x75,
-    0x98,
-    0x67,
-    0x04,
-    0x16,
-    0x61,
-    0xe3,
-    0x00,
-    0xb7,
-    0x9d,
-    0x5c,
-    0x53,
-    0x4c,
-    0x26,
-    0x90,
-    0x92,
-    0x8e,
-    0x0e,
-    0xc0,
-    0x9c,
-    0x6d,
-    0x8b,
-    0xac,
-    0x15,
-    0x6d,
-    0x89,
-    0x74,
-    0x2f,
-    0xe7,
-    0x84,
-    0xe3,
-    0x46,
-    0x46,
-    0x8c,
-    0xc1,
-    0x21,
-    0x7c,
-    0x44,
-    0xa5,
-    0x00,
-    0x29,
-    0xca,
-    0xf2,
-    0x11,
-    0x18,
-    0xe0,
-    0x04,
-    0x40,
-    0x55,
-    0xd2,
-    0xa7,
-    0xe5,
-    0x9d,
-    0x22,
-    0xa2,
-    0x2a,
-    0x6c,
-    0x03,
-    0x87,
-    0xa3,
-    0xa3,
-    0xfa,
-    0xf5,
-    0x6c,
-    0xd7,
-    0x7d,
-    0xae,
-    0x3f,
-    0x28,
-    0x01,
-    0xae,
-    0x06,
-    0x11,
-    0x69,
-    0x67,
-    0x90,
-    0x57,
-    0x5a,
-    0xd0,
-    0xeb,
-    0xdd,
-    0xac,
-    0xbd,
-    0x7f,
-    0x33,
-    0x86,
-    0xbb,
+    0x16, 0x75, 0x98, 0x67, 0x04, 0x16, 0x61, 0xe3, 0x00, 0xb7,
+    0x9d, 0x5c, 0x53, 0x4c, 0x26, 0x90, 0x92, 0x8e, 0x0e, 0xc0,
+    0x9c, 0x6d, 0x8b, 0xac, 0x15, 0x6d, 0x89, 0x74, 0x2f, 0xe7,
+    0x84, 0xe3, 0x46, 0x46, 0x8c, 0xc1, 0x21, 0x7c, 0x44, 0xa5,
+    0x00, 0x29, 0xca, 0xf2, 0x11, 0x18, 0xe0, 0x04, 0x40, 0x55,
+    0xd2, 0xa7, 0xe5, 0x9d, 0x22, 0xa2, 0x2a, 0x6c, 0x03, 0x87,
+    0xa3, 0xa3, 0xfa, 0xf5, 0x6c, 0xd7, 0x7d, 0xae, 0x3f, 0x28,
+    0x01, 0xae, 0x06, 0x11, 0x69, 0x67, 0x90, 0x57, 0x5a, 0xd0,
+    0xeb, 0xdd, 0xac, 0xbd, 0x7f, 0x33, 0x86, 0xbb
 };
 
 static const QUIC_PKT_HDR rx_script_7a_expect_hdr = {
@@ -7012,447 +1344,51 @@
 };
 
 static const unsigned char rx_script_7a_body[] = {
-    0x02,
-    0x03,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x00,
-    0x06,
-    0x00,
-    0x40,
-    0x5a,
-    0x02,
-    0x00,
-    0x00,
-    0x56,
-    0x03,
-    0x03,
-    0xd5,
-    0xfb,
-    0x6a,
-    0x81,
-    0x1c,
-    0xdb,
-    0xa2,
-    0x5c,
-    0x11,
-    0x31,
-    0xda,
-    0x15,
-    0x28,
-    0x97,
-    0x94,
-    0x83,
-    0xfd,
-    0x9d,
-    0x91,
-    0x0e,
-    0x87,
-    0x71,
-    0x46,
-    0x64,
-    0xb4,
-    0xd9,
-    0x9e,
-    0xbd,
-    0xa8,
-    0x48,
-    0x32,
-    0xbf,
-    0x00,
-    0x13,
-    0x03,
-    0x00,
-    0x00,
-    0x2e,
-    0x00,
-    0x2b,
-    0x00,
-    0x02,
-    0x03,
-    0x04,
-    0x00,
-    0x33,
-    0x00,
-    0x24,
-    0x00,
-    0x1d,
-    0x00,
-    0x20,
-    0xef,
-    0xbb,
-    0x46,
-    0xe9,
-    0xb4,
-    0xf6,
-    0x54,
-    0xc4,
-    0x07,
-    0x71,
-    0xdc,
-    0x50,
-    0xd5,
-    0x69,
-    0x40,
-    0xbc,
-    0x85,
-    0x7f,
-    0xf9,
-    0x48,
-    0x14,
-    0xe3,
-    0xd6,
-    0x08,
-    0xa9,
-    0x0b,
-    0xfd,
-    0xbe,
-    0xf1,
-    0x57,
-    0x21,
-    0x34,
+    0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x40,
+    0x5a, 0x02, 0x00, 0x00, 0x56, 0x03, 0x03, 0xd5, 0xfb, 0x6a,
+    0x81, 0x1c, 0xdb, 0xa2, 0x5c, 0x11, 0x31, 0xda, 0x15, 0x28,
+    0x97, 0x94, 0x83, 0xfd, 0x9d, 0x91, 0x0e, 0x87, 0x71, 0x46,
+    0x64, 0xb4, 0xd9, 0x9e, 0xbd, 0xa8, 0x48, 0x32, 0xbf, 0x00,
+    0x13, 0x03, 0x00, 0x00, 0x2e, 0x00, 0x2b, 0x00, 0x02, 0x03,
+    0x04, 0x00, 0x33, 0x00, 0x24, 0x00, 0x1d, 0x00, 0x20, 0xef,
+    0xbb, 0x46, 0xe9, 0xb4, 0xf6, 0x54, 0xc4, 0x07, 0x71, 0xdc,
+    0x50, 0xd5, 0x69, 0x40, 0xbc, 0x85, 0x7f, 0xf9, 0x48, 0x14,
+    0xe3, 0xd6, 0x08, 0xa9, 0x0b, 0xfd, 0xbe, 0xf1, 0x57, 0x21,
+    0x34
 };
 
 static const QUIC_PKT_HDR rx_script_7b_expect_hdr = {
@@ -7473,663 +1409,72 @@
 };
 
 static const unsigned char rx_script_7b_body[] = {
-    0x06,
-    0x00,
-    0x42,
-    0x8d,
-    0x08,
-    0x00,
-    0x00,
-    0x82,
-    0x00,
-    0x80,
-    0x00,
-    0x10,
-    0x00,
-    0x08,
-    0x00,
-    0x06,
-    0x05,
-    0x64,
-    0x75,
-    0x6d,
-    0x6d,
-    0x79,
-    0x00,
-    0x39,
-    0x00,
-    0x70,
-    0x46,
-    0x0a,
-    0x0d,
-    0xdc,
-    0x59,
-    0xf0,
-    0x4e,
-    0xb2,
-    0x2c,
-    0xac,
-    0x69,
-    0x6a,
-    0xc9,
-    0x77,
-    0xa9,
-    0x99,
-    0x05,
-    0x04,
-    0x80,
-    0x08,
-    0x00,
-    0x00,
-    0x06,
-    0x04,
-    0x80,
-    0x08,
-    0x00,
-    0x00,
-    0x07,
-    0x04,
-    0x80,
-    0x08,
-    0x00,
-    0x00,
-    0x04,
-    0x04,
-    0x80,
-    0x0c,
-    0x00,
-    0x00,
-    0x08,
-    0x02,
-    0x40,
-    0x64,
-    0x09,
-    0x02,
-    0x40,
-    0x64,
-    0x01,
-    0x04,
-    0x80,
-    0x00,
-    0x75,
-    0x30,
-    0x03,
-    0x02,
-    0x45,
-    0xac,
-    0x0b,
-    0x01,
-    0x1a,
-    0x0c,
-    0x00,
-    0x02,
-    0x10,
-    0x42,
-    0xf0,
-    0xed,
-    0x09,
-    0x07,
-    0x5b,
-    0xd9,
-    0x5a,
-    0xb2,
-    0x39,
-    0x5d,
-    0x73,
-    0x2c,
-    0x57,
-    0x1f,
-    0x50,
-    0x00,
-    0x0b,
-    0xe0,
-    0x3e,
-    0xf3,
-    0xd6,
-    0x91,
-    0x6f,
-    0x9c,
-    0xcc,
-    0x31,
-    0xf7,
-    0xa5,
-    0x0e,
-    0x01,
-    0x04,
-    0x0f,
-    0x04,
-    0x03,
-    0x45,
-    0x0c,
-    0x7a,
-    0x10,
-    0x04,
-    0xfa,
-    0x5d,
-    0xd6,
-    0x80,
-    0x20,
-    0x01,
-    0x00,
-    0x0b,
-    0x00,
-    0x01,
-    0x8f,
-    0x00,
-    0x00,
-    0x01,
-    0x8b,
-    0x00,
-    0x01,
-    0x86,
-    0x30,
-    0x82,
-    0x01,
-    0x82,
-    0x30,
-    0x82,
-    0x01,
-    0x29,
-    0xa0,
-    0x03,
-    0x02,
-    0x01,
-    0x02,
-    0x02,
-    0x14,
-    0x0a,
-    0x73,
-    0x0f,
-    0x86,
-    0x18,
-    0xf2,
-    0xc3,
-    0x30,
-    0x01,
-    0xd2,
-    0xc0,
-    0xc1,
-    0x62,
-    0x52,
-    0x13,
-    0xf1,
-    0x9c,
-    0x13,
-    0x39,
-    0xb5,
-    0x30,
-    0x0a,
-    0x06,
-    0x08,
-    0x2a,
-    0x86,
-    0x48,
-    0xce,
-    0x3d,
-    0x04,
-    0x03,
-    0x02,
-    0x30,
-    0x17,
-    0x31,
-    0x15,
-    0x30,
-    0x13,
-    0x06,
-    0x03,
-    0x55,
-    0x04,
-    0x03,
-    0x0c,
-    0x0c,
-    0x6d,
-    0x61,
-    0x70,
-    0x61,
-    0x6b,
-    0x74,
-    0x2e,
-    0x6c,
-    0x6f,
-    0x63,
-    0x61,
-    0x6c,
-    0x30,
-    0x1e,
-    0x17,
-    0x0d,
-    0x32,
-    0x32,
-    0x30,
-    0x38,
-    0x30,
-    0x32,
-    0x31,
-    0x32,
-    0x30,
-    0x30,
-    0x31,
-    0x38,
-    0x5a,
-    0x17,
-    0x0d,
-    0x32,
-    0x32,
-    0x30,
-    0x39,
-    0x30,
-    0x31,
-    0x31,
-    0x32,
-    0x30,
-    0x30,
-    0x31,
-    0x38,
-    0x5a,
-    0x30,
-    0x17,
-    0x31,
-    0x15,
-    0x30,
-    0x13,
-    0x06,
-    0x03,
-    0x55,
-    0x04,
-    0x03,
-    0x0c,
-    0x0c,
-    0x6d,
-    0x61,
-    0x70,
-    0x61,
-    0x6b,
-    0x74,
-    0x2e,
-    0x6c,
-    0x6f,
-    0x63,
-    0x61,
-    0x6c,
-    0x30,
-    0x59,
-    0x30,
-    0x13,
-    0x06,
-    0x07,
-    0x2a,
-    0x86,
-    0x48,
-    0xce,
-    0x3d,
-    0x02,
-    0x01,
-    0x06,
-    0x08,
-    0x2a,
-    0x86,
-    0x48,
-    0xce,
-    0x3d,
-    0x03,
-    0x01,
-    0x07,
-    0x03,
-    0x42,
-    0x00,
-    0x04,
-    0x67,
-    0xf4,
-    0xd3,
-    0x8f,
-    0x15,
-    0x6d,
-    0xee,
-    0x85,
-    0xcc,
-    0x2a,
-    0x77,
-    0xfc,
-    0x0b,
-    0x8f,
-    0x9f,
-    0xcf,
-    0xa9,
-    0x95,
-    0x5d,
-    0x5b,
-    0xcd,
-    0xb7,
-    0x8b,
-    0xba,
-    0x31,
-    0x0a,
-    0x73,
-    0x62,
-    0xc5,
-    0xd0,
-    0x0e,
-    0x07,
-    0x90,
-    0xae,
-    0x38,
-    0x43,
-    0x79,
-    0xce,
-    0x5e,
-    0x33,
-    0xad,
-    0x31,
-    0xbf,
-    0x9f,
-    0x2a,
-    0x56,
-    0x83,
-    0xa5,
-    0x24,
-    0x16,
-    0xab,
-    0x0c,
-    0xf1,
-    0x64,
-    0xbe,
-    0xe4,
-    0x93,
-    0xb5,
-    0x89,
-    0xd6,
-    0x05,
-    0xe4,
-    0xf7,
-    0x7b,
-    0xa3,
-    0x53,
-    0x30,
-    0x51,
-    0x30,
-    0x1d,
-    0x06,
-    0x03,
-    0x55,
-    0x1d,
-    0x0e,
-    0x04,
-    0x16,
-    0x04,
-    0x14,
-    0x02,
-    0x64,
-    0x0f,
-    0x55,
-    0x69,
-    0x14,
-    0x91,
-    0x19,
-    0xed,
-    0xf9,
-    0x1a,
-    0xe9,
-    0x1d,
-    0xa5,
-    0x5a,
-    0xd0,
-    0x48,
-    0x96,
-    0x9f,
-    0x60,
-    0x30,
-    0x1f,
-    0x06,
-    0x03,
-    0x55,
-    0x1d,
-    0x23,
-    0x04,
-    0x18,
-    0x30,
-    0x16,
-    0x80,
-    0x14,
-    0x02,
-    0x64,
-    0x0f,
-    0x55,
-    0x69,
-    0x14,
-    0x91,
-    0x19,
-    0xed,
-    0xf9,
-    0x1a,
-    0xe9,
-    0x1d,
-    0xa5,
-    0x5a,
-    0xd0,
-    0x48,
-    0x96,
-    0x9f,
-    0x60,
-    0x30,
-    0x0f,
-    0x06,
-    0x03,
-    0x55,
-    0x1d,
-    0x13,
-    0x01,
-    0x01,
-    0xff,
-    0x04,
-    0x05,
-    0x30,
-    0x03,
-    0x01,
-    0x01,
-    0xff,
-    0x30,
-    0x0a,
-    0x06,
-    0x08,
-    0x2a,
-    0x86,
-    0x48,
-    0xce,
-    0x3d,
-    0x04,
-    0x03,
-    0x02,
-    0x03,
-    0x47,
-    0x00,
-    0x30,
-    0x44,
-    0x02,
-    0x20,
-    0x0a,
-    0x82,
-    0x92,
-    0x6e,
-    0xd3,
-    0xc6,
-    0x66,
-    0xd9,
-    0xd3,
-    0x75,
-    0xff,
-    0x71,
-    0x3b,
-    0x61,
-    0x46,
-    0x21,
-    0x00,
-    0xe6,
-    0x21,
-    0x5d,
-    0x9c,
-    0x86,
-    0xe9,
-    0x65,
-    0x40,
-    0x4f,
-    0xeb,
-    0x70,
-    0x4f,
-    0x2c,
-    0xad,
-    0x00,
-    0x02,
-    0x20,
-    0x08,
-    0xc2,
-    0x07,
-    0x5d,
-    0x16,
-    0xfc,
-    0x54,
-    0x34,
-    0x2b,
-    0xb4,
-    0x18,
-    0x67,
-    0x44,
-    0x81,
-    0xc9,
-    0xa9,
-    0x67,
-    0x2e,
-    0xce,
-    0xa1,
-    0x02,
-    0x9f,
-    0x3b,
-    0xe5,
-    0x61,
-    0x16,
-    0x0b,
-    0x50,
-    0xf6,
-    0xa1,
-    0x50,
-    0x94,
-    0x00,
-    0x00,
-    0x0f,
-    0x00,
-    0x00,
-    0x4c,
-    0x04,
-    0x03,
-    0x00,
-    0x48,
-    0x30,
-    0x46,
-    0x02,
-    0x21,
-    0x00,
-    0xaa,
-    0x18,
-    0x61,
-    0x93,
-    0xdf,
-    0xbb,
-    0x79,
-    0xe7,
-    0x34,
-    0x7e,
-    0x2e,
-    0x61,
-    0x13,
-    0x8c,
-    0xa0,
-    0x33,
-    0xfb,
-    0x33,
-    0xca,
-    0xfc,
-    0xd2,
-    0x45,
-    0xb0,
-    0xc7,
-    0x89,
-    0x3d,
-    0xf1,
-    0xd6,
-    0x54,
-    0x94,
-    0x05,
-    0xb6,
-    0x02,
-    0x21,
-    0x00,
-    0xef,
-    0x6c,
-    0xb6,
-    0xf2,
-    0x00,
-    0xb2,
-    0x32,
-    0xb1,
-    0xf3,
-    0x3f,
-    0x59,
-    0xf5,
-    0xc8,
-    0x18,
-    0xbe,
-    0x39,
-    0xbb,
-    0x27,
-    0xf8,
-    0x67,
-    0xac,
-    0xcb,
-    0x63,
-    0xa4,
-    0x29,
-    0xfb,
-    0x8e,
-    0x88,
-    0x0f,
-    0xe5,
-    0xe9,
-    0x7e,
-    0x14,
-    0x00,
-    0x00,
-    0x20,
-    0xfc,
-    0x2c,
-    0x4c,
-    0xa7,
-    0x77,
-    0x24,
-    0x79,
-    0x29,
-    0xa8,
-    0x82,
-    0x1a,
-    0x4d,
-    0x58,
-    0x9d,
-    0x82,
-    0xe2,
-    0x09,
-    0x36,
-    0x63,
-    0x0e,
-    0x0b,
-    0x55,
-    0x51,
-    0x80,
-    0x93,
-    0x40,
-    0xda,
-    0x41,
-    0x33,
-    0x08,
-    0x10,
-    0x2c,
+    0x06, 0x00, 0x42, 0x8d, 0x08, 0x00, 0x00, 0x82, 0x00, 0x80,
+    0x00, 0x10, 0x00, 0x08, 0x00, 0x06, 0x05, 0x64, 0x75, 0x6d,
+    0x6d, 0x79, 0x00, 0x39, 0x00, 0x70, 0x46, 0x0a, 0x0d, 0xdc,
+    0x59, 0xf0, 0x4e, 0xb2, 0x2c, 0xac, 0x69, 0x6a, 0xc9, 0x77,
+    0xa9, 0x99, 0x05, 0x04, 0x80, 0x08, 0x00, 0x00, 0x06, 0x04,
+    0x80, 0x08, 0x00, 0x00, 0x07, 0x04, 0x80, 0x08, 0x00, 0x00,
+    0x04, 0x04, 0x80, 0x0c, 0x00, 0x00, 0x08, 0x02, 0x40, 0x64,
+    0x09, 0x02, 0x40, 0x64, 0x01, 0x04, 0x80, 0x00, 0x75, 0x30,
+    0x03, 0x02, 0x45, 0xac, 0x0b, 0x01, 0x1a, 0x0c, 0x00, 0x02,
+    0x10, 0x42, 0xf0, 0xed, 0x09, 0x07, 0x5b, 0xd9, 0x5a, 0xb2,
+    0x39, 0x5d, 0x73, 0x2c, 0x57, 0x1f, 0x50, 0x00, 0x0b, 0xe0,
+    0x3e, 0xf3, 0xd6, 0x91, 0x6f, 0x9c, 0xcc, 0x31, 0xf7, 0xa5,
+    0x0e, 0x01, 0x04, 0x0f, 0x04, 0x03, 0x45, 0x0c, 0x7a, 0x10,
+    0x04, 0xfa, 0x5d, 0xd6, 0x80, 0x20, 0x01, 0x00, 0x0b, 0x00,
+    0x01, 0x8f, 0x00, 0x00, 0x01, 0x8b, 0x00, 0x01, 0x86, 0x30,
+    0x82, 0x01, 0x82, 0x30, 0x82, 0x01, 0x29, 0xa0, 0x03, 0x02,
+    0x01, 0x02, 0x02, 0x14, 0x0a, 0x73, 0x0f, 0x86, 0x18, 0xf2,
+    0xc3, 0x30, 0x01, 0xd2, 0xc0, 0xc1, 0x62, 0x52, 0x13, 0xf1,
+    0x9c, 0x13, 0x39, 0xb5, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86,
+    0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x30, 0x17, 0x31, 0x15,
+    0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x0c, 0x6d,
+    0x61, 0x70, 0x61, 0x6b, 0x74, 0x2e, 0x6c, 0x6f, 0x63, 0x61,
+    0x6c, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x32, 0x30, 0x38, 0x30,
+    0x32, 0x31, 0x32, 0x30, 0x30, 0x31, 0x38, 0x5a, 0x17, 0x0d,
+    0x32, 0x32, 0x30, 0x39, 0x30, 0x31, 0x31, 0x32, 0x30, 0x30,
+    0x31, 0x38, 0x5a, 0x30, 0x17, 0x31, 0x15, 0x30, 0x13, 0x06,
+    0x03, 0x55, 0x04, 0x03, 0x0c, 0x0c, 0x6d, 0x61, 0x70, 0x61,
+    0x6b, 0x74, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x30, 0x59,
+    0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02,
+    0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01,
+    0x07, 0x03, 0x42, 0x00, 0x04, 0x67, 0xf4, 0xd3, 0x8f, 0x15,
+    0x6d, 0xee, 0x85, 0xcc, 0x2a, 0x77, 0xfc, 0x0b, 0x8f, 0x9f,
+    0xcf, 0xa9, 0x95, 0x5d, 0x5b, 0xcd, 0xb7, 0x8b, 0xba, 0x31,
+    0x0a, 0x73, 0x62, 0xc5, 0xd0, 0x0e, 0x07, 0x90, 0xae, 0x38,
+    0x43, 0x79, 0xce, 0x5e, 0x33, 0xad, 0x31, 0xbf, 0x9f, 0x2a,
+    0x56, 0x83, 0xa5, 0x24, 0x16, 0xab, 0x0c, 0xf1, 0x64, 0xbe,
+    0xe4, 0x93, 0xb5, 0x89, 0xd6, 0x05, 0xe4, 0xf7, 0x7b, 0xa3,
+    0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e,
+    0x04, 0x16, 0x04, 0x14, 0x02, 0x64, 0x0f, 0x55, 0x69, 0x14,
+    0x91, 0x19, 0xed, 0xf9, 0x1a, 0xe9, 0x1d, 0xa5, 0x5a, 0xd0,
+    0x48, 0x96, 0x9f, 0x60, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d,
+    0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x02, 0x64, 0x0f,
+    0x55, 0x69, 0x14, 0x91, 0x19, 0xed, 0xf9, 0x1a, 0xe9, 0x1d,
+    0xa5, 0x5a, 0xd0, 0x48, 0x96, 0x9f, 0x60, 0x30, 0x0f, 0x06,
+    0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30,
+    0x03, 0x01, 0x01, 0xff, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86,
+    0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03, 0x47, 0x00, 0x30,
+    0x44, 0x02, 0x20, 0x0a, 0x82, 0x92, 0x6e, 0xd3, 0xc6, 0x66,
+    0xd9, 0xd3, 0x75, 0xff, 0x71, 0x3b, 0x61, 0x46, 0x21, 0x00,
+    0xe6, 0x21, 0x5d, 0x9c, 0x86, 0xe9, 0x65, 0x40, 0x4f, 0xeb,
+    0x70, 0x4f, 0x2c, 0xad, 0x00, 0x02, 0x20, 0x08, 0xc2, 0x07,
+    0x5d, 0x16, 0xfc, 0x54, 0x34, 0x2b, 0xb4, 0x18, 0x67, 0x44,
+    0x81, 0xc9, 0xa9, 0x67, 0x2e, 0xce, 0xa1, 0x02, 0x9f, 0x3b,
+    0xe5, 0x61, 0x16, 0x0b, 0x50, 0xf6, 0xa1, 0x50, 0x94, 0x00,
+    0x00, 0x0f, 0x00, 0x00, 0x4c, 0x04, 0x03, 0x00, 0x48, 0x30,
+    0x46, 0x02, 0x21, 0x00, 0xaa, 0x18, 0x61, 0x93, 0xdf, 0xbb,
+    0x79, 0xe7, 0x34, 0x7e, 0x2e, 0x61, 0x13, 0x8c, 0xa0, 0x33,
+    0xfb, 0x33, 0xca, 0xfc, 0xd2, 0x45, 0xb0, 0xc7, 0x89, 0x3d,
+    0xf1, 0xd6, 0x54, 0x94, 0x05, 0xb6, 0x02, 0x21, 0x00, 0xef,
+    0x6c, 0xb6, 0xf2, 0x00, 0xb2, 0x32, 0xb1, 0xf3, 0x3f, 0x59,
+    0xf5, 0xc8, 0x18, 0xbe, 0x39, 0xbb, 0x27, 0xf8, 0x67, 0xac,
+    0xcb, 0x63, 0xa4, 0x29, 0xfb, 0x8e, 0x88, 0x0f, 0xe5, 0xe9,
+    0x7e, 0x14, 0x00, 0x00, 0x20, 0xfc, 0x2c, 0x4c, 0xa7, 0x77,
+    0x24, 0x79, 0x29, 0xa8, 0x82, 0x1a, 0x4d, 0x58, 0x9d, 0x82,
+    0xe2, 0x09, 0x36, 0x63, 0x0e, 0x0b, 0x55, 0x51, 0x80, 0x93,
+    0x40, 0xda, 0x41, 0x33, 0x08, 0x10, 0x2c
 };
 
 static const QUIC_PKT_HDR rx_script_7c_expect_hdr = {
@@ -8150,78 +1495,14 @@
 };
 
 static const unsigned char rx_script_7c_body[] = {
-    0x18,
-    0x03,
-    0x00,
-    0x04,
-    0xf7,
-    0x75,
-    0x72,
-    0xa2,
-    0xfd,
-    0x17,
-    0xd4,
-    0x82,
-    0x8e,
-    0xe9,
-    0x5b,
-    0xce,
-    0xed,
-    0xec,
-    0x88,
-    0xb9,
-    0x73,
-    0xbf,
-    0x36,
-    0x9f,
-    0x18,
-    0x02,
-    0x00,
-    0x04,
-    0x5f,
-    0x43,
-    0x96,
-    0xe4,
-    0x15,
-    0xdc,
-    0x56,
-    0x6b,
-    0x67,
-    0x4c,
-    0x36,
-    0xb2,
-    0xe2,
-    0x77,
-    0xdc,
-    0x6e,
-    0xb9,
-    0x2c,
-    0x0d,
-    0x79,
-    0x18,
-    0x01,
-    0x00,
-    0x04,
-    0xcb,
-    0x83,
-    0x4a,
-    0xf4,
-    0x8d,
-    0x7b,
-    0x69,
-    0x90,
-    0xaf,
-    0x0d,
-    0xd2,
-    0x38,
-    0xa4,
-    0xf1,
-    0x94,
-    0xff,
-    0x63,
-    0x24,
-    0xd3,
-    0x7a,
+    0x18, 0x03, 0x00, 0x04, 0xf7, 0x75, 0x72, 0xa2, 0xfd, 0x17,
+    0xd4, 0x82, 0x8e, 0xe9, 0x5b, 0xce, 0xed, 0xec, 0x88, 0xb9,
+    0x73, 0xbf, 0x36, 0x9f, 0x18, 0x02, 0x00, 0x04, 0x5f, 0x43,
+    0x96, 0xe4, 0x15, 0xdc, 0x56, 0x6b, 0x67, 0x4c, 0x36, 0xb2,
+    0xe2, 0x77, 0xdc, 0x6e, 0xb9, 0x2c, 0x0d, 0x79, 0x18, 0x01,
+    0x00, 0x04, 0xcb, 0x83, 0x4a, 0xf4, 0x8d, 0x7b, 0x69, 0x90,
+    0xaf, 0x0d, 0xd2, 0x38, 0xa4, 0xf1, 0x94, 0xff, 0x63, 0x24,
+    0xd3, 0x7a
 };
 
 static const struct rx_test_op rx_script_7[] = {
@@ -8295,57 +1576,12 @@
     0x51, /* Short, 1-RTT, PN Length=2 bytes, KP=0 */
     0xcb,
     0xf4, /* PN (4) */
-    0x3f,
-    0x68,
-    0x7b,
-    0xa8,
-    0x2b,
-    0xb9,
-    0xfa,
-    0x7d,
-    0xe4,
-    0x6b,
-    0x20,
-    0x48,
-    0xd1,
-    0x3c,
-    0xcb,
-    0x4b,
-    0xef,
-    0xb1,
-    0xfd,
-    0x5e,
-    0x1b,
-    0x19,
-    0x83,
-    0xa9,
-    0x47,
-    0x62,
-    0xc1,
-    0x6e,
-    0xef,
-    0x27,
-    0xc3,
-    0x9b,
-    0x8f,
-    0x3f,
-    0xce,
-    0x11,
-    0x68,
-    0xf5,
-    0x73,
-    0x0d,
-    0xf2,
-    0xdc,
-    0xe0,
-    0x28,
-    0x28,
-    0x79,
-    0xa6,
-    0x39,
-    0xc3,
-    0xb9,
-    0xd3,
+    0x3f, 0x68, 0x7b, 0xa8, 0x2b, 0xb9, 0xfa, 0x7d, 0xe4, 0x6b,
+    0x20, 0x48, 0xd1, 0x3c, 0xcb, 0x4b, 0xef, 0xb1, 0xfd, 0x5e,
+    0x1b, 0x19, 0x83, 0xa9, 0x47, 0x62, 0xc1, 0x6e, 0xef, 0x27,
+    0xc3, 0x9b, 0x8f, 0x3f, 0xce, 0x11, 0x68, 0xf5, 0x73, 0x0d,
+    0xf2, 0xdc, 0xe0, 0x28, 0x28, 0x79, 0xa6, 0x39, 0xc3, 0xb9,
+    0xd3
 };
 
 static const QUIC_PKT_HDR rx_script_8a_expect_hdr = {
@@ -8375,57 +1611,12 @@
     0x52, /* Short, 1-RTT, PN Length=2 bytes, KP=1 */
     0x21,
     0x8e, /* PN (5) */
-    0xa2,
-    0x6a,
-    0x9c,
-    0x83,
-    0x24,
-    0x48,
-    0xae,
-    0x60,
-    0x1e,
-    0xc2,
-    0xa5,
-    0x91,
-    0xfa,
-    0xe5,
-    0xf2,
-    0x05,
-    0x14,
-    0x37,
-    0x04,
-    0x6a,
-    0xa8,
-    0xae,
-    0x06,
-    0x58,
-    0xd7,
-    0x85,
-    0x48,
-    0xd7,
-    0x3b,
-    0x85,
-    0x9e,
-    0x5a,
-    0xb3,
-    0x46,
-    0x89,
-    0x1b,
-    0x4b,
-    0x6e,
-    0x1d,
-    0xd1,
-    0xfc,
-    0xb7,
-    0x47,
-    0xda,
-    0x6a,
-    0x64,
-    0x4b,
-    0x8e,
-    0xf2,
-    0x69,
-    0x16,
+    0xa2, 0x6a, 0x9c, 0x83, 0x24, 0x48, 0xae, 0x60, 0x1e, 0xc2,
+    0xa5, 0x91, 0xfa, 0xe5, 0xf2, 0x05, 0x14, 0x37, 0x04, 0x6a,
+    0xa8, 0xae, 0x06, 0x58, 0xd7, 0x85, 0x48, 0xd7, 0x3b, 0x85,
+    0x9e, 0x5a, 0xb3, 0x46, 0x89, 0x1b, 0x4b, 0x6e, 0x1d, 0xd1,
+    0xfc, 0xb7, 0x47, 0xda, 0x6a, 0x64, 0x4b, 0x8e, 0xf2, 0x69,
+    0x16
 };
 
 static const QUIC_PKT_HDR rx_script_8b_expect_hdr = {
@@ -8446,92 +1637,21 @@
 };
 
 static const unsigned char rx_script_8b_body[] = {
-    0x02,
-    0x04,
-    0x03,
-    0x00,
-    0x00,
-    0x0c,
-    0x00,
-    0x36,
-    0x49,
-    0x27,
-    0x6d,
-    0x20,
-    0x68,
-    0x61,
-    0x76,
-    0x69,
-    0x6e,
-    0x67,
-    0x20,
-    0x61,
-    0x20,
-    0x77,
-    0x6f,
-    0x6e,
-    0x64,
-    0x65,
-    0x72,
-    0x66,
-    0x75,
-    0x6c,
-    0x20,
-    0x74,
-    0x69,
-    0x6d,
-    0x65,
+    0x02, 0x04, 0x03, 0x00, 0x00, 0x0c, 0x00, 0x36, 0x49, 0x27,
+    0x6d, 0x20, 0x68, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x20, 0x61,
+    0x20, 0x77, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x66, 0x75, 0x6c,
+    0x20, 0x74, 0x69, 0x6d, 0x65
 };
 
 static const unsigned char rx_script_8c_in[] = {
     0x5b, /* Short, 1-RTT, PN Length=2 bytes, KP=0 */
     0x98,
     0xd6, /* PN (3) */
-    0x3c,
-    0x6f,
-    0x94,
-    0x20,
-    0x5e,
-    0xfc,
-    0x5b,
-    0x3a,
-    0x4a,
-    0x65,
-    0x1a,
-    0x9a,
-    0x6c,
-    0x00,
-    0x52,
-    0xb6,
-    0x0c,
-    0x9b,
-    0x07,
-    0xf9,
-    0x6f,
-    0xbc,
-    0x3d,
-    0xb4,
-    0x57,
-    0xe0,
-    0x15,
-    0x74,
-    0xfe,
-    0x76,
-    0xea,
-    0x1f,
-    0x23,
-    0xae,
-    0x22,
-    0x62,
-    0xb7,
-    0x90,
-    0x94,
-    0x89,
-    0x38,
-    0x9b,
-    0x5b,
-    0x47,
-    0xed,
+    0x3c, 0x6f, 0x94, 0x20, 0x5e, 0xfc, 0x5b, 0x3a, 0x4a, 0x65,
+    0x1a, 0x9a, 0x6c, 0x00, 0x52, 0xb6, 0x0c, 0x9b, 0x07, 0xf9,
+    0x6f, 0xbc, 0x3d, 0xb4, 0x57, 0xe0, 0x15, 0x74, 0xfe, 0x76,
+    0xea, 0x1f, 0x23, 0xae, 0x22, 0x62, 0xb7, 0x90, 0x94, 0x89,
+    0x38, 0x9b, 0x5b, 0x47, 0xed
 };
 
 static const QUIC_PKT_HDR rx_script_8c_expect_hdr = {
@@ -8552,93 +1672,21 @@
 };
 
 static const unsigned char rx_script_8c_body[] = {
-    0x08,
-    0x00,
-    0x49,
-    0x27,
-    0x6d,
-    0x20,
-    0x68,
-    0x61,
-    0x76,
-    0x69,
-    0x6e,
-    0x67,
-    0x20,
-    0x61,
-    0x20,
-    0x77,
-    0x6f,
-    0x6e,
-    0x64,
-    0x65,
-    0x72,
-    0x66,
-    0x75,
-    0x6c,
-    0x20,
-    0x74,
-    0x69,
-    0x6d,
-    0x65,
+    0x08, 0x00, 0x49, 0x27, 0x6d, 0x20, 0x68, 0x61, 0x76, 0x69,
+    0x6e, 0x67, 0x20, 0x61, 0x20, 0x77, 0x6f, 0x6e, 0x64, 0x65,
+    0x72, 0x66, 0x75, 0x6c, 0x20, 0x74, 0x69, 0x6d, 0x65
 };
 
 static const unsigned char rx_script_8d_in[] = {
     0x55, /* Short, 1-RTT, PN Length=2 bytes, KP=1 */
     0x98,
     0x20, /* PN (6) */
-    0x45,
-    0x53,
-    0x05,
-    0x29,
-    0x30,
-    0x42,
-    0x29,
-    0x02,
-    0xf2,
-    0xa7,
-    0x27,
-    0xd6,
-    0xb0,
-    0xb7,
-    0x30,
-    0xad,
-    0x45,
-    0xd8,
-    0x73,
-    0xd7,
-    0xe3,
-    0x65,
-    0xee,
-    0xd9,
-    0x35,
-    0x33,
-    0x03,
-    0x3a,
-    0x35,
-    0x0b,
-    0x59,
-    0xa7,
-    0xbc,
-    0x23,
-    0x37,
-    0xc2,
-    0x5e,
-    0x13,
-    0x88,
-    0x18,
-    0x79,
-    0x94,
-    0x6c,
-    0x15,
-    0xe3,
-    0x1f,
-    0x0d,
-    0xd1,
-    0xc3,
-    0xfa,
-    0x40,
-    0xff,
+    0x45, 0x53, 0x05, 0x29, 0x30, 0x42, 0x29, 0x02, 0xf2, 0xa7,
+    0x27, 0xd6, 0xb0, 0xb7, 0x30, 0xad, 0x45, 0xd8, 0x73, 0xd7,
+    0xe3, 0x65, 0xee, 0xd9, 0x35, 0x33, 0x03, 0x3a, 0x35, 0x0b,
+    0x59, 0xa7, 0xbc, 0x23, 0x37, 0xc2, 0x5e, 0x13, 0x88, 0x18,
+    0x79, 0x94, 0x6c, 0x15, 0xe3, 0x1f, 0x0d, 0xd1, 0xc3, 0xfa,
+    0x40, 0xff
 };
 
 static const QUIC_PKT_HDR rx_script_8d_expect_hdr = {
@@ -8659,100 +1707,22 @@
 };
 
 static const unsigned char rx_script_8d_body[] = {
-    0x02,
-    0x05,
-    0x03,
-    0x00,
-    0x00,
-    0x0c,
-    0x00,
-    0x40,
-    0x51,
-    0x49,
-    0x27,
-    0x6d,
-    0x20,
-    0x68,
-    0x61,
-    0x76,
-    0x69,
-    0x6e,
-    0x67,
-    0x20,
-    0x61,
-    0x20,
-    0x77,
-    0x6f,
-    0x6e,
-    0x64,
-    0x65,
-    0x72,
-    0x66,
-    0x75,
-    0x6c,
-    0x20,
-    0x74,
-    0x69,
-    0x6d,
-    0x65,
+    0x02, 0x05, 0x03, 0x00, 0x00, 0x0c, 0x00, 0x40, 0x51, 0x49,
+    0x27, 0x6d, 0x20, 0x68, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x20,
+    0x61, 0x20, 0x77, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x66, 0x75,
+    0x6c, 0x20, 0x74, 0x69, 0x6d, 0x65
 };
 
 static const unsigned char rx_script_8e_in[] = {
     0x55, /* Short, 1-RTTT, PN Length=2 bytes, KP=0 */
     0x76,
     0x25, /* PN (10) */
-    0x1c,
-    0x0d,
-    0x70,
-    0x4c,
-    0x2b,
-    0xc5,
-    0x7d,
-    0x7b,
-    0x77,
-    0x64,
-    0x03,
-    0x27,
-    0xb3,
-    0x5d,
-    0x83,
-    0x9e,
-    0x35,
-    0x05,
-    0x10,
-    0xd2,
-    0xa4,
-    0x5c,
-    0x83,
-    0xd6,
-    0x94,
-    0x12,
-    0x18,
-    0xc5,
-    0xb3,
-    0x0f,
-    0x0a,
-    0xb1,
-    0x8a,
-    0x82,
-    0x9f,
-    0xd6,
-    0xa9,
-    0xab,
-    0x40,
-    0xc1,
-    0x05,
-    0xe8,
-    0x1b,
-    0x74,
-    0xaa,
-    0x8e,
-    0xd6,
-    0x8b,
-    0xa5,
-    0xa3,
-    0x77,
-    0x79,
+    0x1c, 0x0d, 0x70, 0x4c, 0x2b, 0xc5, 0x7d, 0x7b, 0x77, 0x64,
+    0x03, 0x27, 0xb3, 0x5d, 0x83, 0x9e, 0x35, 0x05, 0x10, 0xd2,
+    0xa4, 0x5c, 0x83, 0xd6, 0x94, 0x12, 0x18, 0xc5, 0xb3, 0x0f,
+    0x0a, 0xb1, 0x8a, 0x82, 0x9f, 0xd6, 0xa9, 0xab, 0x40, 0xc1,
+    0x05, 0xe8, 0x1b, 0x74, 0xaa, 0x8e, 0xd6, 0x8b, 0xa5, 0xa3,
+    0x77, 0x79
 };
 
 static const QUIC_PKT_HDR rx_script_8e_expect_hdr = {
@@ -8773,42 +1743,10 @@
 };
 
 static const unsigned char rx_script_8e_body[] = {
-    0x02,
-    0x09,
-    0x04,
-    0x00,
-    0x00,
-    0x0c,
-    0x00,
-    0x40,
-    0xbd,
-    0x49,
-    0x27,
-    0x6d,
-    0x20,
-    0x68,
-    0x61,
-    0x76,
-    0x69,
-    0x6e,
-    0x67,
-    0x20,
-    0x61,
-    0x20,
-    0x77,
-    0x6f,
-    0x6e,
-    0x64,
-    0x65,
-    0x72,
-    0x66,
-    0x75,
-    0x6c,
-    0x20,
-    0x74,
-    0x69,
-    0x6d,
-    0x65,
+    0x02, 0x09, 0x04, 0x00, 0x00, 0x0c, 0x00, 0x40, 0xbd, 0x49,
+    0x27, 0x6d, 0x20, 0x68, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x20,
+    0x61, 0x20, 0x77, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x66, 0x75,
+    0x6c, 0x20, 0x74, 0x69, 0x6d, 0x65
 };
 
 static const unsigned char rx_script_8f_in[] = {
@@ -10594,41 +3532,10 @@
 };
 
 static const unsigned char tx_script_4a_body[] = {
-    0x02,
-    0x03,
-    0x09,
-    0x00,
-    0x03,
-    0x0c,
-    0x00,
-    0x36,
-    0x49,
-    0x27,
-    0x6d,
-    0x20,
-    0x68,
-    0x61,
-    0x76,
-    0x69,
-    0x6e,
-    0x67,
-    0x20,
-    0x61,
-    0x20,
-    0x77,
-    0x6f,
-    0x6e,
-    0x64,
-    0x65,
-    0x72,
-    0x66,
-    0x75,
-    0x6c,
-    0x20,
-    0x74,
-    0x69,
-    0x6d,
-    0x65,
+    0x02, 0x03, 0x09, 0x00, 0x03, 0x0c, 0x00, 0x36, 0x49, 0x27,
+    0x6d, 0x20, 0x68, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x20, 0x61,
+    0x20, 0x77, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x66, 0x75, 0x6c,
+    0x20, 0x74, 0x69, 0x6d, 0x65
 };
 
 static const unsigned char tx_script_4a_dgram[] = {
@@ -10670,104 +3577,19 @@
 };
 
 static const unsigned char tx_script_4b_body[] = {
-    0x02,
-    0x04,
-    0x07,
-    0x00,
-    0x00,
-    0x0c,
-    0x00,
-    0x40,
-    0x51,
-    0x49,
-    0x27,
-    0x6d,
-    0x20,
-    0x68,
-    0x61,
-    0x76,
-    0x69,
-    0x6e,
-    0x67,
-    0x20,
-    0x61,
-    0x20,
-    0x77,
-    0x6f,
-    0x6e,
-    0x64,
-    0x65,
-    0x72,
-    0x66,
-    0x75,
-    0x6c,
-    0x20,
-    0x74,
-    0x69,
-    0x6d,
-    0x65,
+    0x02, 0x04, 0x07, 0x00, 0x00, 0x0c, 0x00, 0x40, 0x51, 0x49,
+    0x27, 0x6d, 0x20, 0x68, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x20,
+    0x61, 0x20, 0x77, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x66, 0x75,
+    0x6c, 0x20, 0x74, 0x69, 0x6d, 0x65
 };
 
 static const unsigned char tx_script_4b_dgram[] = {
-    0x58,
-    0x6e,
-    0x4e,
-    0xbd,
-    0x49,
-    0xa4,
-    0x43,
-    0x33,
-    0xea,
-    0x11,
-    0x3a,
-    0x6c,
-    0xf5,
-    0x20,
-    0xef,
-    0x55,
-    0x8d,
-    0x25,
-    0xe2,
-    0x3b,
-    0x0e,
-    0x8c,
-    0xea,
-    0x17,
-    0xfc,
-    0x2b,
-    0x7a,
-    0xab,
-    0xfa,
-    0x3d,
-    0x07,
-    0xda,
-    0xa7,
-    0x7c,
-    0xc7,
-    0x47,
-    0x82,
-    0x02,
-    0x46,
-    0x40,
-    0x4f,
-    0x01,
-    0xad,
-    0xb2,
-    0x9d,
-    0x97,
-    0xdb,
-    0xfc,
-    0x9c,
-    0x4b,
-    0x46,
-    0xb1,
-    0x5a,
-    0x7f,
-    0x0b,
-    0x12,
-    0xaf,
-    0x49,
-    0xdf,
+    0x58, 0x6e, 0x4e, 0xbd, 0x49, 0xa4, 0x43, 0x33, 0xea, 0x11,
+    0x3a, 0x6c, 0xf5, 0x20, 0xef, 0x55, 0x8d, 0x25, 0xe2, 0x3b,
+    0x0e, 0x8c, 0xea, 0x17, 0xfc, 0x2b, 0x7a, 0xab, 0xfa, 0x3d,
+    0x07, 0xda, 0xa7, 0x7c, 0xc7, 0x47, 0x82, 0x02, 0x46, 0x40,
+    0x4f, 0x01, 0xad, 0xb2, 0x9d, 0x97, 0xdb, 0xfc, 0x9c, 0x4b,
+    0x46, 0xb1, 0x5a, 0x7f, 0x0b, 0x12, 0xaf, 0x49, 0xdf
 };
 
 static QUIC_PKT_HDR tx_script_4b_hdr = {
@@ -10801,104 +3623,19 @@
 };
 
 static const unsigned char tx_script_4c_body[] = {
-    0x02,
-    0x09,
-    0x0e,
-    0x00,
-    0x00,
-    0x0c,
-    0x00,
-    0x40,
-    0xd8,
-    0x49,
-    0x27,
-    0x6d,
-    0x20,
-    0x68,
-    0x61,
-    0x76,
-    0x69,
-    0x6e,
-    0x67,
-    0x20,
-    0x61,
-    0x20,
-    0x77,
-    0x6f,
-    0x6e,
-    0x64,
-    0x65,
-    0x72,
-    0x66,
-    0x75,
-    0x6c,
-    0x20,
-    0x74,
-    0x69,
-    0x6d,
-    0x65,
+    0x02, 0x09, 0x0e, 0x00, 0x00, 0x0c, 0x00, 0x40, 0xd8, 0x49,
+    0x27, 0x6d, 0x20, 0x68, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x20,
+    0x61, 0x20, 0x77, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x66, 0x75,
+    0x6c, 0x20, 0x74, 0x69, 0x6d, 0x65
 };
 
 static const unsigned char tx_script_4c_dgram[] = {
-    0x49,
-    0x6e,
-    0x4e,
-    0xbd,
-    0x49,
-    0x4d,
-    0xd9,
-    0x85,
-    0xba,
-    0x26,
-    0xfb,
-    0x68,
-    0x83,
-    0x9b,
-    0x94,
-    0x34,
-    0x7d,
-    0xc1,
-    0x7a,
-    0x05,
-    0xb7,
-    0x38,
-    0x43,
-    0x21,
-    0xe2,
-    0xec,
-    0x2b,
-    0xc1,
-    0x81,
-    0x74,
-    0x2d,
-    0xda,
-    0x24,
-    0xba,
-    0xbd,
-    0x99,
-    0x69,
-    0xd2,
-    0x56,
-    0xfa,
-    0xae,
-    0x29,
-    0x24,
-    0xb2,
-    0xaa,
-    0xda,
-    0xbd,
-    0x82,
-    0x80,
-    0xf1,
-    0xbb,
-    0x6a,
-    0xfd,
-    0xae,
-    0xda,
-    0x0e,
-    0x09,
-    0xcf,
-    0x09,
+    0x49, 0x6e, 0x4e, 0xbd, 0x49, 0x4d, 0xd9, 0x85, 0xba, 0x26,
+    0xfb, 0x68, 0x83, 0x9b, 0x94, 0x34, 0x7d, 0xc1, 0x7a, 0x05,
+    0xb7, 0x38, 0x43, 0x21, 0xe2, 0xec, 0x2b, 0xc1, 0x81, 0x74,
+    0x2d, 0xda, 0x24, 0xba, 0xbd, 0x99, 0x69, 0xd2, 0x56, 0xfa,
+    0xae, 0x29, 0x24, 0xb2, 0xaa, 0xda, 0xbd, 0x82, 0x80, 0xf1,
+    0xbb, 0x6a, 0xfd, 0xae, 0xda, 0x0e, 0x09, 0xcf, 0x09
 };
 
 static QUIC_PKT_HDR tx_script_4c_hdr = {
@@ -10944,253 +3681,35 @@
 /* 5. Real World - Retry Packet */
 static const unsigned char tx_script_5_body[] = {
     /* Retry Token */
-    0x92,
-    0xe7,
-    0xc6,
-    0xd8,
-    0x09,
-    0x65,
-    0x72,
-    0x55,
-    0xe5,
-    0xe2,
-    0x73,
-    0x04,
-    0xf3,
-    0x07,
-    0x5b,
-    0x21,
-    0x9f,
-    0x50,
-    0xcb,
-    0xbc,
-    0x79,
-    0xc5,
-    0x77,
-    0x5a,
-    0x29,
-    0x43,
-    0x65,
-    0x49,
-    0xf0,
-    0x6e,
-    0xc1,
-    0xc0,
-    0x3a,
-    0xe8,
-    0xca,
-    0xd2,
-    0x44,
-    0x69,
-    0xdd,
-    0x23,
-    0x31,
-    0x93,
-    0x52,
-    0x02,
-    0xf7,
-    0x42,
-    0x07,
-    0x78,
-    0xa1,
-    0x81,
-    0x61,
-    0x9c,
-    0x39,
-    0x07,
-    0x18,
-    0x69,
-    0x6e,
-    0x4f,
-    0xdc,
-    0xa0,
-    0xbe,
-    0x4b,
-    0xe5,
-    0xf2,
-    0xe9,
-    0xd2,
-    0xa4,
-    0xa7,
-    0x34,
-    0x55,
-    0x5e,
-    0xf3,
-    0xf8,
-    0x9c,
-    0x49,
-    0x8f,
-    0x0c,
-    0xc8,
-    0xb2,
-    0x75,
-    0x4b,
-    0x4d,
-    0x2f,
-    0xfe,
-    0x05,
-    0x5a,
-    0xdd,
-    0x4b,
-    0xe6,
-    0x14,
-    0xb4,
-    0xd2,
-    0xc0,
-    0x93,
-    0x6e,
-    0x0e,
-    0x84,
-    0x41,
-    0x4d,
-    0x31,
+    0x92, 0xe7, 0xc6, 0xd8, 0x09, 0x65, 0x72, 0x55, 0xe5, 0xe2,
+    0x73, 0x04, 0xf3, 0x07, 0x5b, 0x21, 0x9f, 0x50, 0xcb, 0xbc,
+    0x79, 0xc5, 0x77, 0x5a, 0x29, 0x43, 0x65, 0x49, 0xf0, 0x6e,
+    0xc1, 0xc0, 0x3a, 0xe8, 0xca, 0xd2, 0x44, 0x69, 0xdd, 0x23,
+    0x31, 0x93, 0x52, 0x02, 0xf7, 0x42, 0x07, 0x78, 0xa1, 0x81,
+    0x61, 0x9c, 0x39, 0x07, 0x18, 0x69, 0x6e, 0x4f, 0xdc, 0xa0,
+    0xbe, 0x4b, 0xe5, 0xf2, 0xe9, 0xd2, 0xa4, 0xa7, 0x34, 0x55,
+    0x5e, 0xf3, 0xf8, 0x9c, 0x49, 0x8f, 0x0c, 0xc8, 0xb2, 0x75,
+    0x4b, 0x4d, 0x2f, 0xfe, 0x05, 0x5a, 0xdd, 0x4b, 0xe6, 0x14,
+    0xb4, 0xd2, 0xc0, 0x93, 0x6e, 0x0e, 0x84, 0x41, 0x4d, 0x31,
     /* Retry Integrity Tag */
-    0x43,
-    0x8e,
-    0xab,
-    0xcd,
-    0xce,
-    0x24,
-    0x44,
-    0xc2,
-    0x20,
-    0xe1,
-    0xe2,
-    0xc8,
-    0xae,
-    0xa3,
-    0x8d,
-    0x4e,
+    0x43, 0x8e, 0xab, 0xcd, 0xce, 0x24, 0x44, 0xc2, 0x20, 0xe1,
+    0xe2, 0xc8, 0xae, 0xa3, 0x8d, 0x4e
 };
 
 static const unsigned char tx_script_5_dgram[] = {
-    0xf0,
-    0x00,
-    0x00,
-    0x00,
-    0x01,
-    0x00,
-    0x04,
-    0xa9,
-    0x20,
-    0xcc,
-    0xc2,
-    0x92,
-    0xe7,
-    0xc6,
-    0xd8,
-    0x09,
-    0x65,
-    0x72,
-    0x55,
-    0xe5,
-    0xe2,
-    0x73,
-    0x04,
-    0xf3,
-    0x07,
-    0x5b,
-    0x21,
-    0x9f,
-    0x50,
-    0xcb,
-    0xbc,
-    0x79,
-    0xc5,
-    0x77,
-    0x5a,
-    0x29,
-    0x43,
-    0x65,
-    0x49,
-    0xf0,
-    0x6e,
-    0xc1,
-    0xc0,
-    0x3a,
-    0xe8,
-    0xca,
-    0xd2,
-    0x44,
-    0x69,
-    0xdd,
-    0x23,
-    0x31,
-    0x93,
-    0x52,
-    0x02,
-    0xf7,
-    0x42,
-    0x07,
-    0x78,
-    0xa1,
-    0x81,
-    0x61,
-    0x9c,
-    0x39,
-    0x07,
-    0x18,
-    0x69,
-    0x6e,
-    0x4f,
-    0xdc,
-    0xa0,
-    0xbe,
-    0x4b,
-    0xe5,
-    0xf2,
-    0xe9,
-    0xd2,
-    0xa4,
-    0xa7,
-    0x34,
-    0x55,
-    0x5e,
-    0xf3,
-    0xf8,
-    0x9c,
-    0x49,
-    0x8f,
-    0x0c,
-    0xc8,
-    0xb2,
-    0x75,
-    0x4b,
-    0x4d,
-    0x2f,
-    0xfe,
-    0x05,
-    0x5a,
-    0xdd,
-    0x4b,
-    0xe6,
-    0x14,
-    0xb4,
-    0xd2,
-    0xc0,
-    0x93,
-    0x6e,
-    0x0e,
-    0x84,
-    0x41,
-    0x4d,
-    0x31,
-    0x43,
-    0x8e,
-    0xab,
-    0xcd,
-    0xce,
-    0x24,
-    0x44,
-    0xc2,
-    0x20,
-    0xe1,
-    0xe2,
-    0xc8,
-    0xae,
-    0xa3,
-    0x8d,
-    0x4e,
+    0xf0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0xa9, 0x20, 0xcc,
+    0xc2, 0x92, 0xe7, 0xc6, 0xd8, 0x09, 0x65, 0x72, 0x55, 0xe5,
+    0xe2, 0x73, 0x04, 0xf3, 0x07, 0x5b, 0x21, 0x9f, 0x50, 0xcb,
+    0xbc, 0x79, 0xc5, 0x77, 0x5a, 0x29, 0x43, 0x65, 0x49, 0xf0,
+    0x6e, 0xc1, 0xc0, 0x3a, 0xe8, 0xca, 0xd2, 0x44, 0x69, 0xdd,
+    0x23, 0x31, 0x93, 0x52, 0x02, 0xf7, 0x42, 0x07, 0x78, 0xa1,
+    0x81, 0x61, 0x9c, 0x39, 0x07, 0x18, 0x69, 0x6e, 0x4f, 0xdc,
+    0xa0, 0xbe, 0x4b, 0xe5, 0xf2, 0xe9, 0xd2, 0xa4, 0xa7, 0x34,
+    0x55, 0x5e, 0xf3, 0xf8, 0x9c, 0x49, 0x8f, 0x0c, 0xc8, 0xb2,
+    0x75, 0x4b, 0x4d, 0x2f, 0xfe, 0x05, 0x5a, 0xdd, 0x4b, 0xe6,
+    0x14, 0xb4, 0xd2, 0xc0, 0x93, 0x6e, 0x0e, 0x84, 0x41, 0x4d,
+    0x31, 0x43, 0x8e, 0xab, 0xcd, 0xce, 0x24, 0x44, 0xc2, 0x20,
+    0xe1, 0xe2, 0xc8, 0xae, 0xa3, 0x8d, 0x4e
 };
 
 static QUIC_PKT_HDR tx_script_5_hdr = {
diff -Nru openssl-3.5.6/test/quic_txp_test.c openssl-3.5.7/test/quic_txp_test.c
--- openssl-3.5.6/test/quic_txp_test.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/quic_txp_test.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -27,22 +27,8 @@
 };
 
 static const unsigned char reset_token_1[16] = {
-    0x99,
-    0x88,
-    0x77,
-    0x66,
-    0x55,
-    0x44,
-    0x33,
-    0x22,
-    0x11,
-    0xaa,
-    0xbb,
-    0xcc,
-    0xdd,
-    0xee,
-    0xff,
-    0x12,
+    0x99, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0xaa,
+    0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x12
 };
 
 static const unsigned char secret_1[32] = {
diff -Nru openssl-3.5.6/test/quic_wire_test.c openssl-3.5.7/test/quic_wire_test.c
--- openssl-3.5.6/test/quic_wire_test.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/quic_wire_test.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -1625,27 +1625,19 @@
 
 /* is_minimal=0 test */
 static const unsigned char non_minimal_1[] = {
-    0x40,
-    0x00,
+    0x40, 0x00
 };
 
 static const unsigned char non_minimal_2[] = {
-    0x40,
-    0x3F,
+    0x40, 0x3F
 };
 
 static const unsigned char non_minimal_3[] = {
-    0x80,
-    0x00,
-    0x00,
-    0x00,
+    0x80, 0x00, 0x00, 0x00
 };
 
 static const unsigned char non_minimal_4[] = {
-    0x80,
-    0x00,
-    0x3F,
-    0xFF,
+    0x80, 0x00, 0x3F, 0xFF
 };
 
 static const unsigned char non_minimal_5[] = {
diff -Nru openssl-3.5.6/test/radix/quic_tests.c openssl-3.5.7/test/radix/quic_tests.c
--- openssl-3.5.6/test/radix/quic_tests.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/radix/quic_tests.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -294,13 +294,196 @@
     OP_WRITE_FAIL(C);
 }
 
+struct mutcbk_ctx {
+    QUIC_PKT_HDR mutctx_qhdrin;
+    OSSL_QTX_IOVEC mutctx_iov;
+    const unsigned char *mutctx_inject;
+    size_t mutctx_inject_sz;
+    int mutctx_done;
+};
+
+static int mutcbk_inject_frames(const QUIC_PKT_HDR *hdrin,
+    const OSSL_QTX_IOVEC *iovecin, size_t numin, QUIC_PKT_HDR **hdrout,
+    const OSSL_QTX_IOVEC **iovecout, size_t *numout, void *arg)
+{
+    struct mutcbk_ctx *mutctx = (struct mutcbk_ctx *)arg;
+    size_t i;
+    size_t grow_allowance = 1200; /* QUIC_MIN_INITIAL_DGRAM_LEN */
+    size_t bufsz = 0;
+    char *buf;
+
+    /*
+     * make injection callback a one shot event,
+     * callback is invoked for every packet we
+     * want to modify only one packet here.
+     */
+    if (mutctx->mutctx_done)
+        return 0;
+
+    mutctx->mutctx_done = 1;
+
+    for (i = 0; i < numin; i++)
+        bufsz += iovecin[i].buf_len;
+
+    mutctx->mutctx_iov.buf_len = bufsz; /* keeps old size */
+    grow_allowance -= (bufsz < grow_allowance) ? bufsz : grow_allowance;
+    /* AEAD tag (16 bytes) + long header (14 bytes) */
+    grow_allowance -= (30 < grow_allowance) ? 30 : grow_allowance;
+
+    grow_allowance -= (hdrin->dst_conn_id.id_len < grow_allowance) ? hdrin->dst_conn_id.id_len : grow_allowance;
+    grow_allowance -= (hdrin->src_conn_id.id_len < grow_allowance) ? hdrin->src_conn_id.id_len : grow_allowance;
+
+    if (grow_allowance == 0) {
+        TEST_info("mutcbk_inject_frames() not enough space to inject");
+        return 0;
+    }
+    bufsz += grow_allowance;
+
+    /* discard const */
+    OPENSSL_free((char *)mutctx->mutctx_iov.buf);
+    mutctx->mutctx_iov.buf = OPENSSL_malloc(bufsz);
+    /* discard const */
+    buf = (char *)mutctx->mutctx_iov.buf;
+    if (buf == NULL) {
+        TEST_info("mutcbk_inject_frames() OPENSSL_malloc() failed");
+        return 0;
+    }
+
+    for (i = 0; i < numin; i++) {
+        memcpy(buf, iovecin[i].buf, iovecin[i].buf_len);
+        buf += iovecin[i].buf_len;
+    }
+
+    /* discard const */
+    buf = (char *)mutctx->mutctx_iov.buf;
+    if (mutctx->mutctx_inject != NULL) {
+        memmove(buf + mutctx->mutctx_inject_sz, buf,
+            mutctx->mutctx_iov.buf_len);
+        memcpy(buf, mutctx->mutctx_inject, mutctx->mutctx_inject_sz);
+    }
+    /*
+     * perhaps needed to have not looked at yet
+     */
+    mutctx->mutctx_qhdrin = *hdrin;
+    *hdrout = &mutctx->mutctx_qhdrin;
+    mutctx->mutctx_iov.buf_len += mutctx->mutctx_inject_sz;
+    *iovecout = &mutctx->mutctx_iov;
+    *numout = 1;
+
+    return 1;
+}
+
+static void mutcbk_finish_injecct_frames(void *arg)
+{
+    struct mutcbk_ctx *mutctx = (struct mutcbk_ctx *)arg;
+
+    OPENSSL_free((char *)mutctx->mutctx_iov.buf);
+    mutctx->mutctx_iov.buf = NULL;
+}
+
+/* 16 path challenge frames */
+#define PATH_CHALLENGE_FRAMES \
+    "\x1a"                    \
+    "ABCDEFGH"                \
+    "\x1a"                    \
+    "ABCDEFGH"                \
+    "\x1a"                    \
+    "ABCDEFGH"                \
+    "\x1a"                    \
+    "ABCDEFGH"                \
+    "\x1a"                    \
+    "ABCDEFGH"                \
+    "\x1a"                    \
+    "ABCDEFGH"                \
+    "\x1a"                    \
+    "ABCDEFGH"                \
+    "\x1a"                    \
+    "ABCDEFGH"                \
+    "\x1a"                    \
+    "ABCDEFGH"                \
+    "\x1a"                    \
+    "ABCDEFGH"                \
+    "\x1a"                    \
+    "ABCDEFGH"                \
+    "\x1a"                    \
+    "ABCDEFGH"                \
+    "\x1a"                    \
+    "ABCDEFGH"                \
+    "\x1a"                    \
+    "ABCDEFGH"                \
+    "\x1a"                    \
+    "ABCDEFGH"                \
+    "\x1a"                    \
+    "ABCDEFGH"
+
+DEF_FUNC(mount_flood)
+{
+    int ok = 0;
+    SSL *ssl;
+    QUIC_CHANNEL *ch;
+    static struct mutcbk_ctx mutctx = { 0 };
+    static const unsigned char *inject_frames = (const unsigned char *)PATH_CHALLENGE_FRAMES;
+
+    mutctx.mutctx_inject = inject_frames;
+    mutctx.mutctx_inject_sz = sizeof(PATH_CHALLENGE_FRAMES) - 1;
+    REQUIRE_SSL(ssl);
+    ch = ossl_quic_conn_get_channel(ssl);
+    if (!TEST_ptr(ch))
+        goto err;
+
+    if (!TEST_true(ossl_quic_channel_set_mutator(ch, mutcbk_inject_frames,
+            mutcbk_finish_injecct_frames, &mutctx)))
+        goto err;
+    ok = 1;
+err:
+    return ok;
+}
+
+DEF_FUNC(check_flood_stats)
+{
+    int ok = 0;
+    SSL *ssl;
+    QUIC_CHANNEL *ch;
+    uint64_t path_response_count;
+    uint64_t path_challenge_count;
+
+    REQUIRE_SSL(ssl);
+    ch = ossl_quic_conn_get_channel(ssl);
+    if (!TEST_ptr(ch))
+        goto err;
+
+    path_challenge_count = ossl_quic_channel_get_path_challenge_count(ch);
+    path_response_count = ossl_quic_channel_get_path_response_count(ch);
+
+    if (TEST_uint64_t_ne(path_challenge_count, 16))
+        goto err;
+    if (TEST_uint64_t_ne(path_response_count, 1))
+        goto err;
+
+    ok = 1;
+err:
+    return ok;
+}
+
+DEF_SCRIPT(check_pc_flood, "check path challenge flood")
+{
+    OP_SIMPLE_PAIR_CONN();
+    OP_SELECT_SSL(0, C);
+    OP_FUNC(mount_flood);
+    OP_ACCEPT_CONN_WAIT(L, S, 0);
+    OP_WRITE_B(C, "attack");
+    OP_SELECT_SSL(0, S);
+    OP_FUNC(check_flood_stats);
+}
+
 /*
  * List of Test Scripts
  * ============================================================================
  */
 static SCRIPT_INFO *const scripts[] = {
-    USE(simple_conn)
-        USE(simple_thread)
-            USE(ssl_poll)
-                USE(check_cwm)
+    USE(simple_conn),
+    USE(simple_thread),
+    USE(ssl_poll),
+    USE(check_cwm),
+    USE(check_pc_flood),
 };
diff -Nru openssl-3.5.6/test/radix/terp.c openssl-3.5.7/test/radix/terp.c
--- openssl-3.5.6/test/radix/terp.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/radix/terp.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -858,4 +858,4 @@
 }
 
 #define SCRIPT(name) (&script_info_##name)
-#define USE(name) SCRIPT(name),
+#define USE(name) SCRIPT(name)
diff -Nru openssl-3.5.6/test/recipes/70-test_tls13ticket.t openssl-3.5.7/test/recipes/70-test_tls13ticket.t
--- openssl-3.5.6/test/recipes/70-test_tls13ticket.t	1970-01-01 01:00:00.000000000 +0100
+++ openssl-3.5.7/test/recipes/70-test_tls13ticket.t	2026-06-09 13:54:25.000000000 +0200
@@ -0,0 +1,26 @@
+#! /usr/bin/env perl
+# Copyright 2026 The OpenSSL Project Authors. All Rights Reserved.
+#
+# Licensed under the Apache License 2.0 (the "License").  You may not use
+# this file except in compliance with the License.  You can obtain a copy
+# in the file LICENSE in the source distribution or at
+# https://www.openssl.org/source/license.html
+
+use OpenSSL::Test::Simple;
+use OpenSSL::Test qw/:DEFAULT srctop_file/;
+use OpenSSL::Test::Utils qw(disabled);
+
+setup("test_tls13ticket");
+
+plan skip_all => "needs TLSv1.3 enabled"
+    if disabled("tls1_3");
+
+plan skip_all => "needs ECX enabled"
+    if disabled("ecx");
+
+
+plan tests => 1;
+
+ok(run(test(["tls13ticket_test", srctop_file("apps", "server.pem"),
+             srctop_file("apps", "server.pem")])),
+   "running tls13ticket_test");
Binary files /home/bigeasy/tmp/cNMftzjEbx/openssl-3.5.6/test/recipes/80-test_cmsapi_data/cms_pwri_kek_oob.der and /home/bigeasy/tmp/L2YNVo8E9M/openssl-3.5.7/test/recipes/80-test_cmsapi_data/cms_pwri_kek_oob.der differ
diff -Nru openssl-3.5.6/test/recipes/80-test_cmsapi.t openssl-3.5.7/test/recipes/80-test_cmsapi.t
--- openssl-3.5.6/test/recipes/80-test_cmsapi.t	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/recipes/80-test_cmsapi.t	2026-06-09 13:54:25.000000000 +0200
@@ -19,5 +19,6 @@
 ok(run(test(["cmsapitest", srctop_file("test", "certs", "servercert.pem"),
              srctop_file("test", "certs", "serverkey.pem"),
              srctop_file("test", "recipes", "80-test_cmsapi_data", "encryptedData.der"),
-             srctop_file("test", "recipes", "80-test_cmsapi_data", "encDataWithTooLongIV.pem")])),
+             srctop_file("test", "recipes", "80-test_cmsapi_data", "encDataWithTooLongIV.pem"),
+             srctop_file("test", "recipes", "80-test_cmsapi_data", "cms_pwri_kek_oob.der")])),
              "running cmsapitest");
diff -Nru openssl-3.5.6/test/recipes/80-test_cms.t openssl-3.5.7/test/recipes/80-test_cms.t
--- openssl-3.5.6/test/recipes/80-test_cms.t	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/recipes/80-test_cms.t	2026-06-09 13:54:25.000000000 +0200
@@ -53,7 +53,7 @@
 
 $no_rc2 = 1 if disabled("legacy");
 
-plan tests => 34;
+plan tests => 36;
 
 ok(run(test(["pkcs7_test"])), "test pkcs7");
 
@@ -1247,6 +1247,23 @@
        "fail verify CMS signature with code signing certificate for purpose smime_sign");
 };
 
+# Regression test for PKCS7_verify() ownership handling when
+# digestAlgorithms is an empty SET.
+# The malformed structure must fail cleanly without crashing or
+# triggering use-after-free behaviour.
+with({ exit_checker => sub { return shift == 4; } },
+    sub {
+        ok(run(app([
+                'openssl', 'smime',
+                '-verify',
+                '-noverify',
+                '-in',
+                srctop_file('test', 'smime-eml',
+                            'pkcs7-empty-digest-set.eml'),
+            ])),
+           "Check empty digestAlgorithms SET is handled safely");
+    });
+
 # Test case for missing MD algorithm (must not segfault)
 
 with({ exit_checker => sub { return shift == 4; } },
@@ -1533,3 +1550,22 @@
            "accept CMS verify with SLH-DSA-SHAKE-256s");
     }
 };
+
+# Regression test for NULL dereference in PWRI decrypt path
+# when optional keyDerivationAlgorithm is omitted.
+subtest "PWRI missing keyDerivationAlgorithm regression" => sub {
+    plan tests => 1;
+
+    with({ exit_checker => sub { return shift == 4; } }, sub {
+        ok(run(app([
+            "openssl", "cms", @prov,
+            "-decrypt",
+            "-inform", "DER",
+            "-in",
+            srctop_file('test', 'cms-msg', 'missing-kdf.der'),
+            "-out", "pwri-out.txt",
+            "-pwri_password", "secret"])),
+        "missing keyDerivationAlgorithm is rejected");
+    });
+};
+
Binary files /home/bigeasy/tmp/cNMftzjEbx/openssl-3.5.6/test/recipes/80-test_pkcs12_data/pbmac1_256_256.bad-key-len.p12 and /home/bigeasy/tmp/L2YNVo8E9M/openssl-3.5.7/test/recipes/80-test_pkcs12_data/pbmac1_256_256.bad-key-len.p12 differ
Binary files /home/bigeasy/tmp/cNMftzjEbx/openssl-3.5.6/test/recipes/80-test_pkcs12_data/pbmac1_256_256.good-shorter-key-len.p12 and /home/bigeasy/tmp/L2YNVo8E9M/openssl-3.5.7/test/recipes/80-test_pkcs12_data/pbmac1_256_256.good-shorter-key-len.p12 differ
diff -Nru openssl-3.5.6/test/recipes/80-test_pkcs12.t openssl-3.5.7/test/recipes/80-test_pkcs12.t
--- openssl-3.5.6/test/recipes/80-test_pkcs12.t	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/recipes/80-test_pkcs12.t	2026-06-09 13:54:25.000000000 +0200
@@ -56,7 +56,7 @@
 
 my $no_fips = disabled('fips') || ($ENV{NO_FIPS} // 0);
 
-plan tests => $no_fips ? 53 : 59;
+plan tests => $no_fips ? 55 : 61;
 
 # Test different PKCS#12 formats
 ok(run(test(["pkcs12_format_test"])), "test pkcs12 formats");
@@ -205,8 +205,11 @@
     }
 }
 
-# Test pbmac1 pkcs12 good files, RFC 9579
-for my $file ("pbmac1_256_256.good.p12", "pbmac1_512_256.good.p12", "pbmac1_512_512.good.p12")
+# Test pbmac1 pkcs12 good files, RFC 9579, and one extra with shorter key
+# length
+for my $file ("pbmac1_256_256.good.p12", "pbmac1_512_256.good.p12",
+              "pbmac1_512_512.good.p12",
+              "pbmac1_256_256.good-shorter-key-len.p12")
 {
     my $path = srctop_file("test", "recipes", "80-test_pkcs12_data", $file);
     ok(run(app(["openssl", "pkcs12", "-in", $path, "-password", "pass:1234", "-noenc"])),
@@ -235,12 +238,12 @@
     }
 }
 
-# Test pbmac1 pkcs12 bad files, RFC 9579 and CVE-2025-11187
+# Test pbmac1 pkcs12 bad files, RFC 9579, CVE-2025-11187 and CVE-2026-34181
 for my $file ("pbmac1_256_256.bad-iter.p12", "pbmac1_256_256.bad-salt.p12",
               "pbmac1_256_256.no-len.p12", "pbmac1_256_256.bad-len.p12",
               "pbmac1_256_256.bad-salt-type.p12", "pbmac1_256_256.negative-len.p12",
               "pbmac1_256_256.no-salt.p12", "pbmac1_256_256.very-big-len.p12",
-              "pbmac1_256_256.zero-len.p12")
+              "pbmac1_256_256.zero-len.p12", "pbmac1_256_256.bad-key-len.p12")
 {
     my $path = srctop_file("test", "recipes", "80-test_pkcs12_data", $file);
     with({ exit_checker => sub { return shift == 1; } },
diff -Nru openssl-3.5.6/test/siphash_internal_test.c openssl-3.5.7/test/siphash_internal_test.c
--- openssl-3.5.6/test/siphash_internal_test.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/siphash_internal_test.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -36,1798 +36,134 @@
 /* From C reference: https://131002.net/siphash/ */
 
 static TESTDATA tests[] = {
-    { 0, { 8, {
-                  0x31,
-                  0x0e,
-                  0x0e,
-                  0xdd,
-                  0x47,
-                  0xdb,
-                  0x6f,
-                  0x72,
-              } } },
-    { 1, { 8, {
-                  0xfd,
-                  0x67,
-                  0xdc,
-                  0x93,
-                  0xc5,
-                  0x39,
-                  0xf8,
-                  0x74,
-              } } },
-    { 2, { 8, {
-                  0x5a,
-                  0x4f,
-                  0xa9,
-                  0xd9,
-                  0x09,
-                  0x80,
-                  0x6c,
-                  0x0d,
-              } } },
-    { 3, { 8, {
-                  0x2d,
-                  0x7e,
-                  0xfb,
-                  0xd7,
-                  0x96,
-                  0x66,
-                  0x67,
-                  0x85,
-              } } },
-    { 4, { 8, {
-                  0xb7,
-                  0x87,
-                  0x71,
-                  0x27,
-                  0xe0,
-                  0x94,
-                  0x27,
-                  0xcf,
-              } } },
-    { 5, { 8, {
-                  0x8d,
-                  0xa6,
-                  0x99,
-                  0xcd,
-                  0x64,
-                  0x55,
-                  0x76,
-                  0x18,
-              } } },
-    { 6, { 8, {
-                  0xce,
-                  0xe3,
-                  0xfe,
-                  0x58,
-                  0x6e,
-                  0x46,
-                  0xc9,
-                  0xcb,
-              } } },
-    { 7, { 8, {
-                  0x37,
-                  0xd1,
-                  0x01,
-                  0x8b,
-                  0xf5,
-                  0x00,
-                  0x02,
-                  0xab,
-              } } },
-    { 8, { 8, {
-                  0x62,
-                  0x24,
-                  0x93,
-                  0x9a,
-                  0x79,
-                  0xf5,
-                  0xf5,
-                  0x93,
-              } } },
-    { 9, { 8, {
-                  0xb0,
-                  0xe4,
-                  0xa9,
-                  0x0b,
-                  0xdf,
-                  0x82,
-                  0x00,
-                  0x9e,
-              } } },
-    { 10, { 8, {
-                   0xf3,
-                   0xb9,
-                   0xdd,
-                   0x94,
-                   0xc5,
-                   0xbb,
-                   0x5d,
-                   0x7a,
-               } } },
-    { 11, { 8, {
-                   0xa7,
-                   0xad,
-                   0x6b,
-                   0x22,
-                   0x46,
-                   0x2f,
-                   0xb3,
-                   0xf4,
-               } } },
-    { 12, { 8, {
-                   0xfb,
-                   0xe5,
-                   0x0e,
-                   0x86,
-                   0xbc,
-                   0x8f,
-                   0x1e,
-                   0x75,
-               } } },
-    { 13, { 8, {
-                   0x90,
-                   0x3d,
-                   0x84,
-                   0xc0,
-                   0x27,
-                   0x56,
-                   0xea,
-                   0x14,
-               } } },
-    { 14, { 8, {
-                   0xee,
-                   0xf2,
-                   0x7a,
-                   0x8e,
-                   0x90,
-                   0xca,
-                   0x23,
-                   0xf7,
-               } } },
-    { 15, { 8, {
-                   0xe5,
-                   0x45,
-                   0xbe,
-                   0x49,
-                   0x61,
-                   0xca,
-                   0x29,
-                   0xa1,
-               } } },
-    { 16, { 8, {
-                   0xdb,
-                   0x9b,
-                   0xc2,
-                   0x57,
-                   0x7f,
-                   0xcc,
-                   0x2a,
-                   0x3f,
-               } } },
-    { 17, { 8, {
-                   0x94,
-                   0x47,
-                   0xbe,
-                   0x2c,
-                   0xf5,
-                   0xe9,
-                   0x9a,
-                   0x69,
-               } } },
-    { 18, { 8, {
-                   0x9c,
-                   0xd3,
-                   0x8d,
-                   0x96,
-                   0xf0,
-                   0xb3,
-                   0xc1,
-                   0x4b,
-               } } },
-    { 19, { 8, {
-                   0xbd,
-                   0x61,
-                   0x79,
-                   0xa7,
-                   0x1d,
-                   0xc9,
-                   0x6d,
-                   0xbb,
-               } } },
-    { 20, { 8, {
-                   0x98,
-                   0xee,
-                   0xa2,
-                   0x1a,
-                   0xf2,
-                   0x5c,
-                   0xd6,
-                   0xbe,
-               } } },
-    { 21, { 8, {
-                   0xc7,
-                   0x67,
-                   0x3b,
-                   0x2e,
-                   0xb0,
-                   0xcb,
-                   0xf2,
-                   0xd0,
-               } } },
-    { 22, { 8, {
-                   0x88,
-                   0x3e,
-                   0xa3,
-                   0xe3,
-                   0x95,
-                   0x67,
-                   0x53,
-                   0x93,
-               } } },
-    { 23, { 8, {
-                   0xc8,
-                   0xce,
-                   0x5c,
-                   0xcd,
-                   0x8c,
-                   0x03,
-                   0x0c,
-                   0xa8,
-               } } },
-    { 24, { 8, {
-                   0x94,
-                   0xaf,
-                   0x49,
-                   0xf6,
-                   0xc6,
-                   0x50,
-                   0xad,
-                   0xb8,
-               } } },
-    { 25, { 8, {
-                   0xea,
-                   0xb8,
-                   0x85,
-                   0x8a,
-                   0xde,
-                   0x92,
-                   0xe1,
-                   0xbc,
-               } } },
-    { 26, { 8, {
-                   0xf3,
-                   0x15,
-                   0xbb,
-                   0x5b,
-                   0xb8,
-                   0x35,
-                   0xd8,
-                   0x17,
-               } } },
-    { 27, { 8, {
-                   0xad,
-                   0xcf,
-                   0x6b,
-                   0x07,
-                   0x63,
-                   0x61,
-                   0x2e,
-                   0x2f,
-               } } },
-    { 28, { 8, {
-                   0xa5,
-                   0xc9,
-                   0x1d,
-                   0xa7,
-                   0xac,
-                   0xaa,
-                   0x4d,
-                   0xde,
-               } } },
-    { 29, { 8, {
-                   0x71,
-                   0x65,
-                   0x95,
-                   0x87,
-                   0x66,
-                   0x50,
-                   0xa2,
-                   0xa6,
-               } } },
-    { 30, { 8, {
-                   0x28,
-                   0xef,
-                   0x49,
-                   0x5c,
-                   0x53,
-                   0xa3,
-                   0x87,
-                   0xad,
-               } } },
-    { 31, { 8, {
-                   0x42,
-                   0xc3,
-                   0x41,
-                   0xd8,
-                   0xfa,
-                   0x92,
-                   0xd8,
-                   0x32,
-               } } },
-    { 32, { 8, {
-                   0xce,
-                   0x7c,
-                   0xf2,
-                   0x72,
-                   0x2f,
-                   0x51,
-                   0x27,
-                   0x71,
-               } } },
-    { 33, { 8, {
-                   0xe3,
-                   0x78,
-                   0x59,
-                   0xf9,
-                   0x46,
-                   0x23,
-                   0xf3,
-                   0xa7,
-               } } },
-    { 34, { 8, {
-                   0x38,
-                   0x12,
-                   0x05,
-                   0xbb,
-                   0x1a,
-                   0xb0,
-                   0xe0,
-                   0x12,
-               } } },
-    { 35, { 8, {
-                   0xae,
-                   0x97,
-                   0xa1,
-                   0x0f,
-                   0xd4,
-                   0x34,
-                   0xe0,
-                   0x15,
-               } } },
-    { 36, { 8, {
-                   0xb4,
-                   0xa3,
-                   0x15,
-                   0x08,
-                   0xbe,
-                   0xff,
-                   0x4d,
-                   0x31,
-               } } },
-    { 37, { 8, {
-                   0x81,
-                   0x39,
-                   0x62,
-                   0x29,
-                   0xf0,
-                   0x90,
-                   0x79,
-                   0x02,
-               } } },
-    { 38, { 8, {
-                   0x4d,
-                   0x0c,
-                   0xf4,
-                   0x9e,
-                   0xe5,
-                   0xd4,
-                   0xdc,
-                   0xca,
-               } } },
-    { 39, { 8, {
-                   0x5c,
-                   0x73,
-                   0x33,
-                   0x6a,
-                   0x76,
-                   0xd8,
-                   0xbf,
-                   0x9a,
-               } } },
-    { 40, { 8, {
-                   0xd0,
-                   0xa7,
-                   0x04,
-                   0x53,
-                   0x6b,
-                   0xa9,
-                   0x3e,
-                   0x0e,
-               } } },
-    { 41, { 8, {
-                   0x92,
-                   0x59,
-                   0x58,
-                   0xfc,
-                   0xd6,
-                   0x42,
-                   0x0c,
-                   0xad,
-               } } },
-    { 42, { 8, {
-                   0xa9,
-                   0x15,
-                   0xc2,
-                   0x9b,
-                   0xc8,
-                   0x06,
-                   0x73,
-                   0x18,
-               } } },
-    { 43, { 8, {
-                   0x95,
-                   0x2b,
-                   0x79,
-                   0xf3,
-                   0xbc,
-                   0x0a,
-                   0xa6,
-                   0xd4,
-               } } },
-    { 44, { 8, {
-                   0xf2,
-                   0x1d,
-                   0xf2,
-                   0xe4,
-                   0x1d,
-                   0x45,
-                   0x35,
-                   0xf9,
-               } } },
-    { 45, { 8, {
-                   0x87,
-                   0x57,
-                   0x75,
-                   0x19,
-                   0x04,
-                   0x8f,
-                   0x53,
-                   0xa9,
-               } } },
-    { 46, { 8, {
-                   0x10,
-                   0xa5,
-                   0x6c,
-                   0xf5,
-                   0xdf,
-                   0xcd,
-                   0x9a,
-                   0xdb,
-               } } },
-    { 47, { 8, {
-                   0xeb,
-                   0x75,
-                   0x09,
-                   0x5c,
-                   0xcd,
-                   0x98,
-                   0x6c,
-                   0xd0,
-               } } },
-    { 48, { 8, {
-                   0x51,
-                   0xa9,
-                   0xcb,
-                   0x9e,
-                   0xcb,
-                   0xa3,
-                   0x12,
-                   0xe6,
-               } } },
-    { 49, { 8, {
-                   0x96,
-                   0xaf,
-                   0xad,
-                   0xfc,
-                   0x2c,
-                   0xe6,
-                   0x66,
-                   0xc7,
-               } } },
-    { 50, { 8, {
-                   0x72,
-                   0xfe,
-                   0x52,
-                   0x97,
-                   0x5a,
-                   0x43,
-                   0x64,
-                   0xee,
-               } } },
-    { 51, { 8, {
-                   0x5a,
-                   0x16,
-                   0x45,
-                   0xb2,
-                   0x76,
-                   0xd5,
-                   0x92,
-                   0xa1,
-               } } },
-    { 52, { 8, {
-                   0xb2,
-                   0x74,
-                   0xcb,
-                   0x8e,
-                   0xbf,
-                   0x87,
-                   0x87,
-                   0x0a,
-               } } },
-    { 53, { 8, {
-                   0x6f,
-                   0x9b,
-                   0xb4,
-                   0x20,
-                   0x3d,
-                   0xe7,
-                   0xb3,
-                   0x81,
-               } } },
-    { 54, { 8, {
-                   0xea,
-                   0xec,
-                   0xb2,
-                   0xa3,
-                   0x0b,
-                   0x22,
-                   0xa8,
-                   0x7f,
-               } } },
-    { 55, { 8, {
-                   0x99,
-                   0x24,
-                   0xa4,
-                   0x3c,
-                   0xc1,
-                   0x31,
-                   0x57,
-                   0x24,
-               } } },
-    { 56, { 8, {
-                   0xbd,
-                   0x83,
-                   0x8d,
-                   0x3a,
-                   0xaf,
-                   0xbf,
-                   0x8d,
-                   0xb7,
-               } } },
-    { 57, { 8, {
-                   0x0b,
-                   0x1a,
-                   0x2a,
-                   0x32,
-                   0x65,
-                   0xd5,
-                   0x1a,
-                   0xea,
-               } } },
-    { 58, { 8, {
-                   0x13,
-                   0x50,
-                   0x79,
-                   0xa3,
-                   0x23,
-                   0x1c,
-                   0xe6,
-                   0x60,
-               } } },
-    { 59, { 8, {
-                   0x93,
-                   0x2b,
-                   0x28,
-                   0x46,
-                   0xe4,
-                   0xd7,
-                   0x06,
-                   0x66,
-               } } },
-    { 60, { 8, {
-                   0xe1,
-                   0x91,
-                   0x5f,
-                   0x5c,
-                   0xb1,
-                   0xec,
-                   0xa4,
-                   0x6c,
-               } } },
-    { 61, { 8, {
-                   0xf3,
-                   0x25,
-                   0x96,
-                   0x5c,
-                   0xa1,
-                   0x6d,
-                   0x62,
-                   0x9f,
-               } } },
-    { 62, { 8, {
-                   0x57,
-                   0x5f,
-                   0xf2,
-                   0x8e,
-                   0x60,
-                   0x38,
-                   0x1b,
-                   0xe5,
-               } } },
-    { 63, { 8, {
-                   0x72,
-                   0x45,
-                   0x06,
-                   0xeb,
-                   0x4c,
-                   0x32,
-                   0x8a,
-                   0x95,
-               } } },
-    { 0, { 16, {
-                   0xa3,
-                   0x81,
-                   0x7f,
-                   0x04,
-                   0xba,
-                   0x25,
-                   0xa8,
-                   0xe6,
-                   0x6d,
-                   0xf6,
-                   0x72,
-                   0x14,
-                   0xc7,
-                   0x55,
-                   0x02,
-                   0x93,
-               } } },
-    { 1, { 16, {
-                   0xda,
-                   0x87,
-                   0xc1,
-                   0xd8,
-                   0x6b,
-                   0x99,
-                   0xaf,
-                   0x44,
-                   0x34,
-                   0x76,
-                   0x59,
-                   0x11,
-                   0x9b,
-                   0x22,
-                   0xfc,
-                   0x45,
-               } } },
-    { 2, { 16, {
-                   0x81,
-                   0x77,
-                   0x22,
-                   0x8d,
-                   0xa4,
-                   0xa4,
-                   0x5d,
-                   0xc7,
-                   0xfc,
-                   0xa3,
-                   0x8b,
-                   0xde,
-                   0xf6,
-                   0x0a,
-                   0xff,
-                   0xe4,
-               } } },
-    { 3, { 16, {
-                   0x9c,
-                   0x70,
-                   0xb6,
-                   0x0c,
-                   0x52,
-                   0x67,
-                   0xa9,
-                   0x4e,
-                   0x5f,
-                   0x33,
-                   0xb6,
-                   0xb0,
-                   0x29,
-                   0x85,
-                   0xed,
-                   0x51,
-               } } },
-    { 4, { 16, {
-                   0xf8,
-                   0x81,
-                   0x64,
-                   0xc1,
-                   0x2d,
-                   0x9c,
-                   0x8f,
-                   0xaf,
-                   0x7d,
-                   0x0f,
-                   0x6e,
-                   0x7c,
-                   0x7b,
-                   0xcd,
-                   0x55,
-                   0x79,
-               } } },
-    { 5, { 16, {
-                   0x13,
-                   0x68,
-                   0x87,
-                   0x59,
-                   0x80,
-                   0x77,
-                   0x6f,
-                   0x88,
-                   0x54,
-                   0x52,
-                   0x7a,
-                   0x07,
-                   0x69,
-                   0x0e,
-                   0x96,
-                   0x27,
-               } } },
-    { 6, { 16, {
-                   0x14,
-                   0xee,
-                   0xca,
-                   0x33,
-                   0x8b,
-                   0x20,
-                   0x86,
-                   0x13,
-                   0x48,
-                   0x5e,
-                   0xa0,
-                   0x30,
-                   0x8f,
-                   0xd7,
-                   0xa1,
-                   0x5e,
-               } } },
-    { 7, { 16, {
-                   0xa1,
-                   0xf1,
-                   0xeb,
-                   0xbe,
-                   0xd8,
-                   0xdb,
-                   0xc1,
-                   0x53,
-                   0xc0,
-                   0xb8,
-                   0x4a,
-                   0xa6,
-                   0x1f,
-                   0xf0,
-                   0x82,
-                   0x39,
-               } } },
-    { 8, { 16, {
-                   0x3b,
-                   0x62,
-                   0xa9,
-                   0xba,
-                   0x62,
-                   0x58,
-                   0xf5,
-                   0x61,
-                   0x0f,
-                   0x83,
-                   0xe2,
-                   0x64,
-                   0xf3,
-                   0x14,
-                   0x97,
-                   0xb4,
-               } } },
-    { 9, { 16, {
-                   0x26,
-                   0x44,
-                   0x99,
-                   0x06,
-                   0x0a,
-                   0xd9,
-                   0xba,
-                   0xab,
-                   0xc4,
-                   0x7f,
-                   0x8b,
-                   0x02,
-                   0xbb,
-                   0x6d,
-                   0x71,
-                   0xed,
-               } } },
-    { 10, { 16, {
-                    0x00,
-                    0x11,
-                    0x0d,
-                    0xc3,
-                    0x78,
-                    0x14,
-                    0x69,
-                    0x56,
-                    0xc9,
-                    0x54,
-                    0x47,
-                    0xd3,
-                    0xf3,
-                    0xd0,
-                    0xfb,
-                    0xba,
-                } } },
-    { 11, { 16, {
-                    0x01,
-                    0x51,
-                    0xc5,
-                    0x68,
-                    0x38,
-                    0x6b,
-                    0x66,
-                    0x77,
-                    0xa2,
-                    0xb4,
-                    0xdc,
-                    0x6f,
-                    0x81,
-                    0xe5,
-                    0xdc,
-                    0x18,
-                } } },
-    { 12, { 16, {
-                    0xd6,
-                    0x26,
-                    0xb2,
-                    0x66,
-                    0x90,
-                    0x5e,
-                    0xf3,
-                    0x58,
-                    0x82,
-                    0x63,
-                    0x4d,
-                    0xf6,
-                    0x85,
-                    0x32,
-                    0xc1,
-                    0x25,
-                } } },
-    { 13, { 16, {
-                    0x98,
-                    0x69,
-                    0xe2,
-                    0x47,
-                    0xe9,
-                    0xc0,
-                    0x8b,
-                    0x10,
-                    0xd0,
-                    0x29,
-                    0x93,
-                    0x4f,
-                    0xc4,
-                    0xb9,
-                    0x52,
-                    0xf7,
-                } } },
-    { 14, { 16, {
-                    0x31,
-                    0xfc,
-                    0xef,
-                    0xac,
-                    0x66,
-                    0xd7,
-                    0xde,
-                    0x9c,
-                    0x7e,
-                    0xc7,
-                    0x48,
-                    0x5f,
-                    0xe4,
-                    0x49,
-                    0x49,
-                    0x02,
-                } } },
-    { 15, { 16, {
-                    0x54,
-                    0x93,
-                    0xe9,
-                    0x99,
-                    0x33,
-                    0xb0,
-                    0xa8,
-                    0x11,
-                    0x7e,
-                    0x08,
-                    0xec,
-                    0x0f,
-                    0x97,
-                    0xcf,
-                    0xc3,
-                    0xd9,
-                } } },
-    { 16, { 16, {
-                    0x6e,
-                    0xe2,
-                    0xa4,
-                    0xca,
-                    0x67,
-                    0xb0,
-                    0x54,
-                    0xbb,
-                    0xfd,
-                    0x33,
-                    0x15,
-                    0xbf,
-                    0x85,
-                    0x23,
-                    0x05,
-                    0x77,
-                } } },
-    { 17, { 16, {
-                    0x47,
-                    0x3d,
-                    0x06,
-                    0xe8,
-                    0x73,
-                    0x8d,
-                    0xb8,
-                    0x98,
-                    0x54,
-                    0xc0,
-                    0x66,
-                    0xc4,
-                    0x7a,
-                    0xe4,
-                    0x77,
-                    0x40,
-                } } },
-    { 18, { 16, {
-                    0xa4,
-                    0x26,
-                    0xe5,
-                    0xe4,
-                    0x23,
-                    0xbf,
-                    0x48,
-                    0x85,
-                    0x29,
-                    0x4d,
-                    0xa4,
-                    0x81,
-                    0xfe,
-                    0xae,
-                    0xf7,
-                    0x23,
-                } } },
-    { 19, { 16, {
-                    0x78,
-                    0x01,
-                    0x77,
-                    0x31,
-                    0xcf,
-                    0x65,
-                    0xfa,
-                    0xb0,
-                    0x74,
-                    0xd5,
-                    0x20,
-                    0x89,
-                    0x52,
-                    0x51,
-                    0x2e,
-                    0xb1,
-                } } },
-    { 20, { 16, {
-                    0x9e,
-                    0x25,
-                    0xfc,
-                    0x83,
-                    0x3f,
-                    0x22,
-                    0x90,
-                    0x73,
-                    0x3e,
-                    0x93,
-                    0x44,
-                    0xa5,
-                    0xe8,
-                    0x38,
-                    0x39,
-                    0xeb,
-                } } },
-    { 21, { 16, {
-                    0x56,
-                    0x8e,
-                    0x49,
-                    0x5a,
-                    0xbe,
-                    0x52,
-                    0x5a,
-                    0x21,
-                    0x8a,
-                    0x22,
-                    0x14,
-                    0xcd,
-                    0x3e,
-                    0x07,
-                    0x1d,
-                    0x12,
-                } } },
-    { 22, { 16, {
-                    0x4a,
-                    0x29,
-                    0xb5,
-                    0x45,
-                    0x52,
-                    0xd1,
-                    0x6b,
-                    0x9a,
-                    0x46,
-                    0x9c,
-                    0x10,
-                    0x52,
-                    0x8e,
-                    0xff,
-                    0x0a,
-                    0xae,
-                } } },
-    { 23, { 16, {
-                    0xc9,
-                    0xd1,
-                    0x84,
-                    0xdd,
-                    0xd5,
-                    0xa9,
-                    0xf5,
-                    0xe0,
-                    0xcf,
-                    0x8c,
-                    0xe2,
-                    0x9a,
-                    0x9a,
-                    0xbf,
-                    0x69,
-                    0x1c,
-                } } },
-    { 24, { 16, {
-                    0x2d,
-                    0xb4,
-                    0x79,
-                    0xae,
-                    0x78,
-                    0xbd,
-                    0x50,
-                    0xd8,
-                    0x88,
-                    0x2a,
-                    0x8a,
-                    0x17,
-                    0x8a,
-                    0x61,
-                    0x32,
-                    0xad,
-                } } },
-    { 25, { 16, {
-                    0x8e,
-                    0xce,
-                    0x5f,
-                    0x04,
-                    0x2d,
-                    0x5e,
-                    0x44,
-                    0x7b,
-                    0x50,
-                    0x51,
-                    0xb9,
-                    0xea,
-                    0xcb,
-                    0x8d,
-                    0x8f,
-                    0x6f,
-                } } },
-    { 26, { 16, {
-                    0x9c,
-                    0x0b,
-                    0x53,
-                    0xb4,
-                    0xb3,
-                    0xc3,
-                    0x07,
-                    0xe8,
-                    0x7e,
-                    0xae,
-                    0xe0,
-                    0x86,
-                    0x78,
-                    0x14,
-                    0x1f,
-                    0x66,
-                } } },
-    { 27, { 16, {
-                    0xab,
-                    0xf2,
-                    0x48,
-                    0xaf,
-                    0x69,
-                    0xa6,
-                    0xea,
-                    0xe4,
-                    0xbf,
-                    0xd3,
-                    0xeb,
-                    0x2f,
-                    0x12,
-                    0x9e,
-                    0xeb,
-                    0x94,
-                } } },
-    { 28, { 16, {
-                    0x06,
-                    0x64,
-                    0xda,
-                    0x16,
-                    0x68,
-                    0x57,
-                    0x4b,
-                    0x88,
-                    0xb9,
-                    0x35,
-                    0xf3,
-                    0x02,
-                    0x73,
-                    0x58,
-                    0xae,
-                    0xf4,
-                } } },
-    { 29, { 16, {
-                    0xaa,
-                    0x4b,
-                    0x9d,
-                    0xc4,
-                    0xbf,
-                    0x33,
-                    0x7d,
-                    0xe9,
-                    0x0c,
-                    0xd4,
-                    0xfd,
-                    0x3c,
-                    0x46,
-                    0x7c,
-                    0x6a,
-                    0xb7,
-                } } },
-    { 30, { 16, {
-                    0xea,
-                    0x5c,
-                    0x7f,
-                    0x47,
-                    0x1f,
-                    0xaf,
-                    0x6b,
-                    0xde,
-                    0x2b,
-                    0x1a,
-                    0xd7,
-                    0xd4,
-                    0x68,
-                    0x6d,
-                    0x22,
-                    0x87,
-                } } },
-    { 31, { 16, {
-                    0x29,
-                    0x39,
-                    0xb0,
-                    0x18,
-                    0x32,
-                    0x23,
-                    0xfa,
-                    0xfc,
-                    0x17,
-                    0x23,
-                    0xde,
-                    0x4f,
-                    0x52,
-                    0xc4,
-                    0x3d,
-                    0x35,
-                } } },
-    { 32, { 16, {
-                    0x7c,
-                    0x39,
-                    0x56,
-                    0xca,
-                    0x5e,
-                    0xea,
-                    0xfc,
-                    0x3e,
-                    0x36,
-                    0x3e,
-                    0x9d,
-                    0x55,
-                    0x65,
-                    0x46,
-                    0xeb,
-                    0x68,
-                } } },
-    { 33, { 16, {
-                    0x77,
-                    0xc6,
-                    0x07,
-                    0x71,
-                    0x46,
-                    0xf0,
-                    0x1c,
-                    0x32,
-                    0xb6,
-                    0xb6,
-                    0x9d,
-                    0x5f,
-                    0x4e,
-                    0xa9,
-                    0xff,
-                    0xcf,
-                } } },
-    { 34, { 16, {
-                    0x37,
-                    0xa6,
-                    0x98,
-                    0x6c,
-                    0xb8,
-                    0x84,
-                    0x7e,
-                    0xdf,
-                    0x09,
-                    0x25,
-                    0xf0,
-                    0xf1,
-                    0x30,
-                    0x9b,
-                    0x54,
-                    0xde,
-                } } },
-    { 35, { 16, {
-                    0xa7,
-                    0x05,
-                    0xf0,
-                    0xe6,
-                    0x9d,
-                    0xa9,
-                    0xa8,
-                    0xf9,
-                    0x07,
-                    0x24,
-                    0x1a,
-                    0x2e,
-                    0x92,
-                    0x3c,
-                    0x8c,
-                    0xc8,
-                } } },
-    { 36, { 16, {
-                    0x3d,
-                    0xc4,
-                    0x7d,
-                    0x1f,
-                    0x29,
-                    0xc4,
-                    0x48,
-                    0x46,
-                    0x1e,
-                    0x9e,
-                    0x76,
-                    0xed,
-                    0x90,
-                    0x4f,
-                    0x67,
-                    0x11,
-                } } },
-    { 37, { 16, {
-                    0x0d,
-                    0x62,
-                    0xbf,
-                    0x01,
-                    0xe6,
-                    0xfc,
-                    0x0e,
-                    0x1a,
-                    0x0d,
-                    0x3c,
-                    0x47,
-                    0x51,
-                    0xc5,
-                    0xd3,
-                    0x69,
-                    0x2b,
-                } } },
-    { 38, { 16, {
-                    0x8c,
-                    0x03,
-                    0x46,
-                    0x8b,
-                    0xca,
-                    0x7c,
-                    0x66,
-                    0x9e,
-                    0xe4,
-                    0xfd,
-                    0x5e,
-                    0x08,
-                    0x4b,
-                    0xbe,
-                    0xe7,
-                    0xb5,
-                } } },
-    { 39, { 16, {
-                    0x52,
-                    0x8a,
-                    0x5b,
-                    0xb9,
-                    0x3b,
-                    0xaf,
-                    0x2c,
-                    0x9c,
-                    0x44,
-                    0x73,
-                    0xcc,
-                    0xe5,
-                    0xd0,
-                    0xd2,
-                    0x2b,
-                    0xd9,
-                } } },
-    { 40, { 16, {
-                    0xdf,
-                    0x6a,
-                    0x30,
-                    0x1e,
-                    0x95,
-                    0xc9,
-                    0x5d,
-                    0xad,
-                    0x97,
-                    0xae,
-                    0x0c,
-                    0xc8,
-                    0xc6,
-                    0x91,
-                    0x3b,
-                    0xd8,
-                } } },
-    { 41, { 16, {
-                    0x80,
-                    0x11,
-                    0x89,
-                    0x90,
-                    0x2c,
-                    0x85,
-                    0x7f,
-                    0x39,
-                    0xe7,
-                    0x35,
-                    0x91,
-                    0x28,
-                    0x5e,
-                    0x70,
-                    0xb6,
-                    0xdb,
-                } } },
-    { 42, { 16, {
-                    0xe6,
-                    0x17,
-                    0x34,
-                    0x6a,
-                    0xc9,
-                    0xc2,
-                    0x31,
-                    0xbb,
-                    0x36,
-                    0x50,
-                    0xae,
-                    0x34,
-                    0xcc,
-                    0xca,
-                    0x0c,
-                    0x5b,
-                } } },
-    { 43, { 16, {
-                    0x27,
-                    0xd9,
-                    0x34,
-                    0x37,
-                    0xef,
-                    0xb7,
-                    0x21,
-                    0xaa,
-                    0x40,
-                    0x18,
-                    0x21,
-                    0xdc,
-                    0xec,
-                    0x5a,
-                    0xdf,
-                    0x89,
-                } } },
-    { 44, { 16, {
-                    0x89,
-                    0x23,
-                    0x7d,
-                    0x9d,
-                    0xed,
-                    0x9c,
-                    0x5e,
-                    0x78,
-                    0xd8,
-                    0xb1,
-                    0xc9,
-                    0xb1,
-                    0x66,
-                    0xcc,
-                    0x73,
-                    0x42,
-                } } },
-    { 45, { 16, {
-                    0x4a,
-                    0x6d,
-                    0x80,
-                    0x91,
-                    0xbf,
-                    0x5e,
-                    0x7d,
-                    0x65,
-                    0x11,
-                    0x89,
-                    0xfa,
-                    0x94,
-                    0xa2,
-                    0x50,
-                    0xb1,
-                    0x4c,
-                } } },
-    { 46, { 16, {
-                    0x0e,
-                    0x33,
-                    0xf9,
-                    0x60,
-                    0x55,
-                    0xe7,
-                    0xae,
-                    0x89,
-                    0x3f,
-                    0xfc,
-                    0x0e,
-                    0x3d,
-                    0xcf,
-                    0x49,
-                    0x29,
-                    0x02,
-                } } },
-    { 47, { 16, {
-                    0xe6,
-                    0x1c,
-                    0x43,
-                    0x2b,
-                    0x72,
-                    0x0b,
-                    0x19,
-                    0xd1,
-                    0x8e,
-                    0xc8,
-                    0xd8,
-                    0x4b,
-                    0xdc,
-                    0x63,
-                    0x15,
-                    0x1b,
-                } } },
-    { 48, { 16, {
-                    0xf7,
-                    0xe5,
-                    0xae,
-                    0xf5,
-                    0x49,
-                    0xf7,
-                    0x82,
-                    0xcf,
-                    0x37,
-                    0x90,
-                    0x55,
-                    0xa6,
-                    0x08,
-                    0x26,
-                    0x9b,
-                    0x16,
-                } } },
-    { 49, { 16, {
-                    0x43,
-                    0x8d,
-                    0x03,
-                    0x0f,
-                    0xd0,
-                    0xb7,
-                    0xa5,
-                    0x4f,
-                    0xa8,
-                    0x37,
-                    0xf2,
-                    0xad,
-                    0x20,
-                    0x1a,
-                    0x64,
-                    0x03,
-                } } },
-    { 50, { 16, {
-                    0xa5,
-                    0x90,
-                    0xd3,
-                    0xee,
-                    0x4f,
-                    0xbf,
-                    0x04,
-                    0xe3,
-                    0x24,
-                    0x7e,
-                    0x0d,
-                    0x27,
-                    0xf2,
-                    0x86,
-                    0x42,
-                    0x3f,
-                } } },
-    { 51, { 16, {
-                    0x5f,
-                    0xe2,
-                    0xc1,
-                    0xa1,
-                    0x72,
-                    0xfe,
-                    0x93,
-                    0xc4,
-                    0xb1,
-                    0x5c,
-                    0xd3,
-                    0x7c,
-                    0xae,
-                    0xf9,
-                    0xf5,
-                    0x38,
-                } } },
-    { 52, { 16, {
-                    0x2c,
-                    0x97,
-                    0x32,
-                    0x5c,
-                    0xbd,
-                    0x06,
-                    0xb3,
-                    0x6e,
-                    0xb2,
-                    0x13,
-                    0x3d,
-                    0xd0,
-                    0x8b,
-                    0x3a,
-                    0x01,
-                    0x7c,
-                } } },
-    { 53, { 16, {
-                    0x92,
-                    0xc8,
-                    0x14,
-                    0x22,
-                    0x7a,
-                    0x6b,
-                    0xca,
-                    0x94,
-                    0x9f,
-                    0xf0,
-                    0x65,
-                    0x9f,
-                    0x00,
-                    0x2a,
-                    0xd3,
-                    0x9e,
-                } } },
-    { 54, { 16, {
-                    0xdc,
-                    0xe8,
-                    0x50,
-                    0x11,
-                    0x0b,
-                    0xd8,
-                    0x32,
-                    0x8c,
-                    0xfb,
-                    0xd5,
-                    0x08,
-                    0x41,
-                    0xd6,
-                    0x91,
-                    0x1d,
-                    0x87,
-                } } },
-    { 55, { 16, {
-                    0x67,
-                    0xf1,
-                    0x49,
-                    0x84,
-                    0xc7,
-                    0xda,
-                    0x79,
-                    0x12,
-                    0x48,
-                    0xe3,
-                    0x2b,
-                    0xb5,
-                    0x92,
-                    0x25,
-                    0x83,
-                    0xda,
-                } } },
-    { 56, { 16, {
-                    0x19,
-                    0x38,
-                    0xf2,
-                    0xcf,
-                    0x72,
-                    0xd5,
-                    0x4e,
-                    0xe9,
-                    0x7e,
-                    0x94,
-                    0x16,
-                    0x6f,
-                    0xa9,
-                    0x1d,
-                    0x2a,
-                    0x36,
-                } } },
-    { 57, { 16, {
-                    0x74,
-                    0x48,
-                    0x1e,
-                    0x96,
-                    0x46,
-                    0xed,
-                    0x49,
-                    0xfe,
-                    0x0f,
-                    0x62,
-                    0x24,
-                    0x30,
-                    0x16,
-                    0x04,
-                    0x69,
-                    0x8e,
-                } } },
-    { 58, { 16, {
-                    0x57,
-                    0xfc,
-                    0xa5,
-                    0xde,
-                    0x98,
-                    0xa9,
-                    0xd6,
-                    0xd8,
-                    0x00,
-                    0x64,
-                    0x38,
-                    0xd0,
-                    0x58,
-                    0x3d,
-                    0x8a,
-                    0x1d,
-                } } },
-    { 59, { 16, {
-                    0x9f,
-                    0xec,
-                    0xde,
-                    0x1c,
-                    0xef,
-                    0xdc,
-                    0x1c,
-                    0xbe,
-                    0xd4,
-                    0x76,
-                    0x36,
-                    0x74,
-                    0xd9,
-                    0x57,
-                    0x53,
-                    0x59,
-                } } },
-    { 60, { 16, {
-                    0xe3,
-                    0x04,
-                    0x0c,
-                    0x00,
-                    0xeb,
-                    0x28,
-                    0xf1,
-                    0x53,
-                    0x66,
-                    0xca,
-                    0x73,
-                    0xcb,
-                    0xd8,
-                    0x72,
-                    0xe7,
-                    0x40,
-                } } },
-    { 61, { 16, {
-                    0x76,
-                    0x97,
-                    0x00,
-                    0x9a,
-                    0x6a,
-                    0x83,
-                    0x1d,
-                    0xfe,
-                    0xcc,
-                    0xa9,
-                    0x1c,
-                    0x59,
-                    0x93,
-                    0x67,
-                    0x0f,
-                    0x7a,
-                } } },
-    { 62, { 16, {
-                    0x58,
-                    0x53,
-                    0x54,
-                    0x23,
-                    0x21,
-                    0xf5,
-                    0x67,
-                    0xa0,
-                    0x05,
-                    0xd5,
-                    0x47,
-                    0xa4,
-                    0xf0,
-                    0x47,
-                    0x59,
-                    0xbd,
-                } } },
-    { 63, { 16, {
-                    0x51,
-                    0x50,
-                    0xd1,
-                    0x77,
-                    0x2f,
-                    0x50,
-                    0x83,
-                    0x4a,
-                    0x50,
-                    0x3e,
-                    0x06,
-                    0x9a,
-                    0x97,
-                    0x3f,
-                    0xbd,
-                    0x7c,
-                } } }
+    { 0, { 8, { 0x31, 0x0e, 0x0e, 0xdd, 0x47, 0xdb, 0x6f, 0x72 } } },
+    { 1, { 8, { 0xfd, 0x67, 0xdc, 0x93, 0xc5, 0x39, 0xf8, 0x74 } } },
+    { 2, { 8, { 0x5a, 0x4f, 0xa9, 0xd9, 0x09, 0x80, 0x6c, 0x0d } } },
+    { 3, { 8, { 0x2d, 0x7e, 0xfb, 0xd7, 0x96, 0x66, 0x67, 0x85 } } },
+    { 4, { 8, { 0xb7, 0x87, 0x71, 0x27, 0xe0, 0x94, 0x27, 0xcf } } },
+    { 5, { 8, { 0x8d, 0xa6, 0x99, 0xcd, 0x64, 0x55, 0x76, 0x18 } } },
+    { 6, { 8, { 0xce, 0xe3, 0xfe, 0x58, 0x6e, 0x46, 0xc9, 0xcb } } },
+    { 7, { 8, { 0x37, 0xd1, 0x01, 0x8b, 0xf5, 0x00, 0x02, 0xab } } },
+    { 8, { 8, { 0x62, 0x24, 0x93, 0x9a, 0x79, 0xf5, 0xf5, 0x93 } } },
+    { 9, { 8, { 0xb0, 0xe4, 0xa9, 0x0b, 0xdf, 0x82, 0x00, 0x9e } } },
+    { 10, { 8, { 0xf3, 0xb9, 0xdd, 0x94, 0xc5, 0xbb, 0x5d, 0x7a } } },
+    { 11, { 8, { 0xa7, 0xad, 0x6b, 0x22, 0x46, 0x2f, 0xb3, 0xf4 } } },
+    { 12, { 8, { 0xfb, 0xe5, 0x0e, 0x86, 0xbc, 0x8f, 0x1e, 0x75 } } },
+    { 13, { 8, { 0x90, 0x3d, 0x84, 0xc0, 0x27, 0x56, 0xea, 0x14 } } },
+    { 14, { 8, { 0xee, 0xf2, 0x7a, 0x8e, 0x90, 0xca, 0x23, 0xf7 } } },
+    { 15, { 8, { 0xe5, 0x45, 0xbe, 0x49, 0x61, 0xca, 0x29, 0xa1 } } },
+    { 16, { 8, { 0xdb, 0x9b, 0xc2, 0x57, 0x7f, 0xcc, 0x2a, 0x3f } } },
+    { 17, { 8, { 0x94, 0x47, 0xbe, 0x2c, 0xf5, 0xe9, 0x9a, 0x69 } } },
+    { 18, { 8, { 0x9c, 0xd3, 0x8d, 0x96, 0xf0, 0xb3, 0xc1, 0x4b } } },
+    { 19, { 8, { 0xbd, 0x61, 0x79, 0xa7, 0x1d, 0xc9, 0x6d, 0xbb } } },
+    { 20, { 8, { 0x98, 0xee, 0xa2, 0x1a, 0xf2, 0x5c, 0xd6, 0xbe } } },
+    { 21, { 8, { 0xc7, 0x67, 0x3b, 0x2e, 0xb0, 0xcb, 0xf2, 0xd0 } } },
+    { 22, { 8, { 0x88, 0x3e, 0xa3, 0xe3, 0x95, 0x67, 0x53, 0x93 } } },
+    { 23, { 8, { 0xc8, 0xce, 0x5c, 0xcd, 0x8c, 0x03, 0x0c, 0xa8 } } },
+    { 24, { 8, { 0x94, 0xaf, 0x49, 0xf6, 0xc6, 0x50, 0xad, 0xb8 } } },
+    { 25, { 8, { 0xea, 0xb8, 0x85, 0x8a, 0xde, 0x92, 0xe1, 0xbc } } },
+    { 26, { 8, { 0xf3, 0x15, 0xbb, 0x5b, 0xb8, 0x35, 0xd8, 0x17 } } },
+    { 27, { 8, { 0xad, 0xcf, 0x6b, 0x07, 0x63, 0x61, 0x2e, 0x2f } } },
+    { 28, { 8, { 0xa5, 0xc9, 0x1d, 0xa7, 0xac, 0xaa, 0x4d, 0xde } } },
+    { 29, { 8, { 0x71, 0x65, 0x95, 0x87, 0x66, 0x50, 0xa2, 0xa6 } } },
+    { 30, { 8, { 0x28, 0xef, 0x49, 0x5c, 0x53, 0xa3, 0x87, 0xad } } },
+    { 31, { 8, { 0x42, 0xc3, 0x41, 0xd8, 0xfa, 0x92, 0xd8, 0x32 } } },
+    { 32, { 8, { 0xce, 0x7c, 0xf2, 0x72, 0x2f, 0x51, 0x27, 0x71 } } },
+    { 33, { 8, { 0xe3, 0x78, 0x59, 0xf9, 0x46, 0x23, 0xf3, 0xa7 } } },
+    { 34, { 8, { 0x38, 0x12, 0x05, 0xbb, 0x1a, 0xb0, 0xe0, 0x12 } } },
+    { 35, { 8, { 0xae, 0x97, 0xa1, 0x0f, 0xd4, 0x34, 0xe0, 0x15 } } },
+    { 36, { 8, { 0xb4, 0xa3, 0x15, 0x08, 0xbe, 0xff, 0x4d, 0x31 } } },
+    { 37, { 8, { 0x81, 0x39, 0x62, 0x29, 0xf0, 0x90, 0x79, 0x02 } } },
+    { 38, { 8, { 0x4d, 0x0c, 0xf4, 0x9e, 0xe5, 0xd4, 0xdc, 0xca } } },
+    { 39, { 8, { 0x5c, 0x73, 0x33, 0x6a, 0x76, 0xd8, 0xbf, 0x9a } } },
+    { 40, { 8, { 0xd0, 0xa7, 0x04, 0x53, 0x6b, 0xa9, 0x3e, 0x0e } } },
+    { 41, { 8, { 0x92, 0x59, 0x58, 0xfc, 0xd6, 0x42, 0x0c, 0xad } } },
+    { 42, { 8, { 0xa9, 0x15, 0xc2, 0x9b, 0xc8, 0x06, 0x73, 0x18 } } },
+    { 43, { 8, { 0x95, 0x2b, 0x79, 0xf3, 0xbc, 0x0a, 0xa6, 0xd4 } } },
+    { 44, { 8, { 0xf2, 0x1d, 0xf2, 0xe4, 0x1d, 0x45, 0x35, 0xf9 } } },
+    { 45, { 8, { 0x87, 0x57, 0x75, 0x19, 0x04, 0x8f, 0x53, 0xa9 } } },
+    { 46, { 8, { 0x10, 0xa5, 0x6c, 0xf5, 0xdf, 0xcd, 0x9a, 0xdb } } },
+    { 47, { 8, { 0xeb, 0x75, 0x09, 0x5c, 0xcd, 0x98, 0x6c, 0xd0 } } },
+    { 48, { 8, { 0x51, 0xa9, 0xcb, 0x9e, 0xcb, 0xa3, 0x12, 0xe6 } } },
+    { 49, { 8, { 0x96, 0xaf, 0xad, 0xfc, 0x2c, 0xe6, 0x66, 0xc7 } } },
+    { 50, { 8, { 0x72, 0xfe, 0x52, 0x97, 0x5a, 0x43, 0x64, 0xee } } },
+    { 51, { 8, { 0x5a, 0x16, 0x45, 0xb2, 0x76, 0xd5, 0x92, 0xa1 } } },
+    { 52, { 8, { 0xb2, 0x74, 0xcb, 0x8e, 0xbf, 0x87, 0x87, 0x0a } } },
+    { 53, { 8, { 0x6f, 0x9b, 0xb4, 0x20, 0x3d, 0xe7, 0xb3, 0x81 } } },
+    { 54, { 8, { 0xea, 0xec, 0xb2, 0xa3, 0x0b, 0x22, 0xa8, 0x7f } } },
+    { 55, { 8, { 0x99, 0x24, 0xa4, 0x3c, 0xc1, 0x31, 0x57, 0x24 } } },
+    { 56, { 8, { 0xbd, 0x83, 0x8d, 0x3a, 0xaf, 0xbf, 0x8d, 0xb7 } } },
+    { 57, { 8, { 0x0b, 0x1a, 0x2a, 0x32, 0x65, 0xd5, 0x1a, 0xea } } },
+    { 58, { 8, { 0x13, 0x50, 0x79, 0xa3, 0x23, 0x1c, 0xe6, 0x60 } } },
+    { 59, { 8, { 0x93, 0x2b, 0x28, 0x46, 0xe4, 0xd7, 0x06, 0x66 } } },
+    { 60, { 8, { 0xe1, 0x91, 0x5f, 0x5c, 0xb1, 0xec, 0xa4, 0x6c } } },
+    { 61, { 8, { 0xf3, 0x25, 0x96, 0x5c, 0xa1, 0x6d, 0x62, 0x9f } } },
+    { 62, { 8, { 0x57, 0x5f, 0xf2, 0x8e, 0x60, 0x38, 0x1b, 0xe5 } } },
+    { 63, { 8, { 0x72, 0x45, 0x06, 0xeb, 0x4c, 0x32, 0x8a, 0x95 } } },
+    { 0, { 16, { 0xa3, 0x81, 0x7f, 0x04, 0xba, 0x25, 0xa8, 0xe6, 0x6d, 0xf6, 0x72, 0x14, 0xc7, 0x55, 0x02, 0x93 } } },
+    { 1, { 16, { 0xda, 0x87, 0xc1, 0xd8, 0x6b, 0x99, 0xaf, 0x44, 0x34, 0x76, 0x59, 0x11, 0x9b, 0x22, 0xfc, 0x45 } } },
+    { 2, { 16, { 0x81, 0x77, 0x22, 0x8d, 0xa4, 0xa4, 0x5d, 0xc7, 0xfc, 0xa3, 0x8b, 0xde, 0xf6, 0x0a, 0xff, 0xe4 } } },
+    { 3, { 16, { 0x9c, 0x70, 0xb6, 0x0c, 0x52, 0x67, 0xa9, 0x4e, 0x5f, 0x33, 0xb6, 0xb0, 0x29, 0x85, 0xed, 0x51 } } },
+    { 4, { 16, { 0xf8, 0x81, 0x64, 0xc1, 0x2d, 0x9c, 0x8f, 0xaf, 0x7d, 0x0f, 0x6e, 0x7c, 0x7b, 0xcd, 0x55, 0x79 } } },
+    { 5, { 16, { 0x13, 0x68, 0x87, 0x59, 0x80, 0x77, 0x6f, 0x88, 0x54, 0x52, 0x7a, 0x07, 0x69, 0x0e, 0x96, 0x27 } } },
+    { 6, { 16, { 0x14, 0xee, 0xca, 0x33, 0x8b, 0x20, 0x86, 0x13, 0x48, 0x5e, 0xa0, 0x30, 0x8f, 0xd7, 0xa1, 0x5e } } },
+    { 7, { 16, { 0xa1, 0xf1, 0xeb, 0xbe, 0xd8, 0xdb, 0xc1, 0x53, 0xc0, 0xb8, 0x4a, 0xa6, 0x1f, 0xf0, 0x82, 0x39 } } },
+    { 8, { 16, { 0x3b, 0x62, 0xa9, 0xba, 0x62, 0x58, 0xf5, 0x61, 0x0f, 0x83, 0xe2, 0x64, 0xf3, 0x14, 0x97, 0xb4 } } },
+    { 9, { 16, { 0x26, 0x44, 0x99, 0x06, 0x0a, 0xd9, 0xba, 0xab, 0xc4, 0x7f, 0x8b, 0x02, 0xbb, 0x6d, 0x71, 0xed } } },
+    { 10, { 16, { 0x00, 0x11, 0x0d, 0xc3, 0x78, 0x14, 0x69, 0x56, 0xc9, 0x54, 0x47, 0xd3, 0xf3, 0xd0, 0xfb, 0xba } } },
+    { 11, { 16, { 0x01, 0x51, 0xc5, 0x68, 0x38, 0x6b, 0x66, 0x77, 0xa2, 0xb4, 0xdc, 0x6f, 0x81, 0xe5, 0xdc, 0x18 } } },
+    { 12, { 16, { 0xd6, 0x26, 0xb2, 0x66, 0x90, 0x5e, 0xf3, 0x58, 0x82, 0x63, 0x4d, 0xf6, 0x85, 0x32, 0xc1, 0x25 } } },
+    { 13, { 16, { 0x98, 0x69, 0xe2, 0x47, 0xe9, 0xc0, 0x8b, 0x10, 0xd0, 0x29, 0x93, 0x4f, 0xc4, 0xb9, 0x52, 0xf7 } } },
+    { 14, { 16, { 0x31, 0xfc, 0xef, 0xac, 0x66, 0xd7, 0xde, 0x9c, 0x7e, 0xc7, 0x48, 0x5f, 0xe4, 0x49, 0x49, 0x02 } } },
+    { 15, { 16, { 0x54, 0x93, 0xe9, 0x99, 0x33, 0xb0, 0xa8, 0x11, 0x7e, 0x08, 0xec, 0x0f, 0x97, 0xcf, 0xc3, 0xd9 } } },
+    { 16, { 16, { 0x6e, 0xe2, 0xa4, 0xca, 0x67, 0xb0, 0x54, 0xbb, 0xfd, 0x33, 0x15, 0xbf, 0x85, 0x23, 0x05, 0x77 } } },
+    { 17, { 16, { 0x47, 0x3d, 0x06, 0xe8, 0x73, 0x8d, 0xb8, 0x98, 0x54, 0xc0, 0x66, 0xc4, 0x7a, 0xe4, 0x77, 0x40 } } },
+    { 18, { 16, { 0xa4, 0x26, 0xe5, 0xe4, 0x23, 0xbf, 0x48, 0x85, 0x29, 0x4d, 0xa4, 0x81, 0xfe, 0xae, 0xf7, 0x23 } } },
+    { 19, { 16, { 0x78, 0x01, 0x77, 0x31, 0xcf, 0x65, 0xfa, 0xb0, 0x74, 0xd5, 0x20, 0x89, 0x52, 0x51, 0x2e, 0xb1 } } },
+    { 20, { 16, { 0x9e, 0x25, 0xfc, 0x83, 0x3f, 0x22, 0x90, 0x73, 0x3e, 0x93, 0x44, 0xa5, 0xe8, 0x38, 0x39, 0xeb } } },
+    { 21, { 16, { 0x56, 0x8e, 0x49, 0x5a, 0xbe, 0x52, 0x5a, 0x21, 0x8a, 0x22, 0x14, 0xcd, 0x3e, 0x07, 0x1d, 0x12 } } },
+    { 22, { 16, { 0x4a, 0x29, 0xb5, 0x45, 0x52, 0xd1, 0x6b, 0x9a, 0x46, 0x9c, 0x10, 0x52, 0x8e, 0xff, 0x0a, 0xae } } },
+    { 23, { 16, { 0xc9, 0xd1, 0x84, 0xdd, 0xd5, 0xa9, 0xf5, 0xe0, 0xcf, 0x8c, 0xe2, 0x9a, 0x9a, 0xbf, 0x69, 0x1c } } },
+    { 24, { 16, { 0x2d, 0xb4, 0x79, 0xae, 0x78, 0xbd, 0x50, 0xd8, 0x88, 0x2a, 0x8a, 0x17, 0x8a, 0x61, 0x32, 0xad } } },
+    { 25, { 16, { 0x8e, 0xce, 0x5f, 0x04, 0x2d, 0x5e, 0x44, 0x7b, 0x50, 0x51, 0xb9, 0xea, 0xcb, 0x8d, 0x8f, 0x6f } } },
+    { 26, { 16, { 0x9c, 0x0b, 0x53, 0xb4, 0xb3, 0xc3, 0x07, 0xe8, 0x7e, 0xae, 0xe0, 0x86, 0x78, 0x14, 0x1f, 0x66 } } },
+    { 27, { 16, { 0xab, 0xf2, 0x48, 0xaf, 0x69, 0xa6, 0xea, 0xe4, 0xbf, 0xd3, 0xeb, 0x2f, 0x12, 0x9e, 0xeb, 0x94 } } },
+    { 28, { 16, { 0x06, 0x64, 0xda, 0x16, 0x68, 0x57, 0x4b, 0x88, 0xb9, 0x35, 0xf3, 0x02, 0x73, 0x58, 0xae, 0xf4 } } },
+    { 29, { 16, { 0xaa, 0x4b, 0x9d, 0xc4, 0xbf, 0x33, 0x7d, 0xe9, 0x0c, 0xd4, 0xfd, 0x3c, 0x46, 0x7c, 0x6a, 0xb7 } } },
+    { 30, { 16, { 0xea, 0x5c, 0x7f, 0x47, 0x1f, 0xaf, 0x6b, 0xde, 0x2b, 0x1a, 0xd7, 0xd4, 0x68, 0x6d, 0x22, 0x87 } } },
+    { 31, { 16, { 0x29, 0x39, 0xb0, 0x18, 0x32, 0x23, 0xfa, 0xfc, 0x17, 0x23, 0xde, 0x4f, 0x52, 0xc4, 0x3d, 0x35 } } },
+    { 32, { 16, { 0x7c, 0x39, 0x56, 0xca, 0x5e, 0xea, 0xfc, 0x3e, 0x36, 0x3e, 0x9d, 0x55, 0x65, 0x46, 0xeb, 0x68 } } },
+    { 33, { 16, { 0x77, 0xc6, 0x07, 0x71, 0x46, 0xf0, 0x1c, 0x32, 0xb6, 0xb6, 0x9d, 0x5f, 0x4e, 0xa9, 0xff, 0xcf } } },
+    { 34, { 16, { 0x37, 0xa6, 0x98, 0x6c, 0xb8, 0x84, 0x7e, 0xdf, 0x09, 0x25, 0xf0, 0xf1, 0x30, 0x9b, 0x54, 0xde } } },
+    { 35, { 16, { 0xa7, 0x05, 0xf0, 0xe6, 0x9d, 0xa9, 0xa8, 0xf9, 0x07, 0x24, 0x1a, 0x2e, 0x92, 0x3c, 0x8c, 0xc8 } } },
+    { 36, { 16, { 0x3d, 0xc4, 0x7d, 0x1f, 0x29, 0xc4, 0x48, 0x46, 0x1e, 0x9e, 0x76, 0xed, 0x90, 0x4f, 0x67, 0x11 } } },
+    { 37, { 16, { 0x0d, 0x62, 0xbf, 0x01, 0xe6, 0xfc, 0x0e, 0x1a, 0x0d, 0x3c, 0x47, 0x51, 0xc5, 0xd3, 0x69, 0x2b } } },
+    { 38, { 16, { 0x8c, 0x03, 0x46, 0x8b, 0xca, 0x7c, 0x66, 0x9e, 0xe4, 0xfd, 0x5e, 0x08, 0x4b, 0xbe, 0xe7, 0xb5 } } },
+    { 39, { 16, { 0x52, 0x8a, 0x5b, 0xb9, 0x3b, 0xaf, 0x2c, 0x9c, 0x44, 0x73, 0xcc, 0xe5, 0xd0, 0xd2, 0x2b, 0xd9 } } },
+    { 40, { 16, { 0xdf, 0x6a, 0x30, 0x1e, 0x95, 0xc9, 0x5d, 0xad, 0x97, 0xae, 0x0c, 0xc8, 0xc6, 0x91, 0x3b, 0xd8 } } },
+    { 41, { 16, { 0x80, 0x11, 0x89, 0x90, 0x2c, 0x85, 0x7f, 0x39, 0xe7, 0x35, 0x91, 0x28, 0x5e, 0x70, 0xb6, 0xdb } } },
+    { 42, { 16, { 0xe6, 0x17, 0x34, 0x6a, 0xc9, 0xc2, 0x31, 0xbb, 0x36, 0x50, 0xae, 0x34, 0xcc, 0xca, 0x0c, 0x5b } } },
+    { 43, { 16, { 0x27, 0xd9, 0x34, 0x37, 0xef, 0xb7, 0x21, 0xaa, 0x40, 0x18, 0x21, 0xdc, 0xec, 0x5a, 0xdf, 0x89 } } },
+    { 44, { 16, { 0x89, 0x23, 0x7d, 0x9d, 0xed, 0x9c, 0x5e, 0x78, 0xd8, 0xb1, 0xc9, 0xb1, 0x66, 0xcc, 0x73, 0x42 } } },
+    { 45, { 16, { 0x4a, 0x6d, 0x80, 0x91, 0xbf, 0x5e, 0x7d, 0x65, 0x11, 0x89, 0xfa, 0x94, 0xa2, 0x50, 0xb1, 0x4c } } },
+    { 46, { 16, { 0x0e, 0x33, 0xf9, 0x60, 0x55, 0xe7, 0xae, 0x89, 0x3f, 0xfc, 0x0e, 0x3d, 0xcf, 0x49, 0x29, 0x02 } } },
+    { 47, { 16, { 0xe6, 0x1c, 0x43, 0x2b, 0x72, 0x0b, 0x19, 0xd1, 0x8e, 0xc8, 0xd8, 0x4b, 0xdc, 0x63, 0x15, 0x1b } } },
+    { 48, { 16, { 0xf7, 0xe5, 0xae, 0xf5, 0x49, 0xf7, 0x82, 0xcf, 0x37, 0x90, 0x55, 0xa6, 0x08, 0x26, 0x9b, 0x16 } } },
+    { 49, { 16, { 0x43, 0x8d, 0x03, 0x0f, 0xd0, 0xb7, 0xa5, 0x4f, 0xa8, 0x37, 0xf2, 0xad, 0x20, 0x1a, 0x64, 0x03 } } },
+    { 50, { 16, { 0xa5, 0x90, 0xd3, 0xee, 0x4f, 0xbf, 0x04, 0xe3, 0x24, 0x7e, 0x0d, 0x27, 0xf2, 0x86, 0x42, 0x3f } } },
+    { 51, { 16, { 0x5f, 0xe2, 0xc1, 0xa1, 0x72, 0xfe, 0x93, 0xc4, 0xb1, 0x5c, 0xd3, 0x7c, 0xae, 0xf9, 0xf5, 0x38 } } },
+    { 52, { 16, { 0x2c, 0x97, 0x32, 0x5c, 0xbd, 0x06, 0xb3, 0x6e, 0xb2, 0x13, 0x3d, 0xd0, 0x8b, 0x3a, 0x01, 0x7c } } },
+    { 53, { 16, { 0x92, 0xc8, 0x14, 0x22, 0x7a, 0x6b, 0xca, 0x94, 0x9f, 0xf0, 0x65, 0x9f, 0x00, 0x2a, 0xd3, 0x9e } } },
+    { 54, { 16, { 0xdc, 0xe8, 0x50, 0x11, 0x0b, 0xd8, 0x32, 0x8c, 0xfb, 0xd5, 0x08, 0x41, 0xd6, 0x91, 0x1d, 0x87 } } },
+    { 55, { 16, { 0x67, 0xf1, 0x49, 0x84, 0xc7, 0xda, 0x79, 0x12, 0x48, 0xe3, 0x2b, 0xb5, 0x92, 0x25, 0x83, 0xda } } },
+    { 56, { 16, { 0x19, 0x38, 0xf2, 0xcf, 0x72, 0xd5, 0x4e, 0xe9, 0x7e, 0x94, 0x16, 0x6f, 0xa9, 0x1d, 0x2a, 0x36 } } },
+    { 57, { 16, { 0x74, 0x48, 0x1e, 0x96, 0x46, 0xed, 0x49, 0xfe, 0x0f, 0x62, 0x24, 0x30, 0x16, 0x04, 0x69, 0x8e } } },
+    { 58, { 16, { 0x57, 0xfc, 0xa5, 0xde, 0x98, 0xa9, 0xd6, 0xd8, 0x00, 0x64, 0x38, 0xd0, 0x58, 0x3d, 0x8a, 0x1d } } },
+    { 59, { 16, { 0x9f, 0xec, 0xde, 0x1c, 0xef, 0xdc, 0x1c, 0xbe, 0xd4, 0x76, 0x36, 0x74, 0xd9, 0x57, 0x53, 0x59 } } },
+    { 60, { 16, { 0xe3, 0x04, 0x0c, 0x00, 0xeb, 0x28, 0xf1, 0x53, 0x66, 0xca, 0x73, 0xcb, 0xd8, 0x72, 0xe7, 0x40 } } },
+    { 61, { 16, { 0x76, 0x97, 0x00, 0x9a, 0x6a, 0x83, 0x1d, 0xfe, 0xcc, 0xa9, 0x1c, 0x59, 0x93, 0x67, 0x0f, 0x7a } } },
+    { 62, { 16, { 0x58, 0x53, 0x54, 0x23, 0x21, 0xf5, 0x67, 0xa0, 0x05, 0xd5, 0x47, 0xa4, 0xf0, 0x47, 0x59, 0xbd } } },
+    { 63, { 16, { 0x51, 0x50, 0xd1, 0x77, 0x2f, 0x50, 0x83, 0x4a, 0x50, 0x3e, 0x06, 0x9a, 0x97, 0x3f, 0xbd, 0x7c } } }
 };
 
 static int test_siphash(int idx)
diff -Nru openssl-3.5.6/test/smime-eml/pkcs7-empty-digest-set.eml openssl-3.5.7/test/smime-eml/pkcs7-empty-digest-set.eml
--- openssl-3.5.6/test/smime-eml/pkcs7-empty-digest-set.eml	1970-01-01 01:00:00.000000000 +0100
+++ openssl-3.5.7/test/smime-eml/pkcs7-empty-digest-set.eml	2026-06-09 13:54:25.000000000 +0200
@@ -0,0 +1,45 @@
+MIME-Version: 1.0
+Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----E0314CC5D732C92AE2D7A3BACDCDCFCE"
+
+This is an S/MIME signed message
+
+------E0314CC5D732C92AE2D7A3BACDCDCFCE
+This is the content to be signed.
+
+------E0314CC5D732C92AE2D7A3BACDCDCFCE
+Content-Type: application/x-pkcs7-signature; name="smime.p7s"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="smime.p7s"
+
+MIIFWgYJKoZIhvcNAQcCoIIFSzCCBUcCAQExADALBgkqhkiG9w0BBwGgggLuMIIC
+6jCCAdKgAwIBAgIUL5E46FxyhsT7C3G1NS27OtR7XAowDQYJKoZIhvcNAQELBQAw
+FTETMBEGA1UEAwwKUG9DIFNpZ25lcjAeFw0yNjA1MDgxMDIwNDhaFw0yNzA1MDgx
+MDIwNDhaMBUxEzARBgNVBAMMClBvQyBTaWduZXIwggEiMA0GCSqGSIb3DQEBAQUA
+A4IBDwAwggEKAoIBAQDSSu/gupmIlclvmTMHiqOrCqmB8NRTjAMoI//MPJrnFXYp
+FjDPMk7Y/kCcHztudaIvADkowaFtOm4oMinQFhjwCNCo5K5WrrlAitnpcd5QH2nA
+iVZXjjohQUJEd7n33AGqTwo5EGaCK+alAZL7tA7bdhNi/aZ33L3bUNYqoHbXiNsE
+u1tj8frLfIjduOt0TMPSOrrFjjEsrL3T3tg+HmxpalDHz7E6o9zJu0wlk8bcR2Xk
+mpX8RdYCu7K9m39N1F2WKa9WJh24NQLpWRfwD213jaIFK2EXy/XHePDUeiMYtVOV
+oovCSmY7OqowupA7J+4dcsnRjFqgZECctHhAfk+PAgMBAAGjMjAwMB0GA1UdDgQW
+BBRZlupXNYq4fny0SE76sr/CdQ2DUTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3
+DQEBCwUAA4IBAQANOlttTWVz620JNTrPzhiR4x9+5UiF4GSqv8BRJQFj3Xh7fsUp
++3GDs9M27f4FVh3utJsjt7Sa9ZWLpBVdgjGBwGLAtPsoYMjhnUgZTUvwEk5+aXyv
+zJxn4I7mMbDhlNCMHcVtGdtA+2UOEuvdGfuEilpzPsV8DzM1K3xU5bSWoo0BRFKK
+srHkyEfxCFPAQOcX80ZbMO6zdcXeJjC6mQXGqy2aqeQob0vuSZJ7QHZBlRjY5YHR
+wWlIqG8G3Eist16iTqdX2PQFZT1/QAEQ/LnXARTUUjUroccdci8YNASoeHDpcjRL
+MBrN+QBNZVt5qLhDogwZb2ZwqKfZ8Aqg3oAkMYICPzCCAjsCAQEwLTAVMRMwEQYD
+VQQDDApQb0MgU2lnbmVyAhQvkTjoXHKGxPsLcbU1Lbs61HtcCjANBglghkgBZQME
+AgEFAKCB5DAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEP
+Fw0yNjA1MDgxMDIwNDhaMC8GCSqGSIb3DQEJBDEiBCAvyoHfycLqb8UzVPizy1uA
+o3h7tza3HebeiJaSnpIJHzB5BgkqhkiG9w0BCQ8xbDBqMAsGCWCGSAFlAwQBKjAL
+BglghkgBZQMEARYwCwYJYIZIAWUDBAECMAoGCCqGSIb3DQMHMA4GCCqGSIb3DQMC
+AgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDANBgkq
+hkiG9w0BAQEFAASCAQBIpl7U2j4YiU1vdZHyx2dCK41ZahtTVOB4RVJcrmopgans
+fICdkSTfb0dVqc13++bYn4i1b2R2os5YIkoGxdrM5aZB7KF9r1xwgrendTF4/BwP
+gQq2khNtKebv9Yr0kOPynFIsgx5BHk99wrzfwidJUFuJJgQ9W0YOf7EGkbnZvPT+
+hV0aeLmJAb5jjWhbDciqUjR3O23JQhzVj4U3vo2TeN7VYmNJsX+fA4sZzIbYSei9
+ps7GZruiRcKgqgUj1l8HjIGMHqd9lccchk/BYyAGxAbgGisntvfJdPZO09wG8rHh
+eS6FYkkXAKBO49WbhE9aVLJH0zgA6gTfyEvOOOS1
+
+------E0314CC5D732C92AE2D7A3BACDCDCFCE--
+
diff -Nru openssl-3.5.6/test/sslapitest.c openssl-3.5.7/test/sslapitest.c
--- openssl-3.5.6/test/sslapitest.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/sslapitest.c	2026-06-09 13:54:25.000000000 +0200
@@ -1451,6 +1451,144 @@
     return testresult;
 }
 
+#ifndef OSSL_NO_USABLE_TLS1_3
+/*
+ * Test kTLS with SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER: retry SSL_write() after
+ * SSL_ERROR_WANT_WRITE using a different buffer pointer (same content) and
+ * verify that the data arrives intact.
+ */
+static int test_ktls_moving_write_buffer(void)
+{
+    SSL_CTX *cctx = NULL, *sctx = NULL;
+    SSL *clientssl = NULL, *serverssl = NULL;
+    BIO *bio_retry = NULL, *bio_orig = NULL;
+    int testresult = 0, cfd = -1, sfd = -1;
+    unsigned char *buf_orig = NULL, *buf_retry = NULL;
+    unsigned char outbuf[1024];
+    const size_t bufsz = sizeof(outbuf);
+    size_t written, readbytes, totread = 0, i;
+
+    /* kTLS requires real sockets */
+    if (!TEST_true(create_test_sockets(&cfd, &sfd, SOCK_STREAM, NULL)))
+        goto end;
+
+    /* Skip if the kernel does not support kTLS */
+    if (!ktls_chk_platform(cfd)) {
+        testresult = TEST_skip("Kernel does not support KTLS");
+        goto end;
+    }
+
+    if (!TEST_true(create_ssl_ctx_pair(libctx,
+            TLS_server_method(), TLS_client_method(),
+            TLS1_3_VERSION, TLS1_3_VERSION,
+            &sctx, &cctx, cert, privkey)))
+        goto end;
+
+    if (!TEST_true(SSL_CTX_set_ciphersuites(cctx, "TLS_AES_128_GCM_SHA256"))
+        || !TEST_true(SSL_CTX_set_ciphersuites(sctx, "TLS_AES_128_GCM_SHA256")))
+        goto end;
+
+    if (!TEST_true(create_ssl_objects2(sctx, cctx, &serverssl,
+            &clientssl, sfd, cfd)))
+        goto end;
+
+    /* Enable kTLS on the writing side (client) */
+    if (!TEST_true(SSL_set_options(clientssl, SSL_OP_ENABLE_KTLS)))
+        goto end;
+
+    SSL_set_mode(clientssl, SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER);
+    SSL_set_mode(clientssl, SSL_MODE_ENABLE_PARTIAL_WRITE);
+
+    if (!TEST_true(create_ssl_connection(serverssl, clientssl, SSL_ERROR_NONE)))
+        goto end;
+
+    /* Get a reference to the original BIO to replace it later. */
+    bio_orig = SSL_get_wbio(clientssl);
+    if (!TEST_ptr(bio_orig) || !TEST_true(BIO_up_ref(bio_orig))) {
+        bio_orig = NULL;
+        goto end;
+    }
+
+    /* Skip if kTLS TX was not activated for this cipher */
+    if (!BIO_get_ktls_send(bio_orig)) {
+        testresult = TEST_skip("kTLS send not supported");
+        goto end;
+    }
+
+    /* Swap write BIO to force WANT_WRITE */
+    bio_retry = BIO_new(bio_s_always_retry());
+    if (!TEST_ptr(bio_retry))
+        goto end;
+
+    SSL_set0_wbio(clientssl, bio_retry);
+    bio_retry = NULL; /* ownership transferred to clientssl */
+
+    /* Allocate two buffers with identical content but different addresses */
+    buf_orig = OPENSSL_malloc(bufsz);
+    buf_retry = OPENSSL_malloc(bufsz);
+    if (!TEST_ptr(buf_orig) || !TEST_ptr(buf_retry))
+        goto end;
+
+    for (i = 0; i < bufsz; i++)
+        buf_orig[i] = buf_retry[i] = (unsigned char)(i & 0xff);
+
+    /* First write attempt - will fail with WANT_WRITE */
+    if (!TEST_false(SSL_write_ex(clientssl, buf_orig, bufsz, &written))
+        || !TEST_int_eq(SSL_get_error(clientssl, 0), SSL_ERROR_WANT_WRITE))
+        goto end;
+
+    /* Restore the real socket BIO so the retry can actually send data */
+    SSL_set0_wbio(clientssl, bio_orig);
+    bio_orig = NULL;
+
+    /* Poison and free the original buffer */
+    memset(buf_orig, 0xDE, bufsz);
+    OPENSSL_free(buf_orig);
+    buf_orig = NULL;
+
+    /* Retry with a different buffer pointer */
+    if (!TEST_true(SSL_write_ex(clientssl, buf_retry, bufsz, &written)))
+        goto end;
+
+    /* Read the data on the server side */
+    totread = 0;
+    while (totread < bufsz) {
+        if (!SSL_read_ex(serverssl, outbuf + totread, bufsz - totread,
+                &readbytes)) {
+            if (!TEST_int_eq(SSL_get_error(serverssl, 0), SSL_ERROR_WANT_READ))
+                goto end;
+        } else {
+            totread += readbytes;
+        }
+    }
+
+    /* Verify data integrity */
+    if (!TEST_mem_eq(buf_retry, bufsz, outbuf, totread))
+        goto end;
+
+    testresult = 1;
+end:
+    OPENSSL_free(buf_orig);
+    OPENSSL_free(buf_retry);
+    if (clientssl != NULL) {
+        SSL_shutdown(clientssl);
+        SSL_free(clientssl);
+    }
+    if (serverssl != NULL) {
+        SSL_shutdown(serverssl);
+        SSL_free(serverssl);
+    }
+    SSL_CTX_free(sctx);
+    SSL_CTX_free(cctx);
+    BIO_free_all(bio_orig);
+    if (cfd != -1)
+        close(cfd);
+    if (sfd != -1)
+        close(sfd);
+    return testresult;
+}
+#endif /* !defined(OSSL_NO_USABLE_TLS1_3) */
+
 static struct ktls_test_cipher {
     int tls_version;
     const char *cipher;
@@ -3138,6 +3276,52 @@
     return execute_test_ssl_bio(0, CHANGE_WBIO);
 }
 
+/*
+ * Regression for GH #30458: tls_set1_bio() must BIO_free_all the old chain
+ * when the write BIO is replaced, not only the top BIO.
+ */
+static int test_ssl_set_wbio_chain_no_leak(void)
+{
+    SSL_CTX *ctx = NULL;
+    SSL *ssl = NULL;
+    BIO *bio = NULL, *filter = NULL, *chain1 = NULL;
+    int testresult = 0;
+
+    if (!TEST_ptr(ctx = SSL_CTX_new_ex(libctx, NULL, TLS_method())))
+        goto end;
+    if (!TEST_ptr(ssl = SSL_new(ctx)))
+        goto end;
+
+    if (!TEST_ptr(filter = BIO_new(BIO_f_nbio_test())))
+        goto end;
+    if (!TEST_ptr(bio = BIO_new(BIO_s_mem()))) {
+        BIO_free(filter);
+        filter = NULL;
+        goto end;
+    }
+    if (!TEST_ptr(chain1 = BIO_push(filter, bio))) {
+        BIO_free_all(filter);
+        filter = bio = NULL;
+        goto end;
+    }
+    filter = bio = NULL;
+
+    SSL_set0_wbio(ssl, chain1);
+    chain1 = NULL;
+    SSL_set0_wbio(ssl, NULL);
+
+    testresult = 1;
+
+end:
+    BIO_free(filter);
+    BIO_free(bio);
+    BIO_free(chain1);
+    SSL_free(ssl);
+    SSL_CTX_free(ctx);
+
+    return testresult;
+}
+
 #if !defined(OPENSSL_NO_TLS1_2) || defined(OSSL_NO_USABLE_TLS1_3)
 typedef struct {
     /* The list of sig algs */
@@ -8784,6 +8968,106 @@
 }
 
 /*
+ * Callback that always returns ABORT for successfully decrypted tickets.
+ * Used by test_ticket_abort_session_leak to exercise the error path in
+ * tls_parse_ctos_psk() that previously leaked the SSL_SESSION.
+ */
+static SSL_TICKET_RETURN dec_tick_abort_cb(SSL *s, SSL_SESSION *ss,
+    const unsigned char *keyname,
+    size_t keyname_length,
+    SSL_TICKET_STATUS status,
+    void *arg)
+{
+    if (status == SSL_TICKET_SUCCESS || status == SSL_TICKET_SUCCESS_RENEW)
+        return SSL_TICKET_RETURN_ABORT;
+
+    return SSL_TICKET_RETURN_IGNORE_RENEW;
+}
+
+/*
+ * Test that returning SSL_TICKET_RETURN_ABORT from the decrypt ticket callback
+ * during TLS 1.3 resumption does not leak the SSL_SESSION allocated by
+ * tls_decrypt_ticket().  Before the fix, tls_parse_ctos_psk() would execute a
+ * bare "return 0" instead of "goto err", bypassing SSL_SESSION_free(sess).
+ * When run under LeakSanitizer the leaked session will be reported.
+ */
+static int test_ticket_abort_session_leak(void)
+{
+    SSL_CTX *cctx = NULL, *sctx = NULL;
+    SSL *clientssl = NULL, *serverssl = NULL;
+    SSL_SESSION *clntsess = NULL;
+    int testresult = 0;
+
+#ifdef OSSL_NO_USABLE_TLS1_3
+    return 1;
+#endif
+
+    if (!TEST_true(create_ssl_ctx_pair(libctx, TLS_server_method(),
+            TLS_client_method(),
+            TLS1_3_VERSION, TLS1_3_VERSION,
+            &sctx, &cctx, cert, privkey)))
+        goto end;
+
+    if (!TEST_true(SSL_CTX_set_session_cache_mode(sctx, SSL_SESS_CACHE_OFF)))
+        goto end;
+
+    /* First handshake: use the normal gen/dec callbacks to get a ticket */
+    if (!TEST_true(SSL_CTX_set_session_ticket_cb(sctx, gen_tick_cb, dec_tick_cb,
+            NULL)))
+        goto end;
+
+    gen_tick_called = dec_tick_called = tick_key_cb_called = 0;
+    tick_dec_ret = SSL_TICKET_RETURN_USE_RENEW;
+
+    if (!TEST_true(create_ssl_objects(sctx, cctx, &serverssl, &clientssl,
+            NULL, NULL))
+        || !TEST_true(create_ssl_connection(serverssl, clientssl,
+            SSL_ERROR_NONE)))
+        goto end;
+
+    clntsess = SSL_get1_session(clientssl);
+    if (!TEST_ptr(clntsess))
+        goto end;
+
+    SSL_shutdown(clientssl);
+    SSL_shutdown(serverssl);
+    SSL_free(serverssl);
+    SSL_free(clientssl);
+    serverssl = clientssl = NULL;
+
+    /*
+     * Second handshake (resumption): switch to the abort callback.
+     * The server will decrypt the ticket, allocate an SSL_SESSION, then the
+     * callback returns ABORT.  The handshake must fail, and the session
+     * allocated inside tls_decrypt_ticket() must be freed (not leaked).
+     */
+    if (!TEST_true(SSL_CTX_set_session_ticket_cb(sctx, gen_tick_cb,
+            dec_tick_abort_cb, NULL)))
+        goto end;
+
+    if (!TEST_true(create_ssl_objects(sctx, cctx, &serverssl, &clientssl,
+            NULL, NULL))
+        || !TEST_true(SSL_set_session(clientssl, clntsess)))
+        goto end;
+
+    /* Resumption should fail because the callback aborts */
+    if (!TEST_false(create_ssl_connection(serverssl, clientssl,
+            SSL_ERROR_SSL)))
+        goto end;
+
+    testresult = 1;
+
+end:
+    SSL_SESSION_free(clntsess);
+    SSL_free(serverssl);
+    SSL_free(clientssl);
+    SSL_CTX_free(sctx);
+    SSL_CTX_free(cctx);
+
+    return testresult;
+}
+
+/*
  * Test incorrect shutdown.
  * Test 0: client does not shutdown properly,
  *         server does not set SSL_OP_IGNORE_UNEXPECTED_EOF,
@@ -9146,6 +9430,17 @@
         int rv;
 
         chain = sk_X509_new_null();
+#ifndef OPENSSL_NO_ML_DSA
+        if (SSL_version(s) >= TLS1_3_VERSION
+            && fips_provider_version_ge(libctx, 3, 5, 0)) {
+            if (!TEST_ptr(chain)
+                || !TEST_true(load_chain("root-ml-dsa-44-cert.pem", NULL, NULL, chain))
+                || !TEST_true(load_chain("server-ml-dsa-44-cert.pem", NULL, &x509, NULL))
+                || !TEST_true(load_chain("server-ml-dsa-44-key.pem", &pkey, NULL, NULL)))
+                goto out;
+            goto check;
+        }
+#endif
         if (!TEST_ptr(chain)
             || !TEST_true(load_chain("ca-cert.pem", NULL, NULL, chain))
             || !TEST_true(load_chain("root-cert.pem", NULL, NULL, chain))
@@ -9154,6 +9449,10 @@
             || !TEST_true(load_chain("p256-ee-rsa-ca-key.pem", &pkey,
                 NULL, NULL)))
             goto out;
+
+#ifndef OPENSSL_NO_ML_DSA
+    check:
+#endif
         rv = SSL_check_chain(s, x509, pkey, chain);
         /*
          * If the cert doesn't show as valid here (e.g., because we don't
@@ -9196,7 +9495,7 @@
     int testresult = 0, ret;
 
 #ifdef OPENSSL_NO_EC
-    /* We use an EC cert in these tests, so we skip in a no-ec build */
+    /* We use an EC cert in these tests with TLS 1.2 or absent ML-DSA */
     if (tst >= 3)
         return 1;
 #endif
@@ -9227,21 +9526,34 @@
             NULL, NULL)))
         goto end;
 
-    if (tst == 4) {
+    if (tst == 3) {
+        if (!TEST_true(SSL_set1_sigalgs_list(clientssl,
+                "rsa_pss_rsae_sha256:rsa_pkcs1_sha256:"
+                "?ecdsa_secp256r1_sha256:?mldsa44"))
+            || !TEST_true(SSL_set1_sigalgs_list(serverssl,
+                "rsa_pss_rsae_sha256:rsa_pkcs1_sha256:"
+                "?ecdsa_secp256r1_sha256:?mldsa44")))
+            goto end;
+    } else if (tst == 4) {
         /*
          * We cause SSL_check_chain() to fail by specifying sig_algs that
-         * the chain doesn't meet (the root uses an RSA cert)
+         * the chain doesn't meet (root either RSA or ML-DSA).
          */
         if (!TEST_true(SSL_set1_sigalgs_list(clientssl,
-                "ecdsa_secp256r1_sha256")))
+                "ecdsa_secp256r1_sha256"))
+            || !TEST_true(SSL_set1_sigalgs_list(serverssl,
+                "?ecdsa_secp256r1_sha256:?mldsa44")))
             goto end;
     } else if (tst == 5) {
         /*
          * We cause SSL_check_chain() to fail by specifying sig_algs that
-         * the ee cert doesn't meet (the ee uses an ECDSA cert)
+         * the ee cert doesn't meet (the ee uses an ECDSA or ML-DSA cert)
          */
         if (!TEST_true(SSL_set1_sigalgs_list(clientssl,
-                "rsa_pss_rsae_sha256:rsa_pkcs1_sha256")))
+                "rsa_pss_rsae_sha256:rsa_pkcs1_sha256"))
+            || !TEST_true(SSL_set1_sigalgs_list(serverssl,
+                "rsa_pss_rsae_sha256:rsa_pkcs1_sha256:"
+                "?ecdsa_secp256r1_sha256:?mldsa44")))
             goto end;
     }
 
@@ -10595,11 +10907,13 @@
 /*
  * Test the session_secret_cb which is designed for use with EAP-FAST
  */
-static int test_session_secret_cb(void)
+static int test_session_secret_cb(int idx)
 {
     SSL_CTX *cctx = NULL, *sctx = NULL;
     SSL *clientssl = NULL, *serverssl = NULL;
-    SSL_SESSION *secret_sess = NULL;
+    SSL_SESSION *secret_sess = NULL, *server_sess = NULL;
+    unsigned int sess_len;
+    const unsigned char *sessid;
     int testresult = 0;
 
     if (!TEST_true(create_ssl_ctx_pair(libctx, TLS_server_method(),
@@ -10633,12 +10947,20 @@
             NULL, NULL)))
         goto end;
 
-    /*
-     * No session ids for EAP-FAST - otherwise the state machine gets very
-     * confused.
-     */
-    if (!TEST_true(SSL_SESSION_set1_id(secret_sess, NULL, 0)))
-        goto end;
+    if (idx == 0) {
+        /*
+         * Normal case: no session id
+         */
+        if (!TEST_true(SSL_SESSION_set1_id(secret_sess, NULL, 0)))
+            goto end;
+    } else {
+        /*
+         * Set an explicit session id. Normally we don't support this, but we
+         * can get away with it if we reset the session id later
+         */
+        if (!TEST_true(SSL_SESSION_set1_id(secret_sess, (unsigned char *)"sessionid", 9)))
+            goto end;
+    }
 
     if (!TEST_true(SSL_set_min_proto_version(clientssl, TLS1_2_VERSION))
         || !TEST_true(SSL_set_max_proto_version(serverssl, TLS1_2_VERSION))
@@ -10649,13 +10971,39 @@
         || !TEST_true(SSL_set_session(clientssl, secret_sess)))
         goto end;
 
+    if (idx == 1) {
+        /*
+         * We just send the ClientHello here. We expect this to fail with
+         * SSL_ERROR_WANT_READ
+         */
+        if (!TEST_int_le(SSL_connect(clientssl), 0))
+            goto end;
+        /* Reset the session id to avoid confusing the state machine */
+        if (!TEST_true(SSL_SESSION_set1_id(secret_sess, NULL, 0)))
+            goto end;
+    }
     if (!TEST_true(create_ssl_connection(serverssl, clientssl, SSL_ERROR_NONE)))
         goto end;
 
+    /* Check that session resumption was successful */
+    if (!TEST_true(SSL_session_reused(clientssl))
+        || !TEST_true(SSL_session_reused(serverssl)))
+        goto end;
+
+    if (idx == 1) {
+        server_sess = SSL_get1_session(serverssl);
+        if (!TEST_ptr(server_sess))
+            goto end;
+        sessid = SSL_SESSION_get_id(server_sess, &sess_len);
+
+        if (!TEST_mem_eq(sessid, sess_len, "sessionid", 9))
+            goto end;
+    }
     testresult = 1;
 
 end:
     SSL_SESSION_free(secret_sess);
+    SSL_SESSION_free(server_sess);
     SSL_free(serverssl);
     SSL_free(clientssl);
     SSL_CTX_free(sctx);
@@ -12996,6 +13344,42 @@
     return 1;
 }
 
+/* Extension id reserved for private use by IANA */
+#define TEST_TLS_EXTENSION_ID 65282
+
+static int add_ext_cb_called = 0;
+static int parse_ext_cb_called = 0;
+
+static int add_old_ext(SSL *s, unsigned int ext_type,
+    const unsigned char **out, size_t *outlen,
+    int *al, void *add_arg)
+{
+    static const unsigned char data = 0xff;
+
+    add_ext_cb_called++;
+    *out = &data;
+    *outlen = 1;
+    return 1;
+}
+
+static void free_old_ext(SSL *s, unsigned int ext_type,
+    const unsigned char *out, void *add_arg)
+{
+    /* Do nothing */
+}
+
+static int parse_old_ext(SSL *s, unsigned int ext_type,
+    const unsigned char *in, size_t inlen,
+    int *al, void *parse_arg)
+{
+    parse_ext_cb_called++;
+    if (inlen != 1 || *in != 0xff) {
+        *al = SSL_AD_DECODE_ERROR;
+        return 0;
+    }
+    return 1;
+}
+
 /*
  * Test the QUIC TLS API
  * Test 0: Normal run
@@ -13050,11 +13434,32 @@
         goto end;
 
     if (idx == 5) {
+        static int dummy = 1;
+
         if (!TEST_true(create_ssl_ctx_pair(libctx, TLS_server_method(), NULL,
                 TLS1_3_VERSION, 0,
                 &sctx2, NULL, cert, privkey)))
             goto end;
 
+        /*
+         * We add an old style custom extension to ensure that it gets correctly
+         * handled when we copy QUIC's connection specific custom extensions.
+         */
+        add_ext_cb_called = 0;
+        parse_ext_cb_called = 0;
+        if (!TEST_true(SSL_CTX_add_client_custom_ext(cctx,
+                TEST_TLS_EXTENSION_ID,
+                add_old_ext, free_old_ext, &dummy, parse_old_ext, &dummy)))
+            goto end;
+        if (!TEST_true(SSL_CTX_add_server_custom_ext(sctx,
+                TEST_TLS_EXTENSION_ID,
+                add_old_ext, free_old_ext, &dummy, parse_old_ext, &dummy)))
+            goto end;
+        if (!TEST_true(SSL_CTX_add_server_custom_ext(sctx2,
+                TEST_TLS_EXTENSION_ID,
+                add_old_ext, free_old_ext, &dummy, parse_old_ext, &dummy)))
+            goto end;
+
         /* Set up SNI */
         if (!TEST_true(SSL_CTX_set_tlsext_servername_callback(sctx, sni_cb))
             || !TEST_true(SSL_CTX_set_tlsext_servername_arg(sctx, sctx2)))
@@ -13144,6 +13549,18 @@
         || !TEST_true(cdata.wenc_level == OSSL_RECORD_PROTECTION_LEVEL_APPLICATION))
         goto end;
 
+    /*
+     * We only expect the add cb to have actually been called because we are
+     * using the old style callbacks that only apply to TLSv1.2. Since we are
+     * using TLSv1.3 here, the add will be called for the ClientHello but
+     * nothing else.
+     */
+    if (idx == 5) {
+        if (!TEST_int_eq(add_ext_cb_called, 1)
+            || !TEST_int_eq(parse_ext_cb_called, 0))
+            goto end;
+    }
+
     testresult = 1;
 end:
     SSL_free(serverssl);
@@ -13732,6 +14149,9 @@
     ADD_ALL_TESTS(test_ktls, NUM_KTLS_TEST_CIPHERS * 4);
     ADD_ALL_TESTS(test_ktls_sendfile, NUM_KTLS_TEST_CIPHERS * 2);
 #endif
+#ifndef OSSL_NO_USABLE_TLS1_3
+    ADD_TEST(test_ktls_moving_write_buffer);
+#endif
 #endif
     ADD_TEST(test_large_message_tls);
     ADD_TEST(test_large_message_tls_read_ahead);
@@ -13758,6 +14178,7 @@
     ADD_TEST(test_ssl_bio_pop_ssl_bio);
     ADD_TEST(test_ssl_bio_change_rbio);
     ADD_TEST(test_ssl_bio_change_wbio);
+    ADD_TEST(test_ssl_set_wbio_chain_no_leak);
 #if !defined(OPENSSL_NO_TLS1_2) || defined(OSSL_NO_USABLE_TLS1_3)
     ADD_ALL_TESTS(test_set_sigalgs, OSSL_NELEM(testsigalgs) * 2);
     ADD_TEST(test_keylog);
@@ -13844,6 +14265,7 @@
     ADD_ALL_TESTS(test_ssl_pending, 2);
     ADD_ALL_TESTS(test_ssl_get_shared_ciphers, OSSL_NELEM(shared_ciphers_data));
     ADD_ALL_TESTS(test_ticket_callbacks, 20);
+    ADD_TEST(test_ticket_abort_session_leak);
     ADD_ALL_TESTS(test_shutdown, 7);
     ADD_TEST(test_async_shutdown);
     ADD_ALL_TESTS(test_incorrect_shutdown, 2);
@@ -13868,7 +14290,7 @@
 #endif
 #ifndef OPENSSL_NO_TLS1_2
     ADD_TEST(test_ssl_dup);
-    ADD_TEST(test_session_secret_cb);
+    ADD_ALL_TESTS(test_session_secret_cb, 2);
 #ifndef OPENSSL_NO_DH
     ADD_ALL_TESTS(test_set_tmp_dh, 11);
     ADD_ALL_TESTS(test_dh_auto, 7);
diff -Nru openssl-3.5.6/test/stack_test.c openssl-3.5.7/test/stack_test.c
--- openssl-3.5.6/test/stack_test.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/stack_test.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2017-2026 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright (c) 2017, Oracle and/or its affiliates.  All rights reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
@@ -29,17 +29,17 @@
 typedef struct {
     int n;
     char c;
-} SS;
+} TST_SS;
 
 typedef union {
     int n;
     char c;
-} SU;
+} TST_SU;
 
 DEFINE_SPECIAL_STACK_OF(sint, int)
 DEFINE_SPECIAL_STACK_OF_CONST(uchar, unsigned char)
-DEFINE_STACK_OF(SS)
-DEFINE_STACK_OF_CONST(SU)
+DEFINE_STACK_OF(TST_SS)
+DEFINE_STACK_OF_CONST(TST_SU)
 
 static int int_compare(const int *const *a, const int *const *b)
 {
@@ -255,25 +255,25 @@
     return testresult;
 }
 
-static SS *SS_copy(const SS *p)
+static TST_SS *SS_copy(const TST_SS *p)
 {
-    SS *q = OPENSSL_malloc(sizeof(*q));
+    TST_SS *q = OPENSSL_malloc(sizeof(*q));
 
     if (q != NULL)
         memcpy(q, p, sizeof(*q));
     return q;
 }
 
-static void SS_free(SS *p)
+static void SS_free(TST_SS *p)
 {
     OPENSSL_free(p);
 }
 
 static int test_SS_stack(void)
 {
-    STACK_OF(SS) *s = sk_SS_new_null();
-    STACK_OF(SS) *r = NULL;
-    SS *v[10], *p;
+    STACK_OF(TST_SS) *s = sk_TST_SS_new_null();
+    STACK_OF(TST_SS) *r = NULL;
+    TST_SS *v[10], *p;
     const int n = OSSL_NELEM(v);
     int i;
     int testresult = 0;
@@ -286,25 +286,25 @@
             goto end;
         v[i]->n = i;
         v[i]->c = 'A' + i;
-        if (!TEST_int_eq(sk_SS_num(s), i)) {
+        if (!TEST_int_eq(sk_TST_SS_num(s), i)) {
             TEST_info("SS stack size %d", i);
             goto end;
         }
-        sk_SS_push(s, v[i]);
+        sk_TST_SS_push(s, v[i]);
     }
-    if (!TEST_int_eq(sk_SS_num(s), n))
+    if (!TEST_int_eq(sk_TST_SS_num(s), n))
         goto end;
 
     /* deepcopy */
-    r = sk_SS_deep_copy(NULL, &SS_copy, &SS_free);
-    if (sk_SS_num(r) != 0)
+    r = sk_TST_SS_deep_copy(NULL, &SS_copy, &SS_free);
+    if (sk_TST_SS_num(r) != 0)
         goto end;
-    sk_SS_free(r);
-    r = sk_SS_deep_copy(s, &SS_copy, &SS_free);
+    sk_TST_SS_free(r);
+    r = sk_TST_SS_deep_copy(s, &SS_copy, &SS_free);
     if (!TEST_ptr(r))
         goto end;
     for (i = 0; i < n; i++) {
-        p = sk_SS_value(r, i);
+        p = sk_TST_SS_value(r, i);
         if (!TEST_ptr_ne(p, v[i])) {
             TEST_info("SS deepcopy non-copy %d", i);
             goto end;
@@ -320,33 +320,33 @@
     }
 
     /* pop_free - we rely on the malloc debug to catch the leak */
-    sk_SS_pop_free(r, &SS_free);
+    sk_TST_SS_pop_free(r, &SS_free);
     r = NULL;
 
     /* delete_ptr */
-    p = sk_SS_delete_ptr(s, v[3]);
+    p = sk_TST_SS_delete_ptr(s, v[3]);
     if (!TEST_ptr(p))
         goto end;
     SS_free(p);
-    if (!TEST_int_eq(sk_SS_num(s), n - 1))
+    if (!TEST_int_eq(sk_TST_SS_num(s), n - 1))
         goto end;
     for (i = 0; i < n - 1; i++)
-        if (!TEST_ptr_eq(sk_SS_value(s, i), v[i < 3 ? i : 1 + i])) {
+        if (!TEST_ptr_eq(sk_TST_SS_value(s, i), v[i < 3 ? i : 1 + i])) {
             TEST_info("SS delete ptr item %d", i);
             goto end;
         }
 
     testresult = 1;
 end:
-    sk_SS_pop_free(r, &SS_free);
-    sk_SS_pop_free(s, &SS_free);
+    sk_TST_SS_pop_free(r, &SS_free);
+    sk_TST_SS_pop_free(s, &SS_free);
     return testresult;
 }
 
 static int test_SU_stack(void)
 {
-    STACK_OF(SU) *s = sk_SU_new_null();
-    SU v[10];
+    STACK_OF(TST_SU) *s = sk_TST_SU_new_null();
+    TST_SU v[10];
     const int n = OSSL_NELEM(v);
     int i;
     int testresult = 0;
@@ -357,25 +357,25 @@
             v[i].n = i;
         else
             v[i].c = 'A' + i;
-        if (!TEST_int_eq(sk_SU_num(s), i)) {
+        if (!TEST_int_eq(sk_TST_SU_num(s), i)) {
             TEST_info("SU stack size %d", i);
             goto end;
         }
-        sk_SU_push(s, v + i);
+        sk_TST_SU_push(s, v + i);
     }
-    if (!TEST_int_eq(sk_SU_num(s), n))
+    if (!TEST_int_eq(sk_TST_SU_num(s), n))
         goto end;
 
     /* check the pointers are correct */
     for (i = 0; i < n; i++)
-        if (!TEST_ptr_eq(sk_SU_value(s, i), v + i)) {
+        if (!TEST_ptr_eq(sk_TST_SU_value(s, i), v + i)) {
             TEST_info("SU pointer check %d", i);
             goto end;
         }
 
     testresult = 1;
 end:
-    sk_SU_free(s);
+    sk_TST_SU_free(s);
     return testresult;
 }
 
diff -Nru openssl-3.5.6/test/threadstest.c openssl-3.5.7/test/threadstest.c
--- openssl-3.5.6/test/threadstest.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/threadstest.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -319,12 +319,19 @@
     int count;
     OSSL_TIME t1, t2;
     uint64_t *old, *new;
+    CRYPTO_RCU_CB_ITEM *cbi = NULL;
 
     t1 = ossl_time_now();
 
     for (count = 0;; count++) {
         new = CRYPTO_malloc(sizeof(uint64_t), NULL, 0);
         *new = (uint64_t)0xBAD;
+
+        if (contention == 0) {
+            cbi = ossl_rcu_cb_item_new();
+            OPENSSL_assert(cbi != NULL);
+        }
+
         if (contention == 0)
             OSSL_sleep(1000);
         ossl_rcu_write_lock(rcu_lock);
@@ -333,7 +340,7 @@
         *new = global_ctr++;
         ossl_rcu_assign_ptr(&writer_ptr, &new);
         if (contention == 0)
-            ossl_rcu_call(rcu_lock, free_old_rcu_data, old);
+            ossl_rcu_call(rcu_lock, cbi, free_old_rcu_data, old);
         ossl_rcu_write_unlock(rcu_lock);
         if (contention != 0) {
             ossl_synchronize_rcu(rcu_lock);
diff -Nru openssl-3.5.6/test/tls13tickettest.c openssl-3.5.7/test/tls13tickettest.c
--- openssl-3.5.6/test/tls13tickettest.c	1970-01-01 01:00:00.000000000 +0100
+++ openssl-3.5.7/test/tls13tickettest.c	2026-06-09 13:54:25.000000000 +0200
@@ -0,0 +1,157 @@
+/*
+ * Copyright 2026 The OpenSSL Project Authors. All Rights Reserved.
+ *
+ * Licensed under the Apache License 2.0 (the "License").  You may not use
+ * this file except in compliance with the License.  You can obtain a copy
+ * in the file LICENSE in the source distribution or at
+ * https://www.openssl.org/source/license.html
+ */
+
+#include <openssl/ssl.h>
+#include "helpers/ssltestlib.h"
+#include "testutil.h"
+
+struct stats {
+    unsigned int tickets;
+};
+
+static char *cert = NULL;
+static char *pkey = NULL;
+static int stats_idx = -1;
+
+static int stats_init(struct stats *stats)
+{
+    memset(stats, 0, sizeof(*stats));
+    return 1;
+}
+
+static int sess_new_cb(SSL *ssl, SSL_SESSION *session)
+{
+    struct stats *stats = SSL_get_ex_data(ssl, stats_idx);
+    if (stats == NULL)
+        return 0;
+    if (SSL_is_init_finished(ssl) == 0)
+        stats->tickets++;
+    return 0;
+}
+
+static void handshake_finished(const SSL *ssl)
+{
+    const char *endpoint = SSL_is_server(ssl) ? "server" : "client";
+    if (SSL_session_reused(ssl))
+        TEST_info("%s: Abbreviated handshake finished", endpoint);
+    else
+        TEST_info("%s: Full handshake finished", endpoint);
+}
+
+static void info_cb(const SSL *ssl, int type, int val)
+{
+    const char *endpoint = SSL_is_server(ssl) ? "server" : "client";
+
+    if (type & SSL_CB_ALERT) {
+        const char *dir = (type & SSL_CB_READ) ? "read" : "write";
+
+        TEST_info("%s: alert %s: %s : %s", endpoint, dir,
+            SSL_alert_type_string_long(val),
+            SSL_alert_desc_string_long(val));
+    }
+    if (type & SSL_CB_HANDSHAKE_DONE)
+        handshake_finished(ssl);
+}
+
+static int set_callbacks(SSL *ssl)
+{
+    SSL_set_info_callback(ssl, info_cb);
+    return 1;
+}
+
+static int set_shutdown(SSL *c, SSL *s)
+{
+    SSL_set_shutdown(c, SSL_SENT_SHUTDOWN | SSL_RECEIVED_SHUTDOWN);
+    SSL_set_shutdown(s, SSL_SENT_SHUTDOWN | SSL_RECEIVED_SHUTDOWN);
+    return 1;
+}
+
+static int enable_tickets(SSL_CTX *s, SSL_CTX *c)
+{
+    unsigned int cf = SSL_SESS_CACHE_CLIENT | SSL_SESS_CACHE_NO_INTERNAL_STORE;
+    unsigned int sf = SSL_SESS_CACHE_SERVER | SSL_SESS_CACHE_NO_INTERNAL_STORE;
+
+    SSL_CTX_set_session_cache_mode(s, sf);
+    SSL_CTX_set_session_cache_mode(c, cf);
+    SSL_CTX_set_verify(c, SSL_VERIFY_NONE, NULL);
+
+    SSL_CTX_sess_set_new_cb(s, sess_new_cb);
+    SSL_CTX_sess_set_new_cb(c, sess_new_cb);
+
+    return 1;
+}
+
+/*
+ * Verify ticket regeneration after fallback to a full handshake. If session
+ * resumption fails due to a ciphersuite mismatch, it falls back to a full
+ * handshake. In that case, ensure a new session ticket is issued reflecting the
+ * negotiated ciphersuite.
+ */
+static int test_tls13_ticket_ciphersuite_mismatch(void)
+{
+    struct stats stats1, stats2;
+    SSL_CTX *s_ctx = NULL, *c_ctx = NULL;
+    SSL *s_ssl = NULL, *c_ssl = NULL, *s = NULL, *c = NULL;
+    SSL_SESSION *sess = NULL;
+    int test;
+
+    test = create_ssl_ctx_pair(NULL, TLS_server_method(), TLS_client_method(),
+               TLS1_3_VERSION, TLS1_3_VERSION, &s_ctx, &c_ctx, cert, pkey)
+        && TEST_true(SSL_CTX_set_ciphersuites(s_ctx, "TLS_AES_128_GCM_SHA256"))
+        && TEST_true(SSL_CTX_set_ciphersuites(c_ctx, "TLS_AES_128_GCM_SHA256"))
+        && TEST_true(enable_tickets(s_ctx, c_ctx))
+        && TEST_true(create_ssl_objects(s_ctx, c_ctx, &s, &c, NULL, NULL))
+        && TEST_true(set_callbacks(c))
+        && TEST_true(set_callbacks(s))
+        && TEST_true(stats_init(&stats1))
+        && TEST_true(SSL_set_ex_data(c, stats_idx, &stats1))
+        && TEST_true(create_ssl_connection(s, c, SSL_ERROR_NONE))
+        && TEST_uint_eq(stats1.tickets, 2)
+        && TEST_true(set_shutdown(c, s))
+        && TEST_ptr(sess = SSL_get1_session(c))
+        && TEST_true(SSL_CTX_set_ciphersuites(s_ctx, "TLS_AES_256_GCM_SHA384"))
+        && TEST_true(SSL_CTX_set_ciphersuites(c_ctx, "TLS_AES_256_GCM_SHA384"))
+        && TEST_true(create_ssl_objects(s_ctx, c_ctx, &s_ssl, &c_ssl, NULL, NULL))
+        && TEST_true(SSL_set_session(c_ssl, sess))
+        && TEST_true(set_callbacks(c_ssl))
+        && TEST_true(set_callbacks(s_ssl))
+        && TEST_true(stats_init(&stats2))
+        && TEST_true(SSL_set_ex_data(c_ssl, stats_idx, &stats2))
+        && TEST_true(create_ssl_connection(s_ssl, c_ssl, SSL_ERROR_NONE))
+        && TEST_false(SSL_session_reused(c_ssl))
+        && TEST_uint_eq(stats2.tickets, 2);
+
+    SSL_SESSION_free(sess);
+    SSL_free(s_ssl);
+    SSL_free(c_ssl);
+    SSL_free(s);
+    SSL_free(c);
+    SSL_CTX_free(s_ctx);
+    SSL_CTX_free(c_ctx);
+    return test;
+}
+
+OPT_TEST_DECLARE_USAGE("\n")
+
+int setup_tests(void)
+{
+    if (!test_skip_common_options()) {
+        TEST_error("Error parsing test options\n");
+        return 0;
+    }
+
+    if (!TEST_ptr(cert = test_get_argument(0))
+        || !TEST_ptr(pkey = test_get_argument(1)))
+        return 0;
+
+    stats_idx = SSL_get_ex_new_index(0, NULL, NULL, NULL, NULL);
+    ADD_TEST(test_tls13_ticket_ciphersuite_mismatch);
+
+    return 1;
+}
diff -Nru openssl-3.5.6/test/x509_test.c openssl-3.5.7/test/x509_test.c
--- openssl-3.5.6/test/x509_test.c	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/test/x509_test.c	2026-06-09 13:54:25.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -102,6 +102,21 @@
     return ret;
 }
 
+static int test_x509_verify_with_new(void)
+{
+    int ret;
+    EVP_PKEY *pkey = NULL;
+    X509 *x = NULL;
+
+    ret = TEST_ptr(x = X509_new())
+        && TEST_ptr(pkey = EVP_PKEY_new())
+        && TEST_int_eq(X509_verify(x, pkey), -1)
+        && TEST_int_eq(X509_verify(x, pubkey), -1);
+    X509_free(x);
+    EVP_PKEY_free(pkey);
+    return ret;
+}
+
 /*
  * Test for Regression discussed in PR #19388
  * In order for this simple test to fail, it requires the digest used for
@@ -321,6 +336,7 @@
     ADD_TEST(test_x509_delete_last_extension);
     ADD_TEST(test_x509_crl_delete_last_extension);
     ADD_TEST(test_x509_revoked_delete_last_extension);
+    ADD_TEST(test_x509_verify_with_new);
     return 1;
 }
 
diff -Nru openssl-3.5.6/util/missingcrypto111.txt openssl-3.5.7/util/missingcrypto111.txt
--- openssl-3.5.6/util/missingcrypto111.txt	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/util/missingcrypto111.txt	2026-06-09 13:54:25.000000000 +0200
@@ -226,12 +226,8 @@
 BIO_new_PKCS7(3)
 BIO_new_dgram(3)
 BIO_new_dgram_sctp(3)
-BIO_nread(3)
-BIO_nread0(3)
 BIO_number_read(3)
 BIO_number_written(3)
-BIO_nwrite(3)
-BIO_nwrite0(3)
 BIO_s_datagram(3)
 BIO_s_datagram_sctp(3)
 BIO_s_log(3)
diff -Nru openssl-3.5.6/util/missingcrypto.txt openssl-3.5.7/util/missingcrypto.txt
--- openssl-3.5.6/util/missingcrypto.txt	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/util/missingcrypto.txt	2026-06-09 13:54:25.000000000 +0200
@@ -199,12 +199,8 @@
 BIO_new_NDEF(3)
 BIO_new_PKCS7(3)
 BIO_new_dgram_sctp(3)
-BIO_nread(3)
-BIO_nread0(3)
 BIO_number_read(3)
 BIO_number_written(3)
-BIO_nwrite(3)
-BIO_nwrite0(3)
 BIO_s_datagram_sctp(3)
 BIO_s_log(3)
 BIO_set_tcp_ndelay(3)
diff -Nru openssl-3.5.6/VERSION.dat openssl-3.5.7/VERSION.dat
--- openssl-3.5.6/VERSION.dat	2026-04-07 14:26:30.000000000 +0200
+++ openssl-3.5.7/VERSION.dat	2026-06-09 13:54:25.000000000 +0200
@@ -1,7 +1,7 @@
 MAJOR=3
 MINOR=5
-PATCH=6
+PATCH=7
 PRE_RELEASE_TAG=
 BUILD_METADATA=
-RELEASE_DATE="7 Apr 2026"
+RELEASE_DATE="9 Jun 2026"
 SHLIB_VERSION=3
