1'use strict'; 2 3const common = require('../common'); 4 5if (!common.hasCrypto) 6 common.skip('missing crypto'); 7 8const https = require('https'); 9const tls = require('tls'); 10 11const kMessage = 12 'GET / HTTP/1.1\r\nHost: localhost\r\nConnection: Keep-alive\r\n\r\n'; 13 14const key = `-----BEGIN EC PARAMETERS----- 15BggqhkjOPQMBBw== 16-----END EC PARAMETERS----- 17-----BEGIN EC PRIVATE KEY----- 18MHcCAQEEIDKfHHbiJMdu2STyHL11fWC7psMY19/gUNpsUpkwgGACoAoGCCqGSM49 19AwEHoUQDQgAEItqm+pYj3Ca8bi5mBs+H8xSMxuW2JNn4I+kw3aREsetLk8pn3o81 20PWBiTdSZrGBGQSy+UAlQvYeE6Z/QXQk8aw== 21-----END EC PRIVATE KEY-----`; 22 23const cert = `-----BEGIN CERTIFICATE----- 24MIIBhjCCASsCFDJU1tCo88NYU//pE+DQKO9hUDsFMAoGCCqGSM49BAMCMEUxCzAJ 25BgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5l 26dCBXaWRnaXRzIFB0eSBMdGQwHhcNMjAwOTIyMDg1NDU5WhcNNDgwMjA3MDg1NDU5 27WjBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwY 28SW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD 29QgAEItqm+pYj3Ca8bi5mBs+H8xSMxuW2JNn4I+kw3aREsetLk8pn3o81PWBiTdSZ 30rGBGQSy+UAlQvYeE6Z/QXQk8azAKBggqhkjOPQQDAgNJADBGAiEA7Bdn4F87KqIe 31Y/ABy/XIXXpFUb2nyv3zV7POQi2lPcECIQC3UWLmfiedpiIKsf9YRIyO0uEood7+ 32glj2R1NNr1X68w== 33-----END CERTIFICATE-----`; 34 35const server = https.createServer( 36 { key, cert }, 37 common.mustCall((req, res) => { 38 res.writeHead(200); 39 res.end('boom goes the dynamite\n'); 40 }, 3)); 41 42server.listen(0, common.mustCall(() => { 43 const socket = 44 tls.connect( 45 server.address().port, 46 'localhost', 47 { rejectUnauthorized: false }, 48 common.mustCall(() => { 49 socket.write(kMessage); 50 socket.write(kMessage); 51 socket.write(kMessage); 52 })); 53 54 socket.on('data', common.mustCall(() => socket.destroy())); 55 socket.on('close', () => { 56 setImmediate(() => server.close()); 57 }); 58})); 59