GeezerVison is showing github.com — crypto: fix webcrypto generateKey() AES key length validation error · nodejs/node@a60ae67
File treeExpand file treeCollapse file tree Open diff view settings Expand file treeCollapse file tree Open diff view settings Collapse file Copy file name to clipboardExpand all lines: lib/internal/crypto/aes.js +5-7Lines changed: 5 additions & 7 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -60,11 +60,6 @@ const { | 60 | 60 | generateKey: _generateKey, | 61 | 61 | } = require('internal/crypto/keygen'); | 62 | 62 |
| 63 | | -const { | 64 | | - validateInteger, | 65 | | - validateOneOf, | 66 | | -} = require('internal/validators'); | 67 | | - | 68 | 63 | const kMaxCounterLength = 128; | 69 | 64 | const kTagLengths = [32, 64, 96, 104, 112, 120, 128]; | 70 | 65 | const generateKey = promisify(_generateKey); | @@ -228,8 +223,11 @@ function aesCipher(mode, key, data, algorithm) { | 228 | 223 |
| 229 | 224 | async function aesGenerateKey(algorithm, extractable, keyUsages) { | 230 | 225 | const { name, length } = algorithm; | 231 | | - validateInteger(length, 'algorithm.length'); | 232 | | - validateOneOf(length, 'algorithm.length', kAesKeyLengths); | | 226 | + if (!ArrayPrototypeIncludes(kAesKeyLengths, length)) { | | 227 | + throw lazyDOMException( | | 228 | + 'AES key length must be 128, 192, or 256 bits', | | 229 | + 'OperationError'); | | 230 | + } | 233 | 231 |
| 234 | 232 | const checkUsages = ['wrapKey', 'unwrapKey']; | 235 | 233 | if (name !== 'AES-KW') | |
Collapse file Copy file name to clipboardExpand all lines: test/parallel/test-webcrypto-keygen.js +2-2Lines changed: 2 additions & 2 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -512,14 +512,14 @@ const vectors = { | 512 | 512 | [1, 100, 257].forEach(async (length) => { | 513 | 513 | await assert.rejects( | 514 | 514 | subtle.generateKey({ name, length }, true, usages), { | 515 | | - code: 'ERR_INVALID_ARG_VALUE' | | 515 | + name: 'OperationError' | 516 | 516 | }); | 517 | 517 | }); | 518 | 518 |
| 519 | 519 | ['', {}, [], false, null, undefined].forEach(async (length) => { | 520 | 520 | await assert.rejects( | 521 | 521 | subtle.generateKey({ name, length }, true, usages), { | 522 | | - code: 'ERR_INVALID_ARG_TYPE' | | 522 | + name: 'OperationError', | 523 | 523 | }); | 524 | 524 | }); | 525 | 525 | } | |
|