Browse Source

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
v0.10.27-release
Fedor Indutny 11 years ago
parent
commit
f0d870501e
  1. 11
      lib/crypto.js
  2. 2
      test/simple/test-crypto.js

11
lib/crypto.js

@ -608,8 +608,13 @@ function filterDuplicates(names) {
// for example, 'sha1' instead of 'SHA1'. // for example, 'sha1' instead of 'SHA1'.
var ctx = {}; var ctx = {};
names.forEach(function(name) { names.forEach(function(name) {
if (/^[0-9A-Z\-]+$/.test(name)) name = name.toLowerCase(); var key = name;
ctx[name] = true; 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();
} }

2
test/simple/test-crypto.js

@ -867,6 +867,8 @@ assert.notEqual(-1, crypto.getHashes().indexOf('sha1'));
assert.notEqual(-1, crypto.getHashes().indexOf('sha')); assert.notEqual(-1, crypto.getHashes().indexOf('sha'));
assert.equal(-1, crypto.getHashes().indexOf('SHA1')); assert.equal(-1, crypto.getHashes().indexOf('SHA1'));
assert.equal(-1, crypto.getHashes().indexOf('SHA')); 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()); assertSorted(crypto.getHashes());
// Base64 padding regression test, see #4837. // Base64 padding regression test, see #4837.

Loading…
Cancel
Save