mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
6ba0af1354
PR-URL: https://github.com/nodejs/node/pull/53636 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Tim Perry <pimterry@gmail.com>
57 lines
1.5 KiB
JavaScript
57 lines
1.5 KiB
JavaScript
'use strict';
|
|
const common = require('../common');
|
|
|
|
if (!common.hasCrypto)
|
|
common.skip('missing crypto');
|
|
|
|
const assert = require('assert');
|
|
const { X509Certificate } = require('crypto');
|
|
const tls = require('tls');
|
|
const fixtures = require('../common/fixtures');
|
|
|
|
const altKeyCert = {
|
|
key: fixtures.readKey('agent2-key.pem'),
|
|
cert: fixtures.readKey('agent2-cert.pem'),
|
|
minVersion: 'TLSv1.2',
|
|
};
|
|
|
|
const altKeyCertVals = [
|
|
altKeyCert,
|
|
tls.createSecureContext(altKeyCert),
|
|
];
|
|
|
|
(function next() {
|
|
if (!altKeyCertVals.length)
|
|
return;
|
|
const altKeyCertVal = altKeyCertVals.shift();
|
|
const options = {
|
|
key: fixtures.readKey('agent1-key.pem'),
|
|
cert: fixtures.readKey('agent1-cert.pem'),
|
|
minVersion: 'TLSv1.3',
|
|
ALPNCallback: common.mustCall(function({ servername, protocols }) {
|
|
this.setKeyCert(altKeyCertVal);
|
|
assert.deepStrictEqual(protocols, ['acme-tls/1']);
|
|
return protocols[0];
|
|
}),
|
|
};
|
|
|
|
tls.createServer(options, (s) => s.end()).listen(0, function() {
|
|
this.on('connection', common.mustCall((socket) => this.close()));
|
|
|
|
tls.connect({
|
|
port: this.address().port,
|
|
rejectUnauthorized: false,
|
|
ALPNProtocols: ['acme-tls/1'],
|
|
}, common.mustCall(function() {
|
|
assert.strictEqual(this.getProtocol(), 'TLSv1.3');
|
|
const altCert = new X509Certificate(altKeyCert.cert);
|
|
assert.strictEqual(
|
|
this.getPeerX509Certificate().raw.equals(altCert.raw),
|
|
true
|
|
);
|
|
this.end();
|
|
next();
|
|
}));
|
|
});
|
|
})();
|