mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Update web-platform-tests to revision b'3ee7ccc2abbbc8d8f6efbb45f80bffdb3c0c76ba'
This commit is contained in:
parent
111363d338
commit
2ebdfcea9d
630 changed files with 8297 additions and 4979 deletions
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,5 @@
|
||||||
|
[aes_gcm_256_iv.https.any.worker.html]
|
||||||
|
expected: ERROR
|
||||||
|
|
||||||
|
[aes_gcm_256_iv.https.any.html]
|
||||||
|
expected: ERROR
|
|
@ -1,3 +0,0 @@
|
||||||
[hit-test-floats-001.html]
|
|
||||||
[hit-test-floats-001]
|
|
||||||
expected: FAIL
|
|
|
@ -8,8 +8,5 @@
|
||||||
[[data-expected-height\] 3]
|
[[data-expected-height\] 3]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[[data-expected-height\] 1]
|
[[data-expected-height\] 4]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[[data-expected-height\] 2]
|
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
[block-in-inline-hittest-float-002.html]
|
|
||||||
[block-in-inline-hittest-float-002]
|
|
||||||
expected: FAIL
|
|
|
@ -1,2 +0,0 @@
|
||||||
[segment-break-transformation-unremovable-2.html]
|
|
||||||
expected: FAIL
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[trailing-other-space-separators-break-spaces-005.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[trailing-other-space-separators-break-spaces-012.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[dynamic-root-element.html]
|
||||||
|
expected: CRASH
|
|
@ -326,3 +326,303 @@
|
||||||
|
|
||||||
[margin-right length(mm) / values]
|
[margin-right length(mm) / values]
|
||||||
expected: [FAIL, PASS]
|
expected: [FAIL, PASS]
|
||||||
|
|
||||||
|
[margin-right length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[margin-right length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[margin-top length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[margin-top length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[margin-top length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[margin-top length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[margin-top length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[margin-top length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[margin-top length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[margin-top length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[height length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[height length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[height length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[height length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[height length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[height length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[height length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[height length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[height percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[width length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[width length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[width length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[width length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[width length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[width length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[width length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[width length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[width percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-height length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-height length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-height length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-height length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-height length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-height length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-height length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-height length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-height percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-width length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-width length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-width length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-width length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-width length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-width length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-width length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-width length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-width percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-height length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-height length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-height length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-height length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[color color(rgba) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-weight font-weight(keyword) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-weight font-weight(numeric) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height number(integer) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height number(decimal) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-shadow shadow(shadow) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -82,3 +82,6 @@
|
||||||
|
|
||||||
['calc(1s * clamp(-inFinity, infinity, 10))' as a specified value should serialize as 'calc(10s)'.]
|
['calc(1s * clamp(-inFinity, infinity, 10))' as a specified value should serialize as 'calc(10s)'.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
['calc(1ms * NaN)' as a specified value should serialize as 'calc(NaN * 1s)'.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
[CaretPosition-001.html]
|
||||||
|
[Element at (400, 100)]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
||||||
|
[elementFromPoint-ellipsis-in-inline-box.html]
|
||||||
|
[elementFromPoint-ellipsis-in-inline-box]
|
||||||
|
expected: FAIL
|
|
@ -13,3 +13,15 @@
|
||||||
|
|
||||||
[<li>Outside 3</li>]
|
[<li>Outside 3</li>]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[<li>Inside 2</li>]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<li>Inside 3</li>]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<li>Image Inside 1</li>]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<li>Image Inside 2</li>]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
[elementFromPoint-subpixel.html]
|
|
||||||
[Hit test top left corner of box]
|
|
||||||
expected: FAIL
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
[elementFromPoint-visibility-hidden-resizer.html]
|
||||||
|
[elementFromPoint on resizer area of an element with visibility:hidden]
|
||||||
|
expected: FAIL
|
|
@ -17,3 +17,6 @@
|
||||||
|
|
||||||
[test some point of the element: bottom right corner]
|
[test some point of the element: bottom right corner]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[test the top of layer]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
[elementsFromPoint-invalid-cases.html]
|
|
||||||
[The root element is the last element returned for otherwise empty queries within the viewport]
|
|
||||||
expected: FAIL
|
|
|
@ -41,3 +41,9 @@
|
||||||
|
|
||||||
[outerText on HTMLElement must enqueue a disconnected reaction]
|
[outerText on HTMLElement must enqueue a disconnected reaction]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[popover on HTMLElement must enqueue an attributeChanged reaction when adding popover content attribute]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[popover on HTMLElement must enqueue an attributeChanged reaction when replacing an existing attribute]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
[fetch.https.window.html?include=from-local]
|
|
||||||
|
|
||||||
[fetch.https.window.html?include=baseline]
|
[fetch.https.window.html?include=baseline]
|
||||||
[local to public: PUT preflight failure.]
|
[local to public: PUT preflight failure.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
@ -55,6 +53,8 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
||||||
|
[fetch.https.window.html?include=from-local]
|
||||||
|
|
||||||
[fetch.https.window.html?include=from-private]
|
[fetch.https.window.html?include=from-private]
|
||||||
[private to local: failed preflight.]
|
[private to local: failed preflight.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
@ -79,17 +79,3 @@
|
||||||
|
|
||||||
[private to local: no-CORS mode missing PNA header on preflight response.]
|
[private to local: no-CORS mode missing PNA header on preflight response.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
||||||
[fetch.https.window.html?include=from-treat-as-public]
|
|
||||||
[treat-as-public-address to local: failed preflight.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[treat-as-public-address to local: success.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[treat-as-public-address to private: failed preflight.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[treat-as-public-address to private: success.]
|
|
||||||
expected: FAIL
|
|
|
@ -0,0 +1,135 @@
|
||||||
|
[mixed-content-fetch.tentative.https.window.html]
|
||||||
|
[https-loopback to http-loopback: wrong targetAddressSpace "unknown".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-loopback to http-loopback: wrong targetAddressSpace "local".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-loopback to http-loopback: wrong targetAddressSpace "public".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-loopback to http-loopback: not a local network request.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-loopback to http-local: wrong targetAddressSpace "unknown".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-loopback to http-local: wrong targetAddressSpace "loopback".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-loopback to http-local: wrong targetAddressSpace "public".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-loopback to http-local: not a local network request.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-loopback to http-public: wrong targetAddressSpace "unknown".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-loopback to http-public: wrong targetAddressSpace "loopback".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-loopback to http-public: wrong targetAddressSpace "local".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-loopback to http-public: not a local network request.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-local to http-loopback: missing targetAddressSpace.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-local to http-loopback: wrong targetAddressSpace "unknown".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-local to http-loopback: wrong targetAddressSpace "local".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-local to http-loopback: wrong targetAddressSpace "public".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-local to http-loopback: failed preflight.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-local to http-loopback: success.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-local to http-local: wrong targetAddressSpace "unknown".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-local to http-local: wrong targetAddressSpace "loopback".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-local to http-local: wrong targetAddressSpace "public".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-local to http-local: not a local network request.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-local to http-public: wrong targetAddressSpace "unknown".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-local to http-public: wrong targetAddressSpace "loopback".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-local to http-public: wrong targetAddressSpace "local".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-local to http-public: not a local network request.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-public to http-loopback: missing targetAddressSpace.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-public to http-loopback: wrong targetAddressSpace "unknown".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-public to http-loopback: wrong targetAddressSpace "local".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-public to http-loopback: wrong targetAddressSpace "public".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-public to http-loopback: failed preflight.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-public to http-loopback: success.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-public to http-local: missing targetAddressSpace.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-public to http-local: wrong targetAddressSpace "unknown".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-public to http-local: wrong targetAddressSpace "loopback".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-public to http-local: wrong targetAddressSpace "public".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-public to http-local: failed preflight.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-public to http-local: success.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-public to http-public: wrong targetAddressSpace "unknown".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-public to http-public: wrong targetAddressSpace "loopback".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-public to http-public: wrong targetAddressSpace "local".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-public to http-public: not a local network request.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-treat-as-public to http-loopback: wrong targetAddressSpace "local".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-treat-as-public to http-local: wrong targetAddressSpace "loopback".]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[https-treat-as-public to http-local: success.]
|
||||||
|
expected: FAIL
|
|
@ -27,15 +27,6 @@
|
||||||
[public to public: success.]
|
[public to public: success.]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
[treat-as-public to local: failure.]
|
|
||||||
expected: NOTRUN
|
|
||||||
|
|
||||||
[treat-as-public to private: failure.]
|
|
||||||
expected: NOTRUN
|
|
||||||
|
|
||||||
[treat-as-public to public: success.]
|
|
||||||
expected: NOTRUN
|
|
||||||
|
|
||||||
[treat-as-public to local: failed preflight.]
|
[treat-as-public to local: failed preflight.]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
@ -47,3 +38,6 @@
|
||||||
|
|
||||||
[treat-as-public to private: success.]
|
[treat-as-public to private: success.]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
[treat-as-public to public: success.]
|
||||||
|
expected: NOTRUN
|
|
@ -27,20 +27,14 @@
|
||||||
[treat-as-public to public: success.]
|
[treat-as-public to public: success.]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
[private https to local: failure.]
|
[local https to local: success.]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
[pubiic https to local: failure.]
|
[private https to local: failure.]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
[public https to local: failure.]
|
[public https to local: failure.]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
[local https to local: failure.]
|
|
||||||
expected: NOTRUN
|
|
||||||
|
|
||||||
[local https to local: success.]
|
|
||||||
expected: NOTRUN
|
|
||||||
|
|
||||||
[public https to private: failure.]
|
[public https to private: failure.]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
|
@ -1,4 +1,7 @@
|
||||||
[worker-blob-fetch.window.html]
|
[worker-blob-fetch.window.html]
|
||||||
|
[local to local: success.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
[private to local: failure.]
|
[private to local: failure.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -11,6 +14,9 @@
|
||||||
[public to private: failure.]
|
[public to private: failure.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[public to public: success.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
[treat-as-public to local: failure.]
|
[treat-as-public to local: failure.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -20,18 +26,6 @@
|
||||||
[treat-as-public to public: success.]
|
[treat-as-public to public: success.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[public https to private: failure.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[public https to local: failure.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[private https to local: failure.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[local to local: success.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[local https to local https: success.]
|
[local https to local https: success.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -43,6 +37,3 @@
|
||||||
|
|
||||||
[public https to local https: failure.]
|
[public https to local https: failure.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[public to public: success.]
|
|
||||||
expected: FAIL
|
|
|
@ -17,9 +17,6 @@
|
||||||
[public to private: success.]
|
[public to private: success.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[treat-as-public to local: failure.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[treat-as-public to local: failed preflight.]
|
[treat-as-public to local: failed preflight.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
[worker-fetch.window.html]
|
[worker-fetch.window.html]
|
||||||
[treat-as-public to local: failure.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[private to local: failure.]
|
[private to local: failure.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -11,6 +8,9 @@
|
||||||
[public to private: failure.]
|
[public to private: failure.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[treat-as-public to local: failure.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
[treat-as-public to private: failure.]
|
[treat-as-public to private: failure.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -8,20 +8,6 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
||||||
[xhr.https.window.html?include=from-treat-as-public]
|
|
||||||
[treat-as-public to local: failed preflight.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[treat-as-public to local: success.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[treat-as-public to private: failed preflight.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[treat-as-public to private: success.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
||||||
[xhr.https.window.html?include=from-public]
|
[xhr.https.window.html?include=from-public]
|
||||||
[public to local: failed preflight.]
|
[public to local: failed preflight.]
|
||||||
expected: FAIL
|
expected: FAIL
|
|
@ -1,7 +1,4 @@
|
||||||
[xhr.window.html]
|
[xhr.window.html]
|
||||||
[treat-as-public-address to local: failure.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[private to local: failure.]
|
[private to local: failure.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -11,6 +8,9 @@
|
||||||
[public to private: failure.]
|
[public to private: failure.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[treat-as-public-address to local: failure.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
[treat-as-public-address to private: failure.]
|
[treat-as-public-address to private: failure.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -146,3 +146,6 @@
|
||||||
|
|
||||||
[list-style-image sec-fetch-site - HTTPS downgrade-upgrade]
|
[list-style-image sec-fetch-site - HTTPS downgrade-upgrade]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[background-image sec-fetch-site - HTTPS downgrade (header not sent)]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
|
@ -1,135 +0,0 @@
|
||||||
[mixed-content-fetch.tentative.https.window.html]
|
|
||||||
[https-local to http-local: wrong targetAddressSpace "unknown".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-local to http-local: wrong targetAddressSpace "private".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-local to http-local: wrong targetAddressSpace "public".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-local to http-local: not a private network request.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-local to http-private: wrong targetAddressSpace "unknown".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-local to http-private: wrong targetAddressSpace "local".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-local to http-private: wrong targetAddressSpace "public".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-local to http-private: not a private network request.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-local to http-public: wrong targetAddressSpace "unknown".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-local to http-public: wrong targetAddressSpace "local".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-local to http-public: wrong targetAddressSpace "private".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-local to http-public: not a private network request.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-private to http-local: missing targetAddressSpace.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-private to http-local: wrong targetAddressSpace "unknown".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-private to http-local: wrong targetAddressSpace "private".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-private to http-local: wrong targetAddressSpace "public".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-private to http-local: failed preflight.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-private to http-local: success.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-private to http-private: wrong targetAddressSpace "unknown".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-private to http-private: wrong targetAddressSpace "local".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-private to http-private: wrong targetAddressSpace "public".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-private to http-private: not a private network request.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-private to http-public: wrong targetAddressSpace "unknown".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-private to http-public: wrong targetAddressSpace "local".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-private to http-public: wrong targetAddressSpace "private".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-private to http-public: not a private network request.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-public to http-local: missing targetAddressSpace.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-public to http-local: wrong targetAddressSpace "unknown".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-public to http-local: wrong targetAddressSpace "private".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-public to http-local: wrong targetAddressSpace "public".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-public to http-local: failed preflight.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-public to http-local: success.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-public to http-private: missing targetAddressSpace.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-public to http-private: wrong targetAddressSpace "unknown".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-public to http-private: wrong targetAddressSpace "local".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-public to http-private: wrong targetAddressSpace "public".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-public to http-private: failed preflight.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-public to http-private: success.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-public to http-public: wrong targetAddressSpace "unknown".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-public to http-public: wrong targetAddressSpace "local".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-public to http-public: wrong targetAddressSpace "private".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-public to http-public: not a private network request.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-treat-as-public to http-local: wrong targetAddressSpace "private".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-treat-as-public to http-private: wrong targetAddressSpace "local".]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-treat-as-public to http-private: success.]
|
|
||||||
expected: FAIL
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
[worker-cookies.tentative.https.window.html?worker=shared_worker]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[Worker spawned from normal iframe can access global cookies]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
[Worker spawned from credentialless iframe can't access global cookies]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
||||||
|
[worker-cookies.tentative.https.window.html?worker=service_worker]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[Worker spawned from normal iframe can access global cookies]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
[Worker spawned from credentialless iframe can't access global cookies]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
||||||
|
[worker-cookies.tentative.https.window.html?worker=dedicated_worker]
|
||||||
|
[Worker spawned from credentialless iframe can't access global cookies]
|
||||||
|
expected: FAIL
|
|
@ -1,6 +1,6 @@
|
||||||
[scroll-restoration-fragment-scrolling-cross-origin.html]
|
[scroll-restoration-fragment-scrolling-cross-origin.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
expected: ERROR
|
||||||
[Manual scroll restoration should take precedent over scrolling to fragment in cross origin navigation]
|
[Manual scroll restoration should take precedent over scrolling to fragment in cross origin navigation]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
[005.html]
|
[005.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[Link with onclick navigation and href navigation ]
|
[Link with onclick navigation and href navigation ]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
[iframe-src-aboutblank-navigate-immediately.html]
|
[iframe-src-aboutblank-navigate-immediately.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[Navigating to a different document with window.open]
|
[Navigating to a different document with window.open]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Navigating to a different document with form submission]
|
[Navigating to a different document with form submission]
|
||||||
expected: FAIL
|
expected: NOTRUN
|
||||||
|
|
||||||
[Navigating to a different document with link click]
|
[Navigating to a different document with link click]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
|
@ -16,6 +16,3 @@
|
||||||
|
|
||||||
[D83D DE0D set in href="" targeting a frame and clicked]
|
[D83D DE0D set in href="" targeting a frame and clicked]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[DE0D 0041 set in href="" targeting a frame and clicked]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
[navigate-to-unparseable-url.html]
|
[navigate-to-unparseable-url.html]
|
||||||
[location.href setter throws a SyntaxError DOMException for unparseable URLs]
|
[location.href setter throws a SyntaxError DOMException for unparseable URLs]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<a> tag navigate fails for unparseable URLs]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
[navigation-unload-same-origin.window.html]
|
|
||||||
[Same-origin navigation started from unload handler must be ignored]
|
|
||||||
expected: FAIL
|
|
|
@ -1,3 +0,0 @@
|
||||||
[pageload-image-in-popup.html]
|
|
||||||
[The document for a standalone media file should have one child in the body.]
|
|
||||||
expected: FAIL
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
[creating_browsing_context_test_01.html]
|
||||||
|
[first argument: absolute url]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,4 @@
|
||||||
|
[opener-setter.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[Auxiliary browsing context created via `window.open` and setting `window.opener` to `test` should report `test`]
|
||||||
|
expected: TIMEOUT
|
|
@ -1,2 +1,2 @@
|
||||||
[canvas.2d.disconnected.html]
|
[canvas.2d.disconnected.html]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[2d.transformation.scale.large.html]
|
[2d.transformation.scale.large.html]
|
||||||
|
expected: ERROR
|
||||||
[scale() with large scale factors works]
|
[scale() with large scale factors works]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.transformation.setTransform.multiple.html]
|
||||||
|
expected: ERROR
|
||||||
|
[OffscreenCanvas test: 2d.transformation.setTransform.multiple]
|
||||||
|
expected: TIMEOUT
|
|
@ -0,0 +1,3 @@
|
||||||
|
[2d.transformation.setTransform.multiple.worker.html]
|
||||||
|
[2d]
|
||||||
|
expected: FAIL
|
|
@ -1,3 +1,4 @@
|
||||||
[iframe_sandbox_popups_escaping-2.html]
|
[iframe_sandbox_popups_escaping-2.html]
|
||||||
|
expected: CRASH
|
||||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[iframe_sandbox_popups_escaping-3.html]
|
[iframe_sandbox_popups_escaping-3.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
|
expected: TIMEOUT
|
||||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
|
@ -1,9 +1,3 @@
|
||||||
[non-active-document.html]
|
[non-active-document.html]
|
||||||
[DOMParser]
|
[DOMParser]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[createHTMLDocument]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<template>]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -167,9 +167,6 @@
|
||||||
[multipart/form-data: character not in encoding in filename (formdata event)]
|
[multipart/form-data: character not in encoding in filename (formdata event)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[multipart/form-data: 0x00 in value (normal form)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[multipart/form-data: single quote in value (formdata event)]
|
[multipart/form-data: single quote in value (formdata event)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -173,8 +173,5 @@
|
||||||
[text/plain: Basic test (formdata event)]
|
[text/plain: Basic test (formdata event)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[text/plain: Basic File test (formdata event)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[text/plain: 0x00 in name (formdata event)]
|
[text/plain: 0x00 in name (formdata event)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -155,12 +155,6 @@
|
||||||
[application/x-www-form-urlencoded: 0x00 in name (formdata event)]
|
[application/x-www-form-urlencoded: 0x00 in name (formdata event)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[application/x-www-form-urlencoded: Basic test (formdata event)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[application/x-www-form-urlencoded: 0x00 in value (normal form)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[application/x-www-form-urlencoded: backslash in value (normal form)]
|
[application/x-www-form-urlencoded: backslash in value (normal form)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -173,8 +167,5 @@
|
||||||
[application/x-www-form-urlencoded: 0x00 in filename (formdata event)]
|
[application/x-www-form-urlencoded: 0x00 in filename (formdata event)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[application/x-www-form-urlencoded: 0x00 in name (normal form)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[application/x-www-form-urlencoded: \\r\\n in filename (formdata event)]
|
[application/x-www-form-urlencoded: \\r\\n in filename (formdata event)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
[popover-types.html]
|
[popover-types.html]
|
||||||
|
expected: ERROR
|
||||||
[manuals do not close popovers]
|
[manuals do not close popovers]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
[module-tla-delayed.html]
|
|
||||||
[document.write in an imported module]
|
|
||||||
expected: FAIL
|
|
|
@ -3,6 +3,3 @@
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
[promise-rejection-events.html]
|
[promise-rejection-events.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
|
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[unhandledrejection: from createImageBitmap which is UA triggered]
|
[unhandledrejection: from createImageBitmap which is UA triggered]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -94,10 +94,10 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[mime-type 16 : text/html;charset=\x0bgbk]
|
[mime-type 16 : text/html;charset=\x0bgbk]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
[mime-type 17 : text/html;charset=\x0cgbk]
|
[mime-type 17 : text/html;charset=\x0cgbk]
|
||||||
expected: TIMEOUT
|
expected: NOTRUN
|
||||||
|
|
||||||
[mime-type 18 : text/html;\x0bcharset=gbk]
|
[mime-type 18 : text/html;\x0bcharset=gbk]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
|
@ -265,10 +265,10 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[This test validates the response status of resources. 88]
|
[This test validates the response status of resources. 88]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[This test validates the response status of resources. 89]
|
[This test validates the response status of resources. 89]
|
||||||
expected: NOTRUN
|
expected: TIMEOUT
|
||||||
|
|
||||||
[This test validates the response status of resources. 90]
|
[This test validates the response status of resources. 90]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
[entry.html]
|
[entry.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[Start function]
|
[Start function]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
[Sanity check: this all works as expected synchronously]
|
[Sanity check: this all works as expected synchronously]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
4
tests/wpt/metadata/webmessaging/with-ports/017.html.ini
Normal file
4
tests/wpt/metadata/webmessaging/with-ports/017.html.ini
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
[017.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[origin of the script that invoked the method, about:blank]
|
||||||
|
expected: TIMEOUT
|
|
@ -0,0 +1,4 @@
|
||||||
|
[018.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[origin of the script that invoked the method, javascript:]
|
||||||
|
expected: TIMEOUT
|
|
@ -1,4 +0,0 @@
|
||||||
[localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html]
|
|
||||||
expected: TIMEOUT
|
|
||||||
[StorageKey: test 3P about:blank window opened from a 3P iframe]
|
|
||||||
expected: TIMEOUT
|
|
3
tests/wpt/mozilla/meta/mozilla/scrollBy.html.ini
Normal file
3
tests/wpt/mozilla/meta/mozilla/scrollBy.html.ini
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
[scrollBy.html]
|
||||||
|
[Ensure that the window.scrollBy function affects scroll position as expected]
|
||||||
|
expected: FAIL
|
|
@ -1,4 +1,5 @@
|
||||||
// META: title=WebCryptoAPI: encrypt() Using AES-GCM
|
// META: title=WebCryptoAPI: encrypt() Using AES-GCM w/ 96-bit iv
|
||||||
|
// META: script=aes_gcm_96_iv_fixtures.js
|
||||||
// META: script=aes_gcm_vectors.js
|
// META: script=aes_gcm_vectors.js
|
||||||
// META: script=aes.js
|
// META: script=aes.js
|
||||||
// META: timeout=long
|
// META: timeout=long
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
// META: title=WebCryptoAPI: encrypt() Using AES-GCM w/ 256-bit iv
|
||||||
|
// META: script=aes_gcm_256_iv_fixtures.js
|
||||||
|
// META: script=aes_gcm_vectors.js
|
||||||
|
// META: script=aes.js
|
||||||
|
// META: timeout=long
|
||||||
|
|
||||||
|
run_test();
|
|
@ -0,0 +1,210 @@
|
||||||
|
function getFixtures() {
|
||||||
|
// Before we can really start, we need to fill a bunch of buffers with data
|
||||||
|
var plaintext = new Uint8Array([
|
||||||
|
84, 104, 105, 115, 32, 115, 112, 101, 99, 105, 102, 105, 99, 97, 116, 105,
|
||||||
|
111, 110, 32, 100, 101, 115, 99, 114, 105, 98, 101, 115, 32, 97, 32, 74, 97,
|
||||||
|
118, 97, 83, 99, 114, 105, 112, 116, 32, 65, 80, 73, 32, 102, 111, 114, 32,
|
||||||
|
112, 101, 114, 102, 111, 114, 109, 105, 110, 103, 32, 98, 97, 115, 105, 99,
|
||||||
|
32, 99, 114, 121, 112, 116, 111, 103, 114, 97, 112, 104, 105, 99, 32, 111,
|
||||||
|
112, 101, 114, 97, 116, 105, 111, 110, 115, 32, 105, 110, 32, 119, 101, 98,
|
||||||
|
32, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 115, 44, 32, 115,
|
||||||
|
117, 99, 104, 32, 97, 115, 32, 104, 97, 115, 104, 105, 110, 103, 44, 32,
|
||||||
|
115, 105, 103, 110, 97, 116, 117, 114, 101, 32, 103, 101, 110, 101, 114, 97,
|
||||||
|
116, 105, 111, 110, 32, 97, 110, 100, 32, 118, 101, 114, 105, 102, 105, 99,
|
||||||
|
97, 116, 105, 111, 110, 44, 32, 97, 110, 100, 32, 101, 110, 99, 114, 121,
|
||||||
|
112, 116, 105, 111, 110, 32, 97, 110, 100, 32, 100, 101, 99, 114, 121, 112,
|
||||||
|
116, 105, 111, 110, 46, 32, 65, 100, 100, 105, 116, 105, 111, 110, 97, 108,
|
||||||
|
108, 121, 44, 32, 105, 116, 32, 100, 101, 115, 99, 114, 105, 98, 101, 115,
|
||||||
|
32, 97, 110, 32, 65, 80, 73, 32, 102, 111, 114, 32, 97, 112, 112, 108, 105,
|
||||||
|
99, 97, 116, 105, 111, 110, 115, 32, 116, 111, 32, 103, 101, 110, 101, 114,
|
||||||
|
97, 116, 101, 32, 97, 110, 100, 47, 111, 114, 32, 109, 97, 110, 97, 103,
|
||||||
|
101, 32, 116, 104, 101, 32, 107, 101, 121, 105, 110, 103, 32, 109, 97, 116,
|
||||||
|
101, 114, 105, 97, 108, 32, 110, 101, 99, 101, 115, 115, 97, 114, 121, 32,
|
||||||
|
116, 111, 32, 112, 101, 114, 102, 111, 114, 109, 32, 116, 104, 101, 115,
|
||||||
|
101, 32, 111, 112, 101, 114, 97, 116, 105, 111, 110, 115, 46, 32, 85, 115,
|
||||||
|
101, 115, 32, 102, 111, 114, 32, 116, 104, 105, 115, 32, 65, 80, 73, 32,
|
||||||
|
114, 97, 110, 103, 101, 32, 102, 114, 111, 109, 32, 117, 115, 101, 114, 32,
|
||||||
|
111, 114, 32, 115, 101, 114, 118, 105, 99, 101, 32, 97, 117, 116, 104, 101,
|
||||||
|
110, 116, 105, 99, 97, 116, 105, 111, 110, 44, 32, 100, 111, 99, 117, 109,
|
||||||
|
101, 110, 116, 32, 111, 114, 32, 99, 111, 100, 101, 32, 115, 105, 103, 110,
|
||||||
|
105, 110, 103, 44, 32, 97, 110, 100, 32, 116, 104, 101, 32, 99, 111, 110,
|
||||||
|
102, 105, 100, 101, 110, 116, 105, 97, 108, 105, 116, 121, 32, 97, 110, 100,
|
||||||
|
32, 105, 110, 116, 101, 103, 114, 105, 116, 121, 32, 111, 102, 32, 99, 111,
|
||||||
|
109, 109, 117, 110, 105, 99, 97, 116, 105, 111, 110, 115, 46,
|
||||||
|
]);
|
||||||
|
|
||||||
|
// We want some random key bytes of various sizes.
|
||||||
|
// These were randomly generated from a script.
|
||||||
|
var keyBytes = {
|
||||||
|
128: new Uint8Array([
|
||||||
|
222, 192, 212, 252, 191, 60, 71, 65, 200, 146, 218, 189, 28, 212, 192, 78,
|
||||||
|
]),
|
||||||
|
192: new Uint8Array([
|
||||||
|
208, 238, 131, 65, 63, 68, 196, 63, 186, 208, 61, 207, 166, 18, 99, 152,
|
||||||
|
29, 109, 221, 95, 240, 30, 28, 246,
|
||||||
|
]),
|
||||||
|
256: new Uint8Array([
|
||||||
|
103, 105, 56, 35, 251, 29, 88, 7, 63, 145, 236, 233, 204, 58, 249, 16,
|
||||||
|
229, 83, 38, 22, 164, 210, 123, 19, 235, 123, 116, 216, 0, 11, 191, 48,
|
||||||
|
]),
|
||||||
|
};
|
||||||
|
|
||||||
|
// AES-GCM needs an IV of no more than 2^64 - 1 bytes. Arbitrary 32 bytes is okay then.
|
||||||
|
var iv = new Uint8Array([
|
||||||
|
58, 146, 115, 42, 166, 234, 57, 191, 57, 134, 224, 199, 63, 169, 32, 0, 32,
|
||||||
|
33, 117, 56, 94, 248, 173, 234, 194, 200, 115, 53, 235, 146, 141, 212,
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Authenticated encryption via AES-GCM requires additional data that
|
||||||
|
// will be checked. We use the ASCII encoded Editorial Note
|
||||||
|
// following the Abstract of the Web Cryptography API recommendation.
|
||||||
|
var additionalData = new Uint8Array([
|
||||||
|
84, 104, 101, 114, 101, 32, 97, 114, 101, 32, 55, 32, 102, 117, 114, 116,
|
||||||
|
104, 101, 114, 32, 101, 100, 105, 116, 111, 114, 105, 97, 108, 32, 110, 111,
|
||||||
|
116, 101, 115, 32, 105, 110, 32, 116, 104, 101, 32, 100, 111, 99, 117, 109,
|
||||||
|
101, 110, 116, 46,
|
||||||
|
]);
|
||||||
|
|
||||||
|
// The length of the tag defaults to 16 bytes (128 bit).
|
||||||
|
var tag = {
|
||||||
|
128: new Uint8Array([
|
||||||
|
194, 226, 198, 253, 239, 28, 197, 240, 123, 216, 176, 151, 239, 200, 184,
|
||||||
|
183,
|
||||||
|
]),
|
||||||
|
192: new Uint8Array([
|
||||||
|
183, 57, 32, 144, 164, 76, 121, 77, 58, 86, 62, 132, 53, 130, 96, 225,
|
||||||
|
]),
|
||||||
|
256: new Uint8Array([
|
||||||
|
188, 239, 241, 48, 159, 21, 213, 0, 241, 42, 85, 76, 194, 28, 49, 60,
|
||||||
|
]),
|
||||||
|
};
|
||||||
|
|
||||||
|
var tag_with_empty_ad = {
|
||||||
|
128: new Uint8Array([
|
||||||
|
222, 51, 11, 23, 36, 222, 250, 248, 27, 98, 30, 81, 150, 35, 220, 198,
|
||||||
|
]),
|
||||||
|
192: new Uint8Array([
|
||||||
|
243, 11, 130, 112, 169, 239, 114, 238, 185, 219, 93, 1, 95, 108, 184, 183,
|
||||||
|
]),
|
||||||
|
256: new Uint8Array([
|
||||||
|
244, 186, 86, 203, 154, 37, 191, 248, 246, 57, 139, 130, 224, 47, 217,
|
||||||
|
238,
|
||||||
|
]),
|
||||||
|
};
|
||||||
|
|
||||||
|
// Results. These were created using the Python cryptography module.
|
||||||
|
|
||||||
|
// AES-GCM produces ciphertext and a tag.
|
||||||
|
var ciphertext = {
|
||||||
|
128: new Uint8Array([
|
||||||
|
180, 241, 40, 183, 105, 52, 147, 238, 224, 175, 175, 236, 168, 244, 241,
|
||||||
|
121, 9, 202, 225, 237, 56, 216, 253, 254, 186, 102, 111, 207, 228, 190,
|
||||||
|
130, 177, 159, 246, 6, 53, 249, 113, 228, 254, 81, 126, 253, 191, 100, 43,
|
||||||
|
251, 147, 107, 91, 166, 231, 201, 241, 180, 214, 112, 47, 123, 164, 186,
|
||||||
|
134, 54, 65, 22, 181, 201, 82, 236, 59, 52, 139, 172, 39, 41, 89, 123, 62,
|
||||||
|
102, 167, 82, 150, 250, 93, 96, 169, 135, 89, 245, 255, 164, 192, 169,
|
||||||
|
159, 25, 16, 139, 145, 76, 4, 144, 131, 148, 197, 204, 46, 23, 110, 193,
|
||||||
|
228, 127, 120, 242, 24, 54, 240, 181, 162, 98, 244, 249, 68, 134, 122,
|
||||||
|
126, 151, 38, 108, 116, 68, 150, 109, 38, 194, 21, 159, 140, 205, 183, 35,
|
||||||
|
97, 151, 186, 120, 145, 22, 235, 22, 210, 223, 187, 143, 162, 183, 93,
|
||||||
|
196, 104, 51, 96, 53, 234, 250, 184, 76, 237, 157, 37, 203, 226, 87, 222,
|
||||||
|
75, 240, 95, 218, 222, 64, 81, 165, 75, 201, 216, 190, 13, 116, 217, 69,
|
||||||
|
66, 47, 161, 68, 247, 74, 253, 157, 181, 162, 121, 53, 32, 91, 124, 230,
|
||||||
|
105, 224, 17, 187, 50, 61, 77, 103, 79, 71, 57, 163, 116, 234, 149, 27,
|
||||||
|
105, 24, 31, 159, 3, 128, 130, 42, 94, 125, 200, 142, 251, 148, 201, 17,
|
||||||
|
149, 232, 84, 50, 17, 18, 203, 186, 226, 164, 227, 202, 76, 65, 16, 163,
|
||||||
|
224, 132, 52, 31, 101, 129, 72, 171, 159, 42, 177, 253, 98, 86, 201, 95,
|
||||||
|
117, 62, 12, 205, 78, 36, 126, 196, 121, 89, 185, 37, 161, 66, 181, 117,
|
||||||
|
186, 71, 124, 132, 110, 120, 27, 246, 163, 18, 13, 90, 200, 127, 82, 209,
|
||||||
|
241, 170, 73, 247, 137, 96, 244, 254, 251, 119, 71, 156, 27, 107, 53, 33,
|
||||||
|
45, 22, 0, 144, 48, 32, 11, 116, 21, 125, 246, 217, 171, 158, 224, 142,
|
||||||
|
234, 141, 242, 168, 89, 154, 66, 227, 161, 182, 96, 1, 88, 78, 12, 7, 239,
|
||||||
|
30, 206, 31, 89, 111, 107, 42, 37, 241, 148, 232, 1, 8, 251, 117, 146,
|
||||||
|
183, 9, 48, 39, 94, 59, 70, 230, 26, 165, 97, 156, 140, 141, 31, 62, 10,
|
||||||
|
206, 55, 48, 207, 0, 197, 202, 197, 108, 133, 175, 80, 4, 16, 154, 223,
|
||||||
|
255, 4, 196, 188, 178, 240, 29, 13, 120, 5, 225, 202, 3, 35, 225, 158, 92,
|
||||||
|
152, 73, 205, 107, 157, 224, 245, 99, 194, 171, 156, 245, 247, 183, 165,
|
||||||
|
40, 62, 200, 110, 29, 151, 206, 100, 175, 88, 36, 242, 90, 4, 82, 73, 250,
|
||||||
|
140, 245, 217, 9, 153, 35, 242, 206, 78, 197, 121, 115, 15, 80, 128, 101,
|
||||||
|
191, 240, 91, 151, 249, 62, 62, 244, 18, 3, 17, 135, 222, 210, 93, 149,
|
||||||
|
123,
|
||||||
|
]),
|
||||||
|
|
||||||
|
192: new Uint8Array([
|
||||||
|
126, 160, 166, 112, 227, 212, 106, 186, 175, 70, 24, 28, 86, 149, 31, 154,
|
||||||
|
156, 190, 244, 132, 44, 61, 149, 242, 105, 67, 17, 136, 7, 146, 153, 170,
|
||||||
|
200, 214, 142, 205, 170, 225, 85, 44, 241, 159, 255, 234, 10, 13, 37, 48,
|
||||||
|
255, 21, 141, 176, 60, 117, 73, 130, 247, 204, 144, 102, 167, 89, 203,
|
||||||
|
235, 229, 129, 122, 253, 124, 179, 115, 118, 163, 157, 67, 141, 122, 146,
|
||||||
|
209, 11, 112, 5, 230, 117, 123, 184, 243, 99, 83, 10, 31, 166, 96, 1, 121,
|
||||||
|
44, 10, 241, 24, 43, 184, 187, 25, 239, 246, 176, 108, 230, 127, 25, 42,
|
||||||
|
67, 202, 140, 179, 104, 159, 75, 103, 43, 248, 98, 166, 179, 67, 0, 163,
|
||||||
|
227, 84, 40, 129, 227, 198, 205, 7, 156, 16, 185, 24, 166, 59, 218, 197,
|
||||||
|
114, 74, 34, 126, 22, 226, 226, 85, 212, 69, 83, 163, 185, 68, 109, 182,
|
||||||
|
54, 209, 237, 96, 184, 32, 53, 127, 175, 13, 146, 141, 115, 164, 184, 98,
|
||||||
|
245, 174, 223, 46, 32, 167, 39, 103, 19, 210, 80, 131, 254, 103, 249, 247,
|
||||||
|
29, 120, 31, 105, 241, 103, 169, 249, 93, 153, 74, 56, 53, 239, 157, 132,
|
||||||
|
236, 169, 246, 242, 24, 113, 97, 128, 238, 152, 148, 31, 84, 8, 52, 105,
|
||||||
|
198, 116, 103, 132, 48, 199, 23, 90, 24, 29, 63, 41, 117, 191, 57, 31,
|
||||||
|
209, 128, 60, 119, 175, 84, 141, 177, 165, 169, 195, 35, 163, 105, 146,
|
||||||
|
157, 209, 93, 149, 105, 160, 93, 231, 78, 201, 92, 235, 200, 89, 37, 50,
|
||||||
|
181, 30, 213, 242, 59, 156, 219, 19, 158, 17, 224, 81, 108, 52, 87, 248,
|
||||||
|
101, 23, 39, 107, 67, 151, 103, 230, 126, 202, 184, 118, 226, 18, 29, 93,
|
||||||
|
37, 208, 40, 82, 113, 35, 157, 145, 152, 50, 253, 140, 47, 141, 192, 1,
|
||||||
|
148, 114, 40, 10, 112, 79, 227, 16, 105, 247, 31, 49, 102, 195, 75, 183,
|
||||||
|
172, 254, 188, 42, 89, 77, 38, 104, 1, 180, 106, 61, 71, 70, 35, 160, 103,
|
||||||
|
101, 244, 26, 226, 37, 159, 155, 4, 107, 222, 219, 136, 37, 24, 246, 44,
|
||||||
|
23, 44, 248, 132, 108, 59, 179, 99, 145, 132, 82, 53, 203, 111, 150, 55,
|
||||||
|
123, 51, 214, 165, 108, 124, 179, 131, 174, 139, 224, 114, 96, 218, 181,
|
||||||
|
243, 128, 198, 98, 115, 92, 95, 165, 23, 229, 108, 146, 14, 244, 162, 37,
|
||||||
|
85, 201, 33, 44, 92, 106, 112, 185, 16, 189, 42, 114, 109, 59, 124, 131,
|
||||||
|
16, 211, 31, 97, 29, 135, 61, 150, 75, 250, 207, 129, 38, 205, 187, 186,
|
||||||
|
55, 207, 232, 24, 48, 232, 49, 226, 16, 12, 27, 70, 31, 124, 128, 218,
|
||||||
|
100, 91, 200, 184, 78, 252, 100, 235, 62, 43, 69, 214, 163, 65, 14, 44,
|
||||||
|
180,
|
||||||
|
]),
|
||||||
|
|
||||||
|
256: new Uint8Array([
|
||||||
|
8, 97, 235, 113, 70, 32, 135, 131, 210, 209, 124, 160, 255, 182, 9, 29,
|
||||||
|
125, 193, 27, 240, 129, 46, 2, 137, 169, 142, 61, 7, 145, 54, 170, 207,
|
||||||
|
159, 111, 39, 95, 87, 63, 162, 27, 6, 18, 219, 215, 116, 34, 90, 57, 114,
|
||||||
|
244, 102, 145, 67, 6, 51, 152, 247, 165, 242, 116, 100, 219, 177, 72, 177,
|
||||||
|
17, 110, 67, 93, 219, 100, 217, 20, 207, 89, 154, 45, 37, 105, 83, 67,
|
||||||
|
162, 140, 235, 129, 40, 177, 202, 174, 54, 148, 55, 156, 193, 232, 249,
|
||||||
|
134, 163, 195, 51, 114, 116, 65, 38, 73, 99, 96, 249, 224, 69, 17, 119,
|
||||||
|
186, 188, 181, 43, 78, 156, 76, 138, 226, 63, 5, 248, 9, 94, 26, 1, 2,
|
||||||
|
235, 39, 174, 74, 47, 183, 22, 40, 47, 47, 13, 100, 119, 12, 67, 178, 184,
|
||||||
|
56, 167, 238, 143, 13, 44, 208, 185, 151, 108, 6, 17, 52, 122, 182, 210,
|
||||||
|
207, 42, 219, 37, 74, 94, 126, 36, 249, 37, 32, 4, 218, 44, 238, 69, 56,
|
||||||
|
219, 31, 77, 173, 46, 187, 103, 36, 112, 213, 252, 40, 87, 164, 240, 163,
|
||||||
|
159, 32, 129, 125, 178, 108, 47, 28, 31, 36, 42, 115, 36, 14, 145, 195,
|
||||||
|
156, 191, 46, 163, 249, 181, 31, 90, 73, 30, 72, 57, 223, 63, 60, 79, 140,
|
||||||
|
14, 117, 31, 145, 222, 156, 121, 237, 32, 145, 143, 96, 12, 254, 35, 21,
|
||||||
|
21, 59, 168, 171, 154, 217, 0, 59, 202, 175, 103, 214, 192, 175, 26, 18,
|
||||||
|
43, 54, 176, 222, 75, 22, 7, 122, 253, 224, 145, 61, 42, 208, 73, 237, 84,
|
||||||
|
141, 209, 213, 228, 46, 244, 59, 9, 68, 6, 35, 88, 189, 10, 62, 9, 85, 28,
|
||||||
|
44, 82, 19, 153, 160, 178, 240, 56, 160, 244, 201, 173, 77, 61, 20, 227,
|
||||||
|
30, 180, 167, 16, 105, 185, 193, 95, 207, 41, 23, 134, 78, 198, 182, 93,
|
||||||
|
24, 89, 247, 231, 75, 233, 194, 137, 242, 114, 194, 190, 130, 138, 238,
|
||||||
|
94, 137, 193, 194, 115, 137, 190, 207, 169, 83, 155, 14, 210, 160, 129,
|
||||||
|
195, 161, 234, 221, 255, 114, 67, 98, 12, 93, 41, 65, 183, 244, 103, 247,
|
||||||
|
101, 82, 246, 125, 87, 125, 78, 21, 186, 102, 205, 20, 40, 32, 201, 174,
|
||||||
|
15, 52, 240, 217, 180, 162, 108, 6, 211, 41, 18, 135, 232, 184, 18, 188,
|
||||||
|
169, 157, 190, 76, 166, 75, 176, 127, 39, 251, 22, 203, 153, 80, 49, 241,
|
||||||
|
124, 137, 151, 123, 204, 43, 159, 190, 177, 196, 18, 117, 169, 46, 152,
|
||||||
|
251, 45, 25, 164, 27, 145, 214, 228, 55, 15, 2, 131, 216, 80, 255, 204,
|
||||||
|
175, 100, 59, 145, 15, 103, 40, 33, 45, 255, 200, 254, 172, 138, 20, 58,
|
||||||
|
87, 182, 192, 148, 219, 41, 88, 230, 229, 70, 249,
|
||||||
|
]),
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
plaintext,
|
||||||
|
keyBytes,
|
||||||
|
iv,
|
||||||
|
additionalData,
|
||||||
|
tag,
|
||||||
|
tag_with_empty_ad,
|
||||||
|
ciphertext,
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,209 @@
|
||||||
|
function getFixtures() {
|
||||||
|
// Before we can really start, we need to fill a bunch of buffers with data
|
||||||
|
var plaintext = new Uint8Array([
|
||||||
|
84, 104, 105, 115, 32, 115, 112, 101, 99, 105, 102, 105, 99, 97, 116, 105,
|
||||||
|
111, 110, 32, 100, 101, 115, 99, 114, 105, 98, 101, 115, 32, 97, 32, 74, 97,
|
||||||
|
118, 97, 83, 99, 114, 105, 112, 116, 32, 65, 80, 73, 32, 102, 111, 114, 32,
|
||||||
|
112, 101, 114, 102, 111, 114, 109, 105, 110, 103, 32, 98, 97, 115, 105, 99,
|
||||||
|
32, 99, 114, 121, 112, 116, 111, 103, 114, 97, 112, 104, 105, 99, 32, 111,
|
||||||
|
112, 101, 114, 97, 116, 105, 111, 110, 115, 32, 105, 110, 32, 119, 101, 98,
|
||||||
|
32, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 115, 44, 32, 115,
|
||||||
|
117, 99, 104, 32, 97, 115, 32, 104, 97, 115, 104, 105, 110, 103, 44, 32,
|
||||||
|
115, 105, 103, 110, 97, 116, 117, 114, 101, 32, 103, 101, 110, 101, 114, 97,
|
||||||
|
116, 105, 111, 110, 32, 97, 110, 100, 32, 118, 101, 114, 105, 102, 105, 99,
|
||||||
|
97, 116, 105, 111, 110, 44, 32, 97, 110, 100, 32, 101, 110, 99, 114, 121,
|
||||||
|
112, 116, 105, 111, 110, 32, 97, 110, 100, 32, 100, 101, 99, 114, 121, 112,
|
||||||
|
116, 105, 111, 110, 46, 32, 65, 100, 100, 105, 116, 105, 111, 110, 97, 108,
|
||||||
|
108, 121, 44, 32, 105, 116, 32, 100, 101, 115, 99, 114, 105, 98, 101, 115,
|
||||||
|
32, 97, 110, 32, 65, 80, 73, 32, 102, 111, 114, 32, 97, 112, 112, 108, 105,
|
||||||
|
99, 97, 116, 105, 111, 110, 115, 32, 116, 111, 32, 103, 101, 110, 101, 114,
|
||||||
|
97, 116, 101, 32, 97, 110, 100, 47, 111, 114, 32, 109, 97, 110, 97, 103,
|
||||||
|
101, 32, 116, 104, 101, 32, 107, 101, 121, 105, 110, 103, 32, 109, 97, 116,
|
||||||
|
101, 114, 105, 97, 108, 32, 110, 101, 99, 101, 115, 115, 97, 114, 121, 32,
|
||||||
|
116, 111, 32, 112, 101, 114, 102, 111, 114, 109, 32, 116, 104, 101, 115,
|
||||||
|
101, 32, 111, 112, 101, 114, 97, 116, 105, 111, 110, 115, 46, 32, 85, 115,
|
||||||
|
101, 115, 32, 102, 111, 114, 32, 116, 104, 105, 115, 32, 65, 80, 73, 32,
|
||||||
|
114, 97, 110, 103, 101, 32, 102, 114, 111, 109, 32, 117, 115, 101, 114, 32,
|
||||||
|
111, 114, 32, 115, 101, 114, 118, 105, 99, 101, 32, 97, 117, 116, 104, 101,
|
||||||
|
110, 116, 105, 99, 97, 116, 105, 111, 110, 44, 32, 100, 111, 99, 117, 109,
|
||||||
|
101, 110, 116, 32, 111, 114, 32, 99, 111, 100, 101, 32, 115, 105, 103, 110,
|
||||||
|
105, 110, 103, 44, 32, 97, 110, 100, 32, 116, 104, 101, 32, 99, 111, 110,
|
||||||
|
102, 105, 100, 101, 110, 116, 105, 97, 108, 105, 116, 121, 32, 97, 110, 100,
|
||||||
|
32, 105, 110, 116, 101, 103, 114, 105, 116, 121, 32, 111, 102, 32, 99, 111,
|
||||||
|
109, 109, 117, 110, 105, 99, 97, 116, 105, 111, 110, 115, 46,
|
||||||
|
]);
|
||||||
|
|
||||||
|
// We want some random key bytes of various sizes.
|
||||||
|
// These were randomly generated from a script.
|
||||||
|
var keyBytes = {
|
||||||
|
128: new Uint8Array([
|
||||||
|
222, 192, 212, 252, 191, 60, 71, 65, 200, 146, 218, 189, 28, 212, 192, 78,
|
||||||
|
]),
|
||||||
|
192: new Uint8Array([
|
||||||
|
208, 238, 131, 65, 63, 68, 196, 63, 186, 208, 61, 207, 166, 18, 99, 152,
|
||||||
|
29, 109, 221, 95, 240, 30, 28, 246,
|
||||||
|
]),
|
||||||
|
256: new Uint8Array([
|
||||||
|
103, 105, 56, 35, 251, 29, 88, 7, 63, 145, 236, 233, 204, 58, 249, 16,
|
||||||
|
229, 83, 38, 22, 164, 210, 123, 19, 235, 123, 116, 216, 0, 11, 191, 48,
|
||||||
|
]),
|
||||||
|
};
|
||||||
|
|
||||||
|
// AES-GCM specification recommends that the IV should be 96 bits long.
|
||||||
|
var iv = new Uint8Array([
|
||||||
|
58, 146, 115, 42, 166, 234, 57, 191, 57, 134, 224, 199,
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Authenticated encryption via AES-GCM requires additional data that
|
||||||
|
// will be checked. We use the ASCII encoded Editorial Note
|
||||||
|
// following the Abstract of the Web Cryptography API recommendation.
|
||||||
|
var additionalData = new Uint8Array([
|
||||||
|
84, 104, 101, 114, 101, 32, 97, 114, 101, 32, 55, 32, 102, 117, 114, 116,
|
||||||
|
104, 101, 114, 32, 101, 100, 105, 116, 111, 114, 105, 97, 108, 32, 110, 111,
|
||||||
|
116, 101, 115, 32, 105, 110, 32, 116, 104, 101, 32, 100, 111, 99, 117, 109,
|
||||||
|
101, 110, 116, 46,
|
||||||
|
]);
|
||||||
|
|
||||||
|
// The length of the tag defaults to 16 bytes (128 bit).
|
||||||
|
var tag = {
|
||||||
|
128: new Uint8Array([
|
||||||
|
180, 165, 14, 180, 121, 113, 220, 168, 254, 117, 18, 66, 110, 98, 146,
|
||||||
|
240,
|
||||||
|
]),
|
||||||
|
192: new Uint8Array([
|
||||||
|
43, 102, 63, 121, 1, 120, 252, 2, 95, 149, 99, 207, 161, 10, 139, 159,
|
||||||
|
]),
|
||||||
|
256: new Uint8Array([
|
||||||
|
53, 0, 70, 11, 217, 64, 250, 241, 175, 160, 37, 78, 92, 160, 107, 38,
|
||||||
|
]),
|
||||||
|
};
|
||||||
|
|
||||||
|
var tag_with_empty_ad = {
|
||||||
|
128: new Uint8Array([
|
||||||
|
168, 116, 195, 94, 178, 179, 227, 160, 158, 207, 188, 132, 23, 137, 246,
|
||||||
|
129,
|
||||||
|
]),
|
||||||
|
192: new Uint8Array([
|
||||||
|
111, 84, 157, 153, 12, 219, 247, 161, 220, 24, 0, 74, 203, 228, 83, 201,
|
||||||
|
]),
|
||||||
|
256: new Uint8Array([
|
||||||
|
125, 85, 225, 240, 220, 112, 144, 9, 168, 179, 251, 128, 126, 147, 131,
|
||||||
|
244,
|
||||||
|
]),
|
||||||
|
};
|
||||||
|
|
||||||
|
// Results. These were created using OpenSSL.
|
||||||
|
|
||||||
|
// AES-GCM produces ciphertext and a tag.
|
||||||
|
var ciphertext = {
|
||||||
|
128: new Uint8Array([
|
||||||
|
46, 244, 139, 198, 120, 180, 9, 39, 83, 58, 203, 107, 69, 71, 8, 165, 132,
|
||||||
|
200, 94, 31, 228, 120, 170, 81, 241, 29, 38, 175, 99, 215, 241, 157, 144,
|
||||||
|
97, 35, 42, 36, 231, 2, 94, 214, 140, 67, 48, 189, 242, 21, 208, 110, 179,
|
||||||
|
30, 90, 181, 105, 242, 17, 244, 42, 42, 36, 125, 228, 82, 250, 87, 199,
|
||||||
|
95, 168, 210, 57, 174, 20, 220, 188, 107, 65, 242, 43, 217, 122, 145, 160,
|
||||||
|
100, 139, 54, 135, 175, 139, 115, 89, 15, 236, 234, 83, 2, 135, 51, 125,
|
||||||
|
63, 168, 184, 235, 148, 68, 132, 124, 166, 171, 53, 68, 94, 187, 31, 68,
|
||||||
|
119, 47, 252, 73, 63, 138, 154, 84, 167, 0, 54, 33, 11, 200, 22, 91, 245,
|
||||||
|
62, 64, 192, 7, 180, 210, 52, 233, 23, 24, 181, 50, 230, 63, 118, 228, 24,
|
||||||
|
1, 242, 75, 62, 196, 222, 122, 154, 227, 125, 89, 73, 112, 100, 154, 249,
|
||||||
|
61, 141, 126, 145, 46, 247, 102, 242, 62, 148, 94, 172, 128, 181, 110, 6,
|
||||||
|
7, 209, 58, 222, 51, 169, 83, 189, 200, 47, 22, 80, 49, 169, 227, 245,
|
||||||
|
165, 24, 96, 152, 228, 14, 252, 199, 193, 148, 46, 84, 49, 248, 198, 7, 0,
|
||||||
|
134, 255, 174, 151, 103, 48, 154, 178, 198, 103, 45, 226, 118, 19, 41, 85,
|
||||||
|
2, 55, 71, 7, 6, 0, 24, 150, 145, 227, 162, 126, 102, 248, 134, 116, 174,
|
||||||
|
215, 217, 166, 160, 140, 129, 21, 220, 131, 110, 242, 94, 249, 103, 151,
|
||||||
|
154, 81, 225, 35, 111, 131, 129, 111, 172, 214, 168, 30, 169, 71, 210, 64,
|
||||||
|
68, 56, 228, 223, 248, 233, 234, 140, 86, 145, 121, 29, 232, 55, 165, 61,
|
||||||
|
175, 147, 66, 33, 92, 6, 209, 241, 149, 73, 77, 9, 104, 2, 154, 247, 92,
|
||||||
|
87, 159, 191, 113, 82, 122, 148, 89, 28, 122, 111, 93, 110, 60, 42, 34,
|
||||||
|
70, 161, 14, 50, 153, 238, 189, 173, 99, 10, 118, 252, 1, 28, 67, 151,
|
||||||
|
114, 46, 78, 181, 78, 233, 183, 6, 254, 57, 29, 53, 118, 175, 80, 97, 156,
|
||||||
|
237, 219, 196, 71, 80, 161, 248, 139, 96, 124, 181, 154, 124, 149, 219,
|
||||||
|
47, 90, 11, 98, 63, 21, 64, 144, 77, 161, 204, 127, 209, 209, 7, 86, 65,
|
||||||
|
39, 142, 251, 183, 43, 227, 120, 155, 72, 70, 204, 89, 227, 199, 203, 28,
|
||||||
|
128, 23, 104, 188, 215, 32, 190, 18, 156, 57, 105, 7, 179, 155, 136, 236,
|
||||||
|
82, 173, 156, 170, 124, 210, 22, 11, 27, 182, 236, 109, 200, 172, 227, 72,
|
||||||
|
37, 1, 175, 9, 214, 227, 23, 141, 169, 215, 77, 134, 76, 229, 169, 241,
|
||||||
|
116, 222, 157, 77, 158, 213, 118, 223, 17, 31, 212, 97, 21, 237, 83, 2,
|
||||||
|
218, 239, 59, 147, 30, 169, 97, 12,
|
||||||
|
]),
|
||||||
|
|
||||||
|
192: new Uint8Array([
|
||||||
|
129, 16, 61, 38, 99, 56, 226, 139, 71, 251, 211, 15, 91, 152, 159, 219,
|
||||||
|
112, 147, 210, 73, 97, 204, 203, 240, 183, 243, 104, 241, 37, 67, 169,
|
||||||
|
198, 56, 76, 96, 202, 250, 212, 177, 157, 93, 115, 247, 176, 19, 3, 229,
|
||||||
|
102, 75, 200, 252, 222, 197, 58, 31, 44, 123, 151, 9, 191, 88, 123, 35,
|
||||||
|
48, 47, 25, 149, 35, 191, 219, 223, 94, 251, 152, 109, 171, 225, 31, 236,
|
||||||
|
252, 223, 174, 128, 238, 173, 32, 32, 79, 22, 100, 112, 215, 153, 128, 63,
|
||||||
|
158, 247, 18, 215, 81, 247, 208, 91, 28, 223, 222, 170, 9, 135, 210, 143,
|
||||||
|
47, 247, 132, 183, 252, 84, 19, 78, 85, 17, 215, 20, 51, 32, 124, 149,
|
||||||
|
172, 129, 202, 161, 217, 207, 24, 45, 177, 11, 106, 17, 108, 17, 12, 6,
|
||||||
|
62, 90, 132, 2, 54, 96, 90, 30, 239, 216, 173, 76, 67, 7, 221, 62, 124,
|
||||||
|
228, 156, 243, 31, 111, 160, 192, 188, 87, 107, 182, 138, 95, 122, 152,
|
||||||
|
202, 51, 118, 100, 124, 67, 220, 116, 52, 99, 15, 39, 2, 14, 209, 173,
|
||||||
|
119, 88, 6, 174, 106, 236, 150, 28, 189, 112, 161, 224, 186, 58, 110, 91,
|
||||||
|
54, 211, 132, 149, 7, 188, 77, 232, 118, 197, 43, 107, 101, 179, 44, 195,
|
||||||
|
159, 4, 124, 5, 30, 48, 227, 251, 199, 72, 98, 177, 206, 234, 228, 58,
|
||||||
|
191, 150, 28, 211, 29, 182, 138, 141, 249, 152, 142, 244, 203, 210, 128,
|
||||||
|
143, 244, 44, 187, 251, 221, 101, 152, 31, 119, 194, 51, 27, 167, 215,
|
||||||
|
122, 244, 193, 224, 191, 198, 210, 2, 143, 185, 207, 145, 228, 193, 153,
|
||||||
|
207, 119, 167, 75, 145, 43, 17, 1, 42, 146, 164, 21, 15, 164, 221, 216,
|
||||||
|
140, 122, 248, 49, 19, 246, 84, 214, 176, 226, 118, 140, 130, 123, 163,
|
||||||
|
217, 61, 198, 243, 182, 217, 52, 127, 190, 127, 135, 18, 239, 163, 195,
|
||||||
|
102, 136, 227, 128, 38, 244, 49, 208, 229, 249, 126, 157, 100, 72, 246,
|
||||||
|
10, 102, 163, 241, 155, 112, 165, 95, 32, 61, 66, 24, 233, 123, 236, 190,
|
||||||
|
124, 214, 65, 135, 114, 118, 122, 222, 196, 47, 120, 120, 64, 117, 253,
|
||||||
|
165, 28, 17, 152, 104, 119, 10, 53, 140, 109, 79, 246, 246, 28, 104, 228,
|
||||||
|
175, 102, 71, 246, 183, 79, 30, 31, 186, 32, 64, 146, 72, 228, 1, 175,
|
||||||
|
252, 115, 254, 95, 66, 87, 196, 134, 41, 115, 165, 206, 253, 245, 147,
|
||||||
|
137, 163, 230, 235, 238, 77, 218, 74, 157, 65, 97, 43, 198, 130, 190, 195,
|
||||||
|
142, 22, 166, 4, 179, 184, 167, 254, 156, 243, 38, 46, 66, 68, 252, 252,
|
||||||
|
161, 209, 83, 177, 128, 115, 92, 158, 182, 177, 185, 23, 39, 138, 245, 29,
|
||||||
|
216, 17, 178, 142, 225, 135, 8, 115,
|
||||||
|
]),
|
||||||
|
|
||||||
|
256: new Uint8Array([
|
||||||
|
191, 72, 167, 1, 122, 218, 148, 218, 15, 239, 202, 129, 96, 108, 229, 157,
|
||||||
|
138, 161, 232, 71, 80, 188, 118, 61, 75, 105, 120, 201, 14, 102, 102, 240,
|
||||||
|
111, 131, 180, 83, 95, 73, 2, 138, 205, 56, 9, 137, 227, 235, 73, 71, 200,
|
||||||
|
62, 246, 0, 223, 209, 3, 255, 113, 112, 63, 103, 41, 154, 77, 13, 149, 89,
|
||||||
|
94, 79, 132, 193, 114, 40, 158, 33, 55, 242, 130, 109, 136, 69, 124, 130,
|
||||||
|
150, 40, 69, 211, 224, 154, 209, 243, 65, 58, 230, 253, 31, 21, 72, 102,
|
||||||
|
18, 250, 139, 230, 235, 11, 108, 184, 133, 108, 181, 138, 188, 189, 91,
|
||||||
|
91, 115, 216, 68, 9, 229, 30, 154, 132, 118, 219, 183, 235, 177, 197, 221,
|
||||||
|
58, 13, 90, 126, 198, 74, 87, 162, 226, 7, 51, 184, 15, 209, 81, 86, 138,
|
||||||
|
169, 154, 12, 206, 58, 187, 228, 177, 68, 65, 62, 68, 141, 93, 241, 105,
|
||||||
|
29, 239, 20, 102, 222, 49, 209, 18, 162, 247, 200, 240, 122, 244, 204,
|
||||||
|
148, 67, 58, 118, 164, 95, 230, 68, 242, 203, 138, 145, 132, 6, 224, 206,
|
||||||
|
234, 131, 183, 137, 249, 2, 11, 254, 123, 235, 70, 14, 136, 207, 76, 57,
|
||||||
|
22, 38, 49, 197, 219, 123, 43, 241, 191, 64, 211, 152, 178, 140, 165, 1,
|
||||||
|
189, 52, 79, 184, 213, 56, 215, 182, 27, 27, 70, 243, 101, 255, 50, 108,
|
||||||
|
210, 105, 13, 22, 218, 176, 238, 36, 113, 251, 18, 218, 138, 214, 193, 21,
|
||||||
|
122, 224, 125, 118, 134, 161, 174, 130, 86, 233, 149, 151, 33, 31, 88, 63,
|
||||||
|
91, 63, 209, 145, 158, 109, 42, 176, 43, 23, 151, 49, 101, 199, 35, 101,
|
||||||
|
158, 139, 198, 219, 209, 125, 221, 205, 99, 69, 142, 165, 139, 110, 220,
|
||||||
|
184, 226, 238, 149, 161, 175, 171, 167, 170, 65, 19, 156, 166, 219, 231,
|
||||||
|
87, 20, 226, 58, 210, 134, 110, 160, 176, 118, 250, 73, 86, 213, 116, 53,
|
||||||
|
114, 24, 101, 34, 185, 59, 237, 47, 39, 206, 67, 12, 74, 236, 130, 7, 249,
|
||||||
|
217, 203, 245, 122, 14, 230, 53, 203, 126, 93, 131, 51, 2, 0, 231, 161,
|
||||||
|
111, 42, 126, 173, 121, 80, 179, 59, 186, 133, 236, 252, 188, 149, 99,
|
||||||
|
221, 182, 55, 5, 38, 83, 132, 43, 123, 233, 174, 208, 140, 165, 77, 1,
|
||||||
|
202, 46, 6, 183, 207, 246, 125, 37, 110, 226, 61, 155, 194, 198, 153, 107,
|
||||||
|
1, 8, 0, 23, 124, 18, 4, 144, 235, 146, 77, 220, 123, 152, 114, 219, 127,
|
||||||
|
59, 126, 10, 79, 106, 198, 11, 27, 111, 11, 155, 1, 137, 38, 74, 3, 248,
|
||||||
|
225, 221, 203, 86, 4, 148, 25, 88, 144, 185, 38, 114, 139, 48, 74, 82,
|
||||||
|
172, 36, 115, 193, 223, 220, 144, 69, 91, 5, 83, 56, 138, 63,
|
||||||
|
]),
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
plaintext,
|
||||||
|
keyBytes,
|
||||||
|
iv,
|
||||||
|
additionalData,
|
||||||
|
tag,
|
||||||
|
tag_with_empty_ad,
|
||||||
|
ciphertext,
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
// aes_gcm_vectors.js
|
// aes_gcm_vectors.js
|
||||||
|
|
||||||
// The following function returns an array of test vectors
|
// The following function returns an array of test vectors
|
||||||
|
@ -12,200 +11,15 @@
|
||||||
// plaintext - the text to encrypt
|
// plaintext - the text to encrypt
|
||||||
// result - the expected result (usually just ciphertext, sometimes with added authentication)
|
// result - the expected result (usually just ciphertext, sometimes with added authentication)
|
||||||
function getTestVectors() {
|
function getTestVectors() {
|
||||||
// Before we can really start, we need to fill a bunch of buffers with data
|
const {
|
||||||
var plaintext = new Uint8Array([84, 104, 105, 115, 32, 115,
|
plaintext,
|
||||||
112, 101, 99, 105, 102, 105, 99, 97, 116, 105, 111, 110,
|
keyBytes,
|
||||||
32, 100, 101, 115, 99, 114, 105, 98, 101, 115, 32, 97, 32,
|
iv,
|
||||||
74, 97, 118, 97, 83, 99, 114, 105, 112, 116, 32, 65, 80,
|
additionalData,
|
||||||
73, 32, 102, 111, 114, 32, 112, 101, 114, 102, 111, 114,
|
tag,
|
||||||
109, 105, 110, 103, 32, 98, 97, 115, 105, 99, 32, 99, 114,
|
tag_with_empty_ad,
|
||||||
121, 112, 116, 111, 103, 114, 97, 112, 104, 105, 99, 32,
|
ciphertext,
|
||||||
111, 112, 101, 114, 97, 116, 105, 111, 110, 115, 32, 105,
|
} = getFixtures();
|
||||||
110, 32, 119, 101, 98, 32, 97, 112, 112, 108, 105, 99, 97,
|
|
||||||
116, 105, 111, 110, 115, 44, 32, 115, 117, 99, 104, 32, 97,
|
|
||||||
115, 32, 104, 97, 115, 104, 105, 110, 103, 44, 32, 115,
|
|
||||||
105, 103, 110, 97, 116, 117, 114, 101, 32, 103, 101, 110,
|
|
||||||
101, 114, 97, 116, 105, 111, 110, 32, 97, 110, 100, 32,
|
|
||||||
118, 101, 114, 105, 102, 105, 99, 97, 116, 105, 111, 110,
|
|
||||||
44, 32, 97, 110, 100, 32, 101, 110, 99, 114, 121, 112,
|
|
||||||
116, 105, 111, 110, 32, 97, 110, 100, 32, 100, 101, 99,
|
|
||||||
114, 121, 112, 116, 105, 111, 110, 46, 32, 65, 100, 100,
|
|
||||||
105, 116, 105, 111, 110, 97, 108, 108, 121, 44, 32, 105,
|
|
||||||
116, 32, 100, 101, 115, 99, 114, 105, 98, 101, 115, 32, 97,
|
|
||||||
110, 32, 65, 80, 73, 32, 102, 111, 114, 32, 97, 112, 112,
|
|
||||||
108, 105, 99, 97, 116, 105, 111, 110, 115, 32, 116, 111,
|
|
||||||
32, 103, 101, 110, 101, 114, 97, 116, 101, 32, 97, 110,
|
|
||||||
100, 47, 111, 114, 32, 109, 97, 110, 97, 103, 101, 32, 116,
|
|
||||||
104, 101, 32, 107, 101, 121, 105, 110, 103, 32, 109, 97,
|
|
||||||
116, 101, 114, 105, 97, 108, 32, 110, 101, 99, 101, 115,
|
|
||||||
115, 97, 114, 121, 32, 116, 111, 32, 112, 101, 114, 102,
|
|
||||||
111, 114, 109, 32, 116, 104, 101, 115, 101, 32, 111, 112,
|
|
||||||
101, 114, 97, 116, 105, 111, 110, 115, 46, 32, 85, 115,
|
|
||||||
101, 115, 32, 102, 111, 114, 32, 116, 104, 105, 115, 32,
|
|
||||||
65, 80, 73, 32, 114, 97, 110, 103, 101, 32, 102, 114, 111,
|
|
||||||
109, 32, 117, 115, 101, 114, 32, 111, 114, 32, 115, 101,
|
|
||||||
114, 118, 105, 99, 101, 32, 97, 117, 116, 104, 101, 110,
|
|
||||||
116, 105, 99, 97, 116, 105, 111, 110, 44, 32, 100, 111,
|
|
||||||
99, 117, 109, 101, 110, 116, 32, 111, 114, 32, 99, 111,
|
|
||||||
100, 101, 32, 115, 105, 103, 110, 105, 110, 103, 44, 32,
|
|
||||||
97, 110, 100, 32, 116, 104, 101, 32, 99, 111, 110, 102,
|
|
||||||
105, 100, 101, 110, 116, 105, 97, 108, 105, 116, 121, 32,
|
|
||||||
97, 110, 100, 32, 105, 110, 116, 101, 103, 114, 105, 116,
|
|
||||||
121, 32, 111, 102, 32, 99, 111, 109, 109, 117, 110, 105,
|
|
||||||
99, 97, 116, 105, 111, 110, 115, 46]);
|
|
||||||
|
|
||||||
// We want some random key bytes of various sizes.
|
|
||||||
// These were randomly generated from a script.
|
|
||||||
var keyBytes = {
|
|
||||||
128: new Uint8Array([222, 192, 212, 252, 191, 60, 71,
|
|
||||||
65, 200, 146, 218, 189, 28, 212, 192, 78]),
|
|
||||||
192: new Uint8Array([208, 238, 131, 65, 63, 68, 196, 63, 186, 208,
|
|
||||||
61, 207, 166, 18, 99, 152, 29, 109, 221, 95, 240, 30, 28, 246]),
|
|
||||||
256: new Uint8Array([103, 105, 56, 35, 251, 29, 88, 7, 63, 145, 236,
|
|
||||||
233, 204, 58, 249, 16, 229, 83, 38, 22, 164, 210, 123, 19, 235, 123, 116,
|
|
||||||
216, 0, 11, 191, 48])
|
|
||||||
}
|
|
||||||
|
|
||||||
// AES-GCM needs an IV of no more than 2^64 - 1 bytes. Well, 32 bytes is okay then.
|
|
||||||
var iv = new Uint8Array([58, 146, 115, 42, 166, 234, 57,
|
|
||||||
191, 57, 134, 224, 199, 63, 169, 32, 0, 32, 33, 117, 56,
|
|
||||||
94, 248, 173, 234, 194, 200, 115, 53, 235, 146, 141, 212]);
|
|
||||||
|
|
||||||
// Authenticated encryption via AES-GCM requires additional data that
|
|
||||||
// will be checked. We use the ASCII encoded Editorial Note
|
|
||||||
// following the Abstract of the Web Cryptography API recommendation.
|
|
||||||
var additionalData = new Uint8Array([84, 104, 101, 114, 101,
|
|
||||||
32, 97, 114, 101, 32, 55, 32, 102, 117, 114, 116, 104, 101,
|
|
||||||
114, 32, 101, 100, 105, 116, 111, 114, 105, 97, 108, 32,
|
|
||||||
110, 111, 116, 101, 115, 32, 105, 110, 32, 116, 104, 101,
|
|
||||||
32, 100, 111, 99, 117, 109, 101, 110, 116, 46]);
|
|
||||||
|
|
||||||
// The length of the tag defaults to 16 bytes (128 bit).
|
|
||||||
var tag = {
|
|
||||||
128: new Uint8Array([194, 226, 198, 253, 239, 28,
|
|
||||||
197, 240, 123, 216, 176, 151, 239, 200, 184, 183]),
|
|
||||||
192: new Uint8Array([183, 57, 32, 144, 164, 76, 121, 77, 58,
|
|
||||||
86, 62, 132, 53, 130, 96, 225]),
|
|
||||||
256: new Uint8Array([188, 239, 241, 48, 159, 21, 213, 0, 241,
|
|
||||||
42, 85, 76, 194, 28, 49, 60])
|
|
||||||
};
|
|
||||||
|
|
||||||
var tag_with_empty_ad = {
|
|
||||||
128: new Uint8Array([222, 51, 11, 23, 36, 222, 250, 248, 27, 98, 30, 81, 150, 35, 220, 198]),
|
|
||||||
192: new Uint8Array([243, 11, 130, 112, 169, 239, 114, 238, 185, 219, 93, 1, 95, 108, 184, 183]),
|
|
||||||
256: new Uint8Array([244, 186, 86, 203, 154, 37, 191, 248, 246, 57, 139, 130, 224, 47, 217, 238])
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// Results. These were created using the Python cryptography module.
|
|
||||||
|
|
||||||
// AES-GCM produces ciphertext and a tag.
|
|
||||||
var ciphertext = {
|
|
||||||
128: new Uint8Array([180, 241, 40, 183, 105,
|
|
||||||
52, 147, 238, 224, 175, 175, 236, 168, 244, 241, 121, 9,
|
|
||||||
202, 225, 237, 56, 216, 253, 254, 186, 102, 111, 207, 228,
|
|
||||||
190, 130, 177, 159, 246, 6, 53, 249, 113, 228, 254, 81,
|
|
||||||
126, 253, 191, 100, 43, 251, 147, 107, 91, 166, 231, 201,
|
|
||||||
241, 180, 214, 112, 47, 123, 164, 186, 134, 54, 65, 22,
|
|
||||||
181, 201, 82, 236, 59, 52, 139, 172, 39, 41, 89, 123, 62,
|
|
||||||
102, 167, 82, 150, 250, 93, 96, 169, 135, 89, 245, 255,
|
|
||||||
164, 192, 169, 159, 25, 16, 139, 145, 76, 4, 144, 131,
|
|
||||||
148, 197, 204, 46, 23, 110, 193, 228, 127, 120, 242, 24,
|
|
||||||
54, 240, 181, 162, 98, 244, 249, 68, 134, 122, 126, 151,
|
|
||||||
38, 108, 116, 68, 150, 109, 38, 194, 21, 159, 140, 205,
|
|
||||||
183, 35, 97, 151, 186, 120, 145, 22, 235, 22, 210, 223,
|
|
||||||
187, 143, 162, 183, 93, 196, 104, 51, 96, 53, 234, 250,
|
|
||||||
184, 76, 237, 157, 37, 203, 226, 87, 222, 75, 240, 95, 218,
|
|
||||||
222, 64, 81, 165, 75, 201, 216, 190, 13, 116, 217, 69, 66,
|
|
||||||
47, 161, 68, 247, 74, 253, 157, 181, 162, 121, 53, 32, 91,
|
|
||||||
124, 230, 105, 224, 17, 187, 50, 61, 77, 103, 79, 71, 57,
|
|
||||||
163, 116, 234, 149, 27, 105, 24, 31, 159, 3, 128, 130, 42,
|
|
||||||
94, 125, 200, 142, 251, 148, 201, 17, 149, 232, 84, 50, 17,
|
|
||||||
18, 203, 186, 226, 164, 227, 202, 76, 65, 16, 163, 224,
|
|
||||||
132, 52, 31, 101, 129, 72, 171, 159, 42, 177, 253, 98, 86,
|
|
||||||
201, 95, 117, 62, 12, 205, 78, 36, 126, 196, 121, 89, 185,
|
|
||||||
37, 161, 66, 181, 117, 186, 71, 124, 132, 110, 120, 27,
|
|
||||||
246, 163, 18, 13, 90, 200, 127, 82, 209, 241, 170, 73, 247,
|
|
||||||
137, 96, 244, 254, 251, 119, 71, 156, 27, 107, 53, 33, 45,
|
|
||||||
22, 0, 144, 48, 32, 11, 116, 21, 125, 246, 217, 171, 158,
|
|
||||||
224, 142, 234, 141, 242, 168, 89, 154, 66, 227, 161, 182,
|
|
||||||
96, 1, 88, 78, 12, 7, 239, 30, 206, 31, 89, 111, 107, 42,
|
|
||||||
37, 241, 148, 232, 1, 8, 251, 117, 146, 183, 9, 48, 39, 94,
|
|
||||||
59, 70, 230, 26, 165, 97, 156, 140, 141, 31, 62, 10, 206,
|
|
||||||
55, 48, 207, 0, 197, 202, 197, 108, 133, 175, 80, 4, 16,
|
|
||||||
154, 223, 255, 4, 196, 188, 178, 240, 29, 13, 120, 5, 225,
|
|
||||||
202, 3, 35, 225, 158, 92, 152, 73, 205, 107, 157, 224, 245,
|
|
||||||
99, 194, 171, 156, 245, 247, 183, 165, 40, 62, 200, 110,
|
|
||||||
29, 151, 206, 100, 175, 88, 36, 242, 90, 4, 82, 73, 250,
|
|
||||||
140, 245, 217, 9, 153, 35, 242, 206, 78, 197, 121, 115, 15,
|
|
||||||
80, 128, 101, 191, 240, 91, 151, 249, 62, 62, 244, 18, 3,
|
|
||||||
17, 135, 222, 210, 93, 149, 123]),
|
|
||||||
|
|
||||||
192: new Uint8Array([126, 160, 166, 112, 227, 212, 106,
|
|
||||||
186, 175, 70, 24, 28, 86, 149, 31, 154, 156, 190, 244, 132, 44, 61, 149,
|
|
||||||
242, 105, 67, 17, 136, 7, 146, 153, 170, 200, 214, 142, 205, 170, 225,
|
|
||||||
85, 44, 241, 159, 255, 234, 10, 13, 37, 48, 255, 21, 141, 176, 60, 117,
|
|
||||||
73, 130, 247, 204, 144, 102, 167, 89, 203, 235, 229, 129, 122, 253, 124,
|
|
||||||
179, 115, 118, 163, 157, 67, 141, 122, 146, 209, 11, 112, 5, 230, 117,
|
|
||||||
123, 184, 243, 99, 83, 10, 31, 166, 96, 1, 121, 44, 10, 241, 24, 43,
|
|
||||||
184, 187, 25, 239, 246, 176, 108, 230, 127, 25, 42, 67, 202, 140, 179,
|
|
||||||
104, 159, 75, 103, 43, 248, 98, 166, 179, 67, 0, 163, 227, 84, 40, 129,
|
|
||||||
227, 198, 205, 7, 156, 16, 185, 24, 166, 59, 218, 197, 114, 74, 34, 126,
|
|
||||||
22, 226, 226, 85, 212, 69, 83, 163, 185, 68, 109, 182, 54, 209, 237, 96,
|
|
||||||
184, 32, 53, 127, 175, 13, 146, 141, 115, 164, 184, 98, 245, 174, 223,
|
|
||||||
46, 32, 167, 39, 103, 19, 210, 80, 131, 254, 103, 249, 247, 29, 120, 31,
|
|
||||||
105, 241, 103, 169, 249, 93, 153, 74, 56, 53, 239, 157, 132, 236, 169,
|
|
||||||
246, 242, 24, 113, 97, 128, 238, 152, 148, 31, 84, 8, 52, 105, 198, 116,
|
|
||||||
103, 132, 48, 199, 23, 90, 24, 29, 63, 41, 117, 191, 57, 31, 209, 128,
|
|
||||||
60, 119, 175, 84, 141, 177, 165, 169, 195, 35, 163, 105, 146, 157, 209,
|
|
||||||
93, 149, 105, 160, 93, 231, 78, 201, 92, 235, 200, 89, 37, 50, 181, 30,
|
|
||||||
213, 242, 59, 156, 219, 19, 158, 17, 224, 81, 108, 52, 87, 248, 101, 23,
|
|
||||||
39, 107, 67, 151, 103, 230, 126, 202, 184, 118, 226, 18, 29, 93, 37, 208,
|
|
||||||
40, 82, 113, 35, 157, 145, 152, 50, 253, 140, 47, 141, 192, 1, 148, 114,
|
|
||||||
40, 10, 112, 79, 227, 16, 105, 247, 31, 49, 102, 195, 75, 183, 172, 254,
|
|
||||||
188, 42, 89, 77, 38, 104, 1, 180, 106, 61, 71, 70, 35, 160, 103, 101,
|
|
||||||
244, 26, 226, 37, 159, 155, 4, 107, 222, 219, 136, 37, 24, 246, 44, 23,
|
|
||||||
44, 248, 132, 108, 59, 179, 99, 145, 132, 82, 53, 203, 111, 150, 55,
|
|
||||||
123, 51, 214, 165, 108, 124, 179, 131, 174, 139, 224, 114, 96, 218, 181,
|
|
||||||
243, 128, 198, 98, 115, 92, 95, 165, 23, 229, 108, 146, 14, 244, 162,
|
|
||||||
37, 85, 201, 33, 44, 92, 106, 112, 185, 16, 189, 42, 114, 109, 59, 124,
|
|
||||||
131, 16, 211, 31, 97, 29, 135, 61, 150, 75, 250, 207, 129, 38, 205, 187,
|
|
||||||
186, 55, 207, 232, 24, 48, 232, 49, 226, 16, 12, 27, 70, 31, 124, 128,
|
|
||||||
218, 100, 91, 200, 184, 78, 252, 100, 235, 62, 43, 69, 214, 163, 65, 14,
|
|
||||||
44, 180]),
|
|
||||||
|
|
||||||
256: new Uint8Array([8, 97, 235, 113, 70, 32, 135, 131,
|
|
||||||
210, 209, 124, 160, 255, 182, 9, 29, 125, 193, 27, 240, 129, 46, 2, 137,
|
|
||||||
169, 142, 61, 7, 145, 54, 170, 207, 159, 111, 39, 95, 87, 63, 162, 27,
|
|
||||||
6, 18, 219, 215, 116, 34, 90, 57, 114, 244, 102, 145, 67, 6, 51, 152,
|
|
||||||
247, 165, 242, 116, 100, 219, 177, 72, 177, 17, 110, 67, 93, 219, 100,
|
|
||||||
217, 20, 207, 89, 154, 45, 37, 105, 83, 67, 162, 140, 235, 129, 40, 177,
|
|
||||||
202, 174, 54, 148, 55, 156, 193, 232, 249, 134, 163, 195, 51, 114, 116,
|
|
||||||
65, 38, 73, 99, 96, 249, 224, 69, 17, 119, 186, 188, 181, 43, 78, 156,
|
|
||||||
76, 138, 226, 63, 5, 248, 9, 94, 26, 1, 2, 235, 39, 174, 74, 47, 183,
|
|
||||||
22, 40, 47, 47, 13, 100, 119, 12, 67, 178, 184, 56, 167, 238, 143, 13,
|
|
||||||
44, 208, 185, 151, 108, 6, 17, 52, 122, 182, 210, 207, 42, 219, 37, 74,
|
|
||||||
94, 126, 36, 249, 37, 32, 4, 218, 44, 238, 69, 56, 219, 31, 77, 173, 46,
|
|
||||||
187, 103, 36, 112, 213, 252, 40, 87, 164, 240, 163, 159, 32, 129, 125,
|
|
||||||
178, 108, 47, 28, 31, 36, 42, 115, 36, 14, 145, 195, 156, 191, 46, 163,
|
|
||||||
249, 181, 31, 90, 73, 30, 72, 57, 223, 63, 60, 79, 140, 14, 117, 31,
|
|
||||||
145, 222, 156, 121, 237, 32, 145, 143, 96, 12, 254, 35, 21, 21, 59, 168,
|
|
||||||
171, 154, 217, 0, 59, 202, 175, 103, 214, 192, 175, 26, 18, 43, 54, 176,
|
|
||||||
222, 75, 22, 7, 122, 253, 224, 145, 61, 42, 208, 73, 237, 84, 141, 209,
|
|
||||||
213, 228, 46, 244, 59, 9, 68, 6, 35, 88, 189, 10, 62, 9, 85, 28, 44, 82,
|
|
||||||
19, 153, 160, 178, 240, 56, 160, 244, 201, 173, 77, 61, 20, 227, 30,
|
|
||||||
180, 167, 16, 105, 185, 193, 95, 207, 41, 23, 134, 78, 198, 182, 93, 24,
|
|
||||||
89, 247, 231, 75, 233, 194, 137, 242, 114, 194, 190, 130, 138, 238, 94,
|
|
||||||
137, 193, 194, 115, 137, 190, 207, 169, 83, 155, 14, 210, 160, 129, 195,
|
|
||||||
161, 234, 221, 255, 114, 67, 98, 12, 93, 41, 65, 183, 244, 103, 247,
|
|
||||||
101, 82, 246, 125, 87, 125, 78, 21, 186, 102, 205, 20, 40, 32, 201, 174,
|
|
||||||
15, 52, 240, 217, 180, 162, 108, 6, 211, 41, 18, 135, 232, 184, 18, 188,
|
|
||||||
169, 157, 190, 76, 166, 75, 176, 127, 39, 251, 22, 203, 153, 80, 49,
|
|
||||||
241, 124, 137, 151, 123, 204, 43, 159, 190, 177, 196, 18, 117, 169, 46,
|
|
||||||
152, 251, 45, 25, 164, 27, 145, 214, 228, 55, 15, 2, 131, 216, 80, 255,
|
|
||||||
204, 175, 100, 59, 145, 15, 103, 40, 33, 45, 255, 200, 254, 172, 138,
|
|
||||||
20, 58, 87, 182, 192, 148, 219, 41, 88, 230, 229, 70, 249])
|
|
||||||
};
|
|
||||||
|
|
||||||
var keyLengths = [128, 192, 256];
|
var keyLengths = [128, 192, 256];
|
||||||
var tagLengths = [32, 64, 96, 104, 112, 120, 128];
|
var tagLengths = [32, 64, 96, 104, 112, 120, 128];
|
||||||
|
@ -220,7 +34,7 @@ function getTestVectors() {
|
||||||
result.set(ciphertext[keyLength], 0);
|
result.set(ciphertext[keyLength], 0);
|
||||||
result.set(tag[keyLength].slice(0, byteCount), ciphertext[keyLength].byteLength);
|
result.set(tag[keyLength].slice(0, byteCount), ciphertext[keyLength].byteLength);
|
||||||
passing.push({
|
passing.push({
|
||||||
name: "AES-GCM " + keyLength.toString() + "-bit key, " + tagLength.toString() + "-bit tag",
|
name: "AES-GCM " + keyLength.toString() + "-bit key, " + tagLength.toString() + "-bit tag, " + (iv.byteLength << 3).toString() + "-bit iv",
|
||||||
keyBuffer: keyBytes[keyLength],
|
keyBuffer: keyBytes[keyLength],
|
||||||
key: null,
|
key: null,
|
||||||
algorithm: {name: "AES-GCM", iv: iv, additionalData: additionalData, tagLength: tagLength},
|
algorithm: {name: "AES-GCM", iv: iv, additionalData: additionalData, tagLength: tagLength},
|
||||||
|
@ -232,7 +46,7 @@ function getTestVectors() {
|
||||||
noadresult.set(ciphertext[keyLength], 0);
|
noadresult.set(ciphertext[keyLength], 0);
|
||||||
noadresult.set(tag_with_empty_ad[keyLength].slice(0, byteCount), ciphertext[keyLength].byteLength);
|
noadresult.set(tag_with_empty_ad[keyLength].slice(0, byteCount), ciphertext[keyLength].byteLength);
|
||||||
passing.push({
|
passing.push({
|
||||||
name: "AES-GCM " + keyLength.toString() + "-bit key, no additional data, " + tagLength.toString() + "-bit tag",
|
name: "AES-GCM " + keyLength.toString() + "-bit key, no additional data, " + tagLength.toString() + "-bit tag, " + (iv.byteLength << 3).toString() + "-bit iv",
|
||||||
keyBuffer: keyBytes[keyLength],
|
keyBuffer: keyBytes[keyLength],
|
||||||
key: null,
|
key: null,
|
||||||
algorithm: {name: "AES-GCM", iv: iv, tagLength: tagLength},
|
algorithm: {name: "AES-GCM", iv: iv, tagLength: tagLength},
|
||||||
|
@ -248,7 +62,7 @@ function getTestVectors() {
|
||||||
// First, make some tests for bad tag lengths
|
// First, make some tests for bad tag lengths
|
||||||
[24, 48, 72, 95, 129].forEach(function(badTagLength) {
|
[24, 48, 72, 95, 129].forEach(function(badTagLength) {
|
||||||
failing.push({
|
failing.push({
|
||||||
name: "AES-GCM " + keyLength.toString() + "-bit key, illegal tag length " + badTagLength.toString() + "-bits",
|
name: "AES-GCM " + keyLength.toString() + "-bit key, " + (iv.byteLength << 3).toString() + "-bit iv, " + "illegal tag length " + badTagLength.toString() + "-bits",
|
||||||
keyBuffer: keyBytes[keyLength],
|
keyBuffer: keyBytes[keyLength],
|
||||||
key: null,
|
key: null,
|
||||||
algorithm: {name: "AES-GCM", iv: iv, additionalData: additionalData, tagLength: badTagLength},
|
algorithm: {name: "AES-GCM", iv: iv, additionalData: additionalData, tagLength: badTagLength},
|
||||||
|
|
|
@ -85,53 +85,55 @@ function getTestVectors() {
|
||||||
// Additional test vectors, using the same format as getTestVectors, but the
|
// Additional test vectors, using the same format as getTestVectors, but the
|
||||||
// signatures are invalid.
|
// signatures are invalid.
|
||||||
function getInvalidTestVectors() {
|
function getInvalidTestVectors() {
|
||||||
var vectors = [
|
var vectors = [];
|
||||||
|
for (const validVector of getTestVectors()) {
|
||||||
{
|
{
|
||||||
name: "The signature was truncated by 1 byte",
|
const vector = structuredClone(validVector);
|
||||||
publicKeyBuffer: new Uint8Array([48, 89, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, 134, 72, 206, 61, 3, 1, 7, 3, 66, 0, 4, 156, 176, 207, 105, 48, 61, 175, 199, 97, 212, 228, 104, 123, 78, 207, 3, 158, 109, 52, 171, 150, 74, 248, 8, 16, 216, 213, 88, 164, 168, 214, 247, 45, 81, 35, 58, 23, 136, 146, 10, 134, 238, 8, 161, 150, 44, 121, 239, 163, 23, 251, 120, 121, 226, 151, 218, 210, 20, 109, 185, 149, 250, 28, 120]),
|
vector.name = `${vector.name} - The signature was truncated by 1 byte`;
|
||||||
publicKeyFormat: "spki",
|
vector.signature = vector.signature.subarray(0, vector.signature.byteLength - 1);
|
||||||
publicKey: null,
|
vectors.push(vector);
|
||||||
algorithmName: "ECDSA",
|
}
|
||||||
namedCurve: "P-256",
|
|
||||||
hashName: "SHA-512",
|
// The signature was made with a different algorithm
|
||||||
plaintext: new Uint8Array([110, 41, 50, 21, 51, 1, 164, 238, 246, 128, 230, 66, 137, 41, 173, 174, 152, 140, 16, 141, 102, 138, 49, 255, 85, 208, 72, 153, 71, 215, 95, 248, 26, 70, 191, 137, 232, 77, 100, 1, 240, 35, 190, 110, 135, 104, 143, 188, 215, 132, 215, 133, 202, 132, 103, 53, 82, 74, 203, 82, 208, 4, 82, 200, 64, 64, 164, 121, 231, 204, 51, 9, 54, 68, 29, 147, 187, 231, 34, 169, 67, 42, 110, 29, 177, 18, 181, 201, 64, 59, 16, 39, 44, 177, 52, 127, 214, 25, 212, 99, 247, 169, 210, 35, 173, 118, 253, 224, 109, 138, 104, 131, 80, 15, 184, 67, 35, 90, 191, 249, 142, 36, 27, 223, 181, 83, 140, 62]),
|
for (const hashName of ["SHA-1", "SHA-256", "SHA-384", "SHA-512"]) {
|
||||||
signature: new Uint8Array([75, 159, 145, 228, 40, 82, 135, 38, 26, 29, 28, 146, 60, 246, 25, 205, 82, 193, 117, 207, 231, 241, 190, 96, 165, 37, 140, 97, 3, 72, 186, 61, 40, 196, 95, 144, 29, 113, 196, 27, 41, 134, 56, 236, 13, 106, 133, 215, 252, 176, 195, 59, 191, 236, 90, 156, 129, 8, 70, 182, 57, 40, 154]),
|
if (validVector.hashName === hashName) continue;
|
||||||
},
|
const vector = structuredClone(validVector);
|
||||||
|
vector.name = `${vector.name} - The signature was made using ${vector.hashName}, however verification is being done using ${hashName}`;
|
||||||
|
vector.hashName = hashName;
|
||||||
|
vectors.push(vector);
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name: "The signature was made using SHA-512, however verification is being done using SHA-1.",
|
// Excess padding
|
||||||
publicKeyBuffer: new Uint8Array([48, 89, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, 134, 72, 206, 61, 3, 1, 7, 3, 66, 0, 4, 156, 176, 207, 105, 48, 61, 175, 199, 97, 212, 228, 104, 123, 78, 207, 3, 158, 109, 52, 171, 150, 74, 248, 8, 16, 216, 213, 88, 164, 168, 214, 247, 45, 81, 35, 58, 23, 136, 146, 10, 134, 238, 8, 161, 150, 44, 121, 239, 163, 23, 251, 120, 121, 226, 151, 218, 210, 20, 109, 185, 149, 250, 28, 120]),
|
const vector = structuredClone(validVector);
|
||||||
publicKeyFormat: "spki",
|
vector.name = `${vector.name} - Signature has excess padding`;
|
||||||
publicKey: null,
|
|
||||||
algorithmName: "ECDSA",
|
const r = vector.signature.subarray(0, vector.signature.byteLength / 2);
|
||||||
namedCurve: "P-256",
|
const s = vector.signature.subarray(vector.signature.byteLength);
|
||||||
hashName: "SHA-1",
|
vector.signature = new Uint8Array([
|
||||||
plaintext: new Uint8Array([110, 41, 50, 21, 51, 1, 164, 238, 246, 128, 230, 66, 137, 41, 173, 174, 152, 140, 16, 141, 102, 138, 49, 255, 85, 208, 72, 153, 71, 215, 95, 248, 26, 70, 191, 137, 232, 77, 100, 1, 240, 35, 190, 110, 135, 104, 143, 188, 215, 132, 215, 133, 202, 132, 103, 53, 82, 74, 203, 82, 208, 4, 82, 200, 64, 64, 164, 121, 231, 204, 51, 9, 54, 68, 29, 147, 187, 231, 34, 169, 67, 42, 110, 29, 177, 18, 181, 201, 64, 59, 16, 39, 44, 177, 52, 127, 214, 25, 212, 99, 247, 169, 210, 35, 173, 118, 253, 224, 109, 138, 104, 131, 80, 15, 184, 67, 35, 90, 191, 249, 142, 36, 27, 223, 181, 83, 140, 62]),
|
0, ...r,
|
||||||
signature: new Uint8Array([75, 159, 145, 228, 40, 82, 135, 38, 26, 29, 28, 146, 60, 246, 25, 205, 82, 193, 117, 207, 231, 241, 190, 96, 165, 37, 140, 97, 3, 72, 186, 61, 40, 196, 95, 144, 29, 113, 196, 27, 41, 134, 56, 236, 13, 106, 133, 215, 252, 176, 195, 59, 191, 236, 90, 156, 129, 8, 70, 182, 57, 40, 154, 132]),
|
0, ...s,
|
||||||
},
|
]);
|
||||||
|
|
||||||
|
vectors.push(vector);
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name: "Excess padding",
|
// Empty signature
|
||||||
publicKeyBuffer: new Uint8Array([48, 118, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 34, 3, 98, 0, 4, 8, 116, 162, 224, 184, 255, 68, 143, 14, 84, 50, 30, 39, 244, 241, 230, 77, 6, 76, 222, 183, 210, 111, 69, 140, 50, 233, 48, 18, 15, 78, 87, 220, 133, 194, 105, 63, 151, 126, 237, 74, 142, 204, 141, 185, 129, 180, 217, 31, 105, 68, 109, 244, 244, 198, 245, 222, 25, 0, 63, 69, 248, 145, 208, 235, 205, 47, 255, 219, 92, 129, 192, 64, 232, 214, 153, 76, 67, 199, 254, 237, 185, 138, 74, 49, 237, 251, 53, 232, 154, 48, 1, 60, 59, 146, 103]),
|
const vector = structuredClone(validVector);
|
||||||
publicKeyFormat: "spki",
|
vector.name = `${vector.name} - The signature is empty`;
|
||||||
publicKey: null,
|
vector.signature = new Uint8Array();
|
||||||
algorithmName: "ECDSA",
|
vectors.push(vector);
|
||||||
namedCurve: "P-384",
|
}
|
||||||
hashName: "SHA-1",
|
|
||||||
plaintext: new Uint8Array([63, 7, 131, 165, 142, 102, 243, 210, 192, 204, 251, 95, 172, 63, 9, 219, 111, 134, 9, 208, 89, 43, 199, 127, 223, 254, 217, 207, 14, 19, 125, 38, 168, 103, 5, 118, 101, 243, 173, 129, 190, 235, 187, 219, 114, 61, 90, 71, 197, 128, 130, 143, 16, 247, 52, 122, 184, 169, 194, 77, 25, 95, 115, 109, 250, 230, 234, 227, 125, 136, 254, 59, 71, 53, 231, 198, 105, 168, 10, 193, 145, 62, 92, 36, 200, 193, 213, 205, 177, 95, 153, 79, 62, 194, 241, 199, 116, 117, 46, 20, 245, 150, 179, 140, 47, 191, 3, 118, 22, 214, 8, 36, 77, 61, 167, 212, 186, 223, 53, 19, 48, 249, 71, 224, 76, 195, 80, 231]),
|
|
||||||
// Each of r and s in this input is padded up to one extra byte.
|
|
||||||
signature: new Uint8Array([0, 141, 157, 62, 61, 11, 43, 40, 113, 234, 47, 3, 242, 123, 168, 105, 159, 33, 75, 232, 216, 117, 192, 215, 112, 176, 255, 241, 196, 206, 52, 31, 12, 131, 74, 193, 31, 158, 193, 43, 253, 184, 50, 11, 23, 36, 200, 194, 32, 0, 98, 21, 13, 251, 168, 230, 92, 12, 123, 231, 239, 129, 200, 114, 65, 210, 195, 122, 131, 194, 126, 179, 28, 204, 43, 60, 57, 87, 103, 10, 116, 76, 129, 190, 109, 116, 19, 64, 181, 24, 156, 192, 197, 71, 223, 129, 176, 210]),
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "Empty signature",
|
// Zeroed signature
|
||||||
publicKeyBuffer: new Uint8Array([48, 118, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 34, 3, 98, 0, 4, 8, 116, 162, 224, 184, 255, 68, 143, 14, 84, 50, 30, 39, 244, 241, 230, 77, 6, 76, 222, 183, 210, 111, 69, 140, 50, 233, 48, 18, 15, 78, 87, 220, 133, 194, 105, 63, 151, 126, 237, 74, 142, 204, 141, 185, 129, 180, 217, 31, 105, 68, 109, 244, 244, 198, 245, 222, 25, 0, 63, 69, 248, 145, 208, 235, 205, 47, 255, 219, 92, 129, 192, 64, 232, 214, 153, 76, 67, 199, 254, 237, 185, 138, 74, 49, 237, 251, 53, 232, 154, 48, 1, 60, 59, 146, 103]),
|
const vector = structuredClone(validVector);
|
||||||
publicKeyFormat: "spki",
|
vector.name = `${vector.name} - The signature is all zeroes`;
|
||||||
publicKey: null,
|
vector.signature = new Uint8Array(vector.signature.byteLength);
|
||||||
algorithmName: "ECDSA",
|
vectors.push(vector);
|
||||||
namedCurve: "P-384",
|
}
|
||||||
hashName: "SHA-1",
|
}
|
||||||
plaintext: new Uint8Array([63, 7, 131, 165, 142, 102, 243, 210, 192, 204, 251, 95, 172, 63, 9, 219, 111, 134, 9, 208, 89, 43, 199, 127, 223, 254, 217, 207, 14, 19, 125, 38, 168, 103, 5, 118, 101, 243, 173, 129, 190, 235, 187, 219, 114, 61, 90, 71, 197, 128, 130, 143, 16, 247, 52, 122, 184, 169, 194, 77, 25, 95, 115, 109, 250, 230, 234, 227, 125, 136, 254, 59, 71, 53, 231, 198, 105, 168, 10, 193, 145, 62, 92, 36, 200, 193, 213, 205, 177, 95, 153, 79, 62, 194, 241, 199, 116, 117, 46, 20, 245, 150, 179, 140, 47, 191, 3, 118, 22, 214, 8, 36, 77, 61, 167, 212, 186, 223, 53, 19, 48, 249, 71, 224, 76, 195, 80, 231]),
|
|
||||||
signature: new Uint8Array([]),
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
return vectors;
|
return vectors;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
// META: title=WebCryptoAPI: wrapKey() and unwrapKey()
|
// META: title=WebCryptoAPI: wrapKey() and unwrapKey()
|
||||||
// META: timeout=long
|
// META: timeout=long
|
||||||
|
// META: script=../util/helpers.js
|
||||||
|
|
||||||
// Tests for wrapKey and unwrapKey round tripping
|
// Tests for wrapKey and unwrapKey round tripping
|
||||||
|
|
||||||
|
@ -19,7 +20,7 @@
|
||||||
promises.push(testWrapping(wrapper, key));
|
promises.push(testWrapping(wrapper, key));
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
return Promise.all(promises);
|
return Promise.allSettled(promises);
|
||||||
});
|
});
|
||||||
}, "setup");
|
}, "setup");
|
||||||
|
|
||||||
|
@ -48,7 +49,7 @@
|
||||||
{
|
{
|
||||||
name: "AES-GCM",
|
name: "AES-GCM",
|
||||||
generateParameters: {name: "AES-GCM", length: 128},
|
generateParameters: {name: "AES-GCM", length: 128},
|
||||||
wrapParameters: {name: "AES-GCM", iv: new Uint8Array(16), additionalData: new Uint8Array(16), tagLength: 64}
|
wrapParameters: {name: "AES-GCM", iv: new Uint8Array(16), additionalData: new Uint8Array(16), tagLength: 128}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "AES-KW",
|
name: "AES-KW",
|
||||||
|
@ -141,7 +142,7 @@
|
||||||
.then(function(wrappedResult) {
|
.then(function(wrappedResult) {
|
||||||
return subtle.unwrapKey(fmt, wrappedResult, wrapper.unwrappingKey, wrapper.parameters.wrapParameters, toWrap.algorithm, true, toWrap.usages);
|
return subtle.unwrapKey(fmt, wrappedResult, wrapper.unwrappingKey, wrapper.parameters.wrapParameters, toWrap.algorithm, true, toWrap.usages);
|
||||||
}).then(function(unwrappedResult) {
|
}).then(function(unwrappedResult) {
|
||||||
assert_true(unwrappedResult.extractable, "Unwrapped result is extractable");
|
assert_goodCryptoKey(unwrappedResult, toWrap.algorithm, true, toWrap.usages, toWrap.key.type);
|
||||||
return subtle.exportKey(fmt, unwrappedResult)
|
return subtle.exportKey(fmt, unwrappedResult)
|
||||||
}).then(function(roundTripExport) {
|
}).then(function(roundTripExport) {
|
||||||
assert_true(equalExport(originalExport, roundTripExport), "Post-wrap export matches original export");
|
assert_true(equalExport(originalExport, roundTripExport), "Post-wrap export matches original export");
|
||||||
|
@ -161,7 +162,7 @@
|
||||||
.then(function(wrappedResult) {
|
.then(function(wrappedResult) {
|
||||||
return subtle.unwrapKey(fmt, wrappedResult, wrapper.unwrappingKey, wrapper.parameters.wrapParameters, toWrap.algorithm, false, toWrap.usages);
|
return subtle.unwrapKey(fmt, wrappedResult, wrapper.unwrappingKey, wrapper.parameters.wrapParameters, toWrap.algorithm, false, toWrap.usages);
|
||||||
}).then(function(unwrappedResult){
|
}).then(function(unwrappedResult){
|
||||||
assert_false(unwrappedResult.extractable, "Unwrapped result is non-extractable");
|
assert_goodCryptoKey(unwrappedResult, toWrap.algorithm, false, toWrap.usages, toWrap.key.type);
|
||||||
return equalKeys(toWrap.key, unwrappedResult);
|
return equalKeys(toWrap.key, unwrappedResult);
|
||||||
}).then(function(result){
|
}).then(function(result){
|
||||||
assert_true(result, "Unwrapped key matches original");
|
assert_true(result, "Unwrapped key matches original");
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<div id="parent" aria-owns="owned"></div>
|
|
||||||
<div id="owned" role="none"></div>
|
|
|
@ -60,6 +60,14 @@ promise_test(async () => {
|
||||||
// settings have been saved
|
// settings have been saved
|
||||||
await open_and_expect_headers("resources/expect-no-client-hints-headers.html");
|
await open_and_expect_headers("resources/expect-no-client-hints-headers.html");
|
||||||
|
|
||||||
|
// Check that multiple headers will fill the cache.
|
||||||
|
await open_and_add_load_event("resources/accept-ch-split.html");
|
||||||
|
await open_and_expect_headers("resources/expect-client-hints-headers.html");
|
||||||
|
|
||||||
|
// Check that a mix of empty and full headers drops the cache.
|
||||||
|
await open_and_add_load_event("resources/accept-ch-mixed.html");
|
||||||
|
await open_and_expect_headers("resources/expect-no-client-hints-headers.html");
|
||||||
|
|
||||||
}, "Accept-CH changes based on header");
|
}, "Accept-CH changes based on header");
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -6,3 +6,10 @@ async_test((t) => {
|
||||||
document.body.appendChild(iframe);
|
document.body.appendChild(iframe);
|
||||||
iframe.contentWindow.addEventListener('message', message_listener(t, "FAIL"));
|
iframe.contentWindow.addEventListener('message', message_listener(t, "FAIL"));
|
||||||
}, "Critical-CH iframe");
|
}, "Critical-CH iframe");
|
||||||
|
|
||||||
|
async_test((t) => {
|
||||||
|
var iframe = document.createElement("iframe");
|
||||||
|
iframe.src = ECHO_URL+"?multiple=true";
|
||||||
|
document.body.appendChild(iframe);
|
||||||
|
iframe.contentWindow.addEventListener('message', message_listener(t, "FAIL"));
|
||||||
|
}, "Critical-CH w/ multiple headers and iframe");
|
||||||
|
|
|
@ -2,3 +2,4 @@
|
||||||
// META: script=/common/utils.js
|
// META: script=/common/utils.js
|
||||||
|
|
||||||
async_test(make_message_test(ECHO_URL+"?mismatch=true&token="+token(), "1"), "Critical-CH no restart on mismatched hints")
|
async_test(make_message_test(ECHO_URL+"?mismatch=true&token="+token(), "1"), "Critical-CH no restart on mismatched hints")
|
||||||
|
async_test(make_message_test(ECHO_URL+"?multiple=true&mismatch=true&token="+token(), "1"), "Critical-CH w/ multiple headers and no restart on mismatched hints")
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
// META: script=resources/util.js
|
// META: script=resources/util.js
|
||||||
|
|
||||||
async_test(make_message_test(ECHO_URL+"?mismatch=true", "FAIL"), "Critical-CH Mis-matched hints")
|
async_test(make_message_test(ECHO_URL+"?mismatch=true", "FAIL"), "Critical-CH Mis-matched hints")
|
||||||
|
async_test(make_message_test(ECHO_URL+"?multiple=true&mismatch=true", "FAIL"), "Critical-CH w/ multiple headers and Mis-matched hints")
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
// META: script=resources/util.js
|
||||||
|
|
||||||
|
async_test(make_message_test(ECHO_URL+"?multiple=true", "PASS"), "Critical-CH w/ multiple headers and navigation")
|
|
@ -1,3 +1,4 @@
|
||||||
// META: script=resources/util.js
|
// META: script=resources/util.js
|
||||||
|
|
||||||
async_test(make_message_test(ECHO_URL, "FAIL"), "Critical-CH navigation non-secure")
|
async_test(make_message_test(ECHO_URL, "FAIL"), "Critical-CH navigation non-secure")
|
||||||
|
async_test(make_message_test(ECHO_URL+"?multiple=true", "FAIL"), "Critical-CH w/ multiple headers and navigation non-secure")
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
// META: script=resources/util.js
|
||||||
|
// META: script=/common/utils.js
|
||||||
|
|
||||||
|
async_test(make_message_test(ECHO_URL+"?multiple=true&token="+token(), "2"), "Critical-CH w/ multiple headers and navigation restart")
|
|
@ -11,13 +11,22 @@ def main(request, response):
|
||||||
response.headers.append(b"Access-Control-Allow-Headers", b"*")
|
response.headers.append(b"Access-Control-Allow-Headers", b"*")
|
||||||
response.headers.append(b"Access-Control-Expose-Headers", b"*")
|
response.headers.append(b"Access-Control-Expose-Headers", b"*")
|
||||||
|
|
||||||
response.headers.append(b"Accept-CH", b"sec-ch-device-memory,device-memory")
|
accept = b"sec-ch-device-memory,device-memory"
|
||||||
|
if(request.GET.first(b"multiple", None) is not None):
|
||||||
|
for accept_part in accept.split(b","):
|
||||||
|
response.headers.append(b"Accept-CH", accept_part)
|
||||||
|
else:
|
||||||
|
response.headers.append(b"Accept-CH", accept)
|
||||||
|
|
||||||
critical = b"sec-ch-device-memory,device-memory"
|
critical = b"sec-ch-device-memory,device-memory"
|
||||||
if(request.GET.first(b"mismatch", None) is not None):
|
if(request.GET.first(b"mismatch", None) is not None):
|
||||||
critical = b"sec-ch-viewport-width,viewport-width"
|
critical = b"sec-ch-viewport-width,viewport-width"
|
||||||
|
|
||||||
response.headers.append(b"Critical-CH", critical)
|
if(request.GET.first(b"multiple", None) is not None):
|
||||||
|
for critical_part in critical.split(b","):
|
||||||
|
response.headers.append(b"Critical-CH", critical_part)
|
||||||
|
else:
|
||||||
|
response.headers.append(b"Critical-CH", critical)
|
||||||
|
|
||||||
response.headers.append(b"Cache-Control", b"no-store")
|
response.headers.append(b"Cache-Control", b"no-store")
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,17 @@
|
||||||
// META: script=/common/utils.js
|
// META: script=/common/utils.js
|
||||||
|
|
||||||
promise_test(() =>
|
promise_test(() =>
|
||||||
fetch("resources/echo-critical-hint.py")
|
fetch(ECHO_URL)
|
||||||
.then((r) => r.text())
|
.then((r) => r.text())
|
||||||
.then((r) => {
|
.then((r) => {
|
||||||
assert_true(r.includes("FAIL"));
|
assert_true(r.includes("FAIL"));
|
||||||
})
|
})
|
||||||
, "Critical-CH subresource fetch");
|
, "Critical-CH subresource fetch");
|
||||||
|
|
||||||
|
promise_test(() =>
|
||||||
|
fetch(ECHO_URL+"?multiple=true")
|
||||||
|
.then((r) => r.text())
|
||||||
|
.then((r) => {
|
||||||
|
assert_true(r.includes("FAIL"));
|
||||||
|
})
|
||||||
|
, "Critical-CH w/ multiple headers and subresource fetch");
|
||||||
|
|
|
@ -21,3 +21,27 @@ async_test((t) => {
|
||||||
|
|
||||||
form.submit();
|
form.submit();
|
||||||
}, "Critical-CH unsafe method")
|
}, "Critical-CH unsafe method")
|
||||||
|
|
||||||
|
async_test((t) => {
|
||||||
|
// This test requires a navigation with a non-safe (i.e. non-GET) HTTP
|
||||||
|
// response, which the Critical-CH spec says to ignore. The most
|
||||||
|
// "straight-forward" way to do this in JS is by making a form with an
|
||||||
|
// unsafe method (e.g. POST) method and submit it.
|
||||||
|
|
||||||
|
// Build the form DOM element
|
||||||
|
var form = document.createElement("form");
|
||||||
|
form.setAttribute("method", "post");
|
||||||
|
form.setAttribute("action", "resources/echo-critical-hint.py?multiple=true");
|
||||||
|
form.setAttribute("target", "popup"); //don't navigate away from the page running the test...
|
||||||
|
document.body.appendChild(form);
|
||||||
|
|
||||||
|
var popup_window = window.open("/common/blank.html", "popup");
|
||||||
|
assert_not_equals(popup_window, null, "Popup windows not allowed?");
|
||||||
|
|
||||||
|
popup_window.addEventListener('message', (e) => {
|
||||||
|
t.step(()=>{assert_equals(e.data, "FAIL")});
|
||||||
|
t.done();
|
||||||
|
});
|
||||||
|
|
||||||
|
form.submit();
|
||||||
|
}, "Critical-CH w/ multiple headers and unsafe method")
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<!-- An empty webpage whose response headers include empty and full
|
||||||
|
Accept-CH headers. Fetching this webpage should cause
|
||||||
|
the hint cache to be dropped.-->
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue