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>
This commit is contained in:
Rich Trott 2017-01-07 20:12:08 -08:00 committed by James M Snell
parent f1253e8627
commit 022b53c9de
3 changed files with 12 additions and 18 deletions

View File

@ -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,

View File

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

View File

@ -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;
}