const hasOpenSSL31 = hasCrypto &&
require('crypto').constants.OPENSSL_VERSION_NUMBER >= 0x30100000;
+const hasOpenSSL32 = hasCrypto &&
+ require('crypto').constants.OPENSSL_VERSION_NUMBER >= 0x30200000;
+
const hasQuic = hasCrypto && !!process.config.variables.openssl_quic;
function parseTestFlags(filename = process.argv[1]) {
hasCrypto,
hasOpenSSL3,
hasOpenSSL31,
+ hasOpenSSL32,
hasQuic,
hasMultiLocalhost,
invalidArgTypeHelper,
}, bufferToEncrypt);
- if (padding === constants.RSA_PKCS1_PADDING) {
+ if (padding === constants.RSA_PKCS1_PADDING && !common.hasOpenSSL32) {
if (!process.config.variables.node_shared_openssl) {
assert.throws(() => {
crypto.privateDecrypt({
let iter = 0;
const errorHandler = common.mustCall((err) => {
- assert.strictEqual(err.code, 'ERR_SSL_WRONG_VERSION_NUMBER');
+ assert.strictEqual(err.code, common.hasOpenSSL32 ? 'ERR_SSL_PACKET_LENGTH_TOO_LONG' : 'ERR_SSL_WRONG_VERSION_NUMBER');
assert.strictEqual(err.library, 'SSL routines');
if (!common.hasOpenSSL3) assert.strictEqual(err.function, 'ssl3_get_record');
- assert.strictEqual(err.reason, 'wrong version number');
+ assert.strictEqual(err.reason, common.hasOpenSSL32 ? 'packet length too long' : 'wrong version number');
errorReceived = true;
if (canCloseServer())
server.close();
});
}));
client.on('error', common.mustCall((err) => {
- assert.strictEqual(err.code, 'ERR_SSL_TLSV1_ALERT_PROTOCOL_VERSION');
+ assert.strictEqual(err.code, common.hasOpenSSL32 ? 'ERR_SSL_TLSV1_ALERT_RECORD_OVERFLOW' : 'ERR_SSL_TLSV1_ALERT_PROTOCOL_VERSION');
assert.strictEqual(err.library, 'SSL routines');
if (!common.hasOpenSSL3)
assert.strictEqual(err.function, 'ssl3_read_bytes');
- assert.strictEqual(err.reason, 'tlsv1 alert protocol version');
+ assert.strictEqual(err.reason, common.hasOpenSSL32 ? 'tlsv1 alert record overflow' : 'tlsv1 alert protocol version');
}));
}
assert.strictEqual(pair.server.err.code,
'ERR_SSL_PEER_DID_NOT_RETURN_A_CERTIFICATE');
assert.strictEqual(pair.client.err.code,
- 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE');
+ common.hasOpenSSL32 ? 'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE' : 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE');
return cleanup();
});
}, common.mustNotCall());
c.on('error', common.mustCall((err) => {
- assert.strictEqual(err.code, 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE');
+ assert.strictEqual(err.code, common.hasOpenSSL32 ? 'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE' : 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE');
}));
}));
assert.strictEqual(signal, null);
assert.strictEqual(stdout.trim(), '');
assert.match(stderr, /Warning: Enabling --trace-tls can expose sensitive/);
- assert.match(stderr, /Sent Record/);
+ assert.match(stderr, /Sent (TLS )?Record/);
}));
function test() {
child.stderr.setEncoding('utf8');
child.stderr.on('data', (data) => stderr += data);
child.on('close', common.mustCall(() => {
- assert.match(stderr, /Received Record/);
+ assert.match(stderr, /Received (TLS )?Record/);
assert.match(stderr, /ClientHello/);
}));
if (!common.hasCrypto)
common.skip('missing crypto');
+if (common.hasOpenSSL32)
+ common.skip('test not compatible with openssl 3.2')
+
const assert = require('assert');
const tls = require('tls');
// Import fixtures directly from its module
if (!common.hasCrypto)
common.skip('missing crypto');
+if (common.hasOpenSSL32)
+ common.skip('openssl 3.2 does not throw');
+
const tls = require('tls');
const net = require('net');
req.end();
req.once('error', common.mustCall(function(err) {
- assert(/wrong version number/.test(err.message));
+ assert(/packet length too long/.test(err.message));
server.close();
}));
});
test({ psk: USERS.UserB, identity: 'UserB' }, { minVersion: 'TLSv1.3' });
// Unrecognized user should fail handshake
test({ psk: USERS.UserB, identity: 'UserC' }, {},
- 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE');
+ common.hasOpenSSL32 ? 'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE' : 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE');
// Recognized user but incorrect secret should fail handshake
test({ psk: USERS.UserA, identity: 'UserB' }, {},
- 'ERR_SSL_SSLV3_ALERT_ILLEGAL_PARAMETER');
+ common.hasOpenSSL32 ? 'ERR_SSL_SSL/TLS_ALERT_ILLEGAL_PARAMETER' : 'ERR_SSL_SSLV3_ALERT_ILLEGAL_PARAMETER');
test({ psk: USERS.UserB, identity: 'UserB' });
if (!common.hasOpenSSL3)
common.skip('missing crypto, or OpenSSL version lower than 3');
+if (common.hasOpenSSL32)
+ common.skip('openssl 3.2 does not support those ciphers - FIXME');
+
const fixtures = require('../common/fixtures');
const { inspect } = require('util');
// Do not have shared ciphers.
test('TLS_AES_256_GCM_SHA384', 'TLS_CHACHA20_POLY1305_SHA256',
- U, 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE', 'ERR_SSL_NO_SHARED_CIPHER');
+ U, common.hasOpenSSL32 ? 'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE' : 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE', 'ERR_SSL_NO_SHARED_CIPHER');
-test('AES128-SHA', 'AES256-SHA', U, 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE',
+test('AES128-SHA', 'AES256-SHA', U, common.hasOpenSSL32 ? 'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE' : 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE',
'ERR_SSL_NO_SHARED_CIPHER');
test('AES128-SHA:TLS_AES_256_GCM_SHA384',
'TLS_CHACHA20_POLY1305_SHA256:AES256-SHA',
- U, 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE', 'ERR_SSL_NO_SHARED_CIPHER');
+ U, common.hasOpenSSL32 ? 'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE' : 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE', 'ERR_SSL_NO_SHARED_CIPHER');
// Cipher order ignored, TLS1.3 chosen before TLS1.2.
test('AES256-SHA:TLS_AES_256_GCM_SHA384', U, 'TLS_AES_256_GCM_SHA384');
// TLS_AES_128_CCM_8_SHA256 & TLS_AES_128_CCM_SHA256 are not enabled by
// default, but work.
test('TLS_AES_128_CCM_8_SHA256', U,
- U, 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE', 'ERR_SSL_NO_SHARED_CIPHER');
+ U, common.hasOpenSSL32 ? 'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE' : 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE', 'ERR_SSL_NO_SHARED_CIPHER');
test('TLS_AES_128_CCM_8_SHA256', 'TLS_AES_128_CCM_8_SHA256',
'TLS_AES_128_CCM_8_SHA256');
# https://github.com/nodejs/node/issues/47409
test-http2-large-file: PASS, FLAKY
+# fails on arm64, armhf, loong64 since openssl32
+test-tls-session-timeout: PASS, FLAKY
+
[$system==win32]
# https://github.com/nodejs/node/issues/47116
test-http-max-sockets: PASS, FLAKY