script: Check whether the generated crypto key has empty usages (#39328)

The WebCryptoAPI spec requires that when we generate crypto keys by the
generateKey method of SubtleCrypto interface we have to check whether
the usages is empty. If the usages is empty, throw a SyntaxError.

FYI, Step 9 of
https://w3c.github.io/webcrypto/#SubtleCrypto-method-generateKey

We have not yet implemented this logic, and this patch implements it.

Testing: Pass WPT tests that were expected to fail.

---------

Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
This commit is contained in:
Kingsley Yung 2025-09-17 01:23:42 +08:00 committed by GitHub
parent 7b755471c7
commit f3d5617349
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 69 additions and 108 deletions

View file

@ -1,98 +0,0 @@
[failures_HMAC.https.any.worker.html]
[Empty usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, false, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, false, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, false, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, false, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-1, name: HMAC}, false, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-1, name: HMAC}, true, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-256, name: HMAC}, false, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-256, name: HMAC}, true, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-384, name: HMAC}, false, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-384, name: HMAC}, true, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-512, name: HMAC}, false, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-512, name: HMAC}, true, [\])]
expected: FAIL
[failures_HMAC.https.any.html]
[Empty usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, false, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, false, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, false, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, false, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-1, name: HMAC}, false, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-1, name: HMAC}, true, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-256, name: HMAC}, false, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-256, name: HMAC}, true, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-384, name: HMAC}, false, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-384, name: HMAC}, true, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-512, name: HMAC}, false, [\])]
expected: FAIL
[Empty usages: generateKey({hash: SHA-512, name: HMAC}, true, [\])]
expected: FAIL