From 5f8de423f190bbb79a62f804151bc24824fa32d8 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 2 Feb 2018 04:16:08 -0500 Subject: Add m-esr52 at 52.6.0 --- .../tests/subresource-integrity/OWNERS | 6 + .../tests/subresource-integrity/alternate.css | 1 + .../crossorigin-anon-script.js | 1 + .../crossorigin-anon-script.js.headers | 1 + .../crossorigin-anon-style.css | 1 + .../crossorigin-anon-style.css.headers | 1 + .../crossorigin-creds-script.js | 1 + .../crossorigin-creds-script.js.sub.headers | 2 + .../crossorigin-creds-style.css | 1 + .../crossorigin-creds-style.css.sub.headers | 2 + .../crossorigin-ineligible-script.js | 1 + .../crossorigin-ineligible-style.css | 1 + .../tests/subresource-integrity/matching-digest.js | 1 + .../subresource-integrity/non-matching-digest.js | 1 + .../tests/subresource-integrity/style.css | 1 + .../subresource-integrity.sub.html | 573 +++++++++++++++++++++ .../tools/generate_javascript.py | 52 ++ .../subresource-integrity/tools/list_hashes.py | 57 ++ 18 files changed, 704 insertions(+) create mode 100644 testing/web-platform/tests/subresource-integrity/OWNERS create mode 100644 testing/web-platform/tests/subresource-integrity/alternate.css create mode 100644 testing/web-platform/tests/subresource-integrity/crossorigin-anon-script.js create mode 100644 testing/web-platform/tests/subresource-integrity/crossorigin-anon-script.js.headers create mode 100644 testing/web-platform/tests/subresource-integrity/crossorigin-anon-style.css create mode 100644 testing/web-platform/tests/subresource-integrity/crossorigin-anon-style.css.headers create mode 100644 testing/web-platform/tests/subresource-integrity/crossorigin-creds-script.js create mode 100644 testing/web-platform/tests/subresource-integrity/crossorigin-creds-script.js.sub.headers create mode 100644 testing/web-platform/tests/subresource-integrity/crossorigin-creds-style.css create mode 100644 testing/web-platform/tests/subresource-integrity/crossorigin-creds-style.css.sub.headers create mode 100644 testing/web-platform/tests/subresource-integrity/crossorigin-ineligible-script.js create mode 100644 testing/web-platform/tests/subresource-integrity/crossorigin-ineligible-style.css create mode 100644 testing/web-platform/tests/subresource-integrity/matching-digest.js create mode 100644 testing/web-platform/tests/subresource-integrity/non-matching-digest.js create mode 100644 testing/web-platform/tests/subresource-integrity/style.css create mode 100644 testing/web-platform/tests/subresource-integrity/subresource-integrity.sub.html create mode 100644 testing/web-platform/tests/subresource-integrity/tools/generate_javascript.py create mode 100644 testing/web-platform/tests/subresource-integrity/tools/list_hashes.py (limited to 'testing/web-platform/tests/subresource-integrity') diff --git a/testing/web-platform/tests/subresource-integrity/OWNERS b/testing/web-platform/tests/subresource-integrity/OWNERS new file mode 100644 index 000000000..8f7edaa35 --- /dev/null +++ b/testing/web-platform/tests/subresource-integrity/OWNERS @@ -0,0 +1,6 @@ +@metromoxie +@fmarier +@jonathanKingston +@mikewest +@hillbrad +@mastahyeti diff --git a/testing/web-platform/tests/subresource-integrity/alternate.css b/testing/web-platform/tests/subresource-integrity/alternate.css new file mode 100644 index 000000000..0ea6d22ec --- /dev/null +++ b/testing/web-platform/tests/subresource-integrity/alternate.css @@ -0,0 +1 @@ +.testdiv{ background-color: red } diff --git a/testing/web-platform/tests/subresource-integrity/crossorigin-anon-script.js b/testing/web-platform/tests/subresource-integrity/crossorigin-anon-script.js new file mode 100644 index 000000000..8493585f1 --- /dev/null +++ b/testing/web-platform/tests/subresource-integrity/crossorigin-anon-script.js @@ -0,0 +1 @@ +crossorigin_anon_script=true; \ No newline at end of file diff --git a/testing/web-platform/tests/subresource-integrity/crossorigin-anon-script.js.headers b/testing/web-platform/tests/subresource-integrity/crossorigin-anon-script.js.headers new file mode 100644 index 000000000..cb762eff8 --- /dev/null +++ b/testing/web-platform/tests/subresource-integrity/crossorigin-anon-script.js.headers @@ -0,0 +1 @@ +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/subresource-integrity/crossorigin-anon-style.css b/testing/web-platform/tests/subresource-integrity/crossorigin-anon-style.css new file mode 100644 index 000000000..3cde4df12 --- /dev/null +++ b/testing/web-platform/tests/subresource-integrity/crossorigin-anon-style.css @@ -0,0 +1 @@ +.testdiv{ background-color: yellow } diff --git a/testing/web-platform/tests/subresource-integrity/crossorigin-anon-style.css.headers b/testing/web-platform/tests/subresource-integrity/crossorigin-anon-style.css.headers new file mode 100644 index 000000000..cb762eff8 --- /dev/null +++ b/testing/web-platform/tests/subresource-integrity/crossorigin-anon-style.css.headers @@ -0,0 +1 @@ +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/subresource-integrity/crossorigin-creds-script.js b/testing/web-platform/tests/subresource-integrity/crossorigin-creds-script.js new file mode 100644 index 000000000..6f39e25b4 --- /dev/null +++ b/testing/web-platform/tests/subresource-integrity/crossorigin-creds-script.js @@ -0,0 +1 @@ +crossorigin_creds_script=true; \ No newline at end of file diff --git a/testing/web-platform/tests/subresource-integrity/crossorigin-creds-script.js.sub.headers b/testing/web-platform/tests/subresource-integrity/crossorigin-creds-script.js.sub.headers new file mode 100644 index 000000000..d6af1f0de --- /dev/null +++ b/testing/web-platform/tests/subresource-integrity/crossorigin-creds-script.js.sub.headers @@ -0,0 +1,2 @@ +Access-Control-Allow-Origin: {{location[scheme]}}://{{domains[]}}{{GET[acao_port]}} +Access-Control-Allow-Credentials: true diff --git a/testing/web-platform/tests/subresource-integrity/crossorigin-creds-style.css b/testing/web-platform/tests/subresource-integrity/crossorigin-creds-style.css new file mode 100644 index 000000000..3cde4df12 --- /dev/null +++ b/testing/web-platform/tests/subresource-integrity/crossorigin-creds-style.css @@ -0,0 +1 @@ +.testdiv{ background-color: yellow } diff --git a/testing/web-platform/tests/subresource-integrity/crossorigin-creds-style.css.sub.headers b/testing/web-platform/tests/subresource-integrity/crossorigin-creds-style.css.sub.headers new file mode 100644 index 000000000..d6af1f0de --- /dev/null +++ b/testing/web-platform/tests/subresource-integrity/crossorigin-creds-style.css.sub.headers @@ -0,0 +1,2 @@ +Access-Control-Allow-Origin: {{location[scheme]}}://{{domains[]}}{{GET[acao_port]}} +Access-Control-Allow-Credentials: true diff --git a/testing/web-platform/tests/subresource-integrity/crossorigin-ineligible-script.js b/testing/web-platform/tests/subresource-integrity/crossorigin-ineligible-script.js new file mode 100644 index 000000000..dd2f968ef --- /dev/null +++ b/testing/web-platform/tests/subresource-integrity/crossorigin-ineligible-script.js @@ -0,0 +1 @@ +crossorigin_ineligible_script=true; \ No newline at end of file diff --git a/testing/web-platform/tests/subresource-integrity/crossorigin-ineligible-style.css b/testing/web-platform/tests/subresource-integrity/crossorigin-ineligible-style.css new file mode 100644 index 000000000..3cde4df12 --- /dev/null +++ b/testing/web-platform/tests/subresource-integrity/crossorigin-ineligible-style.css @@ -0,0 +1 @@ +.testdiv{ background-color: yellow } diff --git a/testing/web-platform/tests/subresource-integrity/matching-digest.js b/testing/web-platform/tests/subresource-integrity/matching-digest.js new file mode 100644 index 000000000..ec41325e4 --- /dev/null +++ b/testing/web-platform/tests/subresource-integrity/matching-digest.js @@ -0,0 +1 @@ +matching_digest=true; \ No newline at end of file diff --git a/testing/web-platform/tests/subresource-integrity/non-matching-digest.js b/testing/web-platform/tests/subresource-integrity/non-matching-digest.js new file mode 100644 index 000000000..1b4943ee0 --- /dev/null +++ b/testing/web-platform/tests/subresource-integrity/non-matching-digest.js @@ -0,0 +1 @@ +non_matching_digest=true; \ No newline at end of file diff --git a/testing/web-platform/tests/subresource-integrity/style.css b/testing/web-platform/tests/subresource-integrity/style.css new file mode 100644 index 000000000..3cde4df12 --- /dev/null +++ b/testing/web-platform/tests/subresource-integrity/style.css @@ -0,0 +1 @@ +.testdiv{ background-color: yellow } diff --git a/testing/web-platform/tests/subresource-integrity/subresource-integrity.sub.html b/testing/web-platform/tests/subresource-integrity/subresource-integrity.sub.html new file mode 100644 index 000000000..89ae018e4 --- /dev/null +++ b/testing/web-platform/tests/subresource-integrity/subresource-integrity.sub.html @@ -0,0 +1,573 @@ + + +Subresource Integrity + + + +
+ +
+ + diff --git a/testing/web-platform/tests/subresource-integrity/tools/generate_javascript.py b/testing/web-platform/tests/subresource-integrity/tools/generate_javascript.py new file mode 100644 index 000000000..184a39451 --- /dev/null +++ b/testing/web-platform/tests/subresource-integrity/tools/generate_javascript.py @@ -0,0 +1,52 @@ +from os import path, listdir +from hashlib import sha512, sha256, md5 +from base64 import b64encode +import re + +JS_DIR = path.normpath(path.join(__file__, "..", "..")) + +''' +Yield each file in the javascript directory +''' +def js_files(): + for f in listdir(JS_DIR): + if path.isfile(f) and f.endswith(".js"): + yield f + +''' +URL-safe base64 encode a binary digest and strip any padding. +''' +def format_digest(digest): + return b64encode(digest) + +''' +Generate an encoded sha512 URI. +''' +def sha512_uri(content): + return "sha512-%s" % format_digest(sha512(content).digest()) + +''' +Generate an encoded sha256 URI. +''' +def sha256_uri(content): + return "sha256-%s" % format_digest(sha256(content).digest()) + +''' +Generate an encoded md5 digest URI. +''' +def md5_uri(content): + return "md5-%s" % format_digest(md5(content).digest()) + +def main(): + for file in js_files(): + print "Generating content for %s" % file + base = path.splitext(path.basename(file))[0] + var_name = re.sub(r"[^a-z0-9]", "_", base) + content = "%s=true;" % var_name + with open(file, "w") as f: f.write(content) + print "\tSHA512 integrity: %s" % sha512_uri(content) + print "\tSHA256 integrity: %s" % sha256_uri(content) + print "\tMD5 integrity: %s" % md5_uri(content) + +if __name__ == "__main__": + main() diff --git a/testing/web-platform/tests/subresource-integrity/tools/list_hashes.py b/testing/web-platform/tests/subresource-integrity/tools/list_hashes.py new file mode 100644 index 000000000..5e3830ab6 --- /dev/null +++ b/testing/web-platform/tests/subresource-integrity/tools/list_hashes.py @@ -0,0 +1,57 @@ +from os import path, listdir +from hashlib import sha512, sha384, sha256, md5 +from base64 import b64encode +import re + +DIR = path.normpath(path.join(__file__, "..", "..")) + +''' +Yield each javascript and css file in the directory +''' +def js_and_css_files(): + for f in listdir(DIR): + if path.isfile(f) and (f.endswith(".js") or f.endswith(".css")): + yield f + +''' +URL-safe base64 encode a binary digest and strip any padding. +''' +def format_digest(digest): + return b64encode(digest) + +''' +Generate an encoded sha512 URI. +''' +def sha512_uri(content): + return "sha512-%s" % format_digest(sha512(content).digest()) + +''' +Generate an encoded sha384 URI. +''' +def sha384_uri(content): + return "sha384-%s" % format_digest(sha384(content).digest()) + +''' +Generate an encoded sha256 URI. +''' +def sha256_uri(content): + return "sha256-%s" % format_digest(sha256(content).digest()) + +''' +Generate an encoded md5 digest URI. +''' +def md5_uri(content): + return "md5-%s" % format_digest(md5(content).digest()) + +def main(): + for file in js_and_css_files(): + print "Listing hash values for %s" % file + with open(file, "r") as content_file: + content = content_file.read() + print "\tSHA512 integrity: %s" % sha512_uri(content) + print "\tSHA384 integrity: %s" % sha384_uri(content) + print "\tSHA256 integrity: %s" % sha256_uri(content) + print "\tMD5 integrity: %s" % md5_uri(content) + +if __name__ == "__main__": + main() -- cgit v1.2.3