This repository has been archived by the owner. It is now read-only.
Permalink
Browse files

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
  • Loading branch information...
indutny committed Mar 10, 2014
1 parent 6bd78fd commit f0d870501ed240f550b2be6b0a138312fb6f4a30
Showing with 10 additions and 3 deletions.
  1. +8 −3 lib/crypto.js
  2. +2 −0 test/simple/test-crypto.js
View
@@ -608,8 +608,13 @@ function filterDuplicates(names) {
// for example, 'sha1' instead of 'SHA1'.

This comment has been minimized.

Show comment Hide comment
@bnoordhuis

bnoordhuis Mar 11, 2014

Member

You forgot to update the comment.

@bnoordhuis

bnoordhuis Mar 11, 2014

Member

You forgot to update the comment.

This comment has been minimized.

Show comment Hide comment
@indutny

indutny Mar 11, 2014

Member

Why? I think it is correct, but the code wasn't :)

@indutny

indutny Mar 11, 2014

Member

Why? I think it is correct, but the code wasn't :)

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();
}
@@ -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.

0 comments on commit f0d8705

Please sign in to comment.