Permalink
Browse files

tls: use emitWarning() for dhparam < 2048 bits

When a dhparam less than 2048 bits was used, a warning was being
printed directly to console.error using an internalUtil.trace
function that was not used anywhere else. This replaces it with
a proper process warning and removes the internalUtil.trace
function.

PR-URL: #11447
Reviewed-By: Shigeki Ohtsu <ohtsu@iij.ad.jp>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Rod Vagg <rod@vagg.org>
  • Loading branch information...
jasnell committed Feb 17, 2017
1 parent 0510472 commit d523eb9c40889d476f919b523dc3c67b245826c8
Showing with 6 additions and 8 deletions.
  1. +1 −2 lib/_tls_common.js
  2. +0 −5 lib/internal/util.js
  3. +1 −1 src/node_crypto.cc
  4. +4 −0 test/parallel/test-tls-dhe.js
View
@@ -1,6 +1,5 @@
'use strict';
const internalUtil = require('internal/util');
const tls = require('tls');
const SSL_OP_CIPHER_SERVER_PREFERENCE =
@@ -99,7 +98,7 @@ exports.createSecureContext = function createSecureContext(options, context) {
if (options.dhparam) {
const warning = c.context.setDHParam(options.dhparam);
if (warning)
internalUtil.trace(warning);
process.emitWarning(warning, 'SecurityWarning');
}
if (options.crl) {
View
@@ -1,7 +1,6 @@
'use strict';
const binding = process.binding('util');
const prefix = `(${process.release.name}:${process.pid}) `;
const kArrowMessagePrivateSymbolIndex = binding['arrow_message_private_symbol'];
const kDecoratedPrivateSymbolIndex = binding['decorated_private_symbol'];
@@ -10,10 +9,6 @@ const kDecoratedPrivateSymbolIndex = binding['decorated_private_symbol'];
// `util` module makes it accessible without having to `require('util')` there.
exports.customInspectSymbol = Symbol('util.inspect.custom');
exports.trace = function(msg) {
console.trace(`${prefix}${msg}`);
};
// Mark that a method should not be used.
// Returns a modified function which warns once by default.
// If --no-deprecation is set, then it is a no-op.
View
@@ -933,7 +933,7 @@ void SecureContext::SetDHParam(const FunctionCallbackInfo<Value>& args) {
return env->ThrowError("DH parameter is less than 1024 bits");
} else if (size < 2048) {
args.GetReturnValue().Set(FIXED_ONE_BYTE_STRING(
env->isolate(), "WARNING: DH parameter is less than 2048 bits"));
env->isolate(), "DH parameter is less than 2048 bits"));
}
SSL_CTX_set_options(sc->ctx_, SSL_OP_SINGLE_DH_USE);
@@ -1,3 +1,4 @@
// Flags: --no-warnings
'use strict';
const common = require('../common');
const assert = require('assert');
@@ -22,6 +23,9 @@ let nsuccess = 0;
let ntests = 0;
const ciphers = 'DHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
// Test will emit a warning because the DH parameter size is < 2048 bits
common.expectWarning('SecurityWarning',
'DH parameter is less than 2048 bits');
function loadDHParam(n) {
let path = common.fixturesDir;

0 comments on commit d523eb9

Please sign in to comment.