1'use strict'; 2 3const common = require('../common'); 4if (!common.hasCrypto) 5 common.skip('missing crypto'); 6 7const { 8 getCiphers, 9 getCipherInfo 10} = require('crypto'); 11 12const assert = require('assert'); 13 14const ciphers = getCiphers(); 15 16assert.strictEqual(getCipherInfo(-1), undefined); 17assert.strictEqual(getCipherInfo('cipher that does not exist'), undefined); 18 19ciphers.forEach((cipher) => { 20 const info = getCipherInfo(cipher); 21 assert(info); 22 const info2 = getCipherInfo(info.nid); 23 assert.deepStrictEqual(info, info2); 24}); 25 26const info = getCipherInfo('aes-128-cbc'); 27assert.strictEqual(info.name, 'aes-128-cbc'); 28assert.strictEqual(info.nid, 419); 29assert.strictEqual(info.blockSize, 16); 30assert.strictEqual(info.ivLength, 16); 31assert.strictEqual(info.keyLength, 16); 32assert.strictEqual(info.mode, 'cbc'); 33 34[null, undefined, [], {}].forEach((arg) => { 35 assert.throws(() => getCipherInfo(arg), { 36 code: 'ERR_INVALID_ARG_TYPE' 37 }); 38}); 39 40[null, '', 1, true].forEach((options) => { 41 assert.throws( 42 () => getCipherInfo('aes-192-cbc', options), { 43 code: 'ERR_INVALID_ARG_TYPE' 44 }); 45}); 46 47[null, '', {}, [], true].forEach((len) => { 48 assert.throws( 49 () => getCipherInfo('aes-192-cbc', { keyLength: len }), { 50 code: 'ERR_INVALID_ARG_TYPE' 51 }); 52 assert.throws( 53 () => getCipherInfo('aes-192-cbc', { ivLength: len }), { 54 code: 'ERR_INVALID_ARG_TYPE' 55 }); 56}); 57 58assert(!getCipherInfo('aes-128-cbc', { keyLength: 12 })); 59assert(getCipherInfo('aes-128-cbc', { keyLength: 16 })); 60assert(!getCipherInfo('aes-128-cbc', { ivLength: 12 })); 61assert(getCipherInfo('aes-128-cbc', { ivLength: 16 })); 62 63assert(!getCipherInfo('aes-128-ccm', { ivLength: 1 })); 64assert(!getCipherInfo('aes-128-ccm', { ivLength: 14 })); 65for (let n = 7; n <= 13; n++) 66 assert(getCipherInfo('aes-128-ccm', { ivLength: n })); 67 68assert(!getCipherInfo('aes-128-ocb', { ivLength: 16 })); 69for (let n = 1; n < 16; n++) 70 assert(getCipherInfo('aes-128-ocb', { ivLength: n })); 71