GeezerVison is showing github.com — crypto: fix Argon2 validation errors · nodejs/node@c36bb1d
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/argon2.js +2-2Lines changed: 2 additions & 2 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -169,15 +169,15 @@ function check(algorithm, parameters) { | 169 | 169 | if (parameters.secret === undefined) { | 170 | 170 | secret = new Uint8Array(0); | 171 | 171 | } else { | 172 | | - secret = getArrayBufferOrView(parameters.secret); | | 172 | + secret = getArrayBufferOrView(parameters.secret, 'parameters.secret'); | 173 | 173 | validateInteger(secret.byteLength, 'parameters.secret.byteLength', 0, MAX_POSITIVE_UINT_32); | 174 | 174 | } | 175 | 175 |
| 176 | 176 | let associatedData; | 177 | 177 | if (parameters.associatedData === undefined) { | 178 | 178 | associatedData = new Uint8Array(0); | 179 | 179 | } else { | 180 | | - associatedData = getArrayBufferOrView(parameters.associatedData); | | 180 | + associatedData = getArrayBufferOrView(parameters.associatedData, 'parameters.associatedData'); | 181 | 181 | validateInteger(associatedData.byteLength, 'parameters.associatedData.byteLength', 0, MAX_POSITIVE_UINT_32); | 182 | 182 | } | 183 | 183 |
| |
Collapse file Copy file name to clipboardExpand all lines: test/parallel/test-crypto-argon2.js +12Lines changed: 12 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -140,6 +140,18 @@ for (const key of Object.keys(defaults)) { | 140 | 140 | assert.throws(() => crypto.argon2Sync('argon2id', parameters), expected); | 141 | 141 | } | 142 | 142 |
| | 143 | +for (const key of ['secret', 'associatedData']) { | | 144 | + const expected = { | | 145 | + code: 'ERR_INVALID_ARG_TYPE', | | 146 | + message: new RegExp(`"parameters\\.${key}"`), | | 147 | + }; | | 148 | + for (const value of [123, null, true, {}, []]) { | | 149 | + const parameters = { ...defaults, [key]: value }; | | 150 | + assert.throws(() => crypto.argon2('argon2id', parameters, () => {}), expected); | | 151 | + assert.throws(() => crypto.argon2Sync('argon2id', parameters), expected); | | 152 | + } | | 153 | +} | | 154 | + | 143 | 155 | { | 144 | 156 | const expected = { code: 'ERR_INVALID_ARG_TYPE' }; | 145 | 157 | assert.throws(() => crypto.argon2(), expected); | |
|