From 41a78c78cab1b5b8cbf97bff3ff39ab1b963ec17 Mon Sep 17 00:00:00 2001 From: eabdullin Date: Tue, 11 Nov 2025 21:41:49 +0000 Subject: [PATCH] import UBI gnutls-3.8.10-2.el10 --- .gitignore | 6 +- gnutls-3.7.6-fips-sha1-sigver.patch | 107 - gnutls-3.8.10-tests-ktls.patch | 114 + gnutls-3.8.10-tests-mldsa.patch | 58 + gnutls-3.8.9-allow-rsa-pkcs1-encrypt.patch | 209 +- gnutls-3.8.9-cli-earlydata.patch | 196 -- gnutls-3.8.9-cve-2025-32988.patch | 40 - gnutls-3.8.9-cve-2025-32989.patch | 34 - gnutls-3.8.9-cve-2025-32990.patch | 2092 ------------------- gnutls-3.8.9-cve-2025-6395.patch | 282 --- gnutls-3.8.9-limit-shuffle-extensions.patch | 213 -- gnutls.spec | 72 +- leancrypto-1.2.0-intel-cet.patch | 782 ------- sources | 6 +- 14 files changed, 360 insertions(+), 3851 deletions(-) delete mode 100644 gnutls-3.7.6-fips-sha1-sigver.patch create mode 100644 gnutls-3.8.10-tests-ktls.patch create mode 100644 gnutls-3.8.10-tests-mldsa.patch delete mode 100644 gnutls-3.8.9-cli-earlydata.patch delete mode 100644 gnutls-3.8.9-cve-2025-32988.patch delete mode 100644 gnutls-3.8.9-cve-2025-32989.patch delete mode 100644 gnutls-3.8.9-cve-2025-32990.patch delete mode 100644 gnutls-3.8.9-cve-2025-6395.patch delete mode 100644 gnutls-3.8.9-limit-shuffle-extensions.patch delete mode 100644 leancrypto-1.2.0-intel-cet.patch diff --git a/.gitignore b/.gitignore index 8ba58de..d5c544a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ gmp-6.2.1.tar.xz -gnutls-3.8.9.tar.xz -gnutls-3.8.9.tar.xz.sig -leancrypto-1.2.0.tar.gz +gnutls-3.8.10.tar.xz +gnutls-3.8.10.tar.xz.sig +leancrypto-1.5.0.tar.gz nettle-3.10.1.tar.gz nettle-3.10.1.tar.gz.sig diff --git a/gnutls-3.7.6-fips-sha1-sigver.patch b/gnutls-3.7.6-fips-sha1-sigver.patch deleted file mode 100644 index ceda350..0000000 --- a/gnutls-3.7.6-fips-sha1-sigver.patch +++ /dev/null @@ -1,107 +0,0 @@ -From 115c0edc929a3f09b0a252507112c0de70026b5e Mon Sep 17 00:00:00 2001 -From: rpm-build -Date: Mon, 10 Feb 2025 11:43:51 +0900 -Subject: [PATCH] gnutls-3.7.6-fips-sha1-sigver.patch - -Signed-off-by: rpm-build ---- - lib/nettle/pk.c | 11 ++++------- - lib/pubkey.c | 3 --- - tests/fips-test.c | 8 ++++---- - 3 files changed, 8 insertions(+), 14 deletions(-) - -diff --git a/lib/nettle/pk.c b/lib/nettle/pk.c -index 91eaffd..0b4788a 100644 ---- a/lib/nettle/pk.c -+++ b/lib/nettle/pk.c -@@ -2784,10 +2784,7 @@ static int _wrap_nettle_pk_verify(gnutls_pk_algorithm_t algo, - if (hash_len > vdata->size) - hash_len = vdata->size; - -- /* SHA-1 is allowed for SigVer in FIPS 140-3 in legacy -- * mode */ - switch (DIG_TO_MAC(sign_params->dsa_dig)) { -- case GNUTLS_MAC_SHA1: - case GNUTLS_MAC_SHA256: - case GNUTLS_MAC_SHA384: - case GNUTLS_MAC_SHA512: -@@ -2857,7 +2854,7 @@ static int _wrap_nettle_pk_verify(gnutls_pk_algorithm_t algo, - bits = mpz_sizeinbase(pub.n, 2); - - /* In FIPS 140-3, RSA key size should be larger than 2048-bit. -- * In addition to this, only SHA-1 and SHA-2 are allowed -+ * In addition to this, only SHA-2 is allowed - * for SigVer; it is checked in _pkcs1_rsa_verify_sig in - * lib/pubkey.c. - */ -@@ -2903,9 +2900,9 @@ static int _wrap_nettle_pk_verify(gnutls_pk_algorithm_t algo, - } - - /* RSA modulus size should be 2048-bit or larger in FIPS -- * 140-3. In addition to this, only SHA-1 and SHA-2 are -- * allowed for SigVer, while Nettle only supports -- * SHA256, SHA384, and SHA512 for RSA-PSS (see -+ * 140-3. In addition to this, only SHA-2 is allowed -+ * for SigVer, while Nettle only supports SHA256, -+ * SHA384, and SHA512 for RSA-PSS (see - * _rsa_pss_verify_digest in this file for the details). - */ - if (unlikely(mpz_sizeinbase(pub.n, 2) < 2048)) { -diff --git a/lib/pubkey.c b/lib/pubkey.c -index 1e5ecf3..811e531 100644 ---- a/lib/pubkey.c -+++ b/lib/pubkey.c -@@ -2516,10 +2516,7 @@ static int _pkcs1_rsa_verify_sig(gnutls_pk_algorithm_t pk, - d.size = digest_size; - - if (pk == GNUTLS_PK_RSA) { -- /* SHA-1 is allowed for SigVer in FIPS 140-3 in legacy -- * mode */ - switch (me->id) { -- case GNUTLS_MAC_SHA1: - case GNUTLS_MAC_SHA256: - case GNUTLS_MAC_SHA384: - case GNUTLS_MAC_SHA512: -diff --git a/tests/fips-test.c b/tests/fips-test.c -index 3af4df7..c024427 100644 ---- a/tests/fips-test.c -+++ b/tests/fips-test.c -@@ -596,7 +596,7 @@ void doit(void) - } - FIPS_POP_CONTEXT(NOT_APPROVED); - -- /* Verify a signature created with 2432-bit RSA and SHA-1; approved */ -+ /* Verify a signature created with 2432-bit RSA and SHA-1; not approved */ - FIPS_PUSH_CONTEXT(); - ret = gnutls_pubkey_verify_data2(pubkey, GNUTLS_SIGN_RSA_SHA1, - GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, -@@ -604,7 +604,7 @@ void doit(void) - if (ret < 0) { - fail("gnutls_pubkey_verify_data2 failed\n"); - } -- FIPS_POP_CONTEXT(APPROVED); -+ FIPS_POP_CONTEXT(NOT_APPROVED); - gnutls_free(signature.data); - gnutls_pubkey_deinit(pubkey); - gnutls_privkey_deinit(privkey); -@@ -707,7 +707,7 @@ void doit(void) - } - FIPS_POP_CONTEXT(NOT_APPROVED); - -- /* Verify a signature created with ECDSA and SHA-1; approved */ -+ /* Verify a signature created with ECDSA and SHA-1; not approved */ - FIPS_PUSH_CONTEXT(); - ret = gnutls_pubkey_verify_data2(pubkey, GNUTLS_SIGN_ECDSA_SHA1, - GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, -@@ -715,7 +715,7 @@ void doit(void) - if (ret < 0) { - fail("gnutls_pubkey_verify_data2 failed\n"); - } -- FIPS_POP_CONTEXT(APPROVED); -+ FIPS_POP_CONTEXT(NOT_APPROVED); - gnutls_free(signature.data); - - /* Create a signature with ECDSA and SHA-1 (old API); not approved */ --- -2.48.1 - diff --git a/gnutls-3.8.10-tests-ktls.patch b/gnutls-3.8.10-tests-ktls.patch new file mode 100644 index 0000000..1b23124 --- /dev/null +++ b/gnutls-3.8.10-tests-ktls.patch @@ -0,0 +1,114 @@ +From e0eb2bbb212a5c9d72311c59e7235832a0075dcc Mon Sep 17 00:00:00 2001 +From: rpm-build +Date: Wed, 9 Jul 2025 18:54:48 +0900 +Subject: [PATCH] add tests/ktls_utils.h + +Signed-off-by: rpm-build +--- + tests/ktls_utils.h | 94 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 94 insertions(+) + create mode 100644 tests/ktls_utils.h + +diff --git a/tests/ktls_utils.h b/tests/ktls_utils.h +new file mode 100644 +index 0000000..231618d +--- /dev/null ++++ b/tests/ktls_utils.h +@@ -0,0 +1,94 @@ ++#ifndef GNUTLS_TESTS_KTLS_UTILS_H ++#define GNUTLS_TESTS_KTLS_UTILS_H ++ ++#include ++#include ++ ++#include ++ ++#include ++#include ++ ++/* Sets the NONBLOCK flag on the socket(fd) */ ++inline static int set_nonblocking(int fd) ++{ ++ int flags = fcntl(fd, F_GETFL, 0); ++ if (flags == -1) { ++ return 1; ++ } ++ ++ if (fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1) { ++ return 2; ++ } ++ ++ return 0; ++} ++ ++/* Creates a pair of TCP connected sockets */ ++static int create_socket_pair(int *client_fd, int *server_fd) ++{ ++ int ret; ++ struct sockaddr_in saddr; ++ socklen_t addrlen; ++ int listener; ++ ++ listener = socket(AF_INET, SOCK_STREAM, 0); ++ if (listener == -1) { ++ fail("error in listener(): %s\n", strerror(errno)); ++ return 1; ++ } ++ ++ int opt = 0; ++ setsockopt(listener, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)); ++ ++ memset(&saddr, 0, sizeof(saddr)); ++ saddr.sin_family = AF_INET; ++ saddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); ++ saddr.sin_port = 0; ++ ++ ret = bind(listener, (struct sockaddr *)&saddr, sizeof(saddr)); ++ if (ret == -1) { ++ fail("error in bind(): %s\n", strerror(errno)); ++ return 1; ++ } ++ ++ addrlen = sizeof(saddr); ++ ret = getsockname(listener, (struct sockaddr *)&saddr, &addrlen); ++ if (ret == -1) { ++ fail("error in getsockname(): %s\n", strerror(errno)); ++ return 1; ++ } ++ ++ ret = listen(listener, 1); ++ if (ret == -1) { ++ fail("error in listen(): %s\n", strerror(errno)); ++ close(listener); ++ return 1; ++ } ++ ++ *client_fd = socket(AF_INET, SOCK_STREAM, 0); ++ if (*client_fd < 0) { ++ fail("error in socket(): %s\n", strerror(errno)); ++ return 1; ++ } ++ ++ ret = connect(*client_fd, (struct sockaddr *)&saddr, addrlen); ++ if (ret < 0) { ++ fail("error in connect(): %s\n", strerror(errno)); ++ close(listener); ++ close(*client_fd); ++ return 1; ++ } ++ ++ *server_fd = accept(listener, NULL, NULL); ++ if (*server_fd < 0) { ++ fail("error in accept(): %s\n", strerror(errno)); ++ close(listener); ++ close(*client_fd); ++ return 1; ++ } ++ ++ return 0; ++} ++ ++#endif //GNUTLS_TESTS_KTLS_UTILS_H +-- +2.49.0 + diff --git a/gnutls-3.8.10-tests-mldsa.patch b/gnutls-3.8.10-tests-mldsa.patch new file mode 100644 index 0000000..158632e --- /dev/null +++ b/gnutls-3.8.10-tests-mldsa.patch @@ -0,0 +1,58 @@ +From 15fb5ad536c375a74cc0d87859c9fc919d924c9d Mon Sep 17 00:00:00 2001 +From: rpm-build +Date: Thu, 10 Jul 2025 05:45:06 +0900 +Subject: [PATCH] support VPATH build for mldsa tests + +Signed-off-by: rpm-build +--- + tests/cert-tests/mldsa.sh | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/tests/cert-tests/mldsa.sh b/tests/cert-tests/mldsa.sh +index 7e31e11..55e31ce 100644 +--- a/tests/cert-tests/mldsa.sh ++++ b/tests/cert-tests/mldsa.sh +@@ -130,7 +130,7 @@ for variant in 44 65 87; do + # Check default + TMPKEYDEFAULT=$testdir/key-$algo-$format-default + TMPKEY=$testdir/key-$algo-$format +- ${VALGRIND} "${CERTTOOL}" -k --no-text --infile "data/key-$algo-$format.pem" >"$TMPKEYDEFAULT" ++ ${VALGRIND} "${CERTTOOL}" -k --no-text --infile "$srcdir/data/key-$algo-$format.pem" >"$TMPKEYDEFAULT" + if [ $? != 0 ]; then + cat "$TMPKEYDEFAULT" + exit 1 +@@ -138,19 +138,19 @@ for variant in 44 65 87; do + + # The "expandedKey" format doesn't have public key part + if [ "$format" = seed ] || [ "$format" = both ]; then +- if ! "${DIFF}" "$TMPKEYDEFAULT" "data/key-$algo-both.pem"; then ++ if ! "${DIFF}" "$TMPKEYDEFAULT" "$srcdir/data/key-$algo-both.pem"; then + exit 1 + fi + fi + + # Check roundtrip with --key-format +- ${VALGRIND} "${CERTTOOL}" -k --no-text --key-format "$format" --infile "data/key-$algo-$format.pem" >"$TMPKEY" ++ ${VALGRIND} "${CERTTOOL}" -k --no-text --key-format "$format" --infile "$srcdir/data/key-$algo-$format.pem" >"$TMPKEY" + if [ $? != 0 ]; then + cat "$TMPKEY" + exit 1 + fi + +- if ! "${DIFF}" "$TMPKEY" "data/key-$algo-$format.pem"; then ++ if ! "${DIFF}" "$TMPKEY" "$srcdir/data/key-$algo-$format.pem"; then + exit 1 + fi + done +@@ -164,7 +164,7 @@ for n in 1; do + fi + + echo "Testing inconsistent ML-DSA key ($n)" +- if "${CERTTOOL}" -k --infile "data/key-mldsa-inconsistent$n.pem"; then ++ if "${CERTTOOL}" -k --infile "$srcdir/data/key-mldsa-inconsistent$n.pem"; then + exit 1 + fi + done +-- +2.49.0 + diff --git a/gnutls-3.8.9-allow-rsa-pkcs1-encrypt.patch b/gnutls-3.8.9-allow-rsa-pkcs1-encrypt.patch index 63b3e7c..4fad18c 100644 --- a/gnutls-3.8.9-allow-rsa-pkcs1-encrypt.patch +++ b/gnutls-3.8.9-allow-rsa-pkcs1-encrypt.patch @@ -1,4 +1,4 @@ -From 24de1f83a7ff5432cc9cca2ce7f88590e6c1536d Mon Sep 17 00:00:00 2001 +From 56402841df86125e2eb21fd548bae1bf482d939b Mon Sep 17 00:00:00 2001 From: Daiki Ueno Date: Wed, 18 Dec 2024 01:11:50 +0900 Subject: [PATCH 1/6] pk: use deterministic RNG for RSA-PSS in self-tests @@ -12,10 +12,10 @@ Signed-off-by: Daiki Ueno 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/nettle/pk.c b/lib/nettle/pk.c -index 91eaffd689..f2d484bec5 100644 +index 5986a410c2..7baf003f41 100644 --- a/lib/nettle/pk.c +++ b/lib/nettle/pk.c -@@ -1697,11 +1697,7 @@ static int _rsa_pss_sign_digest_tr(gnutls_digest_algorithm_t dig, +@@ -1494,11 +1494,7 @@ static int _rsa_pss_sign_digest_tr(gnutls_digest_algorithm_t dig, if (salt == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -28,7 +28,7 @@ index 91eaffd689..f2d484bec5 100644 } ret = sign_func(pub, priv, rnd_ctx, rnd_func, salt_size, salt, digest, -@@ -1712,7 +1708,6 @@ static int _rsa_pss_sign_digest_tr(gnutls_digest_algorithm_t dig, +@@ -1509,7 +1505,6 @@ static int _rsa_pss_sign_digest_tr(gnutls_digest_algorithm_t dig, } else ret = 0; @@ -36,7 +36,7 @@ index 91eaffd689..f2d484bec5 100644 gnutls_free(salt); return ret; } -@@ -2500,6 +2495,7 @@ static int _wrap_nettle_pk_sign(gnutls_pk_algorithm_t algo, +@@ -2126,6 +2121,7 @@ static int _wrap_nettle_pk_sign(gnutls_pk_algorithm_t algo, case GNUTLS_PK_RSA_PSS: { struct rsa_private_key priv; struct rsa_public_key pub; @@ -44,7 +44,7 @@ index 91eaffd689..f2d484bec5 100644 mpz_t s; _rsa_params_to_privkey(pk_params, &priv); -@@ -2531,8 +2527,12 @@ static int _wrap_nettle_pk_sign(gnutls_pk_algorithm_t algo, +@@ -2157,8 +2153,12 @@ static int _wrap_nettle_pk_sign(gnutls_pk_algorithm_t algo, not_approved = true; } @@ -59,10 +59,10 @@ index 91eaffd689..f2d484bec5 100644 vdata->data, s); if (ret < 0) { -- -2.48.1 +2.49.0 -From 49d06efa414ff3a2957ab94ff8967ceec20d026b Mon Sep 17 00:00:00 2001 +From 9f60b84e1496fa7bc62a136b83519e54ba935721 Mon Sep 17 00:00:00 2001 From: Daiki Ueno Date: Tue, 17 Dec 2024 16:55:47 +0900 Subject: [PATCH 2/6] fips: perform RSA self-tests using RSA-PSS instead of @@ -204,10 +204,10 @@ index 63306705aa..84a70b5619 100644 ret = gnutls_pk_self_test(0, GNUTLS_PK_EC); -- -2.48.1 +2.49.0 -From 2117b2d505116efb43b14f4ef8914142780170f6 Mon Sep 17 00:00:00 2001 +From f653b2c15f4dd550f7937cf86d255a3c96bdb236 Mon Sep 17 00:00:00 2001 From: Daiki Ueno Date: Wed, 12 Feb 2025 07:23:59 +0900 Subject: [PATCH 3/6] pk: sprinkle SPKI over encryption functions @@ -222,10 +222,11 @@ Signed-off-by: Daiki Ueno lib/auth/rsa_psk.c | 2 +- lib/crypto-backend.h | 9 ++++++--- lib/nettle/pk.c | 40 ++++++++++++++++++++++++---------------- - lib/pk.h | 18 ++++++++++++------ + lib/pk.h | 17 +++++++++++------ + lib/pkcs11/p11_pk.c | 23 +++++++++++++---------- lib/privkey.c | 6 ++++-- lib/pubkey.c | 2 +- - 7 files changed, 49 insertions(+), 30 deletions(-) + 8 files changed, 61 insertions(+), 40 deletions(-) diff --git a/lib/auth/rsa.c b/lib/auth/rsa.c index b5ecc092f8..4d181327ba 100644 @@ -254,10 +255,10 @@ index 399fb4da14..9f97569c5b 100644 return ret; } diff --git a/lib/crypto-backend.h b/lib/crypto-backend.h -index f213a43dcf..1c7a25fd12 100644 +index 74e29a7cb9..24cbb60f77 100644 --- a/lib/crypto-backend.h +++ b/lib/crypto-backend.h -@@ -378,13 +378,16 @@ typedef struct gnutls_crypto_pk { +@@ -386,13 +386,16 @@ typedef struct gnutls_crypto_pk { * parameters, depending on the operation */ int (*encrypt)(gnutls_pk_algorithm_t, gnutls_datum_t *ciphertext, const gnutls_datum_t *plaintext, @@ -278,10 +279,10 @@ index f213a43dcf..1c7a25fd12 100644 const gnutls_datum_t *data, const gnutls_pk_params_st *priv, const gnutls_x509_spki_st *sign); diff --git a/lib/nettle/pk.c b/lib/nettle/pk.c -index f2d484bec5..9fa63c4a56 100644 +index 7baf003f41..ffd7493748 100644 --- a/lib/nettle/pk.c +++ b/lib/nettle/pk.c -@@ -1221,7 +1221,8 @@ static inline int _rsa_oaep_encrypt(gnutls_digest_algorithm_t dig, +@@ -1018,7 +1018,8 @@ static inline int _rsa_oaep_encrypt(gnutls_digest_algorithm_t dig, static int _wrap_nettle_pk_encrypt(gnutls_pk_algorithm_t algo, gnutls_datum_t *ciphertext, const gnutls_datum_t *plaintext, @@ -291,7 +292,7 @@ index f2d484bec5..9fa63c4a56 100644 { int ret; bool not_approved = false; -@@ -1297,10 +1298,10 @@ static int _wrap_nettle_pk_encrypt(gnutls_pk_algorithm_t algo, +@@ -1094,10 +1095,10 @@ static int _wrap_nettle_pk_encrypt(gnutls_pk_algorithm_t algo, goto cleanup; } @@ -305,7 +306,7 @@ index f2d484bec5..9fa63c4a56 100644 plaintext->size, plaintext->data, buf); if (ret == 0 || HAVE_LIB_ERROR()) { ret = gnutls_assert_val(GNUTLS_E_ENCRYPTION_FAILED); -@@ -1395,7 +1396,8 @@ static inline int _rsa_oaep_decrypt(gnutls_digest_algorithm_t dig, +@@ -1192,7 +1193,8 @@ static inline int _rsa_oaep_decrypt(gnutls_digest_algorithm_t dig, static int _wrap_nettle_pk_decrypt(gnutls_pk_algorithm_t algo, gnutls_datum_t *plaintext, const gnutls_datum_t *ciphertext, @@ -315,7 +316,7 @@ index f2d484bec5..9fa63c4a56 100644 { int ret; bool not_approved = false; -@@ -1403,7 +1405,7 @@ static int _wrap_nettle_pk_decrypt(gnutls_pk_algorithm_t algo, +@@ -1200,7 +1202,7 @@ static int _wrap_nettle_pk_decrypt(gnutls_pk_algorithm_t algo, FAIL_IF_LIB_ERROR; @@ -324,7 +325,7 @@ index f2d484bec5..9fa63c4a56 100644 algo = GNUTLS_PK_RSA_OAEP; } -@@ -1488,10 +1490,10 @@ static int _wrap_nettle_pk_decrypt(gnutls_pk_algorithm_t algo, +@@ -1285,10 +1287,10 @@ static int _wrap_nettle_pk_decrypt(gnutls_pk_algorithm_t algo, random_func = rnd_nonce_func_fallback; else random_func = rnd_nonce_func; @@ -338,7 +339,7 @@ index f2d484bec5..9fa63c4a56 100644 &length, buf, ciphertext->data); if (ret == 0 || HAVE_LIB_ERROR()) { -@@ -1557,7 +1559,8 @@ static int _wrap_nettle_pk_decrypt2(gnutls_pk_algorithm_t algo, +@@ -1354,7 +1356,8 @@ static int _wrap_nettle_pk_decrypt2(gnutls_pk_algorithm_t algo, const gnutls_datum_t *ciphertext, unsigned char *plaintext, size_t plaintext_size, @@ -348,7 +349,7 @@ index f2d484bec5..9fa63c4a56 100644 { struct rsa_private_key priv; struct rsa_public_key pub; -@@ -1573,7 +1576,7 @@ static int _wrap_nettle_pk_decrypt2(gnutls_pk_algorithm_t algo, +@@ -1370,7 +1373,7 @@ static int _wrap_nettle_pk_decrypt2(gnutls_pk_algorithm_t algo, goto fail; } @@ -357,7 +358,7 @@ index f2d484bec5..9fa63c4a56 100644 algo = GNUTLS_PK_RSA_OAEP; } -@@ -1610,10 +1613,10 @@ static int _wrap_nettle_pk_decrypt2(gnutls_pk_algorithm_t algo, +@@ -1407,10 +1410,10 @@ static int _wrap_nettle_pk_decrypt2(gnutls_pk_algorithm_t algo, ciphertext->data); break; case GNUTLS_PK_RSA_OAEP: @@ -371,7 +372,7 @@ index f2d484bec5..9fa63c4a56 100644 &plaintext_size, plaintext, ciphertext->data); break; -@@ -3645,6 +3648,11 @@ static int pct_test(gnutls_pk_algorithm_t algo, +@@ -3255,6 +3258,11 @@ static int pct_test(gnutls_pk_algorithm_t algo, ret = gnutls_assert_val(GNUTLS_E_PK_GENERATION_ERROR); goto cleanup; } @@ -383,7 +384,7 @@ index f2d484bec5..9fa63c4a56 100644 } else { ddata.data = (void *)const_data; ddata.size = sizeof(const_data); -@@ -3670,7 +3678,7 @@ static int pct_test(gnutls_pk_algorithm_t algo, +@@ -3280,7 +3288,7 @@ static int pct_test(gnutls_pk_algorithm_t algo, } } @@ -392,7 +393,7 @@ index f2d484bec5..9fa63c4a56 100644 if (ret < 0) { ret = gnutls_assert_val(GNUTLS_E_PK_GENERATION_ERROR); } -@@ -3679,7 +3687,7 @@ static int pct_test(gnutls_pk_algorithm_t algo, +@@ -3289,7 +3297,7 @@ static int pct_test(gnutls_pk_algorithm_t algo, ret = gnutls_assert_val(GNUTLS_E_PK_GENERATION_ERROR); } if (ret == 0 && @@ -402,34 +403,118 @@ index f2d484bec5..9fa63c4a56 100644 } if (ret == 0 && diff --git a/lib/pk.h b/lib/pk.h -index eca4e02d73..873ec4ef4e 100644 +index 6969b534de..246d6e0299 100644 --- a/lib/pk.h +++ b/lib/pk.h -@@ -26,12 +26,18 @@ +@@ -27,13 +27,18 @@ + extern int crypto_pk_prio; - extern gnutls_crypto_pk_st _gnutls_pk_ops; -#define _gnutls_pk_encrypt(algo, ciphertext, plaintext, params) \ -- _gnutls_pk_ops.encrypt(algo, ciphertext, plaintext, params) +- _gnutls_pk_backend()->encrypt(algo, ciphertext, plaintext, params) -#define _gnutls_pk_decrypt(algo, ciphertext, plaintext, params) \ -- _gnutls_pk_ops.decrypt(algo, ciphertext, plaintext, params) --#define _gnutls_pk_decrypt2(algo, ciphertext, plaintext, size, params) \ -- _gnutls_pk_ops.decrypt2(algo, ciphertext, plaintext, size, params) -+#define _gnutls_pk_encrypt(algo, ciphertext, plaintext, params, \ -+ encrypt_params) \ -+ _gnutls_pk_ops.encrypt(algo, ciphertext, plaintext, params, \ -+ encrypt_params) -+#define _gnutls_pk_decrypt(algo, ciphertext, plaintext, params, \ -+ encrypt_params) \ -+ _gnutls_pk_ops.decrypt(algo, ciphertext, plaintext, params, \ -+ encrypt_params) -+#define _gnutls_pk_decrypt2(algo, ciphertext, plaintext, size, params, \ -+ encrypt_params) \ -+ _gnutls_pk_ops.decrypt2(algo, ciphertext, plaintext, size, params, \ -+ encrypt_params) +- _gnutls_pk_backend()->decrypt(algo, ciphertext, plaintext, params) +-#define _gnutls_pk_decrypt2(algo, ciphertext, plaintext, size, params) \ ++#define _gnutls_pk_encrypt(algo, ciphertext, plaintext, params, \ ++ encrypt_params) \ ++ _gnutls_pk_backend()->encrypt(algo, ciphertext, plaintext, params, \ ++ encrypt_params) ++#define _gnutls_pk_decrypt(algo, ciphertext, plaintext, params, \ ++ encrypt_params) \ ++ _gnutls_pk_backend()->decrypt(algo, ciphertext, plaintext, params, \ ++ encrypt_params) ++#define _gnutls_pk_decrypt2(algo, ciphertext, plaintext, size, params, \ ++ encrypt_params) \ + _gnutls_pk_backend()->decrypt2(algo, ciphertext, plaintext, size, \ +- params) ++ params, encrypt_params) #define _gnutls_pk_sign(algo, sig, data, params, sign_params) \ - _gnutls_pk_ops.sign(algo, sig, data, params, sign_params) + _gnutls_pk_backend()->sign(algo, sig, data, params, sign_params) #define _gnutls_pk_verify(algo, data, sig, params, sign_params) \ +diff --git a/lib/pkcs11/p11_pk.c b/lib/pkcs11/p11_pk.c +index 34a9cd24bc..8227998a2f 100644 +--- a/lib/pkcs11/p11_pk.c ++++ b/lib/pkcs11/p11_pk.c +@@ -228,9 +228,9 @@ cleanup: + } + + static bool init_rsa_oaep_param(CK_RSA_PKCS_OAEP_PARAMS *param, +- const gnutls_pk_params_st *pk_params) ++ const gnutls_x509_spki_st *encrypt_params) + { +- switch (pk_params->spki.rsa_oaep_dig) { ++ switch (encrypt_params->rsa_oaep_dig) { + case GNUTLS_DIG_SHA256: + param->hashAlg = CKM_SHA256; + param->mgf = CKG_MGF1_SHA256; +@@ -247,8 +247,8 @@ static bool init_rsa_oaep_param(CK_RSA_PKCS_OAEP_PARAMS *param, + return false; + } + param->source = CKZ_DATA_SPECIFIED; +- param->pSourceData = pk_params->spki.rsa_oaep_label.data; +- param->ulSourceDataLen = pk_params->spki.rsa_oaep_label.size; ++ param->pSourceData = encrypt_params->rsa_oaep_label.data; ++ param->ulSourceDataLen = encrypt_params->rsa_oaep_label.size; + return true; + } + +@@ -706,7 +706,8 @@ static int derive_ecdh_secret(CK_SESSION_HANDLE session, + static int _wrap_p11_pk_encrypt(gnutls_pk_algorithm_t algo, + gnutls_datum_t *ciphertext, + const gnutls_datum_t *plaintext, +- const gnutls_pk_params_st *pk_params) ++ const gnutls_pk_params_st *pk_params, ++ const gnutls_x509_spki_st *encrypt_params) + { + int ret = 0; + CK_RV rv; +@@ -742,7 +743,7 @@ static int _wrap_p11_pk_encrypt(gnutls_pk_algorithm_t algo, + mech.pParameter = ¶m_rsa_oaep; + mech.ulParameterLen = sizeof(param_rsa_oaep); + +- if (!init_rsa_oaep_param(¶m_rsa_oaep, pk_params)) { ++ if (!init_rsa_oaep_param(¶m_rsa_oaep, encrypt_params)) { + ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + goto cleanup; + } +@@ -798,7 +799,8 @@ cleanup: + static int _wrap_p11_pk_decrypt(gnutls_pk_algorithm_t algo, + gnutls_datum_t *plaintext, + const gnutls_datum_t *ciphertext, +- const gnutls_pk_params_st *pk_params) ++ const gnutls_pk_params_st *pk_params, ++ const gnutls_x509_spki_st *encrypt_params) + { + int ret = 0; + CK_RV rv; +@@ -834,7 +836,7 @@ static int _wrap_p11_pk_decrypt(gnutls_pk_algorithm_t algo, + mech.pParameter = ¶m_rsa_oaep; + mech.ulParameterLen = sizeof(param_rsa_oaep); + +- if (!init_rsa_oaep_param(¶m_rsa_oaep, pk_params)) { ++ if (!init_rsa_oaep_param(¶m_rsa_oaep, encrypt_params)) { + ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + goto cleanup; + } +@@ -890,7 +892,8 @@ static int _wrap_p11_pk_decrypt2(gnutls_pk_algorithm_t algo, + const gnutls_datum_t *ciphertext, + unsigned char *plaintext, + size_t plaintext_size, +- const gnutls_pk_params_st *pk_params) ++ const gnutls_pk_params_st *pk_params, ++ const gnutls_x509_spki_st *encrypt_params) + { + int ret = 0; + uint32_t is_err; +@@ -928,7 +931,7 @@ static int _wrap_p11_pk_decrypt2(gnutls_pk_algorithm_t algo, + mech.pParameter = ¶m_rsa_oaep; + mech.ulParameterLen = sizeof(param_rsa_oaep); + +- if (!init_rsa_oaep_param(¶m_rsa_oaep, pk_params)) { ++ if (!init_rsa_oaep_param(¶m_rsa_oaep, encrypt_params)) { + ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + goto cleanup; + } diff --git a/lib/privkey.c b/lib/privkey.c index 84e984f6b9..05a3804c25 100644 --- a/lib/privkey.c @@ -455,7 +540,7 @@ index 84e984f6b9..05a3804c25 100644 case GNUTLS_PRIVKEY_PKCS11: return _gnutls_pkcs11_privkey_decrypt_data2(key->key.pkcs11, diff --git a/lib/pubkey.c b/lib/pubkey.c -index 1e5ecf31cd..97ac347348 100644 +index 02a08b8163..73dd9e16b0 100644 --- a/lib/pubkey.c +++ b/lib/pubkey.c @@ -2336,7 +2336,7 @@ int gnutls_pubkey_encrypt_data(gnutls_pubkey_t key, unsigned int flags, @@ -468,10 +553,10 @@ index 1e5ecf31cd..97ac347348 100644 static int pubkey_supports_sig(gnutls_pubkey_t pubkey, -- -2.48.1 +2.49.0 -From 12da96dbc7f3e1061a066cbb589844018c031737 Mon Sep 17 00:00:00 2001 +From e1be1e6b805b50a43ada57757ffe9cdf201289b5 Mon Sep 17 00:00:00 2001 From: Daiki Ueno Date: Wed, 12 Feb 2025 12:13:47 +0900 Subject: [PATCH 4/6] pk: exercise decrypt2 in PCT @@ -482,10 +567,10 @@ Signed-off-by: Daiki Ueno 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/nettle/pk.c b/lib/nettle/pk.c -index 9fa63c4a56..65c3d8a990 100644 +index ffd7493748..e4ad772842 100644 --- a/lib/nettle/pk.c +++ b/lib/nettle/pk.c -@@ -1571,7 +1571,8 @@ static int _wrap_nettle_pk_decrypt2(gnutls_pk_algorithm_t algo, +@@ -1368,7 +1368,8 @@ static int _wrap_nettle_pk_decrypt2(gnutls_pk_algorithm_t algo, FAIL_IF_LIB_ERROR; @@ -495,7 +580,7 @@ index 9fa63c4a56..65c3d8a990 100644 ret = gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); goto fail; } -@@ -3695,6 +3696,16 @@ static int pct_test(gnutls_pk_algorithm_t algo, +@@ -3305,6 +3306,16 @@ static int pct_test(gnutls_pk_algorithm_t algo, memcmp(tmp.data, ddata.data, tmp.size) == 0)) { ret = gnutls_assert_val(GNUTLS_E_PK_GENERATION_ERROR); } @@ -513,10 +598,10 @@ index 9fa63c4a56..65c3d8a990 100644 if (algo == GNUTLS_PK_RSA) { if (unlikely(gnutls_fips140_pop_context() < 0)) { -- -2.48.1 +2.49.0 -From cce5688e3cb40eb535d2317cd263347f3bccbeb8 Mon Sep 17 00:00:00 2001 +From 4e7b9e800f17bb0655e6d4de8f101d8a3b601fbc Mon Sep 17 00:00:00 2001 From: Daiki Ueno Date: Mon, 27 Jan 2025 16:36:41 +0900 Subject: [PATCH 5/6] fips: perform both PCTs for unrestricted RSA key @@ -535,10 +620,10 @@ Signed-off-by: Daiki Ueno 3 files changed, 19 insertions(+), 41 deletions(-) diff --git a/lib/nettle/pk.c b/lib/nettle/pk.c -index 65c3d8a990..5cad889f91 100644 +index e4ad772842..f7f7c0637b 100644 --- a/lib/nettle/pk.c +++ b/lib/nettle/pk.c -@@ -3603,7 +3603,6 @@ static int pct_test(gnutls_pk_algorithm_t algo, +@@ -3213,7 +3213,6 @@ static int pct_test(gnutls_pk_algorithm_t algo, gnutls_datum_t ddata, tmp = { NULL, 0 }; char *gen_data = NULL; gnutls_x509_spki_st spki; @@ -546,7 +631,7 @@ index 65c3d8a990..5cad889f91 100644 ret = _gnutls_x509_spki_copy(&spki, ¶ms->spki); if (ret < 0) { -@@ -3661,25 +3660,23 @@ static int pct_test(gnutls_pk_algorithm_t algo, +@@ -3271,25 +3270,23 @@ static int pct_test(gnutls_pk_algorithm_t algo, switch (algo) { case GNUTLS_PK_RSA: @@ -588,7 +673,7 @@ index 65c3d8a990..5cad889f91 100644 if (ret < 0) { ret = gnutls_assert_val(GNUTLS_E_PK_GENERATION_ERROR); } -@@ -3707,14 +3704,6 @@ static int pct_test(gnutls_pk_algorithm_t algo, +@@ -3317,14 +3314,6 @@ static int pct_test(gnutls_pk_algorithm_t algo, ret = gnutls_assert_val(GNUTLS_E_PK_GENERATION_ERROR); } @@ -603,7 +688,7 @@ index 65c3d8a990..5cad889f91 100644 if (ret < 0) { goto cleanup; } -@@ -3722,12 +3711,7 @@ static int pct_test(gnutls_pk_algorithm_t algo, +@@ -3332,12 +3321,7 @@ static int pct_test(gnutls_pk_algorithm_t algo, free(sig.data); sig.data = NULL; @@ -651,10 +736,10 @@ index 61a76d3c09..2963ccd531 100644 sign_verify_unsuccessfully(privkey, pubkey); generate_unsuccessfully(&privkey, &pubkey, 1024); -- -2.48.1 +2.49.0 -From 4e1642b13fdf194aa007cb37086ce9d42f867e47 Mon Sep 17 00:00:00 2001 +From 7b5f1bddcd77d61531fdb5c084c43947786b27ab Mon Sep 17 00:00:00 2001 From: Daiki Ueno Date: Mon, 10 Feb 2025 15:57:39 +0900 Subject: [PATCH 6/6] tests: do not assume RSAES-PKCS1-v1_5 is enabled in @@ -686,5 +771,5 @@ index 714d0af946..30cb77ca50 100755 - exit 0 -- -2.48.1 +2.49.0 diff --git a/gnutls-3.8.9-cli-earlydata.patch b/gnutls-3.8.9-cli-earlydata.patch deleted file mode 100644 index 783c5b1..0000000 --- a/gnutls-3.8.9-cli-earlydata.patch +++ /dev/null @@ -1,196 +0,0 @@ -From 54c06a9cd7bcf8f245cf5f9da760f91939259f69 Mon Sep 17 00:00:00 2001 -From: Daiki Ueno -Date: Sun, 16 Feb 2025 09:02:46 +0900 -Subject: [PATCH 1/3] serv: fix detection of early data reception - -Upon success, gnutls_record_recv_early_data returns the amount of data -received, so the application should treat positive numbers as an -indication of early data reception. - -Signed-off-by: Daiki Ueno ---- - src/serv.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/serv.c b/src/serv.c -index 17db12c5ca..86008c9523 100644 ---- a/src/serv.c -+++ b/src/serv.c -@@ -1690,7 +1690,7 @@ static void tcp_server(const char *name, int port, int timeout) - GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { - j->earlydata_eof = 1; - } -- if (r == 0) { -+ if (r >= 0) { - earlydata_read = 1; - } - } --- -2.49.0 - - -From 8c488288ea05a759977dccd4ee4d61610da4dc38 Mon Sep 17 00:00:00 2001 -From: Daiki Ueno -Date: Mon, 17 Mar 2025 09:00:44 +0900 -Subject: [PATCH 2/3] cli: send early data only after session data is set - -Now that max_early_data_size is recorded as part of the stored -resumption data, this needs to be read before attempting to send early -data. - -Signed-off-by: Daiki Ueno ---- - src/socket.c | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/src/socket.c b/src/socket.c -index 48784b67fa..f32910c239 100644 ---- a/src/socket.c -+++ b/src/socket.c -@@ -580,6 +580,11 @@ void socket_open_int(socket_st *hd, const char *hostname, const char *service, - } - - if (hd->session) { -+ if (hd->rdata.data) { -+ gnutls_session_set_data(hd->session, -+ hd->rdata.data, -+ hd->rdata.size); -+ } - if (hd->edata.data) { - ret = gnutls_record_send_early_data( - hd->session, hd->edata.data, -@@ -591,11 +596,6 @@ void socket_open_int(socket_st *hd, const char *hostname, const char *service, - exit(1); - } - } -- if (hd->rdata.data) { -- gnutls_session_set_data(hd->session, -- hd->rdata.data, -- hd->rdata.size); -- } - - if (client_trace || server_trace) { - hd->server_trace = server_trace; --- -2.49.0 - - -From 56fa5e1901fe40a97553cf3141a4d205c4286702 Mon Sep 17 00:00:00 2001 -From: Daiki Ueno -Date: Sun, 16 Feb 2025 09:04:50 +0900 -Subject: [PATCH 3/3] tests: add basic tests for 0-RTT with gnutls-serv and - gnutls-cli - -Signed-off-by: Daiki Ueno ---- - tests/Makefile.am | 2 +- - tests/gnutls-cli-earlydata.sh | 84 +++++++++++++++++++++++++++++++++++ - 2 files changed, 85 insertions(+), 1 deletion(-) - create mode 100755 tests/gnutls-cli-earlydata.sh - -diff --git a/tests/Makefile.am b/tests/Makefile.am -index ec8fd982c5..72926e9da4 100644 ---- a/tests/Makefile.am -+++ b/tests/Makefile.am -@@ -546,7 +546,7 @@ dist_check_SCRIPTS += fastopen.sh pkgconfig.sh starttls.sh starttls-ftp.sh start - sni-resume.sh ocsp-tests/ocsptool.sh cert-reencoding.sh pkcs7-cat.sh long-crl.sh \ - serv-udp.sh logfile-option.sh gnutls-cli-resume.sh profile-tests.sh \ - server-weak-keys.sh ocsp-tests/ocsp-signer-verify.sh cfg-test.sh \ -- sanity-lib.sh -+ sanity-lib.sh gnutls-cli-earlydata.sh - - if !DISABLE_SYSTEM_CONFIG - dist_check_SCRIPTS += system-override-sig.sh system-override-hash.sh \ -diff --git a/tests/gnutls-cli-earlydata.sh b/tests/gnutls-cli-earlydata.sh -new file mode 100755 -index 0000000000..72763f029f ---- /dev/null -+++ b/tests/gnutls-cli-earlydata.sh -@@ -0,0 +1,84 @@ -+#!/bin/sh -+ -+# Copyright (C) 2025 Red Hat, Inc. -+# -+# Author: Daiki Ueno -+# -+# This file is part of GnuTLS. -+# -+# GnuTLS is free software; you can redistribute it and/or modify it -+# under the terms of the GNU General Public License as published by the -+# Free Software Foundation; either version 3 of the License, or (at -+# your option) any later version. -+# -+# GnuTLS is distributed in the hope that it will be useful, but -+# WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+# General Public License for more details. -+# -+# You should have received a copy of the GNU Lesser General Public License -+# along with this program. If not, see -+# -+ -+: ${srcdir=.} -+: ${SERV=../src/gnutls-serv${EXEEXT}} -+: ${CLI=../src/gnutls-cli${EXEEXT}} -+unset RETCODE -+ -+if ! test -x "$SERV"; then -+ exit 77 -+fi -+ -+if ! test -x "$CLI"; then -+ exit 77 -+fi -+ -+if test "$WINDIR" != ""; then -+ exit 77 -+fi -+ -+if test -n "$VALGRIND"; then -+ VALGRIND="${LIBTOOL:-libtool} --mode=execute $VALGRIND --error-exitcode=1" -+fi -+ -+SERV="$SERV -q" -+ -+. "$srcdir/scripts/common.sh" -+ -+: ${ac_cv_sizeof_time_t=8} -+if test "$ac_cv_sizeof_time_t" -ge 8; then -+ ATTIME_VALID="2038-10-12" # almost the pregenerated cert expiration -+else -+ ATTIME_VALID="2030-12-17" # end of epoch − 2590 days of validity -+fi -+ -+testdir=`create_testdir earlydata` -+KEY="$srcdir/../doc/credentials/x509/key-ecc.pem" -+CERT="$srcdir/../doc/credentials/x509/cert-ecc.pem" -+CACERT="$srcdir/../doc/credentials/x509/ca.pem" -+ -+eval "$GETPORT" -+launch_server --echo --x509keyfile "$KEY" --x509certfile "$CERT" --disable-client-cert --earlydata --maxearlydata 1000 -+PID=$! -+wait_server "$PID" -+ -+echo "This is a test message" > "$testdir/earlydata.txt" -+ -+$VALGRIND "$CLI" --attime="$ATTIME_VALID" -p "$PORT" localhost --logfile="$testdir/cli.log" --priority="NORMAL:-VERS-ALL:+VERS-TLS1.3" --x509cafile "$CACERT" --resume --waitresumption --earlydata="$testdir/earlydata.txt" "$testdir/cli.out" -+if test $? -ne 0; then -+ cat "$testdir/cli.log" -+ fail "$PID" "failed to communicate with the server" -+fi -+ -+if ! grep "This is a resumed session" "$testdir/cli.log" > /dev/null; then -+ fail "$PID" "session is not resumed" -+fi -+ -+if ! cmp "$testdir/earlydata.txt" "$testdir/cli.out" > /dev/null; then -+ fail "$PID" "early data has not been sent back" -+fi -+ -+kill "$PID" -+wait -+ -+exit 0 --- -2.49.0 - diff --git a/gnutls-3.8.9-cve-2025-32988.patch b/gnutls-3.8.9-cve-2025-32988.patch deleted file mode 100644 index 088a40d..0000000 --- a/gnutls-3.8.9-cve-2025-32988.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 741e8c7e011b859955a9424579af48f80d6a754a Mon Sep 17 00:00:00 2001 -From: Daiki Ueno -Date: Mon, 7 Jul 2025 10:44:12 +0900 -Subject: [PATCH] x509: avoid double free when exporting othernames in SAN - -Previously, the _gnutls_write_new_othername function, called by -gnutls_x509_ext_export_subject_alt_names to export "otherName" in a -certificate's SAN extension, freed the caller allocated ASN.1 -structure upon error, resulting in a potential double-free. - -Reported by OpenAI Security Research Team. - -Signed-off-by: Daiki Ueno ---- - lib/x509/extensions.c | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/lib/x509/extensions.c b/lib/x509/extensions.c -index 6c2da8fd10..e8be12eaf5 100644 ---- a/lib/x509/extensions.c -+++ b/lib/x509/extensions.c -@@ -754,7 +754,6 @@ int _gnutls_write_new_othername(asn1_node ext, const char *ext_name, - result = asn1_write_value(ext, name2, oid, 1); - if (result != ASN1_SUCCESS) { - gnutls_assert(); -- asn1_delete_structure(&ext); - return _gnutls_asn2err(result); - } - -@@ -763,7 +762,6 @@ int _gnutls_write_new_othername(asn1_node ext, const char *ext_name, - result = asn1_write_value(ext, name2, data, data_size); - if (result != ASN1_SUCCESS) { - gnutls_assert(); -- asn1_delete_structure(&ext); - return _gnutls_asn2err(result); - } - --- -2.50.1 - diff --git a/gnutls-3.8.9-cve-2025-32989.patch b/gnutls-3.8.9-cve-2025-32989.patch deleted file mode 100644 index 0168e57..0000000 --- a/gnutls-3.8.9-cve-2025-32989.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 8d9f4514676e7bdba85a3b0db65f8feab9855533 Mon Sep 17 00:00:00 2001 -From: Andrew Hamilton -Date: Mon, 7 Jul 2025 10:23:59 +0900 -Subject: [PATCH] x509: fix read buffer overrun in SCT timestamps - -Prevent reading beyond heap buffer in call to _gnutls_parse_ct_sct -when processing x509 Signed Certificate Timestamps with certain -malformed data. Spotted by oss-fuzz at: -https://issues.oss-fuzz.com/issues/42530513 - -Signed-off-by: Andrew Hamilton -Signed-off-by: Daiki Ueno ---- - .../04939b75417cc95b7372c6f208c4bda4579bdc34 | Bin 0 -> 1782 bytes - lib/x509/x509_ext.c | 2 +- - 2 files changed, 1 insertion(+), 1 deletion(-) - create mode 100644 fuzz/gnutls_x509_parser_fuzzer.repro/04939b75417cc95b7372c6f208c4bda4579bdc34 - -diff --git a/lib/x509/x509_ext.c b/lib/x509/x509_ext.c -index 1714578de6..a0b831cee1 100644 ---- a/lib/x509/x509_ext.c -+++ b/lib/x509/x509_ext.c -@@ -3757,7 +3757,7 @@ int gnutls_x509_ext_ct_import_scts(const gnutls_datum_t *ext, - } - - length = _gnutls_read_uint16(scts_content.data); -- if (length < 4) { -+ if (length < 4 || length > scts_content.size) { - gnutls_free(scts_content.data); - return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; - } --- -2.50.1 - diff --git a/gnutls-3.8.9-cve-2025-32990.patch b/gnutls-3.8.9-cve-2025-32990.patch deleted file mode 100644 index 7cebf48..0000000 --- a/gnutls-3.8.9-cve-2025-32990.patch +++ /dev/null @@ -1,2092 +0,0 @@ -From bebf640c2c846cd75e439a97709477380c769dba Mon Sep 17 00:00:00 2001 -From: Daiki Ueno -Date: Mon, 7 Jul 2025 10:57:10 +0900 -Subject: [PATCH] certtool: avoid 1-byte write buffer overrun when parsing - template - -Previously, when parsing a template file with a number of key value -pairs, certtool could write a NUL byte after the heap buffer, causing -a memory corruption. This fixes the issue by allocating the NUL byte. -Reported by David Aitel. - -Signed-off-by: Daiki Ueno ---- - src/certtool-cfg.c | 4 +- - tests/cert-tests/Makefile.am | 3 +- - tests/cert-tests/template-test.sh | 13 + - .../template-too-many-othernames.tmpl | 2003 +++++++++++++++++ - 4 files changed, 2020 insertions(+), 3 deletions(-) - create mode 100644 tests/cert-tests/templates/template-too-many-othernames.tmpl - -diff --git a/src/certtool-cfg.c b/src/certtool-cfg.c -index 7b6a2f94b8..a398d7989c 100644 ---- a/src/certtool-cfg.c -+++ b/src/certtool-cfg.c -@@ -257,7 +257,7 @@ void cfg_init(void) - if (val != NULL) { \ - if (s_name == NULL) { \ - i = 0; \ -- s_name = malloc(sizeof(char *) * MAX_ENTRIES); \ -+ s_name = calloc(MAX_ENTRIES + 1, sizeof(char *)); \ - CHECK_MALLOC(s_name); \ - do { \ - if (val && strcmp(val->name, k_name) != 0) \ -@@ -279,7 +279,7 @@ void cfg_init(void) - char *p; \ - if (s_name == NULL) { \ - i = 0; \ -- s_name = malloc(sizeof(char *) * MAX_ENTRIES); \ -+ s_name = calloc(MAX_ENTRIES + 1, sizeof(char *)); \ - CHECK_MALLOC(s_name); \ - do { \ - if (val && strcmp(val->name, k_name) != 0) \ -diff --git a/tests/cert-tests/Makefile.am b/tests/cert-tests/Makefile.am -index 11a9600e0d..c5b707c7df 100644 ---- a/tests/cert-tests/Makefile.am -+++ b/tests/cert-tests/Makefile.am -@@ -110,7 +110,8 @@ EXTRA_DIST = data/ca-no-pathlen.pem data/no-ca-or-pathlen.pem data/aki-cert.pem - data/pbmac1_512_256.good.p12 data/pbmac1_512_512.good.p12 \ - data/pbmac1-simple.p12 \ - templates/simple-policy.tmpl data/simple-policy.pem templates/template-negative-serial.tmpl \ -- templates/template-encryption-only.tmpl -+ templates/template-encryption-only.tmpl \ -+ templates/template-too-many-othernames.tmpl - - dist_check_SCRIPTS = pathlen.sh aki.sh invalid-sig.sh email.sh \ - pkcs7.sh pkcs7-broken-sigs.sh privkey-import.sh name-constraints.sh certtool-long-cn.sh crl.sh provable-privkey.sh \ -diff --git a/tests/cert-tests/template-test.sh b/tests/cert-tests/template-test.sh -index 5d7410eb3d..34e3027ae6 100644 ---- a/tests/cert-tests/template-test.sh -+++ b/tests/cert-tests/template-test.sh -@@ -297,6 +297,19 @@ if test "${rc}" != "0"; then - exit ${rc} - fi - -+# Test generation with too many other names -+ -+"${CERTTOOL}" --generate-request \ -+ --load-privkey "${srcdir}/data/template-test.key" \ -+ --template "${srcdir}/templates/template-too-many-othernames.tmpl" \ -+ --outfile ${TMPFILE} 2>/dev/null -+rc=$? -+ -+if test "${rc}" != "0"; then -+ echo "Test with too many othernames failed" -+ exit ${rc} -+fi -+ - rm -f ${TMPFILE} - - exit 0 -diff --git a/tests/cert-tests/templates/template-too-many-othernames.tmpl b/tests/cert-tests/templates/template-too-many-othernames.tmpl -new file mode 100644 -index 0000000000..5ef9a862bd ---- /dev/null -+++ b/tests/cert-tests/templates/template-too-many-othernames.tmpl -@@ -0,0 +1,2003 @@ -+organization = "OpenAI" -+cn = "example.com" -+ -+other_name_utf8 = "1.2.3.4 testvalue0" -+other_name_utf8 = "1.2.3.4 testvalue1" -+other_name_utf8 = "1.2.3.4 testvalue2" -+other_name_utf8 = "1.2.3.4 testvalue3" -+other_name_utf8 = "1.2.3.4 testvalue4" -+other_name_utf8 = "1.2.3.4 testvalue5" -+other_name_utf8 = "1.2.3.4 testvalue6" -+other_name_utf8 = "1.2.3.4 testvalue7" -+other_name_utf8 = "1.2.3.4 testvalue8" -+other_name_utf8 = "1.2.3.4 testvalue9" -+other_name_utf8 = "1.2.3.4 testvalue10" -+other_name_utf8 = "1.2.3.4 testvalue11" -+other_name_utf8 = "1.2.3.4 testvalue12" -+other_name_utf8 = "1.2.3.4 testvalue13" -+other_name_utf8 = "1.2.3.4 testvalue14" -+other_name_utf8 = "1.2.3.4 testvalue15" -+other_name_utf8 = "1.2.3.4 testvalue16" -+other_name_utf8 = "1.2.3.4 testvalue17" -+other_name_utf8 = "1.2.3.4 testvalue18" -+other_name_utf8 = "1.2.3.4 testvalue19" -+other_name_utf8 = "1.2.3.4 testvalue20" -+other_name_utf8 = "1.2.3.4 testvalue21" -+other_name_utf8 = "1.2.3.4 testvalue22" -+other_name_utf8 = "1.2.3.4 testvalue23" -+other_name_utf8 = "1.2.3.4 testvalue24" -+other_name_utf8 = "1.2.3.4 testvalue25" -+other_name_utf8 = "1.2.3.4 testvalue26" -+other_name_utf8 = "1.2.3.4 testvalue27" -+other_name_utf8 = "1.2.3.4 testvalue28" -+other_name_utf8 = "1.2.3.4 testvalue29" -+other_name_utf8 = "1.2.3.4 testvalue30" -+other_name_utf8 = "1.2.3.4 testvalue31" -+other_name_utf8 = "1.2.3.4 testvalue32" -+other_name_utf8 = "1.2.3.4 testvalue33" -+other_name_utf8 = "1.2.3.4 testvalue34" -+other_name_utf8 = "1.2.3.4 testvalue35" -+other_name_utf8 = "1.2.3.4 testvalue36" -+other_name_utf8 = "1.2.3.4 testvalue37" -+other_name_utf8 = "1.2.3.4 testvalue38" -+other_name_utf8 = "1.2.3.4 testvalue39" -+other_name_utf8 = "1.2.3.4 testvalue40" -+other_name_utf8 = "1.2.3.4 testvalue41" -+other_name_utf8 = "1.2.3.4 testvalue42" -+other_name_utf8 = "1.2.3.4 testvalue43" -+other_name_utf8 = "1.2.3.4 testvalue44" -+other_name_utf8 = "1.2.3.4 testvalue45" -+other_name_utf8 = "1.2.3.4 testvalue46" -+other_name_utf8 = "1.2.3.4 testvalue47" -+other_name_utf8 = "1.2.3.4 testvalue48" -+other_name_utf8 = "1.2.3.4 testvalue49" -+other_name_utf8 = "1.2.3.4 testvalue50" -+other_name_utf8 = "1.2.3.4 testvalue51" -+other_name_utf8 = "1.2.3.4 testvalue52" -+other_name_utf8 = "1.2.3.4 testvalue53" -+other_name_utf8 = "1.2.3.4 testvalue54" -+other_name_utf8 = "1.2.3.4 testvalue55" -+other_name_utf8 = "1.2.3.4 testvalue56" -+other_name_utf8 = "1.2.3.4 testvalue57" -+other_name_utf8 = "1.2.3.4 testvalue58" -+other_name_utf8 = "1.2.3.4 testvalue59" -+other_name_utf8 = "1.2.3.4 testvalue60" -+other_name_utf8 = "1.2.3.4 testvalue61" -+other_name_utf8 = "1.2.3.4 testvalue62" -+other_name_utf8 = "1.2.3.4 testvalue63" -+other_name_utf8 = "1.2.3.4 testvalue64" -+other_name_utf8 = "1.2.3.4 testvalue65" -+other_name_utf8 = "1.2.3.4 testvalue66" -+other_name_utf8 = "1.2.3.4 testvalue67" -+other_name_utf8 = "1.2.3.4 testvalue68" -+other_name_utf8 = "1.2.3.4 testvalue69" -+other_name_utf8 = "1.2.3.4 testvalue70" -+other_name_utf8 = "1.2.3.4 testvalue71" -+other_name_utf8 = "1.2.3.4 testvalue72" -+other_name_utf8 = "1.2.3.4 testvalue73" -+other_name_utf8 = "1.2.3.4 testvalue74" -+other_name_utf8 = "1.2.3.4 testvalue75" -+other_name_utf8 = "1.2.3.4 testvalue76" -+other_name_utf8 = "1.2.3.4 testvalue77" -+other_name_utf8 = "1.2.3.4 testvalue78" -+other_name_utf8 = "1.2.3.4 testvalue79" -+other_name_utf8 = "1.2.3.4 testvalue80" -+other_name_utf8 = "1.2.3.4 testvalue81" -+other_name_utf8 = "1.2.3.4 testvalue82" -+other_name_utf8 = "1.2.3.4 testvalue83" -+other_name_utf8 = "1.2.3.4 testvalue84" -+other_name_utf8 = "1.2.3.4 testvalue85" -+other_name_utf8 = "1.2.3.4 testvalue86" -+other_name_utf8 = "1.2.3.4 testvalue87" -+other_name_utf8 = "1.2.3.4 testvalue88" -+other_name_utf8 = "1.2.3.4 testvalue89" -+other_name_utf8 = "1.2.3.4 testvalue90" -+other_name_utf8 = "1.2.3.4 testvalue91" -+other_name_utf8 = "1.2.3.4 testvalue92" -+other_name_utf8 = "1.2.3.4 testvalue93" -+other_name_utf8 = "1.2.3.4 testvalue94" -+other_name_utf8 = "1.2.3.4 testvalue95" -+other_name_utf8 = "1.2.3.4 testvalue96" -+other_name_utf8 = "1.2.3.4 testvalue97" -+other_name_utf8 = "1.2.3.4 testvalue98" -+other_name_utf8 = "1.2.3.4 testvalue99" -+other_name_utf8 = "1.2.3.4 testvalue100" -+other_name_utf8 = "1.2.3.4 testvalue101" -+other_name_utf8 = "1.2.3.4 testvalue102" -+other_name_utf8 = "1.2.3.4 testvalue103" -+other_name_utf8 = "1.2.3.4 testvalue104" -+other_name_utf8 = "1.2.3.4 testvalue105" -+other_name_utf8 = "1.2.3.4 testvalue106" -+other_name_utf8 = "1.2.3.4 testvalue107" -+other_name_utf8 = "1.2.3.4 testvalue108" -+other_name_utf8 = "1.2.3.4 testvalue109" -+other_name_utf8 = "1.2.3.4 testvalue110" -+other_name_utf8 = "1.2.3.4 testvalue111" -+other_name_utf8 = "1.2.3.4 testvalue112" -+other_name_utf8 = "1.2.3.4 testvalue113" -+other_name_utf8 = "1.2.3.4 testvalue114" -+other_name_utf8 = "1.2.3.4 testvalue115" -+other_name_utf8 = "1.2.3.4 testvalue116" -+other_name_utf8 = "1.2.3.4 testvalue117" -+other_name_utf8 = "1.2.3.4 testvalue118" -+other_name_utf8 = "1.2.3.4 testvalue119" -+other_name_utf8 = "1.2.3.4 testvalue120" -+other_name_utf8 = "1.2.3.4 testvalue121" -+other_name_utf8 = "1.2.3.4 testvalue122" -+other_name_utf8 = "1.2.3.4 testvalue123" -+other_name_utf8 = "1.2.3.4 testvalue124" -+other_name_utf8 = "1.2.3.4 testvalue125" -+other_name_utf8 = "1.2.3.4 testvalue126" -+other_name_utf8 = "1.2.3.4 testvalue127" -+other_name_utf8 = "1.2.3.4 testvalue128" -+other_name_utf8 = "1.2.3.4 testvalue129" -+other_name_utf8 = "1.2.3.4 testvalue130" -+other_name_utf8 = "1.2.3.4 testvalue131" -+other_name_utf8 = "1.2.3.4 testvalue132" -+other_name_utf8 = "1.2.3.4 testvalue133" -+other_name_utf8 = "1.2.3.4 testvalue134" -+other_name_utf8 = "1.2.3.4 testvalue135" -+other_name_utf8 = "1.2.3.4 testvalue136" -+other_name_utf8 = "1.2.3.4 testvalue137" -+other_name_utf8 = "1.2.3.4 testvalue138" -+other_name_utf8 = "1.2.3.4 testvalue139" -+other_name_utf8 = "1.2.3.4 testvalue140" -+other_name_utf8 = "1.2.3.4 testvalue141" -+other_name_utf8 = "1.2.3.4 testvalue142" -+other_name_utf8 = "1.2.3.4 testvalue143" -+other_name_utf8 = "1.2.3.4 testvalue144" -+other_name_utf8 = "1.2.3.4 testvalue145" -+other_name_utf8 = "1.2.3.4 testvalue146" -+other_name_utf8 = "1.2.3.4 testvalue147" -+other_name_utf8 = "1.2.3.4 testvalue148" -+other_name_utf8 = "1.2.3.4 testvalue149" -+other_name_utf8 = "1.2.3.4 testvalue150" -+other_name_utf8 = "1.2.3.4 testvalue151" -+other_name_utf8 = "1.2.3.4 testvalue152" -+other_name_utf8 = "1.2.3.4 testvalue153" -+other_name_utf8 = "1.2.3.4 testvalue154" -+other_name_utf8 = "1.2.3.4 testvalue155" -+other_name_utf8 = "1.2.3.4 testvalue156" -+other_name_utf8 = "1.2.3.4 testvalue157" -+other_name_utf8 = "1.2.3.4 testvalue158" -+other_name_utf8 = "1.2.3.4 testvalue159" -+other_name_utf8 = "1.2.3.4 testvalue160" -+other_name_utf8 = "1.2.3.4 testvalue161" -+other_name_utf8 = "1.2.3.4 testvalue162" -+other_name_utf8 = "1.2.3.4 testvalue163" -+other_name_utf8 = "1.2.3.4 testvalue164" -+other_name_utf8 = "1.2.3.4 testvalue165" -+other_name_utf8 = "1.2.3.4 testvalue166" -+other_name_utf8 = "1.2.3.4 testvalue167" -+other_name_utf8 = "1.2.3.4 testvalue168" -+other_name_utf8 = "1.2.3.4 testvalue169" -+other_name_utf8 = "1.2.3.4 testvalue170" -+other_name_utf8 = "1.2.3.4 testvalue171" -+other_name_utf8 = "1.2.3.4 testvalue172" -+other_name_utf8 = "1.2.3.4 testvalue173" -+other_name_utf8 = "1.2.3.4 testvalue174" -+other_name_utf8 = "1.2.3.4 testvalue175" -+other_name_utf8 = "1.2.3.4 testvalue176" -+other_name_utf8 = "1.2.3.4 testvalue177" -+other_name_utf8 = "1.2.3.4 testvalue178" -+other_name_utf8 = "1.2.3.4 testvalue179" -+other_name_utf8 = "1.2.3.4 testvalue180" -+other_name_utf8 = "1.2.3.4 testvalue181" -+other_name_utf8 = "1.2.3.4 testvalue182" -+other_name_utf8 = "1.2.3.4 testvalue183" -+other_name_utf8 = "1.2.3.4 testvalue184" -+other_name_utf8 = "1.2.3.4 testvalue185" -+other_name_utf8 = "1.2.3.4 testvalue186" -+other_name_utf8 = "1.2.3.4 testvalue187" -+other_name_utf8 = "1.2.3.4 testvalue188" -+other_name_utf8 = "1.2.3.4 testvalue189" -+other_name_utf8 = "1.2.3.4 testvalue190" -+other_name_utf8 = "1.2.3.4 testvalue191" -+other_name_utf8 = "1.2.3.4 testvalue192" -+other_name_utf8 = "1.2.3.4 testvalue193" -+other_name_utf8 = "1.2.3.4 testvalue194" -+other_name_utf8 = "1.2.3.4 testvalue195" -+other_name_utf8 = "1.2.3.4 testvalue196" -+other_name_utf8 = "1.2.3.4 testvalue197" -+other_name_utf8 = "1.2.3.4 testvalue198" -+other_name_utf8 = "1.2.3.4 testvalue199" -+other_name_utf8 = "1.2.3.4 testvalue200" -+other_name_utf8 = "1.2.3.4 testvalue201" -+other_name_utf8 = "1.2.3.4 testvalue202" -+other_name_utf8 = "1.2.3.4 testvalue203" -+other_name_utf8 = "1.2.3.4 testvalue204" -+other_name_utf8 = "1.2.3.4 testvalue205" -+other_name_utf8 = "1.2.3.4 testvalue206" -+other_name_utf8 = "1.2.3.4 testvalue207" -+other_name_utf8 = "1.2.3.4 testvalue208" -+other_name_utf8 = "1.2.3.4 testvalue209" -+other_name_utf8 = "1.2.3.4 testvalue210" -+other_name_utf8 = "1.2.3.4 testvalue211" -+other_name_utf8 = "1.2.3.4 testvalue212" -+other_name_utf8 = "1.2.3.4 testvalue213" -+other_name_utf8 = "1.2.3.4 testvalue214" -+other_name_utf8 = "1.2.3.4 testvalue215" -+other_name_utf8 = "1.2.3.4 testvalue216" -+other_name_utf8 = "1.2.3.4 testvalue217" -+other_name_utf8 = "1.2.3.4 testvalue218" -+other_name_utf8 = "1.2.3.4 testvalue219" -+other_name_utf8 = "1.2.3.4 testvalue220" -+other_name_utf8 = "1.2.3.4 testvalue221" -+other_name_utf8 = "1.2.3.4 testvalue222" -+other_name_utf8 = "1.2.3.4 testvalue223" -+other_name_utf8 = "1.2.3.4 testvalue224" -+other_name_utf8 = "1.2.3.4 testvalue225" -+other_name_utf8 = "1.2.3.4 testvalue226" -+other_name_utf8 = "1.2.3.4 testvalue227" -+other_name_utf8 = "1.2.3.4 testvalue228" -+other_name_utf8 = "1.2.3.4 testvalue229" -+other_name_utf8 = "1.2.3.4 testvalue230" -+other_name_utf8 = "1.2.3.4 testvalue231" -+other_name_utf8 = "1.2.3.4 testvalue232" -+other_name_utf8 = "1.2.3.4 testvalue233" -+other_name_utf8 = "1.2.3.4 testvalue234" -+other_name_utf8 = "1.2.3.4 testvalue235" -+other_name_utf8 = "1.2.3.4 testvalue236" -+other_name_utf8 = "1.2.3.4 testvalue237" -+other_name_utf8 = "1.2.3.4 testvalue238" -+other_name_utf8 = "1.2.3.4 testvalue239" -+other_name_utf8 = "1.2.3.4 testvalue240" -+other_name_utf8 = "1.2.3.4 testvalue241" -+other_name_utf8 = "1.2.3.4 testvalue242" -+other_name_utf8 = "1.2.3.4 testvalue243" -+other_name_utf8 = "1.2.3.4 testvalue244" -+other_name_utf8 = "1.2.3.4 testvalue245" -+other_name_utf8 = "1.2.3.4 testvalue246" -+other_name_utf8 = "1.2.3.4 testvalue247" -+other_name_utf8 = "1.2.3.4 testvalue248" -+other_name_utf8 = "1.2.3.4 testvalue249" -+other_name_utf8 = "1.2.3.4 testvalue250" -+other_name_utf8 = "1.2.3.4 testvalue251" -+other_name_utf8 = "1.2.3.4 testvalue252" -+other_name_utf8 = "1.2.3.4 testvalue253" -+other_name_utf8 = "1.2.3.4 testvalue254" -+other_name_utf8 = "1.2.3.4 testvalue255" -+other_name_utf8 = "1.2.3.4 testvalue256" -+other_name_utf8 = "1.2.3.4 testvalue257" -+other_name_utf8 = "1.2.3.4 testvalue258" -+other_name_utf8 = "1.2.3.4 testvalue259" -+other_name_utf8 = "1.2.3.4 testvalue260" -+other_name_utf8 = "1.2.3.4 testvalue261" -+other_name_utf8 = "1.2.3.4 testvalue262" -+other_name_utf8 = "1.2.3.4 testvalue263" -+other_name_utf8 = "1.2.3.4 testvalue264" -+other_name_utf8 = "1.2.3.4 testvalue265" -+other_name_utf8 = "1.2.3.4 testvalue266" -+other_name_utf8 = "1.2.3.4 testvalue267" -+other_name_utf8 = "1.2.3.4 testvalue268" -+other_name_utf8 = "1.2.3.4 testvalue269" -+other_name_utf8 = "1.2.3.4 testvalue270" -+other_name_utf8 = "1.2.3.4 testvalue271" -+other_name_utf8 = "1.2.3.4 testvalue272" -+other_name_utf8 = "1.2.3.4 testvalue273" -+other_name_utf8 = "1.2.3.4 testvalue274" -+other_name_utf8 = "1.2.3.4 testvalue275" -+other_name_utf8 = "1.2.3.4 testvalue276" -+other_name_utf8 = "1.2.3.4 testvalue277" -+other_name_utf8 = "1.2.3.4 testvalue278" -+other_name_utf8 = "1.2.3.4 testvalue279" -+other_name_utf8 = "1.2.3.4 testvalue280" -+other_name_utf8 = "1.2.3.4 testvalue281" -+other_name_utf8 = "1.2.3.4 testvalue282" -+other_name_utf8 = "1.2.3.4 testvalue283" -+other_name_utf8 = "1.2.3.4 testvalue284" -+other_name_utf8 = "1.2.3.4 testvalue285" -+other_name_utf8 = "1.2.3.4 testvalue286" -+other_name_utf8 = "1.2.3.4 testvalue287" -+other_name_utf8 = "1.2.3.4 testvalue288" -+other_name_utf8 = "1.2.3.4 testvalue289" -+other_name_utf8 = "1.2.3.4 testvalue290" -+other_name_utf8 = "1.2.3.4 testvalue291" -+other_name_utf8 = "1.2.3.4 testvalue292" -+other_name_utf8 = "1.2.3.4 testvalue293" -+other_name_utf8 = "1.2.3.4 testvalue294" -+other_name_utf8 = "1.2.3.4 testvalue295" -+other_name_utf8 = "1.2.3.4 testvalue296" -+other_name_utf8 = "1.2.3.4 testvalue297" -+other_name_utf8 = "1.2.3.4 testvalue298" -+other_name_utf8 = "1.2.3.4 testvalue299" -+other_name_utf8 = "1.2.3.4 testvalue300" -+other_name_utf8 = "1.2.3.4 testvalue301" -+other_name_utf8 = "1.2.3.4 testvalue302" -+other_name_utf8 = "1.2.3.4 testvalue303" -+other_name_utf8 = "1.2.3.4 testvalue304" -+other_name_utf8 = "1.2.3.4 testvalue305" -+other_name_utf8 = "1.2.3.4 testvalue306" -+other_name_utf8 = "1.2.3.4 testvalue307" -+other_name_utf8 = "1.2.3.4 testvalue308" -+other_name_utf8 = "1.2.3.4 testvalue309" -+other_name_utf8 = "1.2.3.4 testvalue310" -+other_name_utf8 = "1.2.3.4 testvalue311" -+other_name_utf8 = "1.2.3.4 testvalue312" -+other_name_utf8 = "1.2.3.4 testvalue313" -+other_name_utf8 = "1.2.3.4 testvalue314" -+other_name_utf8 = "1.2.3.4 testvalue315" -+other_name_utf8 = "1.2.3.4 testvalue316" -+other_name_utf8 = "1.2.3.4 testvalue317" -+other_name_utf8 = "1.2.3.4 testvalue318" -+other_name_utf8 = "1.2.3.4 testvalue319" -+other_name_utf8 = "1.2.3.4 testvalue320" -+other_name_utf8 = "1.2.3.4 testvalue321" -+other_name_utf8 = "1.2.3.4 testvalue322" -+other_name_utf8 = "1.2.3.4 testvalue323" -+other_name_utf8 = "1.2.3.4 testvalue324" -+other_name_utf8 = "1.2.3.4 testvalue325" -+other_name_utf8 = "1.2.3.4 testvalue326" -+other_name_utf8 = "1.2.3.4 testvalue327" -+other_name_utf8 = "1.2.3.4 testvalue328" -+other_name_utf8 = "1.2.3.4 testvalue329" -+other_name_utf8 = "1.2.3.4 testvalue330" -+other_name_utf8 = "1.2.3.4 testvalue331" -+other_name_utf8 = "1.2.3.4 testvalue332" -+other_name_utf8 = "1.2.3.4 testvalue333" -+other_name_utf8 = "1.2.3.4 testvalue334" -+other_name_utf8 = "1.2.3.4 testvalue335" -+other_name_utf8 = "1.2.3.4 testvalue336" -+other_name_utf8 = "1.2.3.4 testvalue337" -+other_name_utf8 = "1.2.3.4 testvalue338" -+other_name_utf8 = "1.2.3.4 testvalue339" -+other_name_utf8 = "1.2.3.4 testvalue340" -+other_name_utf8 = "1.2.3.4 testvalue341" -+other_name_utf8 = "1.2.3.4 testvalue342" -+other_name_utf8 = "1.2.3.4 testvalue343" -+other_name_utf8 = "1.2.3.4 testvalue344" -+other_name_utf8 = "1.2.3.4 testvalue345" -+other_name_utf8 = "1.2.3.4 testvalue346" -+other_name_utf8 = "1.2.3.4 testvalue347" -+other_name_utf8 = "1.2.3.4 testvalue348" -+other_name_utf8 = "1.2.3.4 testvalue349" -+other_name_utf8 = "1.2.3.4 testvalue350" -+other_name_utf8 = "1.2.3.4 testvalue351" -+other_name_utf8 = "1.2.3.4 testvalue352" -+other_name_utf8 = "1.2.3.4 testvalue353" -+other_name_utf8 = "1.2.3.4 testvalue354" -+other_name_utf8 = "1.2.3.4 testvalue355" -+other_name_utf8 = "1.2.3.4 testvalue356" -+other_name_utf8 = "1.2.3.4 testvalue357" -+other_name_utf8 = "1.2.3.4 testvalue358" -+other_name_utf8 = "1.2.3.4 testvalue359" -+other_name_utf8 = "1.2.3.4 testvalue360" -+other_name_utf8 = "1.2.3.4 testvalue361" -+other_name_utf8 = "1.2.3.4 testvalue362" -+other_name_utf8 = "1.2.3.4 testvalue363" -+other_name_utf8 = "1.2.3.4 testvalue364" -+other_name_utf8 = "1.2.3.4 testvalue365" -+other_name_utf8 = "1.2.3.4 testvalue366" -+other_name_utf8 = "1.2.3.4 testvalue367" -+other_name_utf8 = "1.2.3.4 testvalue368" -+other_name_utf8 = "1.2.3.4 testvalue369" -+other_name_utf8 = "1.2.3.4 testvalue370" -+other_name_utf8 = "1.2.3.4 testvalue371" -+other_name_utf8 = "1.2.3.4 testvalue372" -+other_name_utf8 = "1.2.3.4 testvalue373" -+other_name_utf8 = "1.2.3.4 testvalue374" -+other_name_utf8 = "1.2.3.4 testvalue375" -+other_name_utf8 = "1.2.3.4 testvalue376" -+other_name_utf8 = "1.2.3.4 testvalue377" -+other_name_utf8 = "1.2.3.4 testvalue378" -+other_name_utf8 = "1.2.3.4 testvalue379" -+other_name_utf8 = "1.2.3.4 testvalue380" -+other_name_utf8 = "1.2.3.4 testvalue381" -+other_name_utf8 = "1.2.3.4 testvalue382" -+other_name_utf8 = "1.2.3.4 testvalue383" -+other_name_utf8 = "1.2.3.4 testvalue384" -+other_name_utf8 = "1.2.3.4 testvalue385" -+other_name_utf8 = "1.2.3.4 testvalue386" -+other_name_utf8 = "1.2.3.4 testvalue387" -+other_name_utf8 = "1.2.3.4 testvalue388" -+other_name_utf8 = "1.2.3.4 testvalue389" -+other_name_utf8 = "1.2.3.4 testvalue390" -+other_name_utf8 = "1.2.3.4 testvalue391" -+other_name_utf8 = "1.2.3.4 testvalue392" -+other_name_utf8 = "1.2.3.4 testvalue393" -+other_name_utf8 = "1.2.3.4 testvalue394" -+other_name_utf8 = "1.2.3.4 testvalue395" -+other_name_utf8 = "1.2.3.4 testvalue396" -+other_name_utf8 = "1.2.3.4 testvalue397" -+other_name_utf8 = "1.2.3.4 testvalue398" -+other_name_utf8 = "1.2.3.4 testvalue399" -+other_name_utf8 = "1.2.3.4 testvalue400" -+other_name_utf8 = "1.2.3.4 testvalue401" -+other_name_utf8 = "1.2.3.4 testvalue402" -+other_name_utf8 = "1.2.3.4 testvalue403" -+other_name_utf8 = "1.2.3.4 testvalue404" -+other_name_utf8 = "1.2.3.4 testvalue405" -+other_name_utf8 = "1.2.3.4 testvalue406" -+other_name_utf8 = "1.2.3.4 testvalue407" -+other_name_utf8 = "1.2.3.4 testvalue408" -+other_name_utf8 = "1.2.3.4 testvalue409" -+other_name_utf8 = "1.2.3.4 testvalue410" -+other_name_utf8 = "1.2.3.4 testvalue411" -+other_name_utf8 = "1.2.3.4 testvalue412" -+other_name_utf8 = "1.2.3.4 testvalue413" -+other_name_utf8 = "1.2.3.4 testvalue414" -+other_name_utf8 = "1.2.3.4 testvalue415" -+other_name_utf8 = "1.2.3.4 testvalue416" -+other_name_utf8 = "1.2.3.4 testvalue417" -+other_name_utf8 = "1.2.3.4 testvalue418" -+other_name_utf8 = "1.2.3.4 testvalue419" -+other_name_utf8 = "1.2.3.4 testvalue420" -+other_name_utf8 = "1.2.3.4 testvalue421" -+other_name_utf8 = "1.2.3.4 testvalue422" -+other_name_utf8 = "1.2.3.4 testvalue423" -+other_name_utf8 = "1.2.3.4 testvalue424" -+other_name_utf8 = "1.2.3.4 testvalue425" -+other_name_utf8 = "1.2.3.4 testvalue426" -+other_name_utf8 = "1.2.3.4 testvalue427" -+other_name_utf8 = "1.2.3.4 testvalue428" -+other_name_utf8 = "1.2.3.4 testvalue429" -+other_name_utf8 = "1.2.3.4 testvalue430" -+other_name_utf8 = "1.2.3.4 testvalue431" -+other_name_utf8 = "1.2.3.4 testvalue432" -+other_name_utf8 = "1.2.3.4 testvalue433" -+other_name_utf8 = "1.2.3.4 testvalue434" -+other_name_utf8 = "1.2.3.4 testvalue435" -+other_name_utf8 = "1.2.3.4 testvalue436" -+other_name_utf8 = "1.2.3.4 testvalue437" -+other_name_utf8 = "1.2.3.4 testvalue438" -+other_name_utf8 = "1.2.3.4 testvalue439" -+other_name_utf8 = "1.2.3.4 testvalue440" -+other_name_utf8 = "1.2.3.4 testvalue441" -+other_name_utf8 = "1.2.3.4 testvalue442" -+other_name_utf8 = "1.2.3.4 testvalue443" -+other_name_utf8 = "1.2.3.4 testvalue444" -+other_name_utf8 = "1.2.3.4 testvalue445" -+other_name_utf8 = "1.2.3.4 testvalue446" -+other_name_utf8 = "1.2.3.4 testvalue447" -+other_name_utf8 = "1.2.3.4 testvalue448" -+other_name_utf8 = "1.2.3.4 testvalue449" -+other_name_utf8 = "1.2.3.4 testvalue450" -+other_name_utf8 = "1.2.3.4 testvalue451" -+other_name_utf8 = "1.2.3.4 testvalue452" -+other_name_utf8 = "1.2.3.4 testvalue453" -+other_name_utf8 = "1.2.3.4 testvalue454" -+other_name_utf8 = "1.2.3.4 testvalue455" -+other_name_utf8 = "1.2.3.4 testvalue456" -+other_name_utf8 = "1.2.3.4 testvalue457" -+other_name_utf8 = "1.2.3.4 testvalue458" -+other_name_utf8 = "1.2.3.4 testvalue459" -+other_name_utf8 = "1.2.3.4 testvalue460" -+other_name_utf8 = "1.2.3.4 testvalue461" -+other_name_utf8 = "1.2.3.4 testvalue462" -+other_name_utf8 = "1.2.3.4 testvalue463" -+other_name_utf8 = "1.2.3.4 testvalue464" -+other_name_utf8 = "1.2.3.4 testvalue465" -+other_name_utf8 = "1.2.3.4 testvalue466" -+other_name_utf8 = "1.2.3.4 testvalue467" -+other_name_utf8 = "1.2.3.4 testvalue468" -+other_name_utf8 = "1.2.3.4 testvalue469" -+other_name_utf8 = "1.2.3.4 testvalue470" -+other_name_utf8 = "1.2.3.4 testvalue471" -+other_name_utf8 = "1.2.3.4 testvalue472" -+other_name_utf8 = "1.2.3.4 testvalue473" -+other_name_utf8 = "1.2.3.4 testvalue474" -+other_name_utf8 = "1.2.3.4 testvalue475" -+other_name_utf8 = "1.2.3.4 testvalue476" -+other_name_utf8 = "1.2.3.4 testvalue477" -+other_name_utf8 = "1.2.3.4 testvalue478" -+other_name_utf8 = "1.2.3.4 testvalue479" -+other_name_utf8 = "1.2.3.4 testvalue480" -+other_name_utf8 = "1.2.3.4 testvalue481" -+other_name_utf8 = "1.2.3.4 testvalue482" -+other_name_utf8 = "1.2.3.4 testvalue483" -+other_name_utf8 = "1.2.3.4 testvalue484" -+other_name_utf8 = "1.2.3.4 testvalue485" -+other_name_utf8 = "1.2.3.4 testvalue486" -+other_name_utf8 = "1.2.3.4 testvalue487" -+other_name_utf8 = "1.2.3.4 testvalue488" -+other_name_utf8 = "1.2.3.4 testvalue489" -+other_name_utf8 = "1.2.3.4 testvalue490" -+other_name_utf8 = "1.2.3.4 testvalue491" -+other_name_utf8 = "1.2.3.4 testvalue492" -+other_name_utf8 = "1.2.3.4 testvalue493" -+other_name_utf8 = "1.2.3.4 testvalue494" -+other_name_utf8 = "1.2.3.4 testvalue495" -+other_name_utf8 = "1.2.3.4 testvalue496" -+other_name_utf8 = "1.2.3.4 testvalue497" -+other_name_utf8 = "1.2.3.4 testvalue498" -+other_name_utf8 = "1.2.3.4 testvalue499" -+other_name_utf8 = "1.2.3.4 testvalue500" -+other_name_utf8 = "1.2.3.4 testvalue501" -+other_name_utf8 = "1.2.3.4 testvalue502" -+other_name_utf8 = "1.2.3.4 testvalue503" -+other_name_utf8 = "1.2.3.4 testvalue504" -+other_name_utf8 = "1.2.3.4 testvalue505" -+other_name_utf8 = "1.2.3.4 testvalue506" -+other_name_utf8 = "1.2.3.4 testvalue507" -+other_name_utf8 = "1.2.3.4 testvalue508" -+other_name_utf8 = "1.2.3.4 testvalue509" -+other_name_utf8 = "1.2.3.4 testvalue510" -+other_name_utf8 = "1.2.3.4 testvalue511" -+other_name_utf8 = "1.2.3.4 testvalue512" -+other_name_utf8 = "1.2.3.4 testvalue513" -+other_name_utf8 = "1.2.3.4 testvalue514" -+other_name_utf8 = "1.2.3.4 testvalue515" -+other_name_utf8 = "1.2.3.4 testvalue516" -+other_name_utf8 = "1.2.3.4 testvalue517" -+other_name_utf8 = "1.2.3.4 testvalue518" -+other_name_utf8 = "1.2.3.4 testvalue519" -+other_name_utf8 = "1.2.3.4 testvalue520" -+other_name_utf8 = "1.2.3.4 testvalue521" -+other_name_utf8 = "1.2.3.4 testvalue522" -+other_name_utf8 = "1.2.3.4 testvalue523" -+other_name_utf8 = "1.2.3.4 testvalue524" -+other_name_utf8 = "1.2.3.4 testvalue525" -+other_name_utf8 = "1.2.3.4 testvalue526" -+other_name_utf8 = "1.2.3.4 testvalue527" -+other_name_utf8 = "1.2.3.4 testvalue528" -+other_name_utf8 = "1.2.3.4 testvalue529" -+other_name_utf8 = "1.2.3.4 testvalue530" -+other_name_utf8 = "1.2.3.4 testvalue531" -+other_name_utf8 = "1.2.3.4 testvalue532" -+other_name_utf8 = "1.2.3.4 testvalue533" -+other_name_utf8 = "1.2.3.4 testvalue534" -+other_name_utf8 = "1.2.3.4 testvalue535" -+other_name_utf8 = "1.2.3.4 testvalue536" -+other_name_utf8 = "1.2.3.4 testvalue537" -+other_name_utf8 = "1.2.3.4 testvalue538" -+other_name_utf8 = "1.2.3.4 testvalue539" -+other_name_utf8 = "1.2.3.4 testvalue540" -+other_name_utf8 = "1.2.3.4 testvalue541" -+other_name_utf8 = "1.2.3.4 testvalue542" -+other_name_utf8 = "1.2.3.4 testvalue543" -+other_name_utf8 = "1.2.3.4 testvalue544" -+other_name_utf8 = "1.2.3.4 testvalue545" -+other_name_utf8 = "1.2.3.4 testvalue546" -+other_name_utf8 = "1.2.3.4 testvalue547" -+other_name_utf8 = "1.2.3.4 testvalue548" -+other_name_utf8 = "1.2.3.4 testvalue549" -+other_name_utf8 = "1.2.3.4 testvalue550" -+other_name_utf8 = "1.2.3.4 testvalue551" -+other_name_utf8 = "1.2.3.4 testvalue552" -+other_name_utf8 = "1.2.3.4 testvalue553" -+other_name_utf8 = "1.2.3.4 testvalue554" -+other_name_utf8 = "1.2.3.4 testvalue555" -+other_name_utf8 = "1.2.3.4 testvalue556" -+other_name_utf8 = "1.2.3.4 testvalue557" -+other_name_utf8 = "1.2.3.4 testvalue558" -+other_name_utf8 = "1.2.3.4 testvalue559" -+other_name_utf8 = "1.2.3.4 testvalue560" -+other_name_utf8 = "1.2.3.4 testvalue561" -+other_name_utf8 = "1.2.3.4 testvalue562" -+other_name_utf8 = "1.2.3.4 testvalue563" -+other_name_utf8 = "1.2.3.4 testvalue564" -+other_name_utf8 = "1.2.3.4 testvalue565" -+other_name_utf8 = "1.2.3.4 testvalue566" -+other_name_utf8 = "1.2.3.4 testvalue567" -+other_name_utf8 = "1.2.3.4 testvalue568" -+other_name_utf8 = "1.2.3.4 testvalue569" -+other_name_utf8 = "1.2.3.4 testvalue570" -+other_name_utf8 = "1.2.3.4 testvalue571" -+other_name_utf8 = "1.2.3.4 testvalue572" -+other_name_utf8 = "1.2.3.4 testvalue573" -+other_name_utf8 = "1.2.3.4 testvalue574" -+other_name_utf8 = "1.2.3.4 testvalue575" -+other_name_utf8 = "1.2.3.4 testvalue576" -+other_name_utf8 = "1.2.3.4 testvalue577" -+other_name_utf8 = "1.2.3.4 testvalue578" -+other_name_utf8 = "1.2.3.4 testvalue579" -+other_name_utf8 = "1.2.3.4 testvalue580" -+other_name_utf8 = "1.2.3.4 testvalue581" -+other_name_utf8 = "1.2.3.4 testvalue582" -+other_name_utf8 = "1.2.3.4 testvalue583" -+other_name_utf8 = "1.2.3.4 testvalue584" -+other_name_utf8 = "1.2.3.4 testvalue585" -+other_name_utf8 = "1.2.3.4 testvalue586" -+other_name_utf8 = "1.2.3.4 testvalue587" -+other_name_utf8 = "1.2.3.4 testvalue588" -+other_name_utf8 = "1.2.3.4 testvalue589" -+other_name_utf8 = "1.2.3.4 testvalue590" -+other_name_utf8 = "1.2.3.4 testvalue591" -+other_name_utf8 = "1.2.3.4 testvalue592" -+other_name_utf8 = "1.2.3.4 testvalue593" -+other_name_utf8 = "1.2.3.4 testvalue594" -+other_name_utf8 = "1.2.3.4 testvalue595" -+other_name_utf8 = "1.2.3.4 testvalue596" -+other_name_utf8 = "1.2.3.4 testvalue597" -+other_name_utf8 = "1.2.3.4 testvalue598" -+other_name_utf8 = "1.2.3.4 testvalue599" -+other_name_utf8 = "1.2.3.4 testvalue600" -+other_name_utf8 = "1.2.3.4 testvalue601" -+other_name_utf8 = "1.2.3.4 testvalue602" -+other_name_utf8 = "1.2.3.4 testvalue603" -+other_name_utf8 = "1.2.3.4 testvalue604" -+other_name_utf8 = "1.2.3.4 testvalue605" -+other_name_utf8 = "1.2.3.4 testvalue606" -+other_name_utf8 = "1.2.3.4 testvalue607" -+other_name_utf8 = "1.2.3.4 testvalue608" -+other_name_utf8 = "1.2.3.4 testvalue609" -+other_name_utf8 = "1.2.3.4 testvalue610" -+other_name_utf8 = "1.2.3.4 testvalue611" -+other_name_utf8 = "1.2.3.4 testvalue612" -+other_name_utf8 = "1.2.3.4 testvalue613" -+other_name_utf8 = "1.2.3.4 testvalue614" -+other_name_utf8 = "1.2.3.4 testvalue615" -+other_name_utf8 = "1.2.3.4 testvalue616" -+other_name_utf8 = "1.2.3.4 testvalue617" -+other_name_utf8 = "1.2.3.4 testvalue618" -+other_name_utf8 = "1.2.3.4 testvalue619" -+other_name_utf8 = "1.2.3.4 testvalue620" -+other_name_utf8 = "1.2.3.4 testvalue621" -+other_name_utf8 = "1.2.3.4 testvalue622" -+other_name_utf8 = "1.2.3.4 testvalue623" -+other_name_utf8 = "1.2.3.4 testvalue624" -+other_name_utf8 = "1.2.3.4 testvalue625" -+other_name_utf8 = "1.2.3.4 testvalue626" -+other_name_utf8 = "1.2.3.4 testvalue627" -+other_name_utf8 = "1.2.3.4 testvalue628" -+other_name_utf8 = "1.2.3.4 testvalue629" -+other_name_utf8 = "1.2.3.4 testvalue630" -+other_name_utf8 = "1.2.3.4 testvalue631" -+other_name_utf8 = "1.2.3.4 testvalue632" -+other_name_utf8 = "1.2.3.4 testvalue633" -+other_name_utf8 = "1.2.3.4 testvalue634" -+other_name_utf8 = "1.2.3.4 testvalue635" -+other_name_utf8 = "1.2.3.4 testvalue636" -+other_name_utf8 = "1.2.3.4 testvalue637" -+other_name_utf8 = "1.2.3.4 testvalue638" -+other_name_utf8 = "1.2.3.4 testvalue639" -+other_name_utf8 = "1.2.3.4 testvalue640" -+other_name_utf8 = "1.2.3.4 testvalue641" -+other_name_utf8 = "1.2.3.4 testvalue642" -+other_name_utf8 = "1.2.3.4 testvalue643" -+other_name_utf8 = "1.2.3.4 testvalue644" -+other_name_utf8 = "1.2.3.4 testvalue645" -+other_name_utf8 = "1.2.3.4 testvalue646" -+other_name_utf8 = "1.2.3.4 testvalue647" -+other_name_utf8 = "1.2.3.4 testvalue648" -+other_name_utf8 = "1.2.3.4 testvalue649" -+other_name_utf8 = "1.2.3.4 testvalue650" -+other_name_utf8 = "1.2.3.4 testvalue651" -+other_name_utf8 = "1.2.3.4 testvalue652" -+other_name_utf8 = "1.2.3.4 testvalue653" -+other_name_utf8 = "1.2.3.4 testvalue654" -+other_name_utf8 = "1.2.3.4 testvalue655" -+other_name_utf8 = "1.2.3.4 testvalue656" -+other_name_utf8 = "1.2.3.4 testvalue657" -+other_name_utf8 = "1.2.3.4 testvalue658" -+other_name_utf8 = "1.2.3.4 testvalue659" -+other_name_utf8 = "1.2.3.4 testvalue660" -+other_name_utf8 = "1.2.3.4 testvalue661" -+other_name_utf8 = "1.2.3.4 testvalue662" -+other_name_utf8 = "1.2.3.4 testvalue663" -+other_name_utf8 = "1.2.3.4 testvalue664" -+other_name_utf8 = "1.2.3.4 testvalue665" -+other_name_utf8 = "1.2.3.4 testvalue666" -+other_name_utf8 = "1.2.3.4 testvalue667" -+other_name_utf8 = "1.2.3.4 testvalue668" -+other_name_utf8 = "1.2.3.4 testvalue669" -+other_name_utf8 = "1.2.3.4 testvalue670" -+other_name_utf8 = "1.2.3.4 testvalue671" -+other_name_utf8 = "1.2.3.4 testvalue672" -+other_name_utf8 = "1.2.3.4 testvalue673" -+other_name_utf8 = "1.2.3.4 testvalue674" -+other_name_utf8 = "1.2.3.4 testvalue675" -+other_name_utf8 = "1.2.3.4 testvalue676" -+other_name_utf8 = "1.2.3.4 testvalue677" -+other_name_utf8 = "1.2.3.4 testvalue678" -+other_name_utf8 = "1.2.3.4 testvalue679" -+other_name_utf8 = "1.2.3.4 testvalue680" -+other_name_utf8 = "1.2.3.4 testvalue681" -+other_name_utf8 = "1.2.3.4 testvalue682" -+other_name_utf8 = "1.2.3.4 testvalue683" -+other_name_utf8 = "1.2.3.4 testvalue684" -+other_name_utf8 = "1.2.3.4 testvalue685" -+other_name_utf8 = "1.2.3.4 testvalue686" -+other_name_utf8 = "1.2.3.4 testvalue687" -+other_name_utf8 = "1.2.3.4 testvalue688" -+other_name_utf8 = "1.2.3.4 testvalue689" -+other_name_utf8 = "1.2.3.4 testvalue690" -+other_name_utf8 = "1.2.3.4 testvalue691" -+other_name_utf8 = "1.2.3.4 testvalue692" -+other_name_utf8 = "1.2.3.4 testvalue693" -+other_name_utf8 = "1.2.3.4 testvalue694" -+other_name_utf8 = "1.2.3.4 testvalue695" -+other_name_utf8 = "1.2.3.4 testvalue696" -+other_name_utf8 = "1.2.3.4 testvalue697" -+other_name_utf8 = "1.2.3.4 testvalue698" -+other_name_utf8 = "1.2.3.4 testvalue699" -+other_name_utf8 = "1.2.3.4 testvalue700" -+other_name_utf8 = "1.2.3.4 testvalue701" -+other_name_utf8 = "1.2.3.4 testvalue702" -+other_name_utf8 = "1.2.3.4 testvalue703" -+other_name_utf8 = "1.2.3.4 testvalue704" -+other_name_utf8 = "1.2.3.4 testvalue705" -+other_name_utf8 = "1.2.3.4 testvalue706" -+other_name_utf8 = "1.2.3.4 testvalue707" -+other_name_utf8 = "1.2.3.4 testvalue708" -+other_name_utf8 = "1.2.3.4 testvalue709" -+other_name_utf8 = "1.2.3.4 testvalue710" -+other_name_utf8 = "1.2.3.4 testvalue711" -+other_name_utf8 = "1.2.3.4 testvalue712" -+other_name_utf8 = "1.2.3.4 testvalue713" -+other_name_utf8 = "1.2.3.4 testvalue714" -+other_name_utf8 = "1.2.3.4 testvalue715" -+other_name_utf8 = "1.2.3.4 testvalue716" -+other_name_utf8 = "1.2.3.4 testvalue717" -+other_name_utf8 = "1.2.3.4 testvalue718" -+other_name_utf8 = "1.2.3.4 testvalue719" -+other_name_utf8 = "1.2.3.4 testvalue720" -+other_name_utf8 = "1.2.3.4 testvalue721" -+other_name_utf8 = "1.2.3.4 testvalue722" -+other_name_utf8 = "1.2.3.4 testvalue723" -+other_name_utf8 = "1.2.3.4 testvalue724" -+other_name_utf8 = "1.2.3.4 testvalue725" -+other_name_utf8 = "1.2.3.4 testvalue726" -+other_name_utf8 = "1.2.3.4 testvalue727" -+other_name_utf8 = "1.2.3.4 testvalue728" -+other_name_utf8 = "1.2.3.4 testvalue729" -+other_name_utf8 = "1.2.3.4 testvalue730" -+other_name_utf8 = "1.2.3.4 testvalue731" -+other_name_utf8 = "1.2.3.4 testvalue732" -+other_name_utf8 = "1.2.3.4 testvalue733" -+other_name_utf8 = "1.2.3.4 testvalue734" -+other_name_utf8 = "1.2.3.4 testvalue735" -+other_name_utf8 = "1.2.3.4 testvalue736" -+other_name_utf8 = "1.2.3.4 testvalue737" -+other_name_utf8 = "1.2.3.4 testvalue738" -+other_name_utf8 = "1.2.3.4 testvalue739" -+other_name_utf8 = "1.2.3.4 testvalue740" -+other_name_utf8 = "1.2.3.4 testvalue741" -+other_name_utf8 = "1.2.3.4 testvalue742" -+other_name_utf8 = "1.2.3.4 testvalue743" -+other_name_utf8 = "1.2.3.4 testvalue744" -+other_name_utf8 = "1.2.3.4 testvalue745" -+other_name_utf8 = "1.2.3.4 testvalue746" -+other_name_utf8 = "1.2.3.4 testvalue747" -+other_name_utf8 = "1.2.3.4 testvalue748" -+other_name_utf8 = "1.2.3.4 testvalue749" -+other_name_utf8 = "1.2.3.4 testvalue750" -+other_name_utf8 = "1.2.3.4 testvalue751" -+other_name_utf8 = "1.2.3.4 testvalue752" -+other_name_utf8 = "1.2.3.4 testvalue753" -+other_name_utf8 = "1.2.3.4 testvalue754" -+other_name_utf8 = "1.2.3.4 testvalue755" -+other_name_utf8 = "1.2.3.4 testvalue756" -+other_name_utf8 = "1.2.3.4 testvalue757" -+other_name_utf8 = "1.2.3.4 testvalue758" -+other_name_utf8 = "1.2.3.4 testvalue759" -+other_name_utf8 = "1.2.3.4 testvalue760" -+other_name_utf8 = "1.2.3.4 testvalue761" -+other_name_utf8 = "1.2.3.4 testvalue762" -+other_name_utf8 = "1.2.3.4 testvalue763" -+other_name_utf8 = "1.2.3.4 testvalue764" -+other_name_utf8 = "1.2.3.4 testvalue765" -+other_name_utf8 = "1.2.3.4 testvalue766" -+other_name_utf8 = "1.2.3.4 testvalue767" -+other_name_utf8 = "1.2.3.4 testvalue768" -+other_name_utf8 = "1.2.3.4 testvalue769" -+other_name_utf8 = "1.2.3.4 testvalue770" -+other_name_utf8 = "1.2.3.4 testvalue771" -+other_name_utf8 = "1.2.3.4 testvalue772" -+other_name_utf8 = "1.2.3.4 testvalue773" -+other_name_utf8 = "1.2.3.4 testvalue774" -+other_name_utf8 = "1.2.3.4 testvalue775" -+other_name_utf8 = "1.2.3.4 testvalue776" -+other_name_utf8 = "1.2.3.4 testvalue777" -+other_name_utf8 = "1.2.3.4 testvalue778" -+other_name_utf8 = "1.2.3.4 testvalue779" -+other_name_utf8 = "1.2.3.4 testvalue780" -+other_name_utf8 = "1.2.3.4 testvalue781" -+other_name_utf8 = "1.2.3.4 testvalue782" -+other_name_utf8 = "1.2.3.4 testvalue783" -+other_name_utf8 = "1.2.3.4 testvalue784" -+other_name_utf8 = "1.2.3.4 testvalue785" -+other_name_utf8 = "1.2.3.4 testvalue786" -+other_name_utf8 = "1.2.3.4 testvalue787" -+other_name_utf8 = "1.2.3.4 testvalue788" -+other_name_utf8 = "1.2.3.4 testvalue789" -+other_name_utf8 = "1.2.3.4 testvalue790" -+other_name_utf8 = "1.2.3.4 testvalue791" -+other_name_utf8 = "1.2.3.4 testvalue792" -+other_name_utf8 = "1.2.3.4 testvalue793" -+other_name_utf8 = "1.2.3.4 testvalue794" -+other_name_utf8 = "1.2.3.4 testvalue795" -+other_name_utf8 = "1.2.3.4 testvalue796" -+other_name_utf8 = "1.2.3.4 testvalue797" -+other_name_utf8 = "1.2.3.4 testvalue798" -+other_name_utf8 = "1.2.3.4 testvalue799" -+other_name_utf8 = "1.2.3.4 testvalue800" -+other_name_utf8 = "1.2.3.4 testvalue801" -+other_name_utf8 = "1.2.3.4 testvalue802" -+other_name_utf8 = "1.2.3.4 testvalue803" -+other_name_utf8 = "1.2.3.4 testvalue804" -+other_name_utf8 = "1.2.3.4 testvalue805" -+other_name_utf8 = "1.2.3.4 testvalue806" -+other_name_utf8 = "1.2.3.4 testvalue807" -+other_name_utf8 = "1.2.3.4 testvalue808" -+other_name_utf8 = "1.2.3.4 testvalue809" -+other_name_utf8 = "1.2.3.4 testvalue810" -+other_name_utf8 = "1.2.3.4 testvalue811" -+other_name_utf8 = "1.2.3.4 testvalue812" -+other_name_utf8 = "1.2.3.4 testvalue813" -+other_name_utf8 = "1.2.3.4 testvalue814" -+other_name_utf8 = "1.2.3.4 testvalue815" -+other_name_utf8 = "1.2.3.4 testvalue816" -+other_name_utf8 = "1.2.3.4 testvalue817" -+other_name_utf8 = "1.2.3.4 testvalue818" -+other_name_utf8 = "1.2.3.4 testvalue819" -+other_name_utf8 = "1.2.3.4 testvalue820" -+other_name_utf8 = "1.2.3.4 testvalue821" -+other_name_utf8 = "1.2.3.4 testvalue822" -+other_name_utf8 = "1.2.3.4 testvalue823" -+other_name_utf8 = "1.2.3.4 testvalue824" -+other_name_utf8 = "1.2.3.4 testvalue825" -+other_name_utf8 = "1.2.3.4 testvalue826" -+other_name_utf8 = "1.2.3.4 testvalue827" -+other_name_utf8 = "1.2.3.4 testvalue828" -+other_name_utf8 = "1.2.3.4 testvalue829" -+other_name_utf8 = "1.2.3.4 testvalue830" -+other_name_utf8 = "1.2.3.4 testvalue831" -+other_name_utf8 = "1.2.3.4 testvalue832" -+other_name_utf8 = "1.2.3.4 testvalue833" -+other_name_utf8 = "1.2.3.4 testvalue834" -+other_name_utf8 = "1.2.3.4 testvalue835" -+other_name_utf8 = "1.2.3.4 testvalue836" -+other_name_utf8 = "1.2.3.4 testvalue837" -+other_name_utf8 = "1.2.3.4 testvalue838" -+other_name_utf8 = "1.2.3.4 testvalue839" -+other_name_utf8 = "1.2.3.4 testvalue840" -+other_name_utf8 = "1.2.3.4 testvalue841" -+other_name_utf8 = "1.2.3.4 testvalue842" -+other_name_utf8 = "1.2.3.4 testvalue843" -+other_name_utf8 = "1.2.3.4 testvalue844" -+other_name_utf8 = "1.2.3.4 testvalue845" -+other_name_utf8 = "1.2.3.4 testvalue846" -+other_name_utf8 = "1.2.3.4 testvalue847" -+other_name_utf8 = "1.2.3.4 testvalue848" -+other_name_utf8 = "1.2.3.4 testvalue849" -+other_name_utf8 = "1.2.3.4 testvalue850" -+other_name_utf8 = "1.2.3.4 testvalue851" -+other_name_utf8 = "1.2.3.4 testvalue852" -+other_name_utf8 = "1.2.3.4 testvalue853" -+other_name_utf8 = "1.2.3.4 testvalue854" -+other_name_utf8 = "1.2.3.4 testvalue855" -+other_name_utf8 = "1.2.3.4 testvalue856" -+other_name_utf8 = "1.2.3.4 testvalue857" -+other_name_utf8 = "1.2.3.4 testvalue858" -+other_name_utf8 = "1.2.3.4 testvalue859" -+other_name_utf8 = "1.2.3.4 testvalue860" -+other_name_utf8 = "1.2.3.4 testvalue861" -+other_name_utf8 = "1.2.3.4 testvalue862" -+other_name_utf8 = "1.2.3.4 testvalue863" -+other_name_utf8 = "1.2.3.4 testvalue864" -+other_name_utf8 = "1.2.3.4 testvalue865" -+other_name_utf8 = "1.2.3.4 testvalue866" -+other_name_utf8 = "1.2.3.4 testvalue867" -+other_name_utf8 = "1.2.3.4 testvalue868" -+other_name_utf8 = "1.2.3.4 testvalue869" -+other_name_utf8 = "1.2.3.4 testvalue870" -+other_name_utf8 = "1.2.3.4 testvalue871" -+other_name_utf8 = "1.2.3.4 testvalue872" -+other_name_utf8 = "1.2.3.4 testvalue873" -+other_name_utf8 = "1.2.3.4 testvalue874" -+other_name_utf8 = "1.2.3.4 testvalue875" -+other_name_utf8 = "1.2.3.4 testvalue876" -+other_name_utf8 = "1.2.3.4 testvalue877" -+other_name_utf8 = "1.2.3.4 testvalue878" -+other_name_utf8 = "1.2.3.4 testvalue879" -+other_name_utf8 = "1.2.3.4 testvalue880" -+other_name_utf8 = "1.2.3.4 testvalue881" -+other_name_utf8 = "1.2.3.4 testvalue882" -+other_name_utf8 = "1.2.3.4 testvalue883" -+other_name_utf8 = "1.2.3.4 testvalue884" -+other_name_utf8 = "1.2.3.4 testvalue885" -+other_name_utf8 = "1.2.3.4 testvalue886" -+other_name_utf8 = "1.2.3.4 testvalue887" -+other_name_utf8 = "1.2.3.4 testvalue888" -+other_name_utf8 = "1.2.3.4 testvalue889" -+other_name_utf8 = "1.2.3.4 testvalue890" -+other_name_utf8 = "1.2.3.4 testvalue891" -+other_name_utf8 = "1.2.3.4 testvalue892" -+other_name_utf8 = "1.2.3.4 testvalue893" -+other_name_utf8 = "1.2.3.4 testvalue894" -+other_name_utf8 = "1.2.3.4 testvalue895" -+other_name_utf8 = "1.2.3.4 testvalue896" -+other_name_utf8 = "1.2.3.4 testvalue897" -+other_name_utf8 = "1.2.3.4 testvalue898" -+other_name_utf8 = "1.2.3.4 testvalue899" -+other_name_utf8 = "1.2.3.4 testvalue900" -+other_name_utf8 = "1.2.3.4 testvalue901" -+other_name_utf8 = "1.2.3.4 testvalue902" -+other_name_utf8 = "1.2.3.4 testvalue903" -+other_name_utf8 = "1.2.3.4 testvalue904" -+other_name_utf8 = "1.2.3.4 testvalue905" -+other_name_utf8 = "1.2.3.4 testvalue906" -+other_name_utf8 = "1.2.3.4 testvalue907" -+other_name_utf8 = "1.2.3.4 testvalue908" -+other_name_utf8 = "1.2.3.4 testvalue909" -+other_name_utf8 = "1.2.3.4 testvalue910" -+other_name_utf8 = "1.2.3.4 testvalue911" -+other_name_utf8 = "1.2.3.4 testvalue912" -+other_name_utf8 = "1.2.3.4 testvalue913" -+other_name_utf8 = "1.2.3.4 testvalue914" -+other_name_utf8 = "1.2.3.4 testvalue915" -+other_name_utf8 = "1.2.3.4 testvalue916" -+other_name_utf8 = "1.2.3.4 testvalue917" -+other_name_utf8 = "1.2.3.4 testvalue918" -+other_name_utf8 = "1.2.3.4 testvalue919" -+other_name_utf8 = "1.2.3.4 testvalue920" -+other_name_utf8 = "1.2.3.4 testvalue921" -+other_name_utf8 = "1.2.3.4 testvalue922" -+other_name_utf8 = "1.2.3.4 testvalue923" -+other_name_utf8 = "1.2.3.4 testvalue924" -+other_name_utf8 = "1.2.3.4 testvalue925" -+other_name_utf8 = "1.2.3.4 testvalue926" -+other_name_utf8 = "1.2.3.4 testvalue927" -+other_name_utf8 = "1.2.3.4 testvalue928" -+other_name_utf8 = "1.2.3.4 testvalue929" -+other_name_utf8 = "1.2.3.4 testvalue930" -+other_name_utf8 = "1.2.3.4 testvalue931" -+other_name_utf8 = "1.2.3.4 testvalue932" -+other_name_utf8 = "1.2.3.4 testvalue933" -+other_name_utf8 = "1.2.3.4 testvalue934" -+other_name_utf8 = "1.2.3.4 testvalue935" -+other_name_utf8 = "1.2.3.4 testvalue936" -+other_name_utf8 = "1.2.3.4 testvalue937" -+other_name_utf8 = "1.2.3.4 testvalue938" -+other_name_utf8 = "1.2.3.4 testvalue939" -+other_name_utf8 = "1.2.3.4 testvalue940" -+other_name_utf8 = "1.2.3.4 testvalue941" -+other_name_utf8 = "1.2.3.4 testvalue942" -+other_name_utf8 = "1.2.3.4 testvalue943" -+other_name_utf8 = "1.2.3.4 testvalue944" -+other_name_utf8 = "1.2.3.4 testvalue945" -+other_name_utf8 = "1.2.3.4 testvalue946" -+other_name_utf8 = "1.2.3.4 testvalue947" -+other_name_utf8 = "1.2.3.4 testvalue948" -+other_name_utf8 = "1.2.3.4 testvalue949" -+other_name_utf8 = "1.2.3.4 testvalue950" -+other_name_utf8 = "1.2.3.4 testvalue951" -+other_name_utf8 = "1.2.3.4 testvalue952" -+other_name_utf8 = "1.2.3.4 testvalue953" -+other_name_utf8 = "1.2.3.4 testvalue954" -+other_name_utf8 = "1.2.3.4 testvalue955" -+other_name_utf8 = "1.2.3.4 testvalue956" -+other_name_utf8 = "1.2.3.4 testvalue957" -+other_name_utf8 = "1.2.3.4 testvalue958" -+other_name_utf8 = "1.2.3.4 testvalue959" -+other_name_utf8 = "1.2.3.4 testvalue960" -+other_name_utf8 = "1.2.3.4 testvalue961" -+other_name_utf8 = "1.2.3.4 testvalue962" -+other_name_utf8 = "1.2.3.4 testvalue963" -+other_name_utf8 = "1.2.3.4 testvalue964" -+other_name_utf8 = "1.2.3.4 testvalue965" -+other_name_utf8 = "1.2.3.4 testvalue966" -+other_name_utf8 = "1.2.3.4 testvalue967" -+other_name_utf8 = "1.2.3.4 testvalue968" -+other_name_utf8 = "1.2.3.4 testvalue969" -+other_name_utf8 = "1.2.3.4 testvalue970" -+other_name_utf8 = "1.2.3.4 testvalue971" -+other_name_utf8 = "1.2.3.4 testvalue972" -+other_name_utf8 = "1.2.3.4 testvalue973" -+other_name_utf8 = "1.2.3.4 testvalue974" -+other_name_utf8 = "1.2.3.4 testvalue975" -+other_name_utf8 = "1.2.3.4 testvalue976" -+other_name_utf8 = "1.2.3.4 testvalue977" -+other_name_utf8 = "1.2.3.4 testvalue978" -+other_name_utf8 = "1.2.3.4 testvalue979" -+other_name_utf8 = "1.2.3.4 testvalue980" -+other_name_utf8 = "1.2.3.4 testvalue981" -+other_name_utf8 = "1.2.3.4 testvalue982" -+other_name_utf8 = "1.2.3.4 testvalue983" -+other_name_utf8 = "1.2.3.4 testvalue984" -+other_name_utf8 = "1.2.3.4 testvalue985" -+other_name_utf8 = "1.2.3.4 testvalue986" -+other_name_utf8 = "1.2.3.4 testvalue987" -+other_name_utf8 = "1.2.3.4 testvalue988" -+other_name_utf8 = "1.2.3.4 testvalue989" -+other_name_utf8 = "1.2.3.4 testvalue990" -+other_name_utf8 = "1.2.3.4 testvalue991" -+other_name_utf8 = "1.2.3.4 testvalue992" -+other_name_utf8 = "1.2.3.4 testvalue993" -+other_name_utf8 = "1.2.3.4 testvalue994" -+other_name_utf8 = "1.2.3.4 testvalue995" -+other_name_utf8 = "1.2.3.4 testvalue996" -+other_name_utf8 = "1.2.3.4 testvalue997" -+other_name_utf8 = "1.2.3.4 testvalue998" -+other_name_utf8 = "1.2.3.4 testvalue999" -+other_name_utf8 = "1.2.3.4 testvalue1000" -+other_name_utf8 = "1.2.3.4 testvalue1001" -+other_name_utf8 = "1.2.3.4 testvalue1002" -+other_name_utf8 = "1.2.3.4 testvalue1003" -+other_name_utf8 = "1.2.3.4 testvalue1004" -+other_name_utf8 = "1.2.3.4 testvalue1005" -+other_name_utf8 = "1.2.3.4 testvalue1006" -+other_name_utf8 = "1.2.3.4 testvalue1007" -+other_name_utf8 = "1.2.3.4 testvalue1008" -+other_name_utf8 = "1.2.3.4 testvalue1009" -+other_name_utf8 = "1.2.3.4 testvalue1010" -+other_name_utf8 = "1.2.3.4 testvalue1011" -+other_name_utf8 = "1.2.3.4 testvalue1012" -+other_name_utf8 = "1.2.3.4 testvalue1013" -+other_name_utf8 = "1.2.3.4 testvalue1014" -+other_name_utf8 = "1.2.3.4 testvalue1015" -+other_name_utf8 = "1.2.3.4 testvalue1016" -+other_name_utf8 = "1.2.3.4 testvalue1017" -+other_name_utf8 = "1.2.3.4 testvalue1018" -+other_name_utf8 = "1.2.3.4 testvalue1019" -+other_name_utf8 = "1.2.3.4 testvalue1020" -+other_name_utf8 = "1.2.3.4 testvalue1021" -+other_name_utf8 = "1.2.3.4 testvalue1022" -+other_name_utf8 = "1.2.3.4 testvalue1023" -+other_name_utf8 = "1.2.3.4 testvalue1024" -+other_name_utf8 = "1.2.3.4 testvalue1025" -+other_name_utf8 = "1.2.3.4 testvalue1026" -+other_name_utf8 = "1.2.3.4 testvalue1027" -+other_name_utf8 = "1.2.3.4 testvalue1028" -+other_name_utf8 = "1.2.3.4 testvalue1029" -+other_name_utf8 = "1.2.3.4 testvalue1030" -+other_name_utf8 = "1.2.3.4 testvalue1031" -+other_name_utf8 = "1.2.3.4 testvalue1032" -+other_name_utf8 = "1.2.3.4 testvalue1033" -+other_name_utf8 = "1.2.3.4 testvalue1034" -+other_name_utf8 = "1.2.3.4 testvalue1035" -+other_name_utf8 = "1.2.3.4 testvalue1036" -+other_name_utf8 = "1.2.3.4 testvalue1037" -+other_name_utf8 = "1.2.3.4 testvalue1038" -+other_name_utf8 = "1.2.3.4 testvalue1039" -+other_name_utf8 = "1.2.3.4 testvalue1040" -+other_name_utf8 = "1.2.3.4 testvalue1041" -+other_name_utf8 = "1.2.3.4 testvalue1042" -+other_name_utf8 = "1.2.3.4 testvalue1043" -+other_name_utf8 = "1.2.3.4 testvalue1044" -+other_name_utf8 = "1.2.3.4 testvalue1045" -+other_name_utf8 = "1.2.3.4 testvalue1046" -+other_name_utf8 = "1.2.3.4 testvalue1047" -+other_name_utf8 = "1.2.3.4 testvalue1048" -+other_name_utf8 = "1.2.3.4 testvalue1049" -+other_name_utf8 = "1.2.3.4 testvalue1050" -+other_name_utf8 = "1.2.3.4 testvalue1051" -+other_name_utf8 = "1.2.3.4 testvalue1052" -+other_name_utf8 = "1.2.3.4 testvalue1053" -+other_name_utf8 = "1.2.3.4 testvalue1054" -+other_name_utf8 = "1.2.3.4 testvalue1055" -+other_name_utf8 = "1.2.3.4 testvalue1056" -+other_name_utf8 = "1.2.3.4 testvalue1057" -+other_name_utf8 = "1.2.3.4 testvalue1058" -+other_name_utf8 = "1.2.3.4 testvalue1059" -+other_name_utf8 = "1.2.3.4 testvalue1060" -+other_name_utf8 = "1.2.3.4 testvalue1061" -+other_name_utf8 = "1.2.3.4 testvalue1062" -+other_name_utf8 = "1.2.3.4 testvalue1063" -+other_name_utf8 = "1.2.3.4 testvalue1064" -+other_name_utf8 = "1.2.3.4 testvalue1065" -+other_name_utf8 = "1.2.3.4 testvalue1066" -+other_name_utf8 = "1.2.3.4 testvalue1067" -+other_name_utf8 = "1.2.3.4 testvalue1068" -+other_name_utf8 = "1.2.3.4 testvalue1069" -+other_name_utf8 = "1.2.3.4 testvalue1070" -+other_name_utf8 = "1.2.3.4 testvalue1071" -+other_name_utf8 = "1.2.3.4 testvalue1072" -+other_name_utf8 = "1.2.3.4 testvalue1073" -+other_name_utf8 = "1.2.3.4 testvalue1074" -+other_name_utf8 = "1.2.3.4 testvalue1075" -+other_name_utf8 = "1.2.3.4 testvalue1076" -+other_name_utf8 = "1.2.3.4 testvalue1077" -+other_name_utf8 = "1.2.3.4 testvalue1078" -+other_name_utf8 = "1.2.3.4 testvalue1079" -+other_name_utf8 = "1.2.3.4 testvalue1080" -+other_name_utf8 = "1.2.3.4 testvalue1081" -+other_name_utf8 = "1.2.3.4 testvalue1082" -+other_name_utf8 = "1.2.3.4 testvalue1083" -+other_name_utf8 = "1.2.3.4 testvalue1084" -+other_name_utf8 = "1.2.3.4 testvalue1085" -+other_name_utf8 = "1.2.3.4 testvalue1086" -+other_name_utf8 = "1.2.3.4 testvalue1087" -+other_name_utf8 = "1.2.3.4 testvalue1088" -+other_name_utf8 = "1.2.3.4 testvalue1089" -+other_name_utf8 = "1.2.3.4 testvalue1090" -+other_name_utf8 = "1.2.3.4 testvalue1091" -+other_name_utf8 = "1.2.3.4 testvalue1092" -+other_name_utf8 = "1.2.3.4 testvalue1093" -+other_name_utf8 = "1.2.3.4 testvalue1094" -+other_name_utf8 = "1.2.3.4 testvalue1095" -+other_name_utf8 = "1.2.3.4 testvalue1096" -+other_name_utf8 = "1.2.3.4 testvalue1097" -+other_name_utf8 = "1.2.3.4 testvalue1098" -+other_name_utf8 = "1.2.3.4 testvalue1099" -+other_name_utf8 = "1.2.3.4 testvalue1100" -+other_name_utf8 = "1.2.3.4 testvalue1101" -+other_name_utf8 = "1.2.3.4 testvalue1102" -+other_name_utf8 = "1.2.3.4 testvalue1103" -+other_name_utf8 = "1.2.3.4 testvalue1104" -+other_name_utf8 = "1.2.3.4 testvalue1105" -+other_name_utf8 = "1.2.3.4 testvalue1106" -+other_name_utf8 = "1.2.3.4 testvalue1107" -+other_name_utf8 = "1.2.3.4 testvalue1108" -+other_name_utf8 = "1.2.3.4 testvalue1109" -+other_name_utf8 = "1.2.3.4 testvalue1110" -+other_name_utf8 = "1.2.3.4 testvalue1111" -+other_name_utf8 = "1.2.3.4 testvalue1112" -+other_name_utf8 = "1.2.3.4 testvalue1113" -+other_name_utf8 = "1.2.3.4 testvalue1114" -+other_name_utf8 = "1.2.3.4 testvalue1115" -+other_name_utf8 = "1.2.3.4 testvalue1116" -+other_name_utf8 = "1.2.3.4 testvalue1117" -+other_name_utf8 = "1.2.3.4 testvalue1118" -+other_name_utf8 = "1.2.3.4 testvalue1119" -+other_name_utf8 = "1.2.3.4 testvalue1120" -+other_name_utf8 = "1.2.3.4 testvalue1121" -+other_name_utf8 = "1.2.3.4 testvalue1122" -+other_name_utf8 = "1.2.3.4 testvalue1123" -+other_name_utf8 = "1.2.3.4 testvalue1124" -+other_name_utf8 = "1.2.3.4 testvalue1125" -+other_name_utf8 = "1.2.3.4 testvalue1126" -+other_name_utf8 = "1.2.3.4 testvalue1127" -+other_name_utf8 = "1.2.3.4 testvalue1128" -+other_name_utf8 = "1.2.3.4 testvalue1129" -+other_name_utf8 = "1.2.3.4 testvalue1130" -+other_name_utf8 = "1.2.3.4 testvalue1131" -+other_name_utf8 = "1.2.3.4 testvalue1132" -+other_name_utf8 = "1.2.3.4 testvalue1133" -+other_name_utf8 = "1.2.3.4 testvalue1134" -+other_name_utf8 = "1.2.3.4 testvalue1135" -+other_name_utf8 = "1.2.3.4 testvalue1136" -+other_name_utf8 = "1.2.3.4 testvalue1137" -+other_name_utf8 = "1.2.3.4 testvalue1138" -+other_name_utf8 = "1.2.3.4 testvalue1139" -+other_name_utf8 = "1.2.3.4 testvalue1140" -+other_name_utf8 = "1.2.3.4 testvalue1141" -+other_name_utf8 = "1.2.3.4 testvalue1142" -+other_name_utf8 = "1.2.3.4 testvalue1143" -+other_name_utf8 = "1.2.3.4 testvalue1144" -+other_name_utf8 = "1.2.3.4 testvalue1145" -+other_name_utf8 = "1.2.3.4 testvalue1146" -+other_name_utf8 = "1.2.3.4 testvalue1147" -+other_name_utf8 = "1.2.3.4 testvalue1148" -+other_name_utf8 = "1.2.3.4 testvalue1149" -+other_name_utf8 = "1.2.3.4 testvalue1150" -+other_name_utf8 = "1.2.3.4 testvalue1151" -+other_name_utf8 = "1.2.3.4 testvalue1152" -+other_name_utf8 = "1.2.3.4 testvalue1153" -+other_name_utf8 = "1.2.3.4 testvalue1154" -+other_name_utf8 = "1.2.3.4 testvalue1155" -+other_name_utf8 = "1.2.3.4 testvalue1156" -+other_name_utf8 = "1.2.3.4 testvalue1157" -+other_name_utf8 = "1.2.3.4 testvalue1158" -+other_name_utf8 = "1.2.3.4 testvalue1159" -+other_name_utf8 = "1.2.3.4 testvalue1160" -+other_name_utf8 = "1.2.3.4 testvalue1161" -+other_name_utf8 = "1.2.3.4 testvalue1162" -+other_name_utf8 = "1.2.3.4 testvalue1163" -+other_name_utf8 = "1.2.3.4 testvalue1164" -+other_name_utf8 = "1.2.3.4 testvalue1165" -+other_name_utf8 = "1.2.3.4 testvalue1166" -+other_name_utf8 = "1.2.3.4 testvalue1167" -+other_name_utf8 = "1.2.3.4 testvalue1168" -+other_name_utf8 = "1.2.3.4 testvalue1169" -+other_name_utf8 = "1.2.3.4 testvalue1170" -+other_name_utf8 = "1.2.3.4 testvalue1171" -+other_name_utf8 = "1.2.3.4 testvalue1172" -+other_name_utf8 = "1.2.3.4 testvalue1173" -+other_name_utf8 = "1.2.3.4 testvalue1174" -+other_name_utf8 = "1.2.3.4 testvalue1175" -+other_name_utf8 = "1.2.3.4 testvalue1176" -+other_name_utf8 = "1.2.3.4 testvalue1177" -+other_name_utf8 = "1.2.3.4 testvalue1178" -+other_name_utf8 = "1.2.3.4 testvalue1179" -+other_name_utf8 = "1.2.3.4 testvalue1180" -+other_name_utf8 = "1.2.3.4 testvalue1181" -+other_name_utf8 = "1.2.3.4 testvalue1182" -+other_name_utf8 = "1.2.3.4 testvalue1183" -+other_name_utf8 = "1.2.3.4 testvalue1184" -+other_name_utf8 = "1.2.3.4 testvalue1185" -+other_name_utf8 = "1.2.3.4 testvalue1186" -+other_name_utf8 = "1.2.3.4 testvalue1187" -+other_name_utf8 = "1.2.3.4 testvalue1188" -+other_name_utf8 = "1.2.3.4 testvalue1189" -+other_name_utf8 = "1.2.3.4 testvalue1190" -+other_name_utf8 = "1.2.3.4 testvalue1191" -+other_name_utf8 = "1.2.3.4 testvalue1192" -+other_name_utf8 = "1.2.3.4 testvalue1193" -+other_name_utf8 = "1.2.3.4 testvalue1194" -+other_name_utf8 = "1.2.3.4 testvalue1195" -+other_name_utf8 = "1.2.3.4 testvalue1196" -+other_name_utf8 = "1.2.3.4 testvalue1197" -+other_name_utf8 = "1.2.3.4 testvalue1198" -+other_name_utf8 = "1.2.3.4 testvalue1199" -+other_name_utf8 = "1.2.3.4 testvalue1200" -+other_name_utf8 = "1.2.3.4 testvalue1201" -+other_name_utf8 = "1.2.3.4 testvalue1202" -+other_name_utf8 = "1.2.3.4 testvalue1203" -+other_name_utf8 = "1.2.3.4 testvalue1204" -+other_name_utf8 = "1.2.3.4 testvalue1205" -+other_name_utf8 = "1.2.3.4 testvalue1206" -+other_name_utf8 = "1.2.3.4 testvalue1207" -+other_name_utf8 = "1.2.3.4 testvalue1208" -+other_name_utf8 = "1.2.3.4 testvalue1209" -+other_name_utf8 = "1.2.3.4 testvalue1210" -+other_name_utf8 = "1.2.3.4 testvalue1211" -+other_name_utf8 = "1.2.3.4 testvalue1212" -+other_name_utf8 = "1.2.3.4 testvalue1213" -+other_name_utf8 = "1.2.3.4 testvalue1214" -+other_name_utf8 = "1.2.3.4 testvalue1215" -+other_name_utf8 = "1.2.3.4 testvalue1216" -+other_name_utf8 = "1.2.3.4 testvalue1217" -+other_name_utf8 = "1.2.3.4 testvalue1218" -+other_name_utf8 = "1.2.3.4 testvalue1219" -+other_name_utf8 = "1.2.3.4 testvalue1220" -+other_name_utf8 = "1.2.3.4 testvalue1221" -+other_name_utf8 = "1.2.3.4 testvalue1222" -+other_name_utf8 = "1.2.3.4 testvalue1223" -+other_name_utf8 = "1.2.3.4 testvalue1224" -+other_name_utf8 = "1.2.3.4 testvalue1225" -+other_name_utf8 = "1.2.3.4 testvalue1226" -+other_name_utf8 = "1.2.3.4 testvalue1227" -+other_name_utf8 = "1.2.3.4 testvalue1228" -+other_name_utf8 = "1.2.3.4 testvalue1229" -+other_name_utf8 = "1.2.3.4 testvalue1230" -+other_name_utf8 = "1.2.3.4 testvalue1231" -+other_name_utf8 = "1.2.3.4 testvalue1232" -+other_name_utf8 = "1.2.3.4 testvalue1233" -+other_name_utf8 = "1.2.3.4 testvalue1234" -+other_name_utf8 = "1.2.3.4 testvalue1235" -+other_name_utf8 = "1.2.3.4 testvalue1236" -+other_name_utf8 = "1.2.3.4 testvalue1237" -+other_name_utf8 = "1.2.3.4 testvalue1238" -+other_name_utf8 = "1.2.3.4 testvalue1239" -+other_name_utf8 = "1.2.3.4 testvalue1240" -+other_name_utf8 = "1.2.3.4 testvalue1241" -+other_name_utf8 = "1.2.3.4 testvalue1242" -+other_name_utf8 = "1.2.3.4 testvalue1243" -+other_name_utf8 = "1.2.3.4 testvalue1244" -+other_name_utf8 = "1.2.3.4 testvalue1245" -+other_name_utf8 = "1.2.3.4 testvalue1246" -+other_name_utf8 = "1.2.3.4 testvalue1247" -+other_name_utf8 = "1.2.3.4 testvalue1248" -+other_name_utf8 = "1.2.3.4 testvalue1249" -+other_name_utf8 = "1.2.3.4 testvalue1250" -+other_name_utf8 = "1.2.3.4 testvalue1251" -+other_name_utf8 = "1.2.3.4 testvalue1252" -+other_name_utf8 = "1.2.3.4 testvalue1253" -+other_name_utf8 = "1.2.3.4 testvalue1254" -+other_name_utf8 = "1.2.3.4 testvalue1255" -+other_name_utf8 = "1.2.3.4 testvalue1256" -+other_name_utf8 = "1.2.3.4 testvalue1257" -+other_name_utf8 = "1.2.3.4 testvalue1258" -+other_name_utf8 = "1.2.3.4 testvalue1259" -+other_name_utf8 = "1.2.3.4 testvalue1260" -+other_name_utf8 = "1.2.3.4 testvalue1261" -+other_name_utf8 = "1.2.3.4 testvalue1262" -+other_name_utf8 = "1.2.3.4 testvalue1263" -+other_name_utf8 = "1.2.3.4 testvalue1264" -+other_name_utf8 = "1.2.3.4 testvalue1265" -+other_name_utf8 = "1.2.3.4 testvalue1266" -+other_name_utf8 = "1.2.3.4 testvalue1267" -+other_name_utf8 = "1.2.3.4 testvalue1268" -+other_name_utf8 = "1.2.3.4 testvalue1269" -+other_name_utf8 = "1.2.3.4 testvalue1270" -+other_name_utf8 = "1.2.3.4 testvalue1271" -+other_name_utf8 = "1.2.3.4 testvalue1272" -+other_name_utf8 = "1.2.3.4 testvalue1273" -+other_name_utf8 = "1.2.3.4 testvalue1274" -+other_name_utf8 = "1.2.3.4 testvalue1275" -+other_name_utf8 = "1.2.3.4 testvalue1276" -+other_name_utf8 = "1.2.3.4 testvalue1277" -+other_name_utf8 = "1.2.3.4 testvalue1278" -+other_name_utf8 = "1.2.3.4 testvalue1279" -+other_name_utf8 = "1.2.3.4 testvalue1280" -+other_name_utf8 = "1.2.3.4 testvalue1281" -+other_name_utf8 = "1.2.3.4 testvalue1282" -+other_name_utf8 = "1.2.3.4 testvalue1283" -+other_name_utf8 = "1.2.3.4 testvalue1284" -+other_name_utf8 = "1.2.3.4 testvalue1285" -+other_name_utf8 = "1.2.3.4 testvalue1286" -+other_name_utf8 = "1.2.3.4 testvalue1287" -+other_name_utf8 = "1.2.3.4 testvalue1288" -+other_name_utf8 = "1.2.3.4 testvalue1289" -+other_name_utf8 = "1.2.3.4 testvalue1290" -+other_name_utf8 = "1.2.3.4 testvalue1291" -+other_name_utf8 = "1.2.3.4 testvalue1292" -+other_name_utf8 = "1.2.3.4 testvalue1293" -+other_name_utf8 = "1.2.3.4 testvalue1294" -+other_name_utf8 = "1.2.3.4 testvalue1295" -+other_name_utf8 = "1.2.3.4 testvalue1296" -+other_name_utf8 = "1.2.3.4 testvalue1297" -+other_name_utf8 = "1.2.3.4 testvalue1298" -+other_name_utf8 = "1.2.3.4 testvalue1299" -+other_name_utf8 = "1.2.3.4 testvalue1300" -+other_name_utf8 = "1.2.3.4 testvalue1301" -+other_name_utf8 = "1.2.3.4 testvalue1302" -+other_name_utf8 = "1.2.3.4 testvalue1303" -+other_name_utf8 = "1.2.3.4 testvalue1304" -+other_name_utf8 = "1.2.3.4 testvalue1305" -+other_name_utf8 = "1.2.3.4 testvalue1306" -+other_name_utf8 = "1.2.3.4 testvalue1307" -+other_name_utf8 = "1.2.3.4 testvalue1308" -+other_name_utf8 = "1.2.3.4 testvalue1309" -+other_name_utf8 = "1.2.3.4 testvalue1310" -+other_name_utf8 = "1.2.3.4 testvalue1311" -+other_name_utf8 = "1.2.3.4 testvalue1312" -+other_name_utf8 = "1.2.3.4 testvalue1313" -+other_name_utf8 = "1.2.3.4 testvalue1314" -+other_name_utf8 = "1.2.3.4 testvalue1315" -+other_name_utf8 = "1.2.3.4 testvalue1316" -+other_name_utf8 = "1.2.3.4 testvalue1317" -+other_name_utf8 = "1.2.3.4 testvalue1318" -+other_name_utf8 = "1.2.3.4 testvalue1319" -+other_name_utf8 = "1.2.3.4 testvalue1320" -+other_name_utf8 = "1.2.3.4 testvalue1321" -+other_name_utf8 = "1.2.3.4 testvalue1322" -+other_name_utf8 = "1.2.3.4 testvalue1323" -+other_name_utf8 = "1.2.3.4 testvalue1324" -+other_name_utf8 = "1.2.3.4 testvalue1325" -+other_name_utf8 = "1.2.3.4 testvalue1326" -+other_name_utf8 = "1.2.3.4 testvalue1327" -+other_name_utf8 = "1.2.3.4 testvalue1328" -+other_name_utf8 = "1.2.3.4 testvalue1329" -+other_name_utf8 = "1.2.3.4 testvalue1330" -+other_name_utf8 = "1.2.3.4 testvalue1331" -+other_name_utf8 = "1.2.3.4 testvalue1332" -+other_name_utf8 = "1.2.3.4 testvalue1333" -+other_name_utf8 = "1.2.3.4 testvalue1334" -+other_name_utf8 = "1.2.3.4 testvalue1335" -+other_name_utf8 = "1.2.3.4 testvalue1336" -+other_name_utf8 = "1.2.3.4 testvalue1337" -+other_name_utf8 = "1.2.3.4 testvalue1338" -+other_name_utf8 = "1.2.3.4 testvalue1339" -+other_name_utf8 = "1.2.3.4 testvalue1340" -+other_name_utf8 = "1.2.3.4 testvalue1341" -+other_name_utf8 = "1.2.3.4 testvalue1342" -+other_name_utf8 = "1.2.3.4 testvalue1343" -+other_name_utf8 = "1.2.3.4 testvalue1344" -+other_name_utf8 = "1.2.3.4 testvalue1345" -+other_name_utf8 = "1.2.3.4 testvalue1346" -+other_name_utf8 = "1.2.3.4 testvalue1347" -+other_name_utf8 = "1.2.3.4 testvalue1348" -+other_name_utf8 = "1.2.3.4 testvalue1349" -+other_name_utf8 = "1.2.3.4 testvalue1350" -+other_name_utf8 = "1.2.3.4 testvalue1351" -+other_name_utf8 = "1.2.3.4 testvalue1352" -+other_name_utf8 = "1.2.3.4 testvalue1353" -+other_name_utf8 = "1.2.3.4 testvalue1354" -+other_name_utf8 = "1.2.3.4 testvalue1355" -+other_name_utf8 = "1.2.3.4 testvalue1356" -+other_name_utf8 = "1.2.3.4 testvalue1357" -+other_name_utf8 = "1.2.3.4 testvalue1358" -+other_name_utf8 = "1.2.3.4 testvalue1359" -+other_name_utf8 = "1.2.3.4 testvalue1360" -+other_name_utf8 = "1.2.3.4 testvalue1361" -+other_name_utf8 = "1.2.3.4 testvalue1362" -+other_name_utf8 = "1.2.3.4 testvalue1363" -+other_name_utf8 = "1.2.3.4 testvalue1364" -+other_name_utf8 = "1.2.3.4 testvalue1365" -+other_name_utf8 = "1.2.3.4 testvalue1366" -+other_name_utf8 = "1.2.3.4 testvalue1367" -+other_name_utf8 = "1.2.3.4 testvalue1368" -+other_name_utf8 = "1.2.3.4 testvalue1369" -+other_name_utf8 = "1.2.3.4 testvalue1370" -+other_name_utf8 = "1.2.3.4 testvalue1371" -+other_name_utf8 = "1.2.3.4 testvalue1372" -+other_name_utf8 = "1.2.3.4 testvalue1373" -+other_name_utf8 = "1.2.3.4 testvalue1374" -+other_name_utf8 = "1.2.3.4 testvalue1375" -+other_name_utf8 = "1.2.3.4 testvalue1376" -+other_name_utf8 = "1.2.3.4 testvalue1377" -+other_name_utf8 = "1.2.3.4 testvalue1378" -+other_name_utf8 = "1.2.3.4 testvalue1379" -+other_name_utf8 = "1.2.3.4 testvalue1380" -+other_name_utf8 = "1.2.3.4 testvalue1381" -+other_name_utf8 = "1.2.3.4 testvalue1382" -+other_name_utf8 = "1.2.3.4 testvalue1383" -+other_name_utf8 = "1.2.3.4 testvalue1384" -+other_name_utf8 = "1.2.3.4 testvalue1385" -+other_name_utf8 = "1.2.3.4 testvalue1386" -+other_name_utf8 = "1.2.3.4 testvalue1387" -+other_name_utf8 = "1.2.3.4 testvalue1388" -+other_name_utf8 = "1.2.3.4 testvalue1389" -+other_name_utf8 = "1.2.3.4 testvalue1390" -+other_name_utf8 = "1.2.3.4 testvalue1391" -+other_name_utf8 = "1.2.3.4 testvalue1392" -+other_name_utf8 = "1.2.3.4 testvalue1393" -+other_name_utf8 = "1.2.3.4 testvalue1394" -+other_name_utf8 = "1.2.3.4 testvalue1395" -+other_name_utf8 = "1.2.3.4 testvalue1396" -+other_name_utf8 = "1.2.3.4 testvalue1397" -+other_name_utf8 = "1.2.3.4 testvalue1398" -+other_name_utf8 = "1.2.3.4 testvalue1399" -+other_name_utf8 = "1.2.3.4 testvalue1400" -+other_name_utf8 = "1.2.3.4 testvalue1401" -+other_name_utf8 = "1.2.3.4 testvalue1402" -+other_name_utf8 = "1.2.3.4 testvalue1403" -+other_name_utf8 = "1.2.3.4 testvalue1404" -+other_name_utf8 = "1.2.3.4 testvalue1405" -+other_name_utf8 = "1.2.3.4 testvalue1406" -+other_name_utf8 = "1.2.3.4 testvalue1407" -+other_name_utf8 = "1.2.3.4 testvalue1408" -+other_name_utf8 = "1.2.3.4 testvalue1409" -+other_name_utf8 = "1.2.3.4 testvalue1410" -+other_name_utf8 = "1.2.3.4 testvalue1411" -+other_name_utf8 = "1.2.3.4 testvalue1412" -+other_name_utf8 = "1.2.3.4 testvalue1413" -+other_name_utf8 = "1.2.3.4 testvalue1414" -+other_name_utf8 = "1.2.3.4 testvalue1415" -+other_name_utf8 = "1.2.3.4 testvalue1416" -+other_name_utf8 = "1.2.3.4 testvalue1417" -+other_name_utf8 = "1.2.3.4 testvalue1418" -+other_name_utf8 = "1.2.3.4 testvalue1419" -+other_name_utf8 = "1.2.3.4 testvalue1420" -+other_name_utf8 = "1.2.3.4 testvalue1421" -+other_name_utf8 = "1.2.3.4 testvalue1422" -+other_name_utf8 = "1.2.3.4 testvalue1423" -+other_name_utf8 = "1.2.3.4 testvalue1424" -+other_name_utf8 = "1.2.3.4 testvalue1425" -+other_name_utf8 = "1.2.3.4 testvalue1426" -+other_name_utf8 = "1.2.3.4 testvalue1427" -+other_name_utf8 = "1.2.3.4 testvalue1428" -+other_name_utf8 = "1.2.3.4 testvalue1429" -+other_name_utf8 = "1.2.3.4 testvalue1430" -+other_name_utf8 = "1.2.3.4 testvalue1431" -+other_name_utf8 = "1.2.3.4 testvalue1432" -+other_name_utf8 = "1.2.3.4 testvalue1433" -+other_name_utf8 = "1.2.3.4 testvalue1434" -+other_name_utf8 = "1.2.3.4 testvalue1435" -+other_name_utf8 = "1.2.3.4 testvalue1436" -+other_name_utf8 = "1.2.3.4 testvalue1437" -+other_name_utf8 = "1.2.3.4 testvalue1438" -+other_name_utf8 = "1.2.3.4 testvalue1439" -+other_name_utf8 = "1.2.3.4 testvalue1440" -+other_name_utf8 = "1.2.3.4 testvalue1441" -+other_name_utf8 = "1.2.3.4 testvalue1442" -+other_name_utf8 = "1.2.3.4 testvalue1443" -+other_name_utf8 = "1.2.3.4 testvalue1444" -+other_name_utf8 = "1.2.3.4 testvalue1445" -+other_name_utf8 = "1.2.3.4 testvalue1446" -+other_name_utf8 = "1.2.3.4 testvalue1447" -+other_name_utf8 = "1.2.3.4 testvalue1448" -+other_name_utf8 = "1.2.3.4 testvalue1449" -+other_name_utf8 = "1.2.3.4 testvalue1450" -+other_name_utf8 = "1.2.3.4 testvalue1451" -+other_name_utf8 = "1.2.3.4 testvalue1452" -+other_name_utf8 = "1.2.3.4 testvalue1453" -+other_name_utf8 = "1.2.3.4 testvalue1454" -+other_name_utf8 = "1.2.3.4 testvalue1455" -+other_name_utf8 = "1.2.3.4 testvalue1456" -+other_name_utf8 = "1.2.3.4 testvalue1457" -+other_name_utf8 = "1.2.3.4 testvalue1458" -+other_name_utf8 = "1.2.3.4 testvalue1459" -+other_name_utf8 = "1.2.3.4 testvalue1460" -+other_name_utf8 = "1.2.3.4 testvalue1461" -+other_name_utf8 = "1.2.3.4 testvalue1462" -+other_name_utf8 = "1.2.3.4 testvalue1463" -+other_name_utf8 = "1.2.3.4 testvalue1464" -+other_name_utf8 = "1.2.3.4 testvalue1465" -+other_name_utf8 = "1.2.3.4 testvalue1466" -+other_name_utf8 = "1.2.3.4 testvalue1467" -+other_name_utf8 = "1.2.3.4 testvalue1468" -+other_name_utf8 = "1.2.3.4 testvalue1469" -+other_name_utf8 = "1.2.3.4 testvalue1470" -+other_name_utf8 = "1.2.3.4 testvalue1471" -+other_name_utf8 = "1.2.3.4 testvalue1472" -+other_name_utf8 = "1.2.3.4 testvalue1473" -+other_name_utf8 = "1.2.3.4 testvalue1474" -+other_name_utf8 = "1.2.3.4 testvalue1475" -+other_name_utf8 = "1.2.3.4 testvalue1476" -+other_name_utf8 = "1.2.3.4 testvalue1477" -+other_name_utf8 = "1.2.3.4 testvalue1478" -+other_name_utf8 = "1.2.3.4 testvalue1479" -+other_name_utf8 = "1.2.3.4 testvalue1480" -+other_name_utf8 = "1.2.3.4 testvalue1481" -+other_name_utf8 = "1.2.3.4 testvalue1482" -+other_name_utf8 = "1.2.3.4 testvalue1483" -+other_name_utf8 = "1.2.3.4 testvalue1484" -+other_name_utf8 = "1.2.3.4 testvalue1485" -+other_name_utf8 = "1.2.3.4 testvalue1486" -+other_name_utf8 = "1.2.3.4 testvalue1487" -+other_name_utf8 = "1.2.3.4 testvalue1488" -+other_name_utf8 = "1.2.3.4 testvalue1489" -+other_name_utf8 = "1.2.3.4 testvalue1490" -+other_name_utf8 = "1.2.3.4 testvalue1491" -+other_name_utf8 = "1.2.3.4 testvalue1492" -+other_name_utf8 = "1.2.3.4 testvalue1493" -+other_name_utf8 = "1.2.3.4 testvalue1494" -+other_name_utf8 = "1.2.3.4 testvalue1495" -+other_name_utf8 = "1.2.3.4 testvalue1496" -+other_name_utf8 = "1.2.3.4 testvalue1497" -+other_name_utf8 = "1.2.3.4 testvalue1498" -+other_name_utf8 = "1.2.3.4 testvalue1499" -+other_name_utf8 = "1.2.3.4 testvalue1500" -+other_name_utf8 = "1.2.3.4 testvalue1501" -+other_name_utf8 = "1.2.3.4 testvalue1502" -+other_name_utf8 = "1.2.3.4 testvalue1503" -+other_name_utf8 = "1.2.3.4 testvalue1504" -+other_name_utf8 = "1.2.3.4 testvalue1505" -+other_name_utf8 = "1.2.3.4 testvalue1506" -+other_name_utf8 = "1.2.3.4 testvalue1507" -+other_name_utf8 = "1.2.3.4 testvalue1508" -+other_name_utf8 = "1.2.3.4 testvalue1509" -+other_name_utf8 = "1.2.3.4 testvalue1510" -+other_name_utf8 = "1.2.3.4 testvalue1511" -+other_name_utf8 = "1.2.3.4 testvalue1512" -+other_name_utf8 = "1.2.3.4 testvalue1513" -+other_name_utf8 = "1.2.3.4 testvalue1514" -+other_name_utf8 = "1.2.3.4 testvalue1515" -+other_name_utf8 = "1.2.3.4 testvalue1516" -+other_name_utf8 = "1.2.3.4 testvalue1517" -+other_name_utf8 = "1.2.3.4 testvalue1518" -+other_name_utf8 = "1.2.3.4 testvalue1519" -+other_name_utf8 = "1.2.3.4 testvalue1520" -+other_name_utf8 = "1.2.3.4 testvalue1521" -+other_name_utf8 = "1.2.3.4 testvalue1522" -+other_name_utf8 = "1.2.3.4 testvalue1523" -+other_name_utf8 = "1.2.3.4 testvalue1524" -+other_name_utf8 = "1.2.3.4 testvalue1525" -+other_name_utf8 = "1.2.3.4 testvalue1526" -+other_name_utf8 = "1.2.3.4 testvalue1527" -+other_name_utf8 = "1.2.3.4 testvalue1528" -+other_name_utf8 = "1.2.3.4 testvalue1529" -+other_name_utf8 = "1.2.3.4 testvalue1530" -+other_name_utf8 = "1.2.3.4 testvalue1531" -+other_name_utf8 = "1.2.3.4 testvalue1532" -+other_name_utf8 = "1.2.3.4 testvalue1533" -+other_name_utf8 = "1.2.3.4 testvalue1534" -+other_name_utf8 = "1.2.3.4 testvalue1535" -+other_name_utf8 = "1.2.3.4 testvalue1536" -+other_name_utf8 = "1.2.3.4 testvalue1537" -+other_name_utf8 = "1.2.3.4 testvalue1538" -+other_name_utf8 = "1.2.3.4 testvalue1539" -+other_name_utf8 = "1.2.3.4 testvalue1540" -+other_name_utf8 = "1.2.3.4 testvalue1541" -+other_name_utf8 = "1.2.3.4 testvalue1542" -+other_name_utf8 = "1.2.3.4 testvalue1543" -+other_name_utf8 = "1.2.3.4 testvalue1544" -+other_name_utf8 = "1.2.3.4 testvalue1545" -+other_name_utf8 = "1.2.3.4 testvalue1546" -+other_name_utf8 = "1.2.3.4 testvalue1547" -+other_name_utf8 = "1.2.3.4 testvalue1548" -+other_name_utf8 = "1.2.3.4 testvalue1549" -+other_name_utf8 = "1.2.3.4 testvalue1550" -+other_name_utf8 = "1.2.3.4 testvalue1551" -+other_name_utf8 = "1.2.3.4 testvalue1552" -+other_name_utf8 = "1.2.3.4 testvalue1553" -+other_name_utf8 = "1.2.3.4 testvalue1554" -+other_name_utf8 = "1.2.3.4 testvalue1555" -+other_name_utf8 = "1.2.3.4 testvalue1556" -+other_name_utf8 = "1.2.3.4 testvalue1557" -+other_name_utf8 = "1.2.3.4 testvalue1558" -+other_name_utf8 = "1.2.3.4 testvalue1559" -+other_name_utf8 = "1.2.3.4 testvalue1560" -+other_name_utf8 = "1.2.3.4 testvalue1561" -+other_name_utf8 = "1.2.3.4 testvalue1562" -+other_name_utf8 = "1.2.3.4 testvalue1563" -+other_name_utf8 = "1.2.3.4 testvalue1564" -+other_name_utf8 = "1.2.3.4 testvalue1565" -+other_name_utf8 = "1.2.3.4 testvalue1566" -+other_name_utf8 = "1.2.3.4 testvalue1567" -+other_name_utf8 = "1.2.3.4 testvalue1568" -+other_name_utf8 = "1.2.3.4 testvalue1569" -+other_name_utf8 = "1.2.3.4 testvalue1570" -+other_name_utf8 = "1.2.3.4 testvalue1571" -+other_name_utf8 = "1.2.3.4 testvalue1572" -+other_name_utf8 = "1.2.3.4 testvalue1573" -+other_name_utf8 = "1.2.3.4 testvalue1574" -+other_name_utf8 = "1.2.3.4 testvalue1575" -+other_name_utf8 = "1.2.3.4 testvalue1576" -+other_name_utf8 = "1.2.3.4 testvalue1577" -+other_name_utf8 = "1.2.3.4 testvalue1578" -+other_name_utf8 = "1.2.3.4 testvalue1579" -+other_name_utf8 = "1.2.3.4 testvalue1580" -+other_name_utf8 = "1.2.3.4 testvalue1581" -+other_name_utf8 = "1.2.3.4 testvalue1582" -+other_name_utf8 = "1.2.3.4 testvalue1583" -+other_name_utf8 = "1.2.3.4 testvalue1584" -+other_name_utf8 = "1.2.3.4 testvalue1585" -+other_name_utf8 = "1.2.3.4 testvalue1586" -+other_name_utf8 = "1.2.3.4 testvalue1587" -+other_name_utf8 = "1.2.3.4 testvalue1588" -+other_name_utf8 = "1.2.3.4 testvalue1589" -+other_name_utf8 = "1.2.3.4 testvalue1590" -+other_name_utf8 = "1.2.3.4 testvalue1591" -+other_name_utf8 = "1.2.3.4 testvalue1592" -+other_name_utf8 = "1.2.3.4 testvalue1593" -+other_name_utf8 = "1.2.3.4 testvalue1594" -+other_name_utf8 = "1.2.3.4 testvalue1595" -+other_name_utf8 = "1.2.3.4 testvalue1596" -+other_name_utf8 = "1.2.3.4 testvalue1597" -+other_name_utf8 = "1.2.3.4 testvalue1598" -+other_name_utf8 = "1.2.3.4 testvalue1599" -+other_name_utf8 = "1.2.3.4 testvalue1600" -+other_name_utf8 = "1.2.3.4 testvalue1601" -+other_name_utf8 = "1.2.3.4 testvalue1602" -+other_name_utf8 = "1.2.3.4 testvalue1603" -+other_name_utf8 = "1.2.3.4 testvalue1604" -+other_name_utf8 = "1.2.3.4 testvalue1605" -+other_name_utf8 = "1.2.3.4 testvalue1606" -+other_name_utf8 = "1.2.3.4 testvalue1607" -+other_name_utf8 = "1.2.3.4 testvalue1608" -+other_name_utf8 = "1.2.3.4 testvalue1609" -+other_name_utf8 = "1.2.3.4 testvalue1610" -+other_name_utf8 = "1.2.3.4 testvalue1611" -+other_name_utf8 = "1.2.3.4 testvalue1612" -+other_name_utf8 = "1.2.3.4 testvalue1613" -+other_name_utf8 = "1.2.3.4 testvalue1614" -+other_name_utf8 = "1.2.3.4 testvalue1615" -+other_name_utf8 = "1.2.3.4 testvalue1616" -+other_name_utf8 = "1.2.3.4 testvalue1617" -+other_name_utf8 = "1.2.3.4 testvalue1618" -+other_name_utf8 = "1.2.3.4 testvalue1619" -+other_name_utf8 = "1.2.3.4 testvalue1620" -+other_name_utf8 = "1.2.3.4 testvalue1621" -+other_name_utf8 = "1.2.3.4 testvalue1622" -+other_name_utf8 = "1.2.3.4 testvalue1623" -+other_name_utf8 = "1.2.3.4 testvalue1624" -+other_name_utf8 = "1.2.3.4 testvalue1625" -+other_name_utf8 = "1.2.3.4 testvalue1626" -+other_name_utf8 = "1.2.3.4 testvalue1627" -+other_name_utf8 = "1.2.3.4 testvalue1628" -+other_name_utf8 = "1.2.3.4 testvalue1629" -+other_name_utf8 = "1.2.3.4 testvalue1630" -+other_name_utf8 = "1.2.3.4 testvalue1631" -+other_name_utf8 = "1.2.3.4 testvalue1632" -+other_name_utf8 = "1.2.3.4 testvalue1633" -+other_name_utf8 = "1.2.3.4 testvalue1634" -+other_name_utf8 = "1.2.3.4 testvalue1635" -+other_name_utf8 = "1.2.3.4 testvalue1636" -+other_name_utf8 = "1.2.3.4 testvalue1637" -+other_name_utf8 = "1.2.3.4 testvalue1638" -+other_name_utf8 = "1.2.3.4 testvalue1639" -+other_name_utf8 = "1.2.3.4 testvalue1640" -+other_name_utf8 = "1.2.3.4 testvalue1641" -+other_name_utf8 = "1.2.3.4 testvalue1642" -+other_name_utf8 = "1.2.3.4 testvalue1643" -+other_name_utf8 = "1.2.3.4 testvalue1644" -+other_name_utf8 = "1.2.3.4 testvalue1645" -+other_name_utf8 = "1.2.3.4 testvalue1646" -+other_name_utf8 = "1.2.3.4 testvalue1647" -+other_name_utf8 = "1.2.3.4 testvalue1648" -+other_name_utf8 = "1.2.3.4 testvalue1649" -+other_name_utf8 = "1.2.3.4 testvalue1650" -+other_name_utf8 = "1.2.3.4 testvalue1651" -+other_name_utf8 = "1.2.3.4 testvalue1652" -+other_name_utf8 = "1.2.3.4 testvalue1653" -+other_name_utf8 = "1.2.3.4 testvalue1654" -+other_name_utf8 = "1.2.3.4 testvalue1655" -+other_name_utf8 = "1.2.3.4 testvalue1656" -+other_name_utf8 = "1.2.3.4 testvalue1657" -+other_name_utf8 = "1.2.3.4 testvalue1658" -+other_name_utf8 = "1.2.3.4 testvalue1659" -+other_name_utf8 = "1.2.3.4 testvalue1660" -+other_name_utf8 = "1.2.3.4 testvalue1661" -+other_name_utf8 = "1.2.3.4 testvalue1662" -+other_name_utf8 = "1.2.3.4 testvalue1663" -+other_name_utf8 = "1.2.3.4 testvalue1664" -+other_name_utf8 = "1.2.3.4 testvalue1665" -+other_name_utf8 = "1.2.3.4 testvalue1666" -+other_name_utf8 = "1.2.3.4 testvalue1667" -+other_name_utf8 = "1.2.3.4 testvalue1668" -+other_name_utf8 = "1.2.3.4 testvalue1669" -+other_name_utf8 = "1.2.3.4 testvalue1670" -+other_name_utf8 = "1.2.3.4 testvalue1671" -+other_name_utf8 = "1.2.3.4 testvalue1672" -+other_name_utf8 = "1.2.3.4 testvalue1673" -+other_name_utf8 = "1.2.3.4 testvalue1674" -+other_name_utf8 = "1.2.3.4 testvalue1675" -+other_name_utf8 = "1.2.3.4 testvalue1676" -+other_name_utf8 = "1.2.3.4 testvalue1677" -+other_name_utf8 = "1.2.3.4 testvalue1678" -+other_name_utf8 = "1.2.3.4 testvalue1679" -+other_name_utf8 = "1.2.3.4 testvalue1680" -+other_name_utf8 = "1.2.3.4 testvalue1681" -+other_name_utf8 = "1.2.3.4 testvalue1682" -+other_name_utf8 = "1.2.3.4 testvalue1683" -+other_name_utf8 = "1.2.3.4 testvalue1684" -+other_name_utf8 = "1.2.3.4 testvalue1685" -+other_name_utf8 = "1.2.3.4 testvalue1686" -+other_name_utf8 = "1.2.3.4 testvalue1687" -+other_name_utf8 = "1.2.3.4 testvalue1688" -+other_name_utf8 = "1.2.3.4 testvalue1689" -+other_name_utf8 = "1.2.3.4 testvalue1690" -+other_name_utf8 = "1.2.3.4 testvalue1691" -+other_name_utf8 = "1.2.3.4 testvalue1692" -+other_name_utf8 = "1.2.3.4 testvalue1693" -+other_name_utf8 = "1.2.3.4 testvalue1694" -+other_name_utf8 = "1.2.3.4 testvalue1695" -+other_name_utf8 = "1.2.3.4 testvalue1696" -+other_name_utf8 = "1.2.3.4 testvalue1697" -+other_name_utf8 = "1.2.3.4 testvalue1698" -+other_name_utf8 = "1.2.3.4 testvalue1699" -+other_name_utf8 = "1.2.3.4 testvalue1700" -+other_name_utf8 = "1.2.3.4 testvalue1701" -+other_name_utf8 = "1.2.3.4 testvalue1702" -+other_name_utf8 = "1.2.3.4 testvalue1703" -+other_name_utf8 = "1.2.3.4 testvalue1704" -+other_name_utf8 = "1.2.3.4 testvalue1705" -+other_name_utf8 = "1.2.3.4 testvalue1706" -+other_name_utf8 = "1.2.3.4 testvalue1707" -+other_name_utf8 = "1.2.3.4 testvalue1708" -+other_name_utf8 = "1.2.3.4 testvalue1709" -+other_name_utf8 = "1.2.3.4 testvalue1710" -+other_name_utf8 = "1.2.3.4 testvalue1711" -+other_name_utf8 = "1.2.3.4 testvalue1712" -+other_name_utf8 = "1.2.3.4 testvalue1713" -+other_name_utf8 = "1.2.3.4 testvalue1714" -+other_name_utf8 = "1.2.3.4 testvalue1715" -+other_name_utf8 = "1.2.3.4 testvalue1716" -+other_name_utf8 = "1.2.3.4 testvalue1717" -+other_name_utf8 = "1.2.3.4 testvalue1718" -+other_name_utf8 = "1.2.3.4 testvalue1719" -+other_name_utf8 = "1.2.3.4 testvalue1720" -+other_name_utf8 = "1.2.3.4 testvalue1721" -+other_name_utf8 = "1.2.3.4 testvalue1722" -+other_name_utf8 = "1.2.3.4 testvalue1723" -+other_name_utf8 = "1.2.3.4 testvalue1724" -+other_name_utf8 = "1.2.3.4 testvalue1725" -+other_name_utf8 = "1.2.3.4 testvalue1726" -+other_name_utf8 = "1.2.3.4 testvalue1727" -+other_name_utf8 = "1.2.3.4 testvalue1728" -+other_name_utf8 = "1.2.3.4 testvalue1729" -+other_name_utf8 = "1.2.3.4 testvalue1730" -+other_name_utf8 = "1.2.3.4 testvalue1731" -+other_name_utf8 = "1.2.3.4 testvalue1732" -+other_name_utf8 = "1.2.3.4 testvalue1733" -+other_name_utf8 = "1.2.3.4 testvalue1734" -+other_name_utf8 = "1.2.3.4 testvalue1735" -+other_name_utf8 = "1.2.3.4 testvalue1736" -+other_name_utf8 = "1.2.3.4 testvalue1737" -+other_name_utf8 = "1.2.3.4 testvalue1738" -+other_name_utf8 = "1.2.3.4 testvalue1739" -+other_name_utf8 = "1.2.3.4 testvalue1740" -+other_name_utf8 = "1.2.3.4 testvalue1741" -+other_name_utf8 = "1.2.3.4 testvalue1742" -+other_name_utf8 = "1.2.3.4 testvalue1743" -+other_name_utf8 = "1.2.3.4 testvalue1744" -+other_name_utf8 = "1.2.3.4 testvalue1745" -+other_name_utf8 = "1.2.3.4 testvalue1746" -+other_name_utf8 = "1.2.3.4 testvalue1747" -+other_name_utf8 = "1.2.3.4 testvalue1748" -+other_name_utf8 = "1.2.3.4 testvalue1749" -+other_name_utf8 = "1.2.3.4 testvalue1750" -+other_name_utf8 = "1.2.3.4 testvalue1751" -+other_name_utf8 = "1.2.3.4 testvalue1752" -+other_name_utf8 = "1.2.3.4 testvalue1753" -+other_name_utf8 = "1.2.3.4 testvalue1754" -+other_name_utf8 = "1.2.3.4 testvalue1755" -+other_name_utf8 = "1.2.3.4 testvalue1756" -+other_name_utf8 = "1.2.3.4 testvalue1757" -+other_name_utf8 = "1.2.3.4 testvalue1758" -+other_name_utf8 = "1.2.3.4 testvalue1759" -+other_name_utf8 = "1.2.3.4 testvalue1760" -+other_name_utf8 = "1.2.3.4 testvalue1761" -+other_name_utf8 = "1.2.3.4 testvalue1762" -+other_name_utf8 = "1.2.3.4 testvalue1763" -+other_name_utf8 = "1.2.3.4 testvalue1764" -+other_name_utf8 = "1.2.3.4 testvalue1765" -+other_name_utf8 = "1.2.3.4 testvalue1766" -+other_name_utf8 = "1.2.3.4 testvalue1767" -+other_name_utf8 = "1.2.3.4 testvalue1768" -+other_name_utf8 = "1.2.3.4 testvalue1769" -+other_name_utf8 = "1.2.3.4 testvalue1770" -+other_name_utf8 = "1.2.3.4 testvalue1771" -+other_name_utf8 = "1.2.3.4 testvalue1772" -+other_name_utf8 = "1.2.3.4 testvalue1773" -+other_name_utf8 = "1.2.3.4 testvalue1774" -+other_name_utf8 = "1.2.3.4 testvalue1775" -+other_name_utf8 = "1.2.3.4 testvalue1776" -+other_name_utf8 = "1.2.3.4 testvalue1777" -+other_name_utf8 = "1.2.3.4 testvalue1778" -+other_name_utf8 = "1.2.3.4 testvalue1779" -+other_name_utf8 = "1.2.3.4 testvalue1780" -+other_name_utf8 = "1.2.3.4 testvalue1781" -+other_name_utf8 = "1.2.3.4 testvalue1782" -+other_name_utf8 = "1.2.3.4 testvalue1783" -+other_name_utf8 = "1.2.3.4 testvalue1784" -+other_name_utf8 = "1.2.3.4 testvalue1785" -+other_name_utf8 = "1.2.3.4 testvalue1786" -+other_name_utf8 = "1.2.3.4 testvalue1787" -+other_name_utf8 = "1.2.3.4 testvalue1788" -+other_name_utf8 = "1.2.3.4 testvalue1789" -+other_name_utf8 = "1.2.3.4 testvalue1790" -+other_name_utf8 = "1.2.3.4 testvalue1791" -+other_name_utf8 = "1.2.3.4 testvalue1792" -+other_name_utf8 = "1.2.3.4 testvalue1793" -+other_name_utf8 = "1.2.3.4 testvalue1794" -+other_name_utf8 = "1.2.3.4 testvalue1795" -+other_name_utf8 = "1.2.3.4 testvalue1796" -+other_name_utf8 = "1.2.3.4 testvalue1797" -+other_name_utf8 = "1.2.3.4 testvalue1798" -+other_name_utf8 = "1.2.3.4 testvalue1799" -+other_name_utf8 = "1.2.3.4 testvalue1800" -+other_name_utf8 = "1.2.3.4 testvalue1801" -+other_name_utf8 = "1.2.3.4 testvalue1802" -+other_name_utf8 = "1.2.3.4 testvalue1803" -+other_name_utf8 = "1.2.3.4 testvalue1804" -+other_name_utf8 = "1.2.3.4 testvalue1805" -+other_name_utf8 = "1.2.3.4 testvalue1806" -+other_name_utf8 = "1.2.3.4 testvalue1807" -+other_name_utf8 = "1.2.3.4 testvalue1808" -+other_name_utf8 = "1.2.3.4 testvalue1809" -+other_name_utf8 = "1.2.3.4 testvalue1810" -+other_name_utf8 = "1.2.3.4 testvalue1811" -+other_name_utf8 = "1.2.3.4 testvalue1812" -+other_name_utf8 = "1.2.3.4 testvalue1813" -+other_name_utf8 = "1.2.3.4 testvalue1814" -+other_name_utf8 = "1.2.3.4 testvalue1815" -+other_name_utf8 = "1.2.3.4 testvalue1816" -+other_name_utf8 = "1.2.3.4 testvalue1817" -+other_name_utf8 = "1.2.3.4 testvalue1818" -+other_name_utf8 = "1.2.3.4 testvalue1819" -+other_name_utf8 = "1.2.3.4 testvalue1820" -+other_name_utf8 = "1.2.3.4 testvalue1821" -+other_name_utf8 = "1.2.3.4 testvalue1822" -+other_name_utf8 = "1.2.3.4 testvalue1823" -+other_name_utf8 = "1.2.3.4 testvalue1824" -+other_name_utf8 = "1.2.3.4 testvalue1825" -+other_name_utf8 = "1.2.3.4 testvalue1826" -+other_name_utf8 = "1.2.3.4 testvalue1827" -+other_name_utf8 = "1.2.3.4 testvalue1828" -+other_name_utf8 = "1.2.3.4 testvalue1829" -+other_name_utf8 = "1.2.3.4 testvalue1830" -+other_name_utf8 = "1.2.3.4 testvalue1831" -+other_name_utf8 = "1.2.3.4 testvalue1832" -+other_name_utf8 = "1.2.3.4 testvalue1833" -+other_name_utf8 = "1.2.3.4 testvalue1834" -+other_name_utf8 = "1.2.3.4 testvalue1835" -+other_name_utf8 = "1.2.3.4 testvalue1836" -+other_name_utf8 = "1.2.3.4 testvalue1837" -+other_name_utf8 = "1.2.3.4 testvalue1838" -+other_name_utf8 = "1.2.3.4 testvalue1839" -+other_name_utf8 = "1.2.3.4 testvalue1840" -+other_name_utf8 = "1.2.3.4 testvalue1841" -+other_name_utf8 = "1.2.3.4 testvalue1842" -+other_name_utf8 = "1.2.3.4 testvalue1843" -+other_name_utf8 = "1.2.3.4 testvalue1844" -+other_name_utf8 = "1.2.3.4 testvalue1845" -+other_name_utf8 = "1.2.3.4 testvalue1846" -+other_name_utf8 = "1.2.3.4 testvalue1847" -+other_name_utf8 = "1.2.3.4 testvalue1848" -+other_name_utf8 = "1.2.3.4 testvalue1849" -+other_name_utf8 = "1.2.3.4 testvalue1850" -+other_name_utf8 = "1.2.3.4 testvalue1851" -+other_name_utf8 = "1.2.3.4 testvalue1852" -+other_name_utf8 = "1.2.3.4 testvalue1853" -+other_name_utf8 = "1.2.3.4 testvalue1854" -+other_name_utf8 = "1.2.3.4 testvalue1855" -+other_name_utf8 = "1.2.3.4 testvalue1856" -+other_name_utf8 = "1.2.3.4 testvalue1857" -+other_name_utf8 = "1.2.3.4 testvalue1858" -+other_name_utf8 = "1.2.3.4 testvalue1859" -+other_name_utf8 = "1.2.3.4 testvalue1860" -+other_name_utf8 = "1.2.3.4 testvalue1861" -+other_name_utf8 = "1.2.3.4 testvalue1862" -+other_name_utf8 = "1.2.3.4 testvalue1863" -+other_name_utf8 = "1.2.3.4 testvalue1864" -+other_name_utf8 = "1.2.3.4 testvalue1865" -+other_name_utf8 = "1.2.3.4 testvalue1866" -+other_name_utf8 = "1.2.3.4 testvalue1867" -+other_name_utf8 = "1.2.3.4 testvalue1868" -+other_name_utf8 = "1.2.3.4 testvalue1869" -+other_name_utf8 = "1.2.3.4 testvalue1870" -+other_name_utf8 = "1.2.3.4 testvalue1871" -+other_name_utf8 = "1.2.3.4 testvalue1872" -+other_name_utf8 = "1.2.3.4 testvalue1873" -+other_name_utf8 = "1.2.3.4 testvalue1874" -+other_name_utf8 = "1.2.3.4 testvalue1875" -+other_name_utf8 = "1.2.3.4 testvalue1876" -+other_name_utf8 = "1.2.3.4 testvalue1877" -+other_name_utf8 = "1.2.3.4 testvalue1878" -+other_name_utf8 = "1.2.3.4 testvalue1879" -+other_name_utf8 = "1.2.3.4 testvalue1880" -+other_name_utf8 = "1.2.3.4 testvalue1881" -+other_name_utf8 = "1.2.3.4 testvalue1882" -+other_name_utf8 = "1.2.3.4 testvalue1883" -+other_name_utf8 = "1.2.3.4 testvalue1884" -+other_name_utf8 = "1.2.3.4 testvalue1885" -+other_name_utf8 = "1.2.3.4 testvalue1886" -+other_name_utf8 = "1.2.3.4 testvalue1887" -+other_name_utf8 = "1.2.3.4 testvalue1888" -+other_name_utf8 = "1.2.3.4 testvalue1889" -+other_name_utf8 = "1.2.3.4 testvalue1890" -+other_name_utf8 = "1.2.3.4 testvalue1891" -+other_name_utf8 = "1.2.3.4 testvalue1892" -+other_name_utf8 = "1.2.3.4 testvalue1893" -+other_name_utf8 = "1.2.3.4 testvalue1894" -+other_name_utf8 = "1.2.3.4 testvalue1895" -+other_name_utf8 = "1.2.3.4 testvalue1896" -+other_name_utf8 = "1.2.3.4 testvalue1897" -+other_name_utf8 = "1.2.3.4 testvalue1898" -+other_name_utf8 = "1.2.3.4 testvalue1899" -+other_name_utf8 = "1.2.3.4 testvalue1900" -+other_name_utf8 = "1.2.3.4 testvalue1901" -+other_name_utf8 = "1.2.3.4 testvalue1902" -+other_name_utf8 = "1.2.3.4 testvalue1903" -+other_name_utf8 = "1.2.3.4 testvalue1904" -+other_name_utf8 = "1.2.3.4 testvalue1905" -+other_name_utf8 = "1.2.3.4 testvalue1906" -+other_name_utf8 = "1.2.3.4 testvalue1907" -+other_name_utf8 = "1.2.3.4 testvalue1908" -+other_name_utf8 = "1.2.3.4 testvalue1909" -+other_name_utf8 = "1.2.3.4 testvalue1910" -+other_name_utf8 = "1.2.3.4 testvalue1911" -+other_name_utf8 = "1.2.3.4 testvalue1912" -+other_name_utf8 = "1.2.3.4 testvalue1913" -+other_name_utf8 = "1.2.3.4 testvalue1914" -+other_name_utf8 = "1.2.3.4 testvalue1915" -+other_name_utf8 = "1.2.3.4 testvalue1916" -+other_name_utf8 = "1.2.3.4 testvalue1917" -+other_name_utf8 = "1.2.3.4 testvalue1918" -+other_name_utf8 = "1.2.3.4 testvalue1919" -+other_name_utf8 = "1.2.3.4 testvalue1920" -+other_name_utf8 = "1.2.3.4 testvalue1921" -+other_name_utf8 = "1.2.3.4 testvalue1922" -+other_name_utf8 = "1.2.3.4 testvalue1923" -+other_name_utf8 = "1.2.3.4 testvalue1924" -+other_name_utf8 = "1.2.3.4 testvalue1925" -+other_name_utf8 = "1.2.3.4 testvalue1926" -+other_name_utf8 = "1.2.3.4 testvalue1927" -+other_name_utf8 = "1.2.3.4 testvalue1928" -+other_name_utf8 = "1.2.3.4 testvalue1929" -+other_name_utf8 = "1.2.3.4 testvalue1930" -+other_name_utf8 = "1.2.3.4 testvalue1931" -+other_name_utf8 = "1.2.3.4 testvalue1932" -+other_name_utf8 = "1.2.3.4 testvalue1933" -+other_name_utf8 = "1.2.3.4 testvalue1934" -+other_name_utf8 = "1.2.3.4 testvalue1935" -+other_name_utf8 = "1.2.3.4 testvalue1936" -+other_name_utf8 = "1.2.3.4 testvalue1937" -+other_name_utf8 = "1.2.3.4 testvalue1938" -+other_name_utf8 = "1.2.3.4 testvalue1939" -+other_name_utf8 = "1.2.3.4 testvalue1940" -+other_name_utf8 = "1.2.3.4 testvalue1941" -+other_name_utf8 = "1.2.3.4 testvalue1942" -+other_name_utf8 = "1.2.3.4 testvalue1943" -+other_name_utf8 = "1.2.3.4 testvalue1944" -+other_name_utf8 = "1.2.3.4 testvalue1945" -+other_name_utf8 = "1.2.3.4 testvalue1946" -+other_name_utf8 = "1.2.3.4 testvalue1947" -+other_name_utf8 = "1.2.3.4 testvalue1948" -+other_name_utf8 = "1.2.3.4 testvalue1949" -+other_name_utf8 = "1.2.3.4 testvalue1950" -+other_name_utf8 = "1.2.3.4 testvalue1951" -+other_name_utf8 = "1.2.3.4 testvalue1952" -+other_name_utf8 = "1.2.3.4 testvalue1953" -+other_name_utf8 = "1.2.3.4 testvalue1954" -+other_name_utf8 = "1.2.3.4 testvalue1955" -+other_name_utf8 = "1.2.3.4 testvalue1956" -+other_name_utf8 = "1.2.3.4 testvalue1957" -+other_name_utf8 = "1.2.3.4 testvalue1958" -+other_name_utf8 = "1.2.3.4 testvalue1959" -+other_name_utf8 = "1.2.3.4 testvalue1960" -+other_name_utf8 = "1.2.3.4 testvalue1961" -+other_name_utf8 = "1.2.3.4 testvalue1962" -+other_name_utf8 = "1.2.3.4 testvalue1963" -+other_name_utf8 = "1.2.3.4 testvalue1964" -+other_name_utf8 = "1.2.3.4 testvalue1965" -+other_name_utf8 = "1.2.3.4 testvalue1966" -+other_name_utf8 = "1.2.3.4 testvalue1967" -+other_name_utf8 = "1.2.3.4 testvalue1968" -+other_name_utf8 = "1.2.3.4 testvalue1969" -+other_name_utf8 = "1.2.3.4 testvalue1970" -+other_name_utf8 = "1.2.3.4 testvalue1971" -+other_name_utf8 = "1.2.3.4 testvalue1972" -+other_name_utf8 = "1.2.3.4 testvalue1973" -+other_name_utf8 = "1.2.3.4 testvalue1974" -+other_name_utf8 = "1.2.3.4 testvalue1975" -+other_name_utf8 = "1.2.3.4 testvalue1976" -+other_name_utf8 = "1.2.3.4 testvalue1977" -+other_name_utf8 = "1.2.3.4 testvalue1978" -+other_name_utf8 = "1.2.3.4 testvalue1979" -+other_name_utf8 = "1.2.3.4 testvalue1980" -+other_name_utf8 = "1.2.3.4 testvalue1981" -+other_name_utf8 = "1.2.3.4 testvalue1982" -+other_name_utf8 = "1.2.3.4 testvalue1983" -+other_name_utf8 = "1.2.3.4 testvalue1984" -+other_name_utf8 = "1.2.3.4 testvalue1985" -+other_name_utf8 = "1.2.3.4 testvalue1986" -+other_name_utf8 = "1.2.3.4 testvalue1987" -+other_name_utf8 = "1.2.3.4 testvalue1988" -+other_name_utf8 = "1.2.3.4 testvalue1989" -+other_name_utf8 = "1.2.3.4 testvalue1990" -+other_name_utf8 = "1.2.3.4 testvalue1991" -+other_name_utf8 = "1.2.3.4 testvalue1992" -+other_name_utf8 = "1.2.3.4 testvalue1993" -+other_name_utf8 = "1.2.3.4 testvalue1994" -+other_name_utf8 = "1.2.3.4 testvalue1995" -+other_name_utf8 = "1.2.3.4 testvalue1996" -+other_name_utf8 = "1.2.3.4 testvalue1997" -+other_name_utf8 = "1.2.3.4 testvalue1998" -+other_name_utf8 = "1.2.3.4 testvalue1999" --- -2.50.1 - diff --git a/gnutls-3.8.9-cve-2025-6395.patch b/gnutls-3.8.9-cve-2025-6395.patch deleted file mode 100644 index 13f7f5b..0000000 --- a/gnutls-3.8.9-cve-2025-6395.patch +++ /dev/null @@ -1,282 +0,0 @@ -From bb7f0238cd58e00c0b00257bbe18bfde346651f0 Mon Sep 17 00:00:00 2001 -From: Daiki Ueno -Date: Mon, 7 Jul 2025 11:15:45 +0900 -Subject: [PATCH] handshake: clear HSK_PSK_SELECTED is when resetting binders -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -When a TLS 1.3 handshake involves HRR and resumption or PSK, and the -second Client Hello omits PSK, the server would result in a NULL -pointer dereference as the PSK binder information is cleared while the -HSK_PSK_SELECTED flag is still set. This makes sure that -HSK_PSK_SELECTED flag is always cleared when the PSK binders are -reset. This also makes it clear the HSK_PSK_SELECTED flag is valid -only during a handshake; after that, whether PSK is used can be -checked with gnutls_auth_client_get_type. - -Reported by Stefan Bühler. - -Signed-off-by: Daiki Ueno ---- - .gitignore | 1 + - lib/handshake.c | 25 +++- - lib/state.c | 4 +- - tests/Makefile.am | 2 + - tests/tls13/hello_retry_request_psk.c | 173 ++++++++++++++++++++++++++ - 5 files changed, 201 insertions(+), 4 deletions(-) - create mode 100644 tests/tls13/hello_retry_request_psk.c - -diff --git a/lib/handshake.c b/lib/handshake.c -index 722307be7c..489d021945 100644 ---- a/lib/handshake.c -+++ b/lib/handshake.c -@@ -589,9 +589,28 @@ static int set_auth_types(gnutls_session_t session) - /* Under TLS1.3 this returns a KX which matches the negotiated - * groups from the key shares; if we are resuming then the KX seen - * here doesn't match the original session. */ -- if (!session->internals.resumed) -- kx = gnutls_kx_get(session); -- else -+ if (!session->internals.resumed) { -+ const gnutls_group_entry_st *group = get_group(session); -+ -+ if (session->internals.hsk_flags & HSK_PSK_SELECTED) { -+ if (group) { -+ kx = group->pk == GNUTLS_PK_DH ? -+ GNUTLS_KX_DHE_PSK : -+ GNUTLS_KX_ECDHE_PSK; -+ } else { -+ kx = GNUTLS_KX_PSK; -+ } -+ } else if (group) { -+ /* Not necessarily be RSA, but just to -+ * make _gnutls_map_kx_get_cred below -+ * work. -+ */ -+ kx = group->pk == GNUTLS_PK_DH ? -+ GNUTLS_KX_DHE_RSA : -+ GNUTLS_KX_ECDHE_RSA; -+ } else -+ kx = GNUTLS_KX_UNKNOWN; -+ } else - kx = GNUTLS_KX_UNKNOWN; - } else { - /* TLS1.2 or earlier, kx is associated with ciphersuite */ -diff --git a/lib/state.c b/lib/state.c -index 9d3ece7570..020f212856 100644 ---- a/lib/state.c -+++ b/lib/state.c -@@ -202,7 +202,8 @@ gnutls_kx_algorithm_t gnutls_kx_get(gnutls_session_t session) - const gnutls_group_entry_st *group = get_group(session); - - if (ver->tls13_sem) { -- if (session->internals.hsk_flags & HSK_PSK_SELECTED) { -+ if (gnutls_auth_client_get_type(session) == -+ GNUTLS_CRD_PSK) { - if (group) { - if (group->pk == GNUTLS_PK_DH) - return GNUTLS_KX_DHE_PSK; -@@ -349,6 +350,7 @@ void reset_binders(gnutls_session_t session) - _gnutls_free_temp_key_datum(&session->key.binders[0].psk); - _gnutls_free_temp_key_datum(&session->key.binders[1].psk); - memset(session->key.binders, 0, sizeof(session->key.binders)); -+ session->internals.hsk_flags &= ~HSK_PSK_SELECTED; - } - - /* Check whether certificate credentials of type @cert_type are set -diff --git a/tests/Makefile.am b/tests/Makefile.am -index ec8fd982c5..0dd10fe1bd 100644 ---- a/tests/Makefile.am -+++ b/tests/Makefile.am -@@ -131,6 +131,8 @@ ctests += tls13/hello_retry_request - - ctests += tls13/hello_retry_request_resume - -+ctests += tls13/hello_retry_request_psk -+ - ctests += tls13/psk-ext - - ctests += tls13/key_update -diff --git a/tests/tls13/hello_retry_request_psk.c b/tests/tls13/hello_retry_request_psk.c -new file mode 100644 -index 0000000000..a20cb0d965 ---- /dev/null -+++ b/tests/tls13/hello_retry_request_psk.c -@@ -0,0 +1,173 @@ -+/* -+ * Copyright (C) 2017-2025 Red Hat, Inc. -+ * -+ * Author: Nikos Mavrogiannopoulos, Daiki Ueno -+ * -+ * This file is part of GnuTLS. -+ * -+ * GnuTLS is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 3 of the License, or -+ * (at your option) any later version. -+ * -+ * GnuTLS is distributed in the hope that it will be useful, but -+ * WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public License -+ * along with this program. If not, see -+ */ -+ -+#ifdef HAVE_CONFIG_H -+#include "config.h" -+#endif -+ -+#include -+#include -+#include -+ -+#include -+#include -+#include -+ -+#include "cert-common.h" -+#include "utils.h" -+#include "tls13/ext-parse.h" -+#include "eagain-common.h" -+ -+/* This program exercises the case where a TLS 1.3 handshake ends up -+ * with HRR, and the first CH includes PSK while the 2nd CH omits -+ * it */ -+ -+const char *testname = "hello entry request"; -+ -+const char *side = ""; -+ -+#define myfail(fmt, ...) fail("%s: " fmt, testname, ##__VA_ARGS__) -+ -+static void tls_log_func(int level, const char *str) -+{ -+ fprintf(stderr, "%s|<%d>| %s", side, level, str); -+} -+ -+struct ctx_st { -+ unsigned hrr_seen; -+ unsigned hello_counter; -+}; -+ -+static int pskfunc(gnutls_session_t session, const char *username, -+ gnutls_datum_t *key) -+{ -+ if (debug) -+ printf("psk: username %s\n", username); -+ key->data = gnutls_malloc(4); -+ key->data[0] = 0xDE; -+ key->data[1] = 0xAD; -+ key->data[2] = 0xBE; -+ key->data[3] = 0xEF; -+ key->size = 4; -+ return 0; -+} -+ -+static int hello_callback(gnutls_session_t session, unsigned int htype, -+ unsigned post, unsigned int incoming, -+ const gnutls_datum_t *msg) -+{ -+ struct ctx_st *ctx = gnutls_session_get_ptr(session); -+ assert(ctx != NULL); -+ -+ if (htype == GNUTLS_HANDSHAKE_HELLO_RETRY_REQUEST) -+ ctx->hrr_seen = 1; -+ -+ if (htype == GNUTLS_HANDSHAKE_CLIENT_HELLO) { -+ if (post == GNUTLS_HOOK_POST) -+ ctx->hello_counter++; -+ else { -+ /* Unset the PSK credential to omit the extension */ -+ gnutls_credentials_set(session, GNUTLS_CRD_PSK, NULL); -+ } -+ } -+ -+ return 0; -+} -+ -+void doit(void) -+{ -+ int sret, cret; -+ gnutls_psk_server_credentials_t scred; -+ gnutls_psk_client_credentials_t ccred; -+ gnutls_certificate_credentials_t ccred2; -+ gnutls_session_t server, client; -+ /* Need to enable anonymous KX specifically. */ -+ const gnutls_datum_t key = { (void *)"DEADBEEF", 8 }; -+ -+ struct ctx_st ctx; -+ memset(&ctx, 0, sizeof(ctx)); -+ -+ global_init(); -+ -+ gnutls_global_set_log_function(tls_log_func); -+ if (debug) -+ gnutls_global_set_log_level(9); -+ -+ /* Init server */ -+ assert(gnutls_psk_allocate_server_credentials(&scred) >= 0); -+ gnutls_psk_set_server_credentials_function(scred, pskfunc); -+ -+ gnutls_init(&server, GNUTLS_SERVER); -+ -+ assert(gnutls_priority_set_direct( -+ server, -+ "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519:+DHE-PSK", -+ NULL) >= 0); -+ -+ gnutls_credentials_set(server, GNUTLS_CRD_PSK, scred); -+ gnutls_transport_set_push_function(server, server_push); -+ gnutls_transport_set_pull_function(server, server_pull); -+ gnutls_transport_set_ptr(server, server); -+ -+ /* Init client */ -+ assert(gnutls_psk_allocate_client_credentials(&ccred) >= 0); -+ gnutls_psk_set_client_credentials(ccred, "test", &key, -+ GNUTLS_PSK_KEY_HEX); -+ assert(gnutls_certificate_allocate_credentials(&ccred2) >= 0); -+ -+ assert(gnutls_init(&client, GNUTLS_CLIENT | GNUTLS_KEY_SHARE_TOP) >= 0); -+ -+ gnutls_session_set_ptr(client, &ctx); -+ -+ cret = gnutls_priority_set_direct( -+ client, -+ "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-X25519:+DHE-PSK", -+ NULL); -+ if (cret < 0) -+ myfail("cannot set TLS 1.3 priorities\n"); -+ -+ gnutls_credentials_set(client, GNUTLS_CRD_PSK, ccred); -+ gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, ccred2); -+ gnutls_transport_set_push_function(client, client_push); -+ gnutls_transport_set_pull_function(client, client_pull); -+ gnutls_transport_set_ptr(client, client); -+ -+ gnutls_handshake_set_hook_function(client, GNUTLS_HANDSHAKE_ANY, -+ GNUTLS_HOOK_BOTH, hello_callback); -+ -+ HANDSHAKE_EXPECT(client, server, GNUTLS_E_AGAIN, -+ GNUTLS_E_INSUFFICIENT_CREDENTIALS); -+ -+ assert(ctx.hrr_seen != 0); -+ -+ gnutls_bye(client, GNUTLS_SHUT_WR); -+ gnutls_bye(server, GNUTLS_SHUT_WR); -+ -+ gnutls_deinit(client); -+ gnutls_deinit(server); -+ -+ gnutls_psk_free_server_credentials(scred); -+ gnutls_psk_free_client_credentials(ccred); -+ gnutls_certificate_free_credentials(ccred2); -+ -+ gnutls_global_deinit(); -+ reset_buffers(); -+} --- -2.50.1 - diff --git a/gnutls-3.8.9-limit-shuffle-extensions.patch b/gnutls-3.8.9-limit-shuffle-extensions.patch deleted file mode 100644 index 8526252..0000000 --- a/gnutls-3.8.9-limit-shuffle-extensions.patch +++ /dev/null @@ -1,213 +0,0 @@ -From dc5ee80c3a28577e9de0f82fb08164e4c02b96af Mon Sep 17 00:00:00 2001 -From: Daiki Ueno -Date: Sun, 9 Feb 2025 10:31:20 +0900 -Subject: [PATCH] handshake: only shuffle extensions in the first Client Hello - -RFC 8446 section 4.1.2 states that the second Client Hello after HRR -should preserve the same content as the first Client Hello with -limited exceptions. Since GnuTLS 3.8.5, however, the library started -shuffling the order of extensions for privacy reasons and that didn't -comply with the RFC, leading to a connectivity issue against the -server configuration with a stricter check on that. - -Signed-off-by: Daiki Ueno ---- - lib/gnutls_int.h | 4 +++ - lib/hello_ext.c | 41 ++++++++++++++++--------- - lib/state.c | 2 ++ - tests/tls13/hello_retry_request.c | 51 ++++++++++++++++++++++++++++--- - 4 files changed, 79 insertions(+), 19 deletions(-) - -diff --git a/lib/gnutls_int.h b/lib/gnutls_int.h -index d10a028b59..572de5aba3 100644 ---- a/lib/gnutls_int.h -+++ b/lib/gnutls_int.h -@@ -1666,6 +1666,10 @@ typedef struct { - /* Compression method for certificate compression */ - gnutls_compression_method_t compress_certificate_method; - -+ /* To shuffle extension sending order */ -+ extensions_t client_hello_exts[MAX_EXT_TYPES]; -+ bool client_hello_exts_set; -+ - /* If you add anything here, check _gnutls_handshake_internal_state_clear(). - */ - } internals_st; -diff --git a/lib/hello_ext.c b/lib/hello_ext.c -index 40af8c2b10..d677addd75 100644 ---- a/lib/hello_ext.c -+++ b/lib/hello_ext.c -@@ -438,8 +438,6 @@ int _gnutls_gen_hello_extensions(gnutls_session_t session, - int pos, ret; - size_t i; - hello_ext_ctx_st ctx; -- /* To shuffle extension sending order */ -- extensions_t indices[MAX_EXT_TYPES]; - - msg &= GNUTLS_EXT_FLAG_SET_ONLY_FLAGS_MASK; - -@@ -469,26 +467,39 @@ int _gnutls_gen_hello_extensions(gnutls_session_t session, - ret - 4); - } - -- /* Initializing extensions array */ -- for (i = 0; i < MAX_EXT_TYPES; i++) { -- indices[i] = i; -- } -+ if (msg & GNUTLS_EXT_FLAG_CLIENT_HELLO && -+ !session->internals.client_hello_exts_set) { -+ /* Initializing extensions array */ -+ for (i = 0; i < MAX_EXT_TYPES; i++) { -+ session->internals.client_hello_exts[i] = i; -+ } - -- if (!session->internals.priorities->no_shuffle_extensions) { -- /* Ordering padding and pre_shared_key as last extensions */ -- swap_exts(indices, MAX_EXT_TYPES - 2, GNUTLS_EXTENSION_DUMBFW); -- swap_exts(indices, MAX_EXT_TYPES - 1, -- GNUTLS_EXTENSION_PRE_SHARED_KEY); -+ if (!session->internals.priorities->no_shuffle_extensions) { -+ /* Ordering padding and pre_shared_key as last extensions */ -+ swap_exts(session->internals.client_hello_exts, -+ MAX_EXT_TYPES - 2, GNUTLS_EXTENSION_DUMBFW); -+ swap_exts(session->internals.client_hello_exts, -+ MAX_EXT_TYPES - 1, -+ GNUTLS_EXTENSION_PRE_SHARED_KEY); - -- ret = shuffle_exts(indices, MAX_EXT_TYPES - 2); -- if (ret < 0) -- return gnutls_assert_val(ret); -+ ret = shuffle_exts(session->internals.client_hello_exts, -+ MAX_EXT_TYPES - 2); -+ if (ret < 0) -+ return gnutls_assert_val(ret); -+ } -+ session->internals.client_hello_exts_set = true; - } - - /* hello_ext_send() ensures we don't send duplicates, in case - * of overridden extensions */ - for (i = 0; i < MAX_EXT_TYPES; i++) { -- size_t ii = indices[i]; -+ size_t ii; -+ -+ if (msg & GNUTLS_EXT_FLAG_CLIENT_HELLO) -+ ii = session->internals.client_hello_exts[i]; -+ else -+ ii = i; -+ - if (!extfunc[ii]) - continue; - -diff --git a/lib/state.c b/lib/state.c -index 9d3ece7570..43e961cfa2 100644 ---- a/lib/state.c -+++ b/lib/state.c -@@ -516,6 +516,8 @@ static void handshake_internal_state_clear1(gnutls_session_t session) - - session->internals.hrr_cs[0] = CS_INVALID_MAJOR; - session->internals.hrr_cs[1] = CS_INVALID_MINOR; -+ -+ session->internals.client_hello_exts_set = false; - } - - /* This function will clear all the variables in internals -diff --git a/tests/tls13/hello_retry_request.c b/tests/tls13/hello_retry_request.c -index f407b64234..6c5f698f01 100644 ---- a/tests/tls13/hello_retry_request.c -+++ b/tests/tls13/hello_retry_request.c -@@ -51,14 +51,37 @@ static void tls_log_func(int level, const char *str) - } - - #define HANDSHAKE_SESSION_ID_POS 34 -+#define MAX_EXT_TYPES 64 - - struct ctx_st { - unsigned hrr_seen; - unsigned hello_counter; - uint8_t session_id[32]; - size_t session_id_len; -+ unsigned extensions[MAX_EXT_TYPES]; -+ size_t extensions_size1; -+ size_t extensions_size2; - }; - -+static int ext_callback(void *_ctx, unsigned tls_id, const unsigned char *data, -+ unsigned size) -+{ -+ struct ctx_st *ctx = _ctx; -+ if (ctx->hello_counter == 0) { -+ assert(ctx->extensions_size1 < MAX_EXT_TYPES); -+ ctx->extensions[ctx->extensions_size1++] = tls_id; -+ } else { -+ assert(ctx->extensions_size2 < MAX_EXT_TYPES); -+ if (tls_id != ctx->extensions[ctx->extensions_size2]) { -+ fail("extension doesn't match at position %zu, %u != %u\n", -+ ctx->extensions_size2, tls_id, -+ ctx->extensions[ctx->extensions_size2]); -+ } -+ ctx->extensions_size2++; -+ } -+ return 0; -+} -+ - static int hello_callback(gnutls_session_t session, unsigned int htype, - unsigned post, unsigned int incoming, - const gnutls_datum_t *msg) -@@ -73,15 +96,25 @@ static int hello_callback(gnutls_session_t session, unsigned int htype, - post == GNUTLS_HOOK_POST) { - size_t session_id_len; - uint8_t *session_id; -+ unsigned pos = HANDSHAKE_SESSION_ID_POS; -+ gnutls_datum_t mmsg; -+ int ret; - -- assert(msg->size > HANDSHAKE_SESSION_ID_POS + 1); -- session_id_len = msg->data[HANDSHAKE_SESSION_ID_POS]; -- session_id = &msg->data[HANDSHAKE_SESSION_ID_POS + 1]; -+ assert(msg->size > pos + 1); -+ session_id_len = msg->data[pos]; -+ session_id = &msg->data[pos + 1]; -+ -+ SKIP8(pos, msg->size); -+ SKIP16(pos, msg->size); -+ SKIP8(pos, msg->size); -+ -+ mmsg.data = &msg->data[pos]; -+ mmsg.size = msg->size - pos; - - if (ctx->hello_counter > 0) { - assert(msg->size > 4); - if (msg->data[0] != 0x03 || msg->data[1] != 0x03) { -- fail("version is %d.%d expected 3,3\n", -+ fail("version is %d.%d expected 3.3\n", - (int)msg->data[0], (int)msg->data[1]); - } - -@@ -95,6 +128,12 @@ static int hello_callback(gnutls_session_t session, unsigned int htype, - ctx->session_id_len = session_id_len; - memcpy(ctx->session_id, session_id, session_id_len); - -+ ret = gnutls_ext_raw_parse(ctx, ext_callback, &mmsg, 0); -+ if (ret < 0) { -+ fail("unable to parse extensions: %s\n", -+ gnutls_strerror(ret)); -+ } -+ - ctx->hello_counter++; - } - -@@ -164,6 +203,10 @@ void doit(void) - myfail("group doesn't match the expected: %s\n", - gnutls_group_get_name(gnutls_group_get(server))); - -+ if (ctx.extensions_size1 != ctx.extensions_size2) -+ myfail("the number of extensions don't match in second Client Hello: %zu != %zu\n", -+ ctx.extensions_size1, ctx.extensions_size2); -+ - gnutls_bye(client, GNUTLS_SHUT_WR); - gnutls_bye(server, GNUTLS_SHUT_WR); - --- -2.48.1 - diff --git a/gnutls.spec b/gnutls.spec index 0256238..11c184c 100644 --- a/gnutls.spec +++ b/gnutls.spec @@ -2,7 +2,7 @@ ## (rpmautospec version 0.6.5) ## RPMAUTOSPEC: autorelease, autochangelog %define autorelease(e:s:pb:n) %{?-p:0.}%{lua: - release_number = 14; + release_number = 2; base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); print(release_number + base_release_number - 1); }%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} @@ -22,8 +22,8 @@ sha256sum:close() print(string.sub(hash, 0, 16)) } -Version: 3.8.9 -Release: 9%{?dist}.%{autorelease -n} +Version: 3.8.10 +Release: %{?autorelease}%{!?autorelease:1%{?dist}} # not upstreamed: can we drop this as configure is regenerated when bootstrapping? Patch: gnutls-3.2.7-rpath.patch # not upstreamed: modifies the generated code @@ -34,21 +34,15 @@ Patch: gnutls-3.7.2-no-explicit-init.patch Patch: gnutls-3.7.3-disable-config-reload.patch # not upstreamed, reseed source DRBG for prediction resistance Patch: gnutls-3.7.6-drbg-reseed.patch -# not upstreamed, hard blocking SHA-1 signature verification, for long-term support purposes -Patch: gnutls-3.7.6-fips-sha1-sigver.patch # not upstreamed: see https://gitlab.com/gnutls/gnutls/-/issues/1443 Patch: gnutls-3.8.8-tests-ktls-skip-tls12-chachapoly.patch # not upstreamed: https://gitlab.com/gnutls/gnutls/-/merge_requests/1932 Patch: gnutls-3.8.9-allow-rsa-pkcs1-encrypt.patch -# upstreamed: https://gitlab.com/gnutls/gnutls/-/merge_requests/1930 -Patch: gnutls-3.8.9-limit-shuffle-extensions.patch -# upstreamed: https://gitlab.com/gnutls/gnutls/-/merge_requests/1936 -Patch: gnutls-3.8.9-cli-earlydata.patch -Patch: gnutls-3.8.9-cve-2025-6395.patch -Patch: gnutls-3.8.9-cve-2025-32988.patch -Patch: gnutls-3.8.9-cve-2025-32989.patch -Patch: gnutls-3.8.9-cve-2025-32990.patch -# upstreamed: https://gitlab.com/gnutls/gnutls/-/merge_requests/1990 +# usptreamed: https://gitlab.com/gnutls/gnutls/-/merge_requests/1980 +Patch: gnutls-3.8.10-tests-ktls.patch +# upstreamed: https://gitlab.com/gnutls/gnutls/-/merge_requests/1980 +Patch: gnutls-3.8.10-tests-mldsa.patch +# not yet upstreamed: https://gitlab.com/gnutls/gnutls/-/merge_requests/1990/diffs?commit_id=993a8055c03b60c95fc65962ed82adc80b049a9a Patch: gnutls-3.8.10-keyupdate.patch %bcond_without bootstrap @@ -186,8 +180,7 @@ Source204: nettle-3.10-hobble-to-configure.patch %endif %if %{with leancrypto} -Source300: leancrypto-1.2.0.tar.gz -Source301: leancrypto-1.2.0-intel-cet.patch +Source300: leancrypto-1.5.0.tar.gz %endif # Wildcard bundling exception https://fedorahosted.org/fpc/ticket/174 @@ -338,7 +331,6 @@ popd mkdir -p bundled_leancrypto pushd bundled_leancrypto tar --strip-components=1 -xf %{SOURCE300} -patch -p1 < %{SOURCE301} popd %endif @@ -597,22 +589,7 @@ rm -f $RPM_BUILD_ROOT%{mingw64_libdir}/ncrypt.dll* %check %if %{with tests} pushd native_build - -# KeyUpdate is not yet supported in the kernel. -xfail_tests=ktls_keyupdate.sh - -# The ktls.sh test currently only supports kernel 5.11+. This needs to -# be checked at run time, as the koji builder might be using a different -# version of kernel on the host than the one indicated by the -# kernel-devel package. - -case "$(uname -r)" in - 4.* | 5.[0-9].* | 5.10.* ) - xfail_tests="$xfail_tests ktls.sh" - ;; -esac - -make check %{?_smp_mflags} GNUTLS_SYSTEM_PRIORITY_FILE=/dev/null XFAIL_TESTS="$xfail_tests" +make check %{?_smp_mflags} GNUTLS_SYSTEM_PRIORITY_FILE=/dev/null || { cat tests/test-suite.log tests/cert-tests/test-suite.log tests/slow/test-suite.log src/gl/tests/test-suite.log; exit 1; } popd %endif @@ -704,15 +681,36 @@ popd %changelog ## START: Generated by rpmautospec -* Wed Aug 13 2025 Daiki Ueno - 3.8.9-14 +* Fri Aug 01 2025 Daiki Ueno - 3.8.10-2 - key_update: rework the rekeying logic -* Wed Aug 13 2025 Daiki Ueno - 3.8.9-13 -- Fix CVE-2025-6395, CVE-2025-32988, CVE-2025-32989, CVE-2025-32990 +* Thu Jul 10 2025 Daiki Ueno - 3.8.10-1 +- Update to 3.8.10 upstream release -* Wed Aug 13 2025 Daiki Ueno - 3.8.9-12 +* Fri Jul 04 2025 Daiki Ueno - 3.8.9-19 +- algorithms: assign hash strength to ML-DSA signature algorithms + +* Wed Jun 25 2025 Daiki Ueno - 3.8.9-18 +- nettle/pk: mark ML-DSA as FIPS-unapproved + +* Thu Jun 19 2025 Daiki Ueno - 3.8.9-17 +- Enable ML-DSA at TLS 1.3 level + +* Thu May 08 2025 Alexander Sosedkin - 3.8.9-16 +- Preserve ARM registers, reenable ARM assembly + +* Wed May 07 2025 Alexander Sosedkin - 3.8.9-15 +- Disable assembly on aarch64 as a stopgap measure + +* Thu Apr 24 2025 Daiki Ueno - 3.8.9-14 +- tests: make pqc-hybrid-kx.sh work when system time set beyond 2038 + +* Tue Apr 22 2025 Daiki Ueno - 3.8.9-13 - Update gnutls-3.8.9-cli-earlydata.patch to the upstream version +* Mon Apr 14 2025 Daiki Ueno - 3.8.9-12 +- Update leancrypto to 1.3.0 + * Mon Feb 17 2025 Daiki Ueno - 3.8.9-11 - Improve 0-RTT handling in commands diff --git a/leancrypto-1.2.0-intel-cet.patch b/leancrypto-1.2.0-intel-cet.patch deleted file mode 100644 index e60dd04..0000000 --- a/leancrypto-1.2.0-intel-cet.patch +++ /dev/null @@ -1,782 +0,0 @@ -From ef682559d1acb92b897412647d4468486aa4f0fc Mon Sep 17 00:00:00 2001 -From: Stephan Mueller -Date: Wed, 12 Feb 2025 09:21:24 +0100 -Subject: [PATCH 1/2] Intel x86 asm: Add endbr[64|32] to all symbols - -Suggested-by: Daiki Ueno -Signed-off-by: Stephan Mueller ---- - CHANGES.md | 2 ++ - internal/api/assembler_support.h | 11 ++++++++++- - 2 files changed, 12 insertions(+), 1 deletion(-) - -diff --git a/internal/api/assembler_support.h b/internal/api/assembler_support.h -index f90fa4ba..54f33f6f 100644 ---- a/internal/api/assembler_support.h -+++ b/internal/api/assembler_support.h -@@ -20,6 +20,14 @@ - #ifndef ASSEMBLER_SUPPORT_H - #define ASSEMBLER_SUPPORT_H - -+#ifdef __x86_64__ -+#define LC_ENDBR "endbr64" -+#elif defined(__i386__) -+#define LC_ENDBR "endbr32" -+#else -+#define LC_ENDBR -+#endif -+ - #ifdef LINUX_KERNEL - - #include -@@ -121,7 +129,8 @@ - # define SYM_FUNC_START(name) \ - .hidden SYM_FUNC(name) ; \ - .global SYM_FUNC(name) ; \ -- SYM_FUNC(name): -+ SYM_FUNC(name): \ -+ LC_ENDBR - - # define SYM_FUNC_ENTER(name) - --- -2.48.1 - - -From 07cbd3c7f28901f26604b3e8803b99d8ec755fdb Mon Sep 17 00:00:00 2001 -From: Stephan Mueller -Date: Wed, 12 Feb 2025 09:50:31 +0100 -Subject: [PATCH 2/2] Fix gcc build error - -Clang can handle instructions enclosed with quotation marks, GCC -cannot... - -Signed-off-by: Stephan Mueller ---- - internal/api/assembler_support.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/internal/api/assembler_support.h b/internal/api/assembler_support.h -index 54f33f6f..de333805 100644 ---- a/internal/api/assembler_support.h -+++ b/internal/api/assembler_support.h -@@ -21,9 +21,9 @@ - #define ASSEMBLER_SUPPORT_H - - #ifdef __x86_64__ --#define LC_ENDBR "endbr64" -+#define LC_ENDBR endbr64 - #elif defined(__i386__) --#define LC_ENDBR "endbr32" -+#define LC_ENDBR endbr32 - #else - #define LC_ENDBR - #endif --- -2.48.1 - -From ef49175f0c2f89df027ca9a40075e290ba77d850 Mon Sep 17 00:00:00 2001 -From: Stephan Mueller -Date: Thu, 6 Feb 2025 08:39:07 +0100 -Subject: [PATCH] prevent compiler warnings - -Signed-off-by: Stephan Mueller ---- - hash/src/asm/ARMv8_2x/keccakx2_armce.S | 9 ++++++--- - 1 file changed, 6 insertions(+), 3 deletions(-) - -diff --git a/hash/src/asm/ARMv8_2x/keccakx2_armce.S b/hash/src/asm/ARMv8_2x/keccakx2_armce.S -index 7d4772e5..0cf8fddb 100644 ---- a/hash/src/asm/ARMv8_2x/keccakx2_armce.S -+++ b/hash/src/asm/ARMv8_2x/keccakx2_armce.S -@@ -45,8 +45,12 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - */ - --#pragma GCC diagnostic push --#pragma GCC diagnostic ignored "-Wundef" -+#ifndef __APPLE__ -+#define __APPLE__ 0 -+#endif -+#ifndef __ARM_FEATURE_SHA3 -+#define __ARM_FEATURE_SHA3 0 -+#endif - #if (__APPLE__ && __ARM_FEATURE_CRYPTO) || (__ARM_FEATURE_SHA3) - - #include "assembler_support.h" -@@ -191,4 +195,3 @@ loop: - SYM_FUNC_END(keccak_f1600x2_armce) - - #endif --#pragma GCC diagnostic pop --- -2.48.1 - -From 038e226c8a4b024f2feda157989952843292c21c Mon Sep 17 00:00:00 2001 -From: Daiki Ueno -Date: Thu, 13 Feb 2025 08:43:35 +0900 -Subject: [PATCH] x86: embed .note.gnu.property for Intel CET in assembly files - -Instead of generating the note section with a linker option, this -embeds it in each .S file through a preprocessor macro. The main -motivation behind this is to simplify the build process when a shared -library is statically linking to leancrypto. As a bonus, this -mechanism could be used to support PACBTI on AArch64 in a future -extension. - -Signed-off-by: Daiki Ueno ---- - curve25519/src/armv7/x25519-cortex-m4-gcc.S | 2 ++ - curve25519/src/armv8/X25519-AArch64.S | 2 ++ - curve25519/src/avx/curve25519_avx_asm.S | 2 ++ - hash/src/asm/ARMv8A/KeccakP-1600-armv8a-ce.S | 2 ++ - .../src/asm/ARMv8A/KeccakP-1600-armv8a-neon.S | 4 +++ - hash/src/asm/ARMv8A/sha2-256-ARMv8.S | 2 ++ - hash/src/asm/ARMv8A/sha2-512-ARMv8.S | 2 ++ - hash/src/asm/ARMv8_2x/keccakx2_armce.S | 2 ++ - hash/src/asm/AVX2/KeccakP-1600-AVX2.S | 2 ++ - hash/src/asm/AVX2/sha2-256-AVX2.S | 2 ++ - hash/src/asm/AVX2/sha2-512-AVX2.S | 2 ++ - hash/src/asm/AVX512/KeccakP-1600-AVX512.S | 2 ++ - hash/src/asm/riscv32/keccakf1600_asm.S | 2 ++ - hash/src/asm/riscv64/fips202_rv64im.S | 2 ++ - hash/src/asm/riscv64/fips202_rv64imb.S | 2 ++ - hash/src/asm/riscv64/sha2-256-riscv.S | 2 ++ - hash/src/asm/riscv64/sha2-512-riscv.S | 2 ++ - internal/api/assembler_support.h | 33 +++++++++++++++++++ - meson.build | 6 ---- - ml-dsa/src/armv7/dilithium_ntt_armv7.S | 2 ++ - .../armv7/dilithium_pointwise_smull_armv7.S | 2 ++ - ml-dsa/src/armv7/dilithium_poly_armv7.S | 2 ++ - ml-dsa/src/armv8/dilithium_intt_armv8.S | 2 ++ - ml-dsa/src/armv8/dilithium_ntt_armv8.S | 2 ++ - ml-dsa/src/armv8/dilithium_poly_armv8.S | 2 ++ - ml-dsa/src/avx2/dilithium_invntt_avx2.S | 2 ++ - ml-dsa/src/avx2/dilithium_ntt_avx2.S | 2 ++ - ml-dsa/src/avx2/dilithium_pointwise_avx2.S | 2 ++ - ml-dsa/src/avx2/dilithium_shuffle_avx2.S | 2 ++ - .../riscv64/ntt_8l_dualissue_plant_rv64im.S | 2 ++ - ml-dsa/src/riscv64/ntt_rvv.S | 2 ++ - ml-kem/src/armv7/kyber_fastinvntt_armv7.S | 2 ++ - ml-kem/src/armv7/kyber_fastntt_armv7.S | 2 ++ - ml-kem/src/armv7/kyber_poly_armv7.S | 2 ++ - ml-kem/src/armv8/kyber_add_armv8.S | 2 ++ - ml-kem/src/armv8/kyber_basemul_armv8.S | 2 ++ - ml-kem/src/armv8/kyber_cbd_armv8.S | 2 ++ - ml-kem/src/armv8/kyber_inv_ntt_armv8.S | 2 ++ - ml-kem/src/armv8/kyber_ntt_armv8_asm.S | 2 ++ - ml-kem/src/armv8/kyber_poly_armv8_asm.S | 2 ++ - ml-kem/src/armv8/kyber_reduce_armv8.S | 2 ++ - ml-kem/src/avx2/kyber_basemul_avx2.S | 2 ++ - ml-kem/src/avx2/kyber_fq_avx2.S | 2 ++ - ml-kem/src/avx2/kyber_invntt_avx2.S | 2 ++ - ml-kem/src/avx2/kyber_ntt_avx2.S | 2 ++ - ml-kem/src/avx2/kyber_shuffle_avx2.S | 2 ++ - .../src/riscv64/ntt_dualissue_plant_rv64im.S | 2 ++ - ml-kem/src/riscv64/ntt_rvv_vlen128.S | 2 ++ - ml-kem/src/riscv64/ntt_rvv_vlen256.S | 2 ++ - ml-kem/src/riscv64/riscv_rvv_selector_test.S | 2 ++ - sym/src/asm/AESNI_x86_64/aes_aesni_x86_64.S | 2 ++ - sym/src/asm/ARMv8/aes_armv8_ce.S | 2 ++ - sym/src/asm/riscv64/riscv64_aes_asm.S | 2 ++ - sym/src/asm/riscv64/riscv64_aes_zkn_asm.S | 2 ++ - 54 files changed, 139 insertions(+), 6 deletions(-) - -diff --git a/curve25519/src/armv7/x25519-cortex-m4-gcc.S b/curve25519/src/armv7/x25519-cortex-m4-gcc.S -index 9151c401..c19cff26 100644 ---- a/curve25519/src/armv7/x25519-cortex-m4-gcc.S -+++ b/curve25519/src/armv7/x25519-cortex-m4-gcc.S -@@ -1040,3 +1040,5 @@ SYM_FUNC_ENTER(crypto_scalarmult_curve25519_armv7) - // in total for whole function 548 873 cycles - - SYM_FUNC_END(crypto_scalarmult_curve25519_armv7) -+ -+ASM_END -diff --git a/curve25519/src/armv8/X25519-AArch64.S b/curve25519/src/armv8/X25519-AArch64.S -index a04cce4d..2d8e9985 100644 ---- a/curve25519/src/armv8/X25519-AArch64.S -+++ b/curve25519/src/armv8/X25519-AArch64.S -@@ -1641,3 +1641,5 @@ invtable: - .hword 50| (2<<9) - .hword 5| (1<<9) - .hword 0| (0<<9) -+ -+ASM_END -diff --git a/curve25519/src/avx/curve25519_avx_asm.S b/curve25519/src/avx/curve25519_avx_asm.S -index e6c79b64..be16ca3c 100644 ---- a/curve25519/src/avx/curve25519_avx_asm.S -+++ b/curve25519/src/avx/curve25519_avx_asm.S -@@ -37,3 +37,5 @@ - #if defined(__linux__) && defined(__ELF__) - .section .note.GNU-stack,"",%progbits - #endif -+ -+ASM_END -diff --git a/hash/src/asm/ARMv8A/KeccakP-1600-armv8a-ce.S b/hash/src/asm/ARMv8A/KeccakP-1600-armv8a-ce.S -index 21299298..98e74d85 100644 ---- a/hash/src/asm/ARMv8A/KeccakP-1600-armv8a-ce.S -+++ b/hash/src/asm/ARMv8A/KeccakP-1600-armv8a-ce.S -@@ -1039,3 +1039,5 @@ SYM_FUNC_ENTER(lc_keccak_squeeze_arm_ce) - SYM_FUNC_END(lc_keccak_squeeze_arm_ce) - .byte 75,101,99,99,97,107,45,49,54,48,48,32,97,98,115,111,114,98,32,97,110,100,32,115,113,117,101,101,122,101,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 - .align 2 -+ -+ASM_END -diff --git a/hash/src/asm/ARMv8A/KeccakP-1600-armv8a-neon.S b/hash/src/asm/ARMv8A/KeccakP-1600-armv8a-neon.S -index fa9aff40..5cb2de6d 100644 ---- a/hash/src/asm/ARMv8A/KeccakP-1600-armv8a-neon.S -+++ b/hash/src/asm/ARMv8A/KeccakP-1600-armv8a-neon.S -@@ -31,6 +31,8 @@ - // This implementation comes with KeccakP-1600-SnP.h in the same folder. - // Please refer to LowLevel.build for the exact list of other files it must be combined with. - -+#include "assembler_support.h" -+ - // INFO: Tested on Cortex-A53(odroid-c2), using gcc. - // WARNING: These functions work only on little endian CPU with ARMv8a + NEON architecture - // WARNING: State must be 512 bit (64 bytes) aligned. -@@ -560,3 +562,5 @@ KeccakP1600_Permute_RoundLoop: - KeccakP1600_Permute_Exit: - StoreState - ret -+ -+ASM_END -diff --git a/hash/src/asm/ARMv8A/sha2-256-ARMv8.S b/hash/src/asm/ARMv8A/sha2-256-ARMv8.S -index ada570b0..1b9b23e1 100644 ---- a/hash/src/asm/ARMv8A/sha2-256-ARMv8.S -+++ b/hash/src/asm/ARMv8A/sha2-256-ARMv8.S -@@ -2016,3 +2016,5 @@ SYM_FUNC_ENTER(sha256_block_neon) - add sp,sp,#16*4+2*__SIZEOF_POINTER__ - RET - SYM_FUNC_END(sha256_block_neon) -+ -+ASM_END -diff --git a/hash/src/asm/ARMv8A/sha2-512-ARMv8.S b/hash/src/asm/ARMv8A/sha2-512-ARMv8.S -index 88372b41..5990ad76 100644 ---- a/hash/src/asm/ARMv8A/sha2-512-ARMv8.S -+++ b/hash/src/asm/ARMv8A/sha2-512-ARMv8.S -@@ -1565,3 +1565,5 @@ SYM_FUNC_ENTER(sha512_block_armv8ce) - RET - SYM_FUNC_END(sha512_block_armv8ce) - -+ -+ASM_END -diff --git a/hash/src/asm/ARMv8_2x/keccakx2_armce.S b/hash/src/asm/ARMv8_2x/keccakx2_armce.S -index 0cf8fddb..04c44c29 100644 ---- a/hash/src/asm/ARMv8_2x/keccakx2_armce.S -+++ b/hash/src/asm/ARMv8_2x/keccakx2_armce.S -@@ -194,4 +194,6 @@ loop: - - SYM_FUNC_END(keccak_f1600x2_armce) - -+ASM_END -+ - #endif -diff --git a/hash/src/asm/AVX2/KeccakP-1600-AVX2.S b/hash/src/asm/AVX2/KeccakP-1600-AVX2.S -index f59cd1b5..26f965df 100644 ---- a/hash/src/asm/AVX2/KeccakP-1600-AVX2.S -+++ b/hash/src/asm/AVX2/KeccakP-1600-AVX2.S -@@ -1032,3 +1032,5 @@ mask6_17: - .quad ALLON, ALLON, 0, 0 - - .asciz "Keccak-1600 for AVX2, CRYPTOGAMS by " -+ -+ASM_END -diff --git a/hash/src/asm/AVX2/sha2-256-AVX2.S b/hash/src/asm/AVX2/sha2-256-AVX2.S -index e79b733f..e0b77dcc 100644 ---- a/hash/src/asm/AVX2/sha2-256-AVX2.S -+++ b/hash/src/asm/AVX2/sha2-256-AVX2.S -@@ -5495,3 +5495,5 @@ K256: - .long 0x03020100,0x0b0a0908,0xffffffff,0xffffffff - .long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 - .long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 -+ -+ASM_END -diff --git a/hash/src/asm/AVX2/sha2-512-AVX2.S b/hash/src/asm/AVX2/sha2-512-AVX2.S -index d4a9d931..52c77715 100644 ---- a/hash/src/asm/AVX2/sha2-512-AVX2.S -+++ b/hash/src/asm/AVX2/sha2-512-AVX2.S -@@ -5760,3 +5760,5 @@ K512_nodup: - .quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c - .quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a - .quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 -+ -+ASM_END -diff --git a/hash/src/asm/AVX512/KeccakP-1600-AVX512.S b/hash/src/asm/AVX512/KeccakP-1600-AVX512.S -index 70e8e4f7..83cc26a3 100644 ---- a/hash/src/asm/AVX512/KeccakP-1600-AVX512.S -+++ b/hash/src/asm/AVX512/KeccakP-1600-AVX512.S -@@ -971,3 +971,5 @@ iotas: - .quad 0x8000000080008008 - iotas_end: - .asciz "Keccak-1600 for AVX-512F, CRYPTOGAMS by " -+ -+ASM_END -diff --git a/hash/src/asm/riscv32/keccakf1600_asm.S b/hash/src/asm/riscv32/keccakf1600_asm.S -index 2a1c7df6..1dc9b0d3 100644 ---- a/hash/src/asm/riscv32/keccakf1600_asm.S -+++ b/hash/src/asm/riscv32/keccakf1600_asm.S -@@ -540,3 +540,5 @@ SYM_FUNC_START(lc_keccakf1600_riscv) - - RET - SYM_FUNC_END(lc_keccakf1600_riscv) -+ -+ASM_END -diff --git a/hash/src/asm/riscv64/fips202_rv64im.S b/hash/src/asm/riscv64/fips202_rv64im.S -index 8a01dcc9..13c434c2 100644 ---- a/hash/src/asm/riscv64/fips202_rv64im.S -+++ b/hash/src/asm/riscv64/fips202_rv64im.S -@@ -451,3 +451,5 @@ loop: - addi sp, sp, 8*19 - RET - SYM_FUNC_END(KeccakF1600_StatePermute_RV64ASM) -+ -+ASM_END -diff --git a/hash/src/asm/riscv64/fips202_rv64imb.S b/hash/src/asm/riscv64/fips202_rv64imb.S -index e17e474c..b5a87ea1 100644 ---- a/hash/src/asm/riscv64/fips202_rv64imb.S -+++ b/hash/src/asm/riscv64/fips202_rv64imb.S -@@ -355,3 +355,5 @@ rounds1_loop_start: - addi sp, sp, 8*18 - RET - SYM_FUNC_END(KeccakF1600_StatePermute_RV64ZBB) -+ -+ASM_END -diff --git a/hash/src/asm/riscv64/sha2-256-riscv.S b/hash/src/asm/riscv64/sha2-256-riscv.S -index 6aef4c83..75365bff 100644 ---- a/hash/src/asm/riscv64/sha2-256-riscv.S -+++ b/hash/src/asm/riscv64/sha2-256-riscv.S -@@ -2927,3 +2927,5 @@ K256: - .word 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 - .string "SHA256 for RISC-V, CRYPTOGAMS by @dot-asm" - .align 5 -+ -+ASM_END -diff --git a/hash/src/asm/riscv64/sha2-512-riscv.S b/hash/src/asm/riscv64/sha2-512-riscv.S -index 28735e31..3137d5bb 100644 ---- a/hash/src/asm/riscv64/sha2-512-riscv.S -+++ b/hash/src/asm/riscv64/sha2-512-riscv.S -@@ -3143,3 +3143,5 @@ K512: - .dword 0x5fcb6fab3ad6faec, 0x6c44198c4a475817 - .string "SHA512 for RISC-V, CRYPTOGAMS by @dot-asm" - .align 5 -+ -+ASM_END -diff --git a/internal/api/assembler_support.h b/internal/api/assembler_support.h -index de333805..7a683989 100644 ---- a/internal/api/assembler_support.h -+++ b/internal/api/assembler_support.h -@@ -44,6 +44,8 @@ - # define FRAME_END - #endif - -+# define ASM_END -+ - # define SYM_FUNC_ENTER(name) - - # define SYM_FUNC(name) name -@@ -73,6 +75,7 @@ - # define ANNOTATE_INTRA_FUNCTION_CALL - - # ifdef __APPLE__ -+# define ASM_END - # define SYM_FUNC(name) _##name - # define SYM_TYPE_OBJ(name) - # define SYM_TYPE_FUNC(name) -@@ -91,6 +94,8 @@ - - # elif (defined(__CYGWIN__) || defined(_WIN32)) - -+# define ASM_END -+ - # define SYM_FUNC(name) name - - # define SYM_TYPE_OBJ(name) \ -@@ -115,6 +120,34 @@ - - # else /* __APPLE__ */ - -+# if defined __ELF__ && defined __CET__ -+# ifdef __x86_64__ -+# define ASM_X86_MARK_CET_ALIGN 3 -+# else -+# define ASM_X86_MARK_CET_ALIGN 2 -+# endif -+# define ASM_END \ -+ .pushsection ".note.gnu.property", "a"; \ -+ .p2align ASM_X86_MARK_CET_ALIGN; \ -+ .long 1f - 0f; \ -+ .long 4f - 1f; \ -+ .long 5; \ -+0: \ -+ .asciz "GNU"; \ -+1: \ -+ .p2align ASM_X86_MARK_CET_ALIGN; \ -+ .long 0xc0000002; \ -+ .long 3f - 2f; \ -+2: \ -+ .long 3; \ -+3: \ -+ .p2align ASM_X86_MARK_CET_ALIGN; \ -+4: \ -+ .popsection -+# else -+# define ASM_END -+# endif -+ - # define SYM_FUNC(name) name - - # define SYM_TYPE_OBJ(name) \ -diff --git a/ml-dsa/src/armv7/dilithium_ntt_armv7.S b/ml-dsa/src/armv7/dilithium_ntt_armv7.S -index 878a2623..100eeb67 100644 ---- a/ml-dsa/src/armv7/dilithium_ntt_armv7.S -+++ b/ml-dsa/src/armv7/dilithium_ntt_armv7.S -@@ -589,3 +589,5 @@ inv_ntt_asm_smull_q: - .align 2 - inv_ntt_asm_smull_64: - .word 64 -+ -+ASM_END -diff --git a/ml-dsa/src/armv7/dilithium_pointwise_smull_armv7.S b/ml-dsa/src/armv7/dilithium_pointwise_smull_armv7.S -index b84a7fac..dcd2706b 100644 ---- a/ml-dsa/src/armv7/dilithium_pointwise_smull_armv7.S -+++ b/ml-dsa/src/armv7/dilithium_pointwise_smull_armv7.S -@@ -166,3 +166,5 @@ SYM_FUNC_ENTER(armv7_poly_pointwise_acc_invmontgomery_asm_smull) - pop.w {r4-r11, pc} - - SYM_FUNC_END(armv7_poly_pointwise_acc_invmontgomery_asm_smull) -+ -+ASM_END -diff --git a/ml-dsa/src/armv7/dilithium_poly_armv7.S b/ml-dsa/src/armv7/dilithium_poly_armv7.S -index e0a62a49..fa0994f2 100644 ---- a/ml-dsa/src/armv7/dilithium_poly_armv7.S -+++ b/ml-dsa/src/armv7/dilithium_poly_armv7.S -@@ -131,3 +131,5 @@ end: - bx lr - - SYM_FUNC_END(armv7_rej_uniform_asm) -+ -+ASM_END -diff --git a/ml-dsa/src/armv8/dilithium_intt_armv8.S b/ml-dsa/src/armv8/dilithium_intt_armv8.S -index ddcae06e..1b10e466 100644 ---- a/ml-dsa/src/armv8/dilithium_intt_armv8.S -+++ b/ml-dsa/src/armv8/dilithium_intt_armv8.S -@@ -545,3 +545,5 @@ SYM_FUNC_ENTER(intt_SIMD_bot_armv8) - br lr - - SYM_FUNC_END(intt_SIMD_bot_armv8) -+ -+ASM_END -diff --git a/ml-dsa/src/armv8/dilithium_ntt_armv8.S b/ml-dsa/src/armv8/dilithium_ntt_armv8.S -index 06fdc42a..2d89b9d8 100644 ---- a/ml-dsa/src/armv8/dilithium_ntt_armv8.S -+++ b/ml-dsa/src/armv8/dilithium_ntt_armv8.S -@@ -300,3 +300,5 @@ SYM_FUNC_ENTER(ntt_SIMD_bot_armv8) - br lr - - SYM_FUNC_END(ntt_SIMD_bot_armv8) -+ -+ASM_END -diff --git a/ml-dsa/src/armv8/dilithium_poly_armv8.S b/ml-dsa/src/armv8/dilithium_poly_armv8.S -index 3fd814fb..fe28cda1 100644 ---- a/ml-dsa/src/armv8/dilithium_poly_armv8.S -+++ b/ml-dsa/src/armv8/dilithium_poly_armv8.S -@@ -918,3 +918,5 @@ SYM_FUNC_ENTER(polyvecl_pointwise_acc_montgomery_armv8) - br lr - - SYM_FUNC_END(polyvecl_pointwise_acc_montgomery_armv8) -+ -+ASM_END -diff --git a/ml-dsa/src/avx2/dilithium_invntt_avx2.S b/ml-dsa/src/avx2/dilithium_invntt_avx2.S -index 893c95e9..9de0a07a 100644 ---- a/ml-dsa/src/avx2/dilithium_invntt_avx2.S -+++ b/ml-dsa/src/avx2/dilithium_invntt_avx2.S -@@ -238,3 +238,5 @@ levels6t7 3 - - RET - SYM_FUNC_END(dilithium_invntt_avx) -+ -+ASM_END -diff --git a/ml-dsa/src/avx2/dilithium_ntt_avx2.S b/ml-dsa/src/avx2/dilithium_ntt_avx2.S -index e9e3c520..d9c1f391 100644 ---- a/ml-dsa/src/avx2/dilithium_ntt_avx2.S -+++ b/ml-dsa/src/avx2/dilithium_ntt_avx2.S -@@ -196,3 +196,5 @@ levels2t7 3 - - RET - SYM_FUNC_END(dilithium_ntt_avx) -+ -+ASM_END -diff --git a/ml-dsa/src/avx2/dilithium_pointwise_avx2.S b/ml-dsa/src/avx2/dilithium_pointwise_avx2.S -index 58911a4c..bed14608 100644 ---- a/ml-dsa/src/avx2/dilithium_pointwise_avx2.S -+++ b/ml-dsa/src/avx2/dilithium_pointwise_avx2.S -@@ -208,3 +208,5 @@ jb _looptop2 - - RET - SYM_FUNC_END(dilithium_pointwise_acc_avx) -+ -+ASM_END -diff --git a/ml-dsa/src/avx2/dilithium_shuffle_avx2.S b/ml-dsa/src/avx2/dilithium_shuffle_avx2.S -index 5b76acbf..028a4c27 100644 ---- a/ml-dsa/src/avx2/dilithium_shuffle_avx2.S -+++ b/ml-dsa/src/avx2/dilithium_shuffle_avx2.S -@@ -50,3 +50,5 @@ add $256,%rdi - nttunpack128_avx - RET - SYM_FUNC_END(dilithium_nttunpack_avx) -+ -+ASM_END -diff --git a/ml-dsa/src/riscv64/ntt_8l_dualissue_plant_rv64im.S b/ml-dsa/src/riscv64/ntt_8l_dualissue_plant_rv64im.S -index a86380b2..142764aa 100644 ---- a/ml-dsa/src/riscv64/ntt_8l_dualissue_plant_rv64im.S -+++ b/ml-dsa/src/riscv64/ntt_8l_dualissue_plant_rv64im.S -@@ -1168,3 +1168,5 @@ poly_reduce_rv64im_loop: - bne a3, a0, poly_reduce_rv64im_loop - RET - SYM_FUNC_END(dilithium_poly_reduce_rv64im) -+ -+ASM_END -diff --git a/ml-dsa/src/riscv64/ntt_rvv.S b/ml-dsa/src/riscv64/ntt_rvv.S -index 8254fca9..116a8c3b 100644 ---- a/ml-dsa/src/riscv64/ntt_rvv.S -+++ b/ml-dsa/src/riscv64/ntt_rvv.S -@@ -1588,3 +1588,5 @@ poly_reduce_rvv_loop: - bnez a3, poly_reduce_rvv_loop - RET - SYM_FUNC_END(dilithium_poly_reduce_rvv) -+ -+ASM_END -diff --git a/ml-kem/src/armv7/kyber_fastinvntt_armv7.S b/ml-kem/src/armv7/kyber_fastinvntt_armv7.S -index 8b163a66..b3862483 100644 ---- a/ml-kem/src/armv7/kyber_fastinvntt_armv7.S -+++ b/ml-kem/src/armv7/kyber_fastinvntt_armv7.S -@@ -272,3 +272,5 @@ SYM_FUNC_ENTER(kyber_invntt_armv7) - pop.w {r4-r11, pc} - - SYM_FUNC_END(kyber_invntt_armv7) -+ -+ASM_END -diff --git a/ml-kem/src/armv7/kyber_fastntt_armv7.S b/ml-kem/src/armv7/kyber_fastntt_armv7.S -index 9b8580c9..988a4cff 100644 ---- a/ml-kem/src/armv7/kyber_fastntt_armv7.S -+++ b/ml-kem/src/armv7/kyber_fastntt_armv7.S -@@ -243,3 +243,5 @@ SYM_FUNC_ENTER(kyber_ntt_armv7) - pop.w {r4-r11, pc} - - SYM_FUNC_END(kyber_ntt_armv7) -+ -+ASM_END -diff --git a/ml-kem/src/armv7/kyber_poly_armv7.S b/ml-kem/src/armv7/kyber_poly_armv7.S -index 8810555f..08582c35 100644 ---- a/ml-kem/src/armv7/kyber_poly_armv7.S -+++ b/ml-kem/src/armv7/kyber_poly_armv7.S -@@ -283,3 +283,5 @@ SYM_FUNC_ENTER(kyber_basemul_armv7) - - .unreq qinv - SYM_FUNC_END(kyber_basemul_armv7) -+ -+ASM_END -diff --git a/ml-kem/src/armv8/kyber_add_armv8.S b/ml-kem/src/armv8/kyber_add_armv8.S -index c2cb39ed..487be1ff 100644 ---- a/ml-kem/src/armv8/kyber_add_armv8.S -+++ b/ml-kem/src/armv8/kyber_add_armv8.S -@@ -79,3 +79,5 @@ SYM_FUNC_ENTER(kyber_add_armv8) - RET - SYM_FUNC_END(kyber_add_armv8) - -+ -+ASM_END -diff --git a/ml-kem/src/armv8/kyber_basemul_armv8.S b/ml-kem/src/armv8/kyber_basemul_armv8.S -index 7bec9b9c..4058ccac 100644 ---- a/ml-kem/src/armv8/kyber_basemul_armv8.S -+++ b/ml-kem/src/armv8/kyber_basemul_armv8.S -@@ -99,3 +99,5 @@ SYM_FUNC_ENTER(kyber_basemul_armv8) - - RET - SYM_FUNC_END(kyber_basemul_armv8) -+ -+ASM_END -diff --git a/ml-kem/src/armv8/kyber_cbd_armv8.S b/ml-kem/src/armv8/kyber_cbd_armv8.S -index 28a1724f..287078a9 100644 ---- a/ml-kem/src/armv8/kyber_cbd_armv8.S -+++ b/ml-kem/src/armv8/kyber_cbd_armv8.S -@@ -263,3 +263,5 @@ SYM_FUNC_ENTER(kyber_cbd3_armv8) - // - RET - SYM_FUNC_END(kyber_cbd3_armv8) -+ -+ASM_END -diff --git a/ml-kem/src/armv8/kyber_inv_ntt_armv8.S b/ml-kem/src/armv8/kyber_inv_ntt_armv8.S -index 4264445f..f0238c65 100644 ---- a/ml-kem/src/armv8/kyber_inv_ntt_armv8.S -+++ b/ml-kem/src/armv8/kyber_inv_ntt_armv8.S -@@ -239,3 +239,5 @@ SYM_FUNC_ENTER(kyber_inv_ntt_armv8) - - RET - SYM_FUNC_END(kyber_inv_ntt_armv8) -+ -+ASM_END -diff --git a/ml-kem/src/armv8/kyber_ntt_armv8_asm.S b/ml-kem/src/armv8/kyber_ntt_armv8_asm.S -index ae4eb3a5..da2cbff9 100644 ---- a/ml-kem/src/armv8/kyber_ntt_armv8_asm.S -+++ b/ml-kem/src/armv8/kyber_ntt_armv8_asm.S -@@ -217,3 +217,5 @@ SYM_FUNC_ENTER(kyber_ntt_armv8) - - RET - SYM_FUNC_END(kyber_ntt_armv8) -+ -+ASM_END -diff --git a/ml-kem/src/armv8/kyber_poly_armv8_asm.S b/ml-kem/src/armv8/kyber_poly_armv8_asm.S -index d9ee3819..8a9bb6ec 100644 ---- a/ml-kem/src/armv8/kyber_poly_armv8_asm.S -+++ b/ml-kem/src/armv8/kyber_poly_armv8_asm.S -@@ -143,3 +143,5 @@ SYM_FUNC_ENTER(kyber_poly_frombytes_armv8) - - RET - SYM_FUNC_END(kyber_poly_frombytes_armv8) -+ -+ASM_END -diff --git a/ml-kem/src/armv8/kyber_reduce_armv8.S b/ml-kem/src/armv8/kyber_reduce_armv8.S -index 47f1b7bf..2a341b8f 100644 ---- a/ml-kem/src/armv8/kyber_reduce_armv8.S -+++ b/ml-kem/src/armv8/kyber_reduce_armv8.S -@@ -261,3 +261,5 @@ SYM_FUNC_ENTER(kyber_add_add_reduce_armv8) - - RET - SYM_FUNC_END(kyber_add_add_reduce_armv8) -+ -+ASM_END -diff --git a/ml-kem/src/avx2/kyber_basemul_avx2.S b/ml-kem/src/avx2/kyber_basemul_avx2.S -index 0b81bdd3..fc1ec793 100644 ---- a/ml-kem/src/avx2/kyber_basemul_avx2.S -+++ b/ml-kem/src/avx2/kyber_basemul_avx2.S -@@ -106,3 +106,5 @@ mov %r8,%rsp - RET - SYM_FUNC_END(kyber_basemul_avx) - STACK_FRAME_NON_STANDARD kyber_basemul_avx -+ -+ASM_END -diff --git a/ml-kem/src/avx2/kyber_fq_avx2.S b/ml-kem/src/avx2/kyber_fq_avx2.S -index fa0409b5..94ff5b0e 100644 ---- a/ml-kem/src/avx2/kyber_fq_avx2.S -+++ b/ml-kem/src/avx2/kyber_fq_avx2.S -@@ -86,3 +86,5 @@ add $256,%rdi - tomont128_avx - RET - SYM_FUNC_END(tomont_avx) -+ -+ASM_END -diff --git a/ml-kem/src/avx2/kyber_invntt_avx2.S b/ml-kem/src/avx2/kyber_invntt_avx2.S -index 4090c5d7..66cc61cd 100644 ---- a/ml-kem/src/avx2/kyber_invntt_avx2.S -+++ b/ml-kem/src/avx2/kyber_invntt_avx2.S -@@ -193,3 +193,5 @@ intt_level6 0 - intt_level6 1 - RET - SYM_FUNC_END(kyber_invntt_avx) -+ -+ASM_END -diff --git a/ml-kem/src/avx2/kyber_ntt_avx2.S b/ml-kem/src/avx2/kyber_ntt_avx2.S -index c4962fc5..b3633613 100644 ---- a/ml-kem/src/avx2/kyber_ntt_avx2.S -+++ b/ml-kem/src/avx2/kyber_ntt_avx2.S -@@ -189,3 +189,5 @@ levels1t6 1 - - RET - SYM_FUNC_END(kyber_ntt_avx) -+ -+ASM_END -diff --git a/ml-kem/src/avx2/kyber_shuffle_avx2.S b/ml-kem/src/avx2/kyber_shuffle_avx2.S -index ffb642dc..0319e129 100644 ---- a/ml-kem/src/avx2/kyber_shuffle_avx2.S -+++ b/ml-kem/src/avx2/kyber_shuffle_avx2.S -@@ -252,3 +252,5 @@ add $192,%rsi - kyber_nttfrombytes128_avx - RET - SYM_FUNC_END(kyber_nttfrombytes_avx) -+ -+ASM_END -diff --git a/ml-kem/src/riscv64/ntt_dualissue_plant_rv64im.S b/ml-kem/src/riscv64/ntt_dualissue_plant_rv64im.S -index 7eab10be..f509806e 100644 ---- a/ml-kem/src/riscv64/ntt_dualissue_plant_rv64im.S -+++ b/ml-kem/src/riscv64/ntt_dualissue_plant_rv64im.S -@@ -1969,3 +1969,5 @@ SYM_FUNC_START(kyber_poly_toplant_rv64im) - addi sp, sp, 8*1 - RET - SYM_FUNC_END(kyber_poly_toplant_rv64im) -+ -+ASM_END -diff --git a/ml-kem/src/riscv64/ntt_rvv_vlen128.S b/ml-kem/src/riscv64/ntt_rvv_vlen128.S -index 2d3afc5d..d113d39f 100644 ---- a/ml-kem/src/riscv64/ntt_rvv_vlen128.S -+++ b/ml-kem/src/riscv64/ntt_rvv_vlen128.S -@@ -1196,3 +1196,5 @@ cbd3_rvv_vlen128_loop: - bnez a4, cbd3_rvv_vlen128_loop - RET - SYM_FUNC_END(kyber_cbd3_rvv_vlen128) -+ -+ASM_END -diff --git a/ml-kem/src/riscv64/ntt_rvv_vlen256.S b/ml-kem/src/riscv64/ntt_rvv_vlen256.S -index 16b5aa2f..7f827f53 100644 ---- a/ml-kem/src/riscv64/ntt_rvv_vlen256.S -+++ b/ml-kem/src/riscv64/ntt_rvv_vlen256.S -@@ -1199,3 +1199,5 @@ cbd3_rvv_vlen256_loop: - bnez a4, cbd3_rvv_vlen256_loop - RET - SYM_FUNC_END(kyber_cbd3_rvv_vlen256) -+ -+ASM_END -diff --git a/ml-kem/src/riscv64/riscv_rvv_selector_test.S b/ml-kem/src/riscv64/riscv_rvv_selector_test.S -index a420ffea..9f8aa904 100644 ---- a/ml-kem/src/riscv64/riscv_rvv_selector_test.S -+++ b/ml-kem/src/riscv64/riscv_rvv_selector_test.S -@@ -24,3 +24,5 @@ SYM_FUNC_START(kyber_rvv_selector) - sext.w a0,a0 - RET - SYM_FUNC_END(kyber_rvv_selector) -+ -+ASM_END -diff --git a/sym/src/asm/AESNI_x86_64/aes_aesni_x86_64.S b/sym/src/asm/AESNI_x86_64/aes_aesni_x86_64.S -index d53a97a3..a79cc977 100644 ---- a/sym/src/asm/AESNI_x86_64/aes_aesni_x86_64.S -+++ b/sym/src/asm/AESNI_x86_64/aes_aesni_x86_64.S -@@ -4568,3 +4568,5 @@ SYM_FUNC_END(aesni_set_encrypt_key) - - .byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69,83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 - .align 64 -+ -+ASM_END -diff --git a/sym/src/asm/ARMv8/aes_armv8_ce.S b/sym/src/asm/ARMv8/aes_armv8_ce.S -index 89f61553..894645fc 100644 ---- a/sym/src/asm/ARMv8/aes_armv8_ce.S -+++ b/sym/src/asm/ARMv8/aes_armv8_ce.S -@@ -3215,3 +3215,5 @@ Lxts_dec_abort: - Lxts_dec_final_abort: - RET - SYM_FUNC_END(aes_v8_xts_decrypt) -+ -+ASM_END -diff --git a/sym/src/asm/riscv64/riscv64_aes_asm.S b/sym/src/asm/riscv64/riscv64_aes_asm.S -index 7a7ff426..4dc92bdd 100644 ---- a/sym/src/asm/riscv64/riscv64_aes_asm.S -+++ b/sym/src/asm/riscv64/riscv64_aes_asm.S -@@ -1900,3 +1900,5 @@ AES_rcon: - .word 0x00000001U, 0x00000002U, 0x00000004U, 0x00000008U - .word 0x00000010U, 0x00000020U, 0x00000040U, 0x00000080U - .word 0x0000001BU, 0x00000036U -+ -+ASM_END -diff --git a/sym/src/asm/riscv64/riscv64_aes_zkn_asm.S b/sym/src/asm/riscv64/riscv64_aes_zkn_asm.S -index 2d8eac75..4f9f887d 100644 ---- a/sym/src/asm/riscv64/riscv64_aes_zkn_asm.S -+++ b/sym/src/asm/riscv64/riscv64_aes_zkn_asm.S -@@ -732,3 +732,5 @@ rv64i_zknd_set_decrypt_key: - ld x8,0(sp) - addi sp,sp,16 - RET -+ -+ASM_END --- -2.48.1 - diff --git a/sources b/sources index 2ab5b11..987e648 100644 --- a/sources +++ b/sources @@ -1,6 +1,6 @@ SHA512 (gmp-6.2.1.tar.xz) = c99be0950a1d05a0297d65641dd35b75b74466f7bf03c9e8a99895a3b2f9a0856cd17887738fa51cf7499781b65c049769271cbcb77d057d2e9f1ec52e07dd84 -SHA512 (gnutls-3.8.9.tar.xz) = b3b201671bf4e75325610a0291d4cd36a669718e22b3685246b64bde97b5bd94f463ab376ed817869869714115f4ff11bdc53c32604bb04a8ff8e10daa6d1fc7 -SHA512 (gnutls-3.8.9.tar.xz.sig) = 5a47a519ef35f21b59e2122528246d6109dd95667bfe5d01713b9a7efa2931f8523bf325b8824433f3117d63e0e50d66f8c467a7ee4bd2068ae039601a28441e -SHA512 (leancrypto-1.2.0.tar.gz) = 0b58644e3362bd512dd2a19a291ef58ba310d688c8d7c5fb2b7b3ac48ec51122311b998786a23cafa3127f3e4c75425babbc61d287e44fe3318ce584cbc87df7 +SHA512 (gnutls-3.8.10.tar.xz) = d453bd4527af95cb3905ce8753ceafd969e3f442ad1d148544a233ebf13285b999930553a805a0511293cc25390bb6a040260df5544a7c55019640f920ad3d92 +SHA512 (gnutls-3.8.10.tar.xz.sig) = 72d6dd2c23f768f5041c3dca0f49b3f60cd01fc960ce77f097094a2aae6d76fddeb6295c425e3750c711d5f700957a62268aecc4873e53c31abb60eecf0fd4a8 +SHA512 (leancrypto-1.5.0.tar.gz) = 1170a502f58c9bce424578cece64a3ebf856620adc02f390b8877981bccf0c2bf35e64b1628094a06c069ec38a3be5889be22516d45d85f4e75b40085d9001c9 SHA512 (nettle-3.10.1.tar.gz) = e8673bbcde9cde859ccae75ed6c9c30591e68a995a7c6d724106cfd67a5a5bd45b3468d742443b6565628849d0fd29505a28ca5ee4e89dd13197cdb51429f96c SHA512 (nettle-3.10.1.tar.gz.sig) = d074a921df31070a6e6562a9f7e213e67b8e6ce331e2683e8180f387aca92058a5fe8610800817a0aa5098b47176dfcb42b52d617648c84cc6262a09ef557eb8