'use strict'; const common = require('../common'); const fixtures = require('../common/fixtures'); if (!common.hasCrypto) common.skip('missing crypto'); // This test ensures that tlsSocket.getFinished() and // tlsSocket.getPeerFinished() return undefined before // secure connection is established, and return non-empty // Buffer objects with Finished messages afterwards, also // verifying alice.getFinished() == bob.getPeerFinished() // and alice.getPeerFinished() == bob.getFinished(). const assert = require('assert'); const tls = require('tls'); const msg = {}; const pem = (n) => fixtures.readKey(`${n}.pem`); const server = tls.createServer({ key: pem('agent1-key'), cert: pem('agent1-cert') }, common.mustCall((alice) => { msg.server = { alice: alice.getFinished(), bob: alice.getPeerFinished() }; server.close(); })); server.listen(0, common.mustCall(() => { const bob = tls.connect({ port: server.address().port, rejectUnauthorized: false }, common.mustCall(() => { msg.client = { alice: bob.getPeerFinished(), bob: bob.getFinished() }; bob.end(); })); msg.before = { alice: bob.getPeerFinished(), bob: bob.getFinished() }; })); process.on('exit', () => { assert.strictEqual(undefined, msg.before.alice); assert.strictEqual(undefined, msg.before.bob); assert(Buffer.isBuffer(msg.server.alice)); assert(Buffer.isBuffer(msg.server.bob)); assert(Buffer.isBuffer(msg.client.alice)); assert(Buffer.isBuffer(msg.client.bob)); assert(msg.server.alice.length > 0); assert(msg.server.bob.length > 0); assert(msg.client.alice.length > 0); assert(msg.client.bob.length > 0); assert(msg.server.alice.equals(msg.client.alice)); assert(msg.server.bob.equals(msg.client.bob)); });