diff --git a/network/library/nodejs/files/0001-test-disable-openssl-3.4.0-incompatible-tests.patch b/network/library/nodejs/files/0001-test-disable-openssl-3.4.0-incompatible-tests.patch new file mode 100644 index 0000000000..76ec689120 --- /dev/null +++ b/network/library/nodejs/files/0001-test-disable-openssl-3.4.0-incompatible-tests.patch @@ -0,0 +1,28 @@ +From cc6e787af828c94c3268465082d5299bb91e3386 Mon Sep 17 00:00:00 2001 +From: Jelle van der Waa +Date: Fri, 6 Dec 2024 19:14:16 +0100 +Subject: [PATCH] test: disable openssl 3.4.0 incompatible tests + +The shake128/shake256 hashing algorithms broke due to an OpenSSL 3.4 +incompatible change and now throws an Error. +--- + test/parallel/test-crypto-oneshot-hash.js | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/test/parallel/test-crypto-oneshot-hash.js b/test/parallel/test-crypto-oneshot-hash.js +index 56b4c04a65..4c96014831 100644 +--- a/test/parallel/test-crypto-oneshot-hash.js ++++ b/test/parallel/test-crypto-oneshot-hash.js +@@ -32,6 +32,9 @@ const input = fs.readFileSync(fixtures.path('utf8_test_text.txt')); + + for (const method of methods) { + for (const outputEncoding of ['buffer', 'hex', 'base64', undefined]) { ++ // Skip failing tests on OpenSSL 3.4.0 ++ if (method.startsWith("shake")) ++ continue; + const oldDigest = crypto.createHash(method).update(input).digest(outputEncoding || 'hex'); + const digestFromBuffer = crypto.hash(method, input, outputEncoding); + assert.deepStrictEqual(digestFromBuffer, oldDigest, +-- +2.47.1 + diff --git a/network/library/nodejs/files/0001-test-make-test-crypto-hash-compatible-with-OpenSSL-3.patch b/network/library/nodejs/files/0001-test-make-test-crypto-hash-compatible-with-OpenSSL-3.patch new file mode 100644 index 0000000000..d83c3143cb --- /dev/null +++ b/network/library/nodejs/files/0001-test-make-test-crypto-hash-compatible-with-OpenSSL-3.patch @@ -0,0 +1,80 @@ +From 93eabf6a91d30e7bb852d20ade1e5b542dee6b35 Mon Sep 17 00:00:00 2001 +From: Jelle van der Waa +Date: Fri, 6 Dec 2024 18:24:41 +0100 +Subject: [PATCH 1/2] test: make test-crypto-hash compatible with OpenSSL > + 3.4.0 + +OpenSSL 3.4 has a breaking change where the outputLength is now +mandatory for shake* hash algorithms. + +https://github.com/openssl/openssl/commit/b911fef216d1386210ec24e201d54d709528abb4 +--- + test/common/index.js | 4 ++++ + test/parallel/test-crypto-hash.js | 29 ++++++++++++++++------------- + 2 files changed, 20 insertions(+), 13 deletions(-) + +diff --git a/test/common/index.js b/test/common/index.js +index 50595945b1..df5784068e 100644 +--- a/test/common/index.js ++++ b/test/common/index.js +@@ -1059,6 +1059,10 @@ const common = { + return hasOpenSSL(3, 2); + }, + ++ get hasOpenSSL34() { ++ return hasOpenSSL(3, 4); ++ }, ++ + get inFreeBSDJail() { + if (inFreeBSDJail !== null) return inFreeBSDJail; + +diff --git a/test/parallel/test-crypto-hash.js b/test/parallel/test-crypto-hash.js +index 83218c105a..a386de866f 100644 +--- a/test/parallel/test-crypto-hash.js ++++ b/test/parallel/test-crypto-hash.js +@@ -7,6 +7,7 @@ const assert = require('assert'); + const crypto = require('crypto'); + const fs = require('fs'); + ++const { hasOpenSSL34 } = common; + const fixtures = require('../common/fixtures'); + + let cryptoType; +@@ -182,19 +183,21 @@ assert.throws( + + // Test XOF hash functions and the outputLength option. + { +- // Default outputLengths. +- assert.strictEqual(crypto.createHash('shake128').digest('hex'), +- '7f9c2ba4e88f827d616045507605853e'); +- assert.strictEqual(crypto.createHash('shake128', null).digest('hex'), +- '7f9c2ba4e88f827d616045507605853e'); +- assert.strictEqual(crypto.createHash('shake256').digest('hex'), +- '46b9dd2b0ba88d13233b3feb743eeb24' + +- '3fcd52ea62b81b82b50c27646ed5762f'); +- assert.strictEqual(crypto.createHash('shake256', { outputLength: 0 }) +- .copy() // Default outputLength. +- .digest('hex'), +- '46b9dd2b0ba88d13233b3feb743eeb24' + +- '3fcd52ea62b81b82b50c27646ed5762f'); ++ // Default outputLengths. Since OpenSSL 3.4 an outputLength is mandatory ++ if (!hasOpenSSL34) { ++ assert.strictEqual(crypto.createHash('shake128').digest('hex'), ++ '7f9c2ba4e88f827d616045507605853e'); ++ assert.strictEqual(crypto.createHash('shake128', null).digest('hex'), ++ '7f9c2ba4e88f827d616045507605853e'); ++ assert.strictEqual(crypto.createHash('shake256').digest('hex'), ++ '46b9dd2b0ba88d13233b3feb743eeb24' + ++ '3fcd52ea62b81b82b50c27646ed5762f'); ++ assert.strictEqual(crypto.createHash('shake256', { outputLength: 0 }) ++ .copy() // Default outputLength. ++ .digest('hex'), ++ '46b9dd2b0ba88d13233b3feb743eeb24' + ++ '3fcd52ea62b81b82b50c27646ed5762f'); ++ } + + // Short outputLengths. + assert.strictEqual(crypto.createHash('shake128', { outputLength: 0 }) +-- +2.47.1 + diff --git a/network/library/nodejs/files/0002-test-adjust-OpenSSL-error-code-for-3.4.0.patch b/network/library/nodejs/files/0002-test-adjust-OpenSSL-error-code-for-3.4.0.patch new file mode 100644 index 0000000000..d8f323e256 --- /dev/null +++ b/network/library/nodejs/files/0002-test-adjust-OpenSSL-error-code-for-3.4.0.patch @@ -0,0 +1,26 @@ +From 25a53e0c616369d27cc66bd9bba4b6c831a63c20 Mon Sep 17 00:00:00 2001 +From: Jelle van der Waa +Date: Fri, 6 Dec 2024 19:10:48 +0100 +Subject: [PATCH 2/2] test: adjust OpenSSL error code for 3.4.0 + +--- + test/parallel/test-tls-psk-circuit.js | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/test/parallel/test-tls-psk-circuit.js b/test/parallel/test-tls-psk-circuit.js +index 2b49161df8..ee84b1d2f0 100644 +--- a/test/parallel/test-tls-psk-circuit.js ++++ b/test/parallel/test-tls-psk-circuit.js +@@ -66,7 +66,8 @@ const expectedHandshakeErr = common.hasOpenSSL32 ? + 'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE' : 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE'; + test({ psk: USERS.UserB, identity: 'UserC' }, {}, expectedHandshakeErr); + // Recognized user but incorrect secret should fail handshake +-const expectedIllegalParameterErr = common.hasOpenSSL32 ? ++const expectedIllegalParameterErr = common.hasOpenSSL34 ? ++ 'ERR_SSL_TLSV1_ALERT_DECRYPT_ERROR' : common.hasOpenSSL32 ? + 'ERR_SSL_SSL/TLS_ALERT_ILLEGAL_PARAMETER' : 'ERR_SSL_SSLV3_ALERT_ILLEGAL_PARAMETER'; + test({ psk: USERS.UserA, identity: 'UserB' }, {}, expectedIllegalParameterErr); + test({ psk: USERS.UserB, identity: 'UserB' }); +-- +2.47.1 + diff --git a/network/library/nodejs/files/nodejs-v8-icu59.patch b/network/library/nodejs/files/nodejs-v8-icu59.patch deleted file mode 100644 index d0343bad78..0000000000 --- a/network/library/nodejs/files/nodejs-v8-icu59.patch +++ /dev/null @@ -1,63 +0,0 @@ -Index: src/i18n.cc -diff --git a/deps/v8/src/i18n.cc b/deps/v8/src/i18n.cc -index d2245ef34a9a319a53b4cf4b4ea05ec095fef2d5..7c22871ff5e440f771659d44a0db013b34ec2105 100644 ---- a/deps/v8/src/i18n.cc -+++ b/deps/v8/src/i18n.cc -@@ -30,8 +30,13 @@ - #include "unicode/ucol.h" - #include "unicode/ucurr.h" - #include "unicode/unum.h" -+#include "unicode/uvernum.h" - #include "unicode/uversion.h" - -+#if U_ICU_VERSION_MAJOR_NUM >= 59 -+#include "unicode/char16ptr.h" -+#endif -+ - namespace v8 { - namespace internal { - -@@ -270,8 +275,13 @@ icu::DecimalFormat* CreateICUNumberFormat( - } - - UErrorCode status_digits = U_ZERO_ERROR; -+#if U_ICU_VERSION_MAJOR_NUM >= 59 - uint32_t fraction_digits = ucurr_getDefaultFractionDigits( -- currency.getTerminatedBuffer(), &status_digits); -+ icu::toUCharPtr(currency.getTerminatedBuffer()), &status_digits); -+#else -+ uint32_t fraction_digits = ucurr_getDefaultFractionDigits( -+ currency.getTerminatedBuffer(), &status_digits); -+#endif - if (U_SUCCESS(status_digits)) { - number_format->setMinimumFractionDigits(fraction_digits); - number_format->setMaximumFractionDigits(fraction_digits); -Index: src/runtime/runtime-i18n.cc -diff --git a/deps/v8/src/runtime/runtime-i18n.cc b/deps/v8/src/runtime/runtime-i18n.cc -index 0b45381914641a824e36e99eaa0d315bf96252aa..e89175a37db11aa6990888e26e6bb989cf7c36b5 100644 ---- a/deps/v8/src/runtime/runtime-i18n.cc -+++ b/deps/v8/src/runtime/runtime-i18n.cc -@@ -43,6 +43,7 @@ - #include "unicode/uloc.h" - #include "unicode/unistr.h" - #include "unicode/unum.h" -+#include "unicode/ustring.h" - #include "unicode/uversion.h" - - -@@ -609,10 +610,11 @@ RUNTIME_FUNCTION(Runtime_InternalCompare) { - String::FlatContent flat2 = string2->GetFlatContent(); - std::unique_ptr sap1; - std::unique_ptr sap2; -- const UChar* string_val1 = GetUCharBufferFromFlat(flat1, &sap1, length1); -- const UChar* string_val2 = GetUCharBufferFromFlat(flat2, &sap2, length2); -- result = -- collator->compare(string_val1, length1, string_val2, length2, status); -+ icu::UnicodeString string_val1( -+ FALSE, GetUCharBufferFromFlat(flat1, &sap1, length1), length1); -+ icu::UnicodeString string_val2( -+ FALSE, GetUCharBufferFromFlat(flat2, &sap2, length2), length2); -+ result = collator->compare(string_val1, string_val2, status); - } - if (U_FAILURE(status)) return isolate->ThrowIllegalOperation(); - diff --git a/network/library/nodejs/pspec.xml b/network/library/nodejs/pspec.xml index 30fb7e158e..ae55c6a35f 100644 --- a/network/library/nodejs/pspec.xml +++ b/network/library/nodejs/pspec.xml @@ -13,7 +13,7 @@ app:console Evented I/O for V8 javascript Node.js is an open-source, cross-platform, JavaScript runtime environment. It executes JavaScript code outside of a browser. - https://nodejs.org/dist/v22.7.0/node-v22.7.0.tar.xz + https://nodejs.org/dist/v23.4.0/node-v23.4.0.tar.xz icu4c-devel libuv-devel @@ -22,7 +22,9 @@ libnghttp2-devel - + 0001-test-make-test-crypto-hash-compatible-with-OpenSSL-3.patch + 0002-test-adjust-OpenSSL-error-code-for-3.4.0.patch + 0001-test-disable-openssl-3.4.0-incompatible-tests.patch @@ -48,6 +50,13 @@ + + 2025-01-04 + 23.4.0 + Version bump. + Pisi Linux Community + admin@pisilinux.org + 2024-12-19 22.7.0