1'use strict'; 2const common = require('../common'); 3if (!common.hasCrypto) 4 common.skip('missing crypto'); 5 6const assert = require('assert'); 7const tls = require('tls'); 8 9assert.throws(function() { 10 tls.createSecureContext({ secureProtocol: 'blargh' }); 11}, { 12 code: 'ERR_TLS_INVALID_PROTOCOL_METHOD', 13 message: 'Unknown method: blargh', 14}); 15 16const errMessageSSLv2 = /SSLv2 methods disabled/; 17 18assert.throws(function() { 19 tls.createSecureContext({ secureProtocol: 'SSLv2_method' }); 20}, errMessageSSLv2); 21 22assert.throws(function() { 23 tls.createSecureContext({ secureProtocol: 'SSLv2_client_method' }); 24}, errMessageSSLv2); 25 26assert.throws(function() { 27 tls.createSecureContext({ secureProtocol: 'SSLv2_server_method' }); 28}, errMessageSSLv2); 29 30const errMessageSSLv3 = /SSLv3 methods disabled/; 31 32assert.throws(function() { 33 tls.createSecureContext({ secureProtocol: 'SSLv3_method' }); 34}, errMessageSSLv3); 35 36assert.throws(function() { 37 tls.createSecureContext({ secureProtocol: 'SSLv3_client_method' }); 38}, errMessageSSLv3); 39 40assert.throws(function() { 41 tls.createSecureContext({ secureProtocol: 'SSLv3_server_method' }); 42}, errMessageSSLv3); 43 44// Note that SSLv2 and SSLv3 are disallowed but SSLv2_method and friends are 45// still accepted. They are OpenSSL's way of saying that all known protocols 46// are supported unless explicitly disabled (which we do for SSLv2 and SSLv3.) 47tls.createSecureContext({ secureProtocol: 'SSLv23_method' }); 48tls.createSecureContext({ secureProtocol: 'SSLv23_client_method' }); 49tls.createSecureContext({ secureProtocol: 'SSLv23_server_method' }); 50tls.createSecureContext({ secureProtocol: 'TLSv1_method' }); 51tls.createSecureContext({ secureProtocol: 'TLSv1_client_method' }); 52tls.createSecureContext({ secureProtocol: 'TLSv1_server_method' }); 53tls.createSecureContext({ secureProtocol: 'TLSv1_1_method' }); 54tls.createSecureContext({ secureProtocol: 'TLSv1_1_client_method' }); 55tls.createSecureContext({ secureProtocol: 'TLSv1_1_server_method' }); 56tls.createSecureContext({ secureProtocol: 'TLSv1_2_method' }); 57tls.createSecureContext({ secureProtocol: 'TLSv1_2_client_method' }); 58tls.createSecureContext({ secureProtocol: 'TLSv1_2_server_method' }); 59