From f0d870501ed240f550b2be6b0a138312fb6f4a30 Mon Sep 17 00:00:00 2001 From: Fedor Indutny Date: Mon, 10 Mar 2014 14:59:18 +0400 Subject: [PATCH] crypto: do not lowercase cipher/hash names `crypto.getCiphers()` and `crypto.getHashes()` should prefer lower-case variants of names, but should not introduce them. fix #7282 --- lib/crypto.js | 11 ++++++++--- test/simple/test-crypto.js | 2 ++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/crypto.js b/lib/crypto.js index 22141ff..d1c9eb5 100644 --- a/lib/crypto.js +++ b/lib/crypto.js @@ -608,8 +608,13 @@ function filterDuplicates(names) { // for example, 'sha1' instead of 'SHA1'. var ctx = {}; names.forEach(function(name) { - if (/^[0-9A-Z\-]+$/.test(name)) name = name.toLowerCase(); - ctx[name] = true; + var key = name; + if (/^[0-9A-Z\-]+$/.test(key)) key = key.toLowerCase(); + if (!ctx.hasOwnProperty(key) || ctx[key] < name) + ctx[key] = name; }); - return Object.getOwnPropertyNames(ctx).sort(); + + return Object.getOwnPropertyNames(ctx).map(function(key) { + return ctx[key]; + }).sort(); } diff --git a/test/simple/test-crypto.js b/test/simple/test-crypto.js index 96a269f..25bb359 100644 --- a/test/simple/test-crypto.js +++ b/test/simple/test-crypto.js @@ -867,6 +867,8 @@ assert.notEqual(-1, crypto.getHashes().indexOf('sha1')); assert.notEqual(-1, crypto.getHashes().indexOf('sha')); assert.equal(-1, crypto.getHashes().indexOf('SHA1')); assert.equal(-1, crypto.getHashes().indexOf('SHA')); +assert.notEqual(-1, crypto.getHashes().indexOf('RSA-SHA1')); +assert.equal(-1, crypto.getHashes().indexOf('rsa-sha1')); assertSorted(crypto.getHashes()); // Base64 padding regression test, see #4837. -- 2.7.4