Browse Source

lib: refactor crypto cipher/hash/curve getters

* refactor internal util.filterDuplicateStrings() to eliminate unused
  code paths
* `.indexOf()` -> `.includes()` in test
* more concise arrow functions

PR-URL: https://github.com/nodejs/node/pull/10682
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Michal Zasso <targos@protonmail.com>
v6
Rich Trott 8 years ago
committed by James M Snell
parent
commit
022b53c9de
  1. 18
      lib/crypto.js
  2. 10
      lib/internal/util.js
  3. 2
      test/parallel/test-crypto-authenticated.js

18
lib/crypto.js

@ -637,17 +637,17 @@ exports.randomBytes = exports.pseudoRandomBytes = randomBytes;
exports.rng = exports.prng = randomBytes;
exports.getCiphers = internalUtil.cachedResult(() => {
return internalUtil.filterDuplicateStrings(getCiphers());
});
exports.getCiphers = internalUtil.cachedResult(
() => internalUtil.filterDuplicateStrings(getCiphers())
);
exports.getHashes = internalUtil.cachedResult(() => {
return internalUtil.filterDuplicateStrings(getHashes());
});
exports.getHashes = internalUtil.cachedResult(
() => internalUtil.filterDuplicateStrings(getHashes())
);
exports.getCurves = internalUtil.cachedResult(() => {
return internalUtil.filterDuplicateStrings(getCurves());
});
exports.getCurves = internalUtil.cachedResult(
() => internalUtil.filterDuplicateStrings(getCurves())
);
Object.defineProperty(exports, 'fips', {
get: getFipsCrypto,

10
lib/internal/util.js

@ -134,20 +134,14 @@ exports.normalizeEncoding = function normalizeEncoding(enc) {
// Filters duplicate strings. Used to support functions in crypto and tls
// modules. Implemented specifically to maintain existing behaviors in each.
exports.filterDuplicateStrings = function filterDuplicateStrings(items, low) {
if (!Array.isArray(items))
return [];
const len = items.length;
if (len <= 1)
return items;
const map = new Map();
for (var i = 0; i < len; i++) {
for (var i = 0; i < items.length; i++) {
const item = items[i];
const key = item.toLowerCase();
if (low) {
map.set(key, key);
} else {
if (!map.has(key) || map.get(key) <= item)
map.set(key, item);
map.set(key, item);
}
}
return Array.from(map.values()).sort();

2
test/parallel/test-crypto-authenticated.js

@ -312,7 +312,7 @@ const ciphers = crypto.getCiphers();
for (const i in TEST_CASES) {
const test = TEST_CASES[i];
if (ciphers.indexOf(test.algo) === -1) {
if (!ciphers.includes(test.algo)) {
common.skip('unsupported ' + test.algo + ' test');
continue;
}

Loading…
Cancel
Save