Skip to content

Commit 679f191

Browse files
panvatargos
authored andcommitted
crypto: fix webcrypto generateKey() with empty usages
PR-URL: #43431 Reviewed-By: Tobias Nießen <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Antoine du Hamel <[email protected]>
1 parent 64a9dd7 commit 679f191

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

lib/internal/crypto/webcrypto.js

+5
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,11 @@ async function generateKey(
8989
algorithm = normalizeAlgorithm(algorithm);
9090
validateBoolean(extractable, 'extractable');
9191
validateArray(keyUsages, 'keyUsages');
92+
if (keyUsages.length === 0) {
93+
throw lazyDOMException(
94+
'Usages cannot be empty when creating a key',
95+
'SyntaxError');
96+
}
9297
switch (algorithm.name) {
9398
case 'RSASSA-PKCS1-v1_5':
9499
// Fall through

test/parallel/test-webcrypto-keygen.js

+9
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,15 @@ const vectors = {
210210
// Test bad usages
211211
{
212212
async function test(name) {
213+
await assert.rejects(
214+
subtle.generateKey(
215+
{
216+
name, ...vectors[name].algorithm
217+
},
218+
true,
219+
[]),
220+
{ message: /Usages cannot be empty/ });
221+
213222
const invalidUsages = [];
214223
allUsages.forEach((usage) => {
215224
if (!vectors[name].usages.includes(usage))

test/parallel/test-webcrypto-sign-verify-hmac.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ async function testSign({ hash,
153153
}
154154

155155
await assert.rejects(
156-
subtle.generateKey({ name }, false, []), {
156+
subtle.generateKey({ name }, false, ['sign', 'verify']), {
157157
name: 'TypeError',
158158
code: 'ERR_MISSING_OPTION',
159159
message: 'algorithm.hash is required'

0 commit comments

Comments
 (0)