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 8216434

Browse filesBrowse files
panvaruyadorno
authored andcommitted
test,crypto: update WebCryptoAPI WPT
PR-URL: #44223 Reviewed-By: Tobias Nießen <tniessen@tnie.de> Reviewed-By: Feng Yu <F3n67u@outlook.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Akhil Marsonya <akhil.marsonya27@gmail.com> Reviewed-By: LiviaMedeiros <livia@cirno.name>
1 parent a269972 commit 8216434
Copy full SHA for 8216434
Expand file treeCollapse file tree

25 files changed

+1542
-69
lines changed
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
@@ -29,7 +29,7 @@ Last update:
2929
- user-timing: https://github.com/web-platform-tests/wpt/tree/df24fb604e/user-timing
3030
- wasm/jsapi: https://github.com/web-platform-tests/wpt/tree/d8dbe6990b/wasm/jsapi
3131
- wasm/webapi: https://github.com/web-platform-tests/wpt/tree/fd1b23eeaa/wasm/webapi
32-
- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/cdd0f03df4/WebCryptoAPI
32+
- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/edca84af42/WebCryptoAPI
3333
- webidl/ecmascript-binding/es-exceptions: https://github.com/web-platform-tests/wpt/tree/a370aad338/webidl/ecmascript-binding/es-exceptions
3434

3535
[Web Platform Tests]: https://github.com/web-platform-tests/wpt
Collapse file
+213Lines changed: 213 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
// META: title=WebCryptoAPI: Properties discard the context in algorithm normalization
2+
3+
let nextTest = 0;
4+
let tests = {};
5+
function closeChild(testId) {
6+
if (tests[testId]) {
7+
let {child, t} = tests[testId];
8+
delete tests[testId];
9+
document.body.removeChild(child);
10+
t.done();
11+
}
12+
}
13+
14+
function runInChild(t, childScript) {
15+
let testId = nextTest++;
16+
const preamble = `
17+
let testId = ${testId};
18+
function closeChildOnAccess(obj, key) {
19+
const oldValue = obj[key];
20+
Object.defineProperty(obj, key, {get: () => {
21+
top.closeChild(testId);
22+
return oldValue;
23+
}});
24+
}
25+
`;
26+
childScript = preamble + childScript;
27+
28+
let child = document.createElement("iframe");
29+
tests[testId] = {t, child};
30+
document.body.appendChild(child);
31+
let script = document.createElement("script");
32+
script.textContent = childScript;
33+
child.contentDocument.body.appendChild(script);
34+
}
35+
36+
async_test((t) => {
37+
const childScript = `
38+
let algorithm = {name: "AES-GCM", length: 128};
39+
closeChildOnAccess(algorithm, "name");
40+
crypto.subtle.generateKey(algorithm, true, ["encrypt", "decrypt"]);`;
41+
runInChild(t, childScript);
42+
}, "Context is discarded in generateKey");
43+
44+
async_test((t) => {
45+
const childScript = `
46+
let algorithm = {name: "AES-GCM"};
47+
closeChildOnAccess(algorithm, "name");
48+
crypto.subtle.importKey("raw", new Uint8Array(16), algorithm, true,
49+
["encrypt", "decrypt"]);`;
50+
runInChild(t, childScript);
51+
}, "Context is discarded in importKey");
52+
53+
async_test((t) => {
54+
const childScript = `
55+
(async () => {
56+
let key = await crypto.subtle.generateKey(
57+
{name: "AES-GCM", length: 128}, true, ["encrypt", "decrypt"]);
58+
let algorithm = {name: "AES-GCM", iv: new Uint8Array(12)};
59+
closeChildOnAccess(algorithm, "name");
60+
crypto.subtle.encrypt(algorithm, key, new Uint8Array());
61+
})();`;
62+
runInChild(t, childScript);
63+
}, "Context is discarded in encrypt");
64+
65+
async_test((t) => {
66+
const childScript = `
67+
(async () => {
68+
let key = await crypto.subtle.generateKey(
69+
{name: "AES-GCM", length: 128}, true, ["encrypt", "decrypt"]);
70+
let algorithm = {name: "AES-GCM", iv: new Uint8Array(12)};
71+
let encrypted = await crypto.subtle.encrypt(algorithm, key, new Uint8Array());
72+
closeChildOnAccess(algorithm, "name");
73+
crypto.subtle.decrypt(algorithm, key, encrypted);
74+
})();`;
75+
runInChild(t, childScript);
76+
}, "Context is discarded in decrypt");
77+
78+
async_test((t) => {
79+
const childScript = `
80+
let algorithm = {name: "SHA-256"};
81+
closeChildOnAccess(algorithm, "name");
82+
crypto.subtle.digest(algorithm, new Uint8Array());`;
83+
runInChild(t, childScript);
84+
}, "Context is discarded in digest");
85+
86+
async_test((t) => {
87+
const childScript = `
88+
(async () => {
89+
let key = await crypto.subtle.generateKey(
90+
{name: "ECDSA", namedCurve: "P-256"}, true, ["sign", "verify"]);
91+
let algorithm = {name: "ECDSA", hash: "SHA-256"};
92+
closeChildOnAccess(algorithm, "name");
93+
crypto.subtle.sign(algorithm, key.privateKey, new Uint8Array());
94+
})();`;
95+
runInChild(t, childScript);
96+
}, "Context is discarded in sign");
97+
98+
async_test((t) => {
99+
const childScript = `
100+
(async () => {
101+
let key = await crypto.subtle.generateKey(
102+
{name: "ECDSA", namedCurve: "P-256"}, true, ["sign", "verify"]);
103+
let algorithm = {name: "ECDSA", hash: "SHA-256"};
104+
let data = new Uint8Array();
105+
let signature = await crypto.subtle.sign(algorithm, key.privateKey, data);
106+
closeChildOnAccess(algorithm, "name");
107+
crypto.subtle.verify(algorithm, key.publicKey, signature, data);
108+
})();`;
109+
runInChild(t, childScript);
110+
}, "Context is discarded in verify");
111+
112+
async_test((t) => {
113+
const childScript = `
114+
(async () => {
115+
let key = await crypto.subtle.importKey(
116+
"raw", new Uint8Array(16), "HKDF", false, ["deriveBits"]);
117+
let algorithm = {
118+
name: "HKDF",
119+
hash: "SHA-256",
120+
salt: new Uint8Array(),
121+
info: new Uint8Array(),
122+
};
123+
closeChildOnAccess(algorithm, "name");
124+
crypto.subtle.deriveBits(algorithm, key, 16);
125+
})();`;
126+
runInChild(t, childScript);
127+
}, "Context is discarded in deriveBits");
128+
129+
async_test((t) => {
130+
const childScript = `
131+
(async () => {
132+
let key = await crypto.subtle.importKey(
133+
"raw", new Uint8Array(16), "HKDF", false, ["deriveKey"]);
134+
let algorithm = {
135+
name: "HKDF",
136+
hash: "SHA-256",
137+
salt: new Uint8Array(),
138+
info: new Uint8Array(),
139+
};
140+
let derivedAlgorithm = {name: "AES-GCM", length: 128};
141+
closeChildOnAccess(algorithm, "name");
142+
crypto.subtle.deriveKey(algorithm, key, derivedAlgorithm, true,
143+
["encrypt", "decrypt"]);
144+
})();`;
145+
runInChild(t, childScript);
146+
}, "Context is discarded in deriveKey");
147+
148+
async_test((t) => {
149+
const childScript = `
150+
(async () => {
151+
let key = await crypto.subtle.importKey(
152+
"raw", new Uint8Array(16), "HKDF", false, ["deriveKey"]);
153+
let algorithm = {
154+
name: "HKDF",
155+
hash: "SHA-256",
156+
salt: new Uint8Array(),
157+
info: new Uint8Array(),
158+
};
159+
let derivedAlgorithm = {name: "AES-GCM", length: 128};
160+
closeChildOnAccess(derivedAlgorithm, "name");
161+
crypto.subtle.deriveKey(algorithm, key, derivedAlgorithm, true,
162+
["encrypt", "decrypt"]);
163+
})();`;
164+
runInChild(t, childScript);
165+
}, "Context is discarded in deriveKey (2)");
166+
167+
async_test((t) => {
168+
const childScript = `
169+
(async () => {
170+
let wrapKey = await crypto.subtle.generateKey(
171+
{name: "AES-GCM", length: 128}, true, ["wrapKey", "unwrapKey"]);
172+
let key = await crypto.subtle.generateKey(
173+
{name: "AES-GCM", length: 128}, true, ["encrypt", "decrypt"]);
174+
let wrapAlgorithm = {name: "AES-GCM", iv: new Uint8Array(12)};
175+
closeChildOnAccess(wrapAlgorithm, "name");
176+
crypto.subtle.wrapKey("raw", key, wrapKey, wrapAlgorithm);
177+
})();`;
178+
runInChild(t, childScript);
179+
}, "Context is discarded in wrapKey");
180+
181+
async_test((t) => {
182+
const childScript = `
183+
(async () => {
184+
let wrapKey = await crypto.subtle.generateKey(
185+
{name: "AES-GCM", length: 128}, true, ["wrapKey", "unwrapKey"]);
186+
let keyAlgorithm = {name: "AES-GCM", length: 128};
187+
let keyUsages = ["encrypt", "decrypt"];
188+
let key = await crypto.subtle.generateKey(keyAlgorithm, true, keyUsages);
189+
let wrapAlgorithm = {name: "AES-GCM", iv: new Uint8Array(12)};
190+
let wrapped = await crypto.subtle.wrapKey("raw", key, wrapKey, wrapAlgorithm);
191+
closeChildOnAccess(wrapAlgorithm, "name");
192+
crypto.subtle.unwrapKey(
193+
"raw", wrapped, wrapKey, wrapAlgorithm, keyAlgorithm, true, keyUsages);
194+
})();`;
195+
runInChild(t, childScript);
196+
}, "Context is discarded in unwrapKey");
197+
198+
async_test((t) => {
199+
const childScript = `
200+
(async () => {
201+
let wrapKey = await crypto.subtle.generateKey(
202+
{name: "AES-GCM", length: 128}, true, ["wrapKey", "unwrapKey"]);
203+
let keyAlgorithm = {name: "AES-GCM", length: 128};
204+
let keyUsages = ["encrypt", "decrypt"];
205+
let key = await crypto.subtle.generateKey(keyAlgorithm, true, keyUsages);
206+
let wrapAlgorithm = {name: "AES-GCM", iv: new Uint8Array(12)};
207+
let wrapped = await crypto.subtle.wrapKey("raw", key, wrapKey, wrapAlgorithm);
208+
closeChildOnAccess(keyAlgorithm, "name");
209+
crypto.subtle.unwrapKey(
210+
"raw", wrapped, wrapKey, wrapAlgorithm, keyAlgorithm, true, keyUsages);
211+
})();`;
212+
runInChild(t, childScript);
213+
}, "Context is discarded in unwrapKey (2)");
Collapse file
+9Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// META: title=WebCryptoAPI: deriveBits() Using ECDH with CFRG Elliptic Curves
2+
// META: script=cfrg_curves_bits.js
3+
4+
// Define subtests from a `promise_test` to ensure the harness does not
5+
// complete before the subtests are available. `explicit_done` cannot be used
6+
// for this purpose because the global `done` function is automatically invoked
7+
// by the WPT infrastructure in dedicated worker tests defined using the
8+
// "multi-global" pattern.
9+
promise_test(define_tests, 'setup - define tests');

0 commit comments

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