Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 5ed5474

Browse filesBrowse files
nodejs-github-botaduh95
authored andcommitted
test: update WPT for WebCryptoAPI to 2cb332d710
PR-URL: #62483 Reviewed-By: Filip Skokan <panva.ip@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Daijiro Wachi <daijiro.wachi@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
1 parent cc19728 commit 5ed5474
Copy full SHA for 5ed5474

3 files changed

+74-2Lines changed: 74 additions & 2 deletions

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎test/fixtures/wpt/README.md‎

Copy file name to clipboardExpand all lines: test/fixtures/wpt/README.md
+1-1Lines changed: 1 addition & 1 deletion
  • Display the source diff
  • Display the rich diff
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ Last update:
3434
- wasm/jsapi: https://github.com/web-platform-tests/wpt/tree/cde25e7e3c/wasm/jsapi
3535
- wasm/webapi: https://github.com/web-platform-tests/wpt/tree/fd1b23eeaa/wasm/webapi
3636
- web-locks: https://github.com/web-platform-tests/wpt/tree/10a122a6bc/web-locks
37-
- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/6a1c545d77/WebCryptoAPI
37+
- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/2cb332d710/WebCryptoAPI
3838
- webidl/ecmascript-binding/es-exceptions: https://github.com/web-platform-tests/wpt/tree/2f96fa1996/webidl/ecmascript-binding/es-exceptions
3939
- webmessaging/broadcastchannel: https://github.com/web-platform-tests/wpt/tree/6495c91853/webmessaging/broadcastchannel
4040
- webstorage: https://github.com/web-platform-tests/wpt/tree/1d2c5fb36a/webstorage
Collapse file
+72Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
// META: title=WebCryptoAPI: raw-secret and raw-public importKey() format aliases
2+
// META: timeout=long
3+
// META: script=../util/helpers.js
4+
5+
// For all existing symmetric algorithms in WebCrypto, "raw-secret" acts as an
6+
// alias of "raw". For all existing asymmetric algorithms in WebCrypto,
7+
// "raw-public" acts as an alias of "raw".
8+
9+
"use strict";
10+
11+
const rawKeyData16 = crypto.getRandomValues(new Uint8Array(16));
12+
const rawKeyData32 = crypto.getRandomValues(new Uint8Array(32));
13+
const wrapAlgorithm = { name: "AES-GCM", iv: new Uint8Array(12) };
14+
15+
const symmetricAlgorithms = [
16+
{ algorithm: { name: "AES-CTR", length: 128 }, keyData: rawKeyData16, usages: ["encrypt", "decrypt"] },
17+
{ algorithm: { name: "AES-CBC", length: 128 }, keyData: rawKeyData16, usages: ["encrypt", "decrypt"] },
18+
{ algorithm: { name: "AES-GCM", length: 128 }, keyData: rawKeyData16, usages: ["encrypt", "decrypt"] },
19+
{ algorithm: { name: "AES-KW", length: 128 }, keyData: rawKeyData16, usages: ["wrapKey", "unwrapKey"] },
20+
{ algorithm: { name: "HMAC", hash: "SHA-256", length: 256 }, keyData: rawKeyData32, usages: ["sign", "verify"] },
21+
{ algorithm: { name: "HKDF" }, keyData: rawKeyData32, usages: ["deriveBits", "deriveKey"], extractable: false },
22+
{ algorithm: { name: "PBKDF2" }, keyData: rawKeyData32, usages: ["deriveBits", "deriveKey"], extractable: false },
23+
];
24+
25+
for (const { algorithm, keyData, usages, extractable = true } of symmetricAlgorithms) {
26+
promise_test(async () => {
27+
const key = await crypto.subtle.importKey("raw-secret", keyData, algorithm, extractable, usages);
28+
assert_goodCryptoKey(key, algorithm, extractable, usages, "secret");
29+
if (extractable) {
30+
await crypto.subtle.exportKey("raw-secret", key);
31+
}
32+
}, `importKey/exportKey with raw-secret: ${algorithm.name}`);
33+
34+
if (extractable) {
35+
promise_test(async () => {
36+
const wrappingKey = await crypto.subtle.generateKey({ name: "AES-GCM", length: 256 }, false, ["wrapKey", "unwrapKey"]);
37+
const key = await crypto.subtle.importKey("raw-secret", keyData, algorithm, true, usages);
38+
const wrapped = await crypto.subtle.wrapKey("raw-secret", key, wrappingKey, wrapAlgorithm);
39+
const unwrapped = await crypto.subtle.unwrapKey("raw-secret", wrapped, wrappingKey, wrapAlgorithm, algorithm, true, usages);
40+
assert_goodCryptoKey(unwrapped, algorithm, true, usages, "secret");
41+
}, `wrapKey/unwrapKey with raw-secret: ${algorithm.name}`);
42+
}
43+
}
44+
45+
const asymmetricAlgorithms = [
46+
{ algorithm: { name: "ECDSA", namedCurve: "P-256" }, usages: ["verify"] },
47+
{ algorithm: { name: "ECDH", namedCurve: "P-256" }, usages: [] },
48+
{ algorithm: { name: "Ed25519" }, usages: ["verify"] },
49+
{ algorithm: { name: "X25519" }, usages: [] },
50+
];
51+
52+
for (const { algorithm, usages } of asymmetricAlgorithms) {
53+
const generateKeyUsages = usages.length ? usages.concat("sign") : ["deriveBits"];
54+
55+
promise_test(async () => {
56+
const keyPair = await crypto.subtle.generateKey(algorithm, true, generateKeyUsages);
57+
const keyData = await crypto.subtle.exportKey("raw-public", keyPair.publicKey);
58+
59+
const key = await crypto.subtle.importKey("raw-public", keyData, algorithm, true, usages);
60+
assert_goodCryptoKey(key, algorithm, true, usages, "public");
61+
await crypto.subtle.exportKey("raw-public", key);
62+
}, `importKey/exportKey with raw-public: ${algorithm.name}`);
63+
64+
promise_test(async () => {
65+
const keyPair = await crypto.subtle.generateKey(algorithm, true, generateKeyUsages);
66+
67+
const wrappingKey = await crypto.subtle.generateKey({ name: "AES-GCM", length: 256 }, false, ["wrapKey", "unwrapKey"]);
68+
const wrapped = await crypto.subtle.wrapKey("raw-public", keyPair.publicKey, wrappingKey, wrapAlgorithm);
69+
const unwrapped = await crypto.subtle.unwrapKey("raw-public", wrapped, wrappingKey, wrapAlgorithm, algorithm, true, usages);
70+
assert_goodCryptoKey(unwrapped, algorithm, true, usages, "public");
71+
}, `wrapKey/unwrapKey with raw-public: ${algorithm.name}`);
72+
}
Collapse file

‎test/fixtures/wpt/versions.json‎

Copy file name to clipboardExpand all lines: test/fixtures/wpt/versions.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@
9696
"path": "web-locks"
9797
},
9898
"WebCryptoAPI": {
99-
"commit": "6a1c545d778f115c84a1c27c25484afd442b89d8",
99+
"commit": "2cb332d71030ba0200610d72b94bb1badf447418",
100100
"path": "WebCryptoAPI"
101101
},
102102
"webidl/ecmascript-binding/es-exceptions": {

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.