OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "core/frame/SubresourceIntegrity.h" | 5 #include "core/frame/SubresourceIntegrity.h" |
6 | 6 |
7 #include "core/HTMLNames.h" | 7 #include "core/HTMLNames.h" |
8 #include "core/dom/Document.h" | 8 #include "core/dom/Document.h" |
9 #include "core/html/HTMLScriptElement.h" | 9 #include "core/html/HTMLScriptElement.h" |
10 #include "platform/Crypto.h" | 10 #include "platform/Crypto.h" |
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
290 expectParseFailure("not_really_a_valid_anything"); | 290 expectParseFailure("not_really_a_valid_anything"); |
291 expectParseFailure("sha256-&&&foobar&&&"); | 291 expectParseFailure("sha256-&&&foobar&&&"); |
292 expectParseFailure("sha256-\x01\x02\x03\x04"); | 292 expectParseFailure("sha256-\x01\x02\x03\x04"); |
293 expectParseFailure("sha256-!!! sha256-!!!"); | 293 expectParseFailure("sha256-!!! sha256-!!!"); |
294 | 294 |
295 expectEmptyParseResult("foobar:///sha256-abcdefg"); | 295 expectEmptyParseResult("foobar:///sha256-abcdefg"); |
296 expectEmptyParseResult("ni://sha256-abcdefg"); | 296 expectEmptyParseResult("ni://sha256-abcdefg"); |
297 expectEmptyParseResult("ni:///sha256-abcdefg"); | 297 expectEmptyParseResult("ni:///sha256-abcdefg"); |
298 expectEmptyParseResult("notsha256atall-abcdefg"); | 298 expectEmptyParseResult("notsha256atall-abcdefg"); |
299 | 299 |
300 expectParse("sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", | 300 expectParse( |
301 "BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", | 301 "sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", |
302 HashAlgorithmSha256); | 302 "BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", HashAlgorithmSha256); |
303 | 303 |
304 expectParse("sha-256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", | 304 expectParse( |
305 "BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", | 305 "sha-256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", |
306 HashAlgorithmSha256); | 306 "BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", HashAlgorithmSha256); |
307 | 307 |
308 expectParse(" sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE= ", | 308 expectParse( |
309 "BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", | 309 " sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE= ", |
310 HashAlgorithmSha256); | 310 "BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", HashAlgorithmSha256); |
311 | 311 |
312 expectParse( | 312 expectParse( |
313 "sha384-XVVXBGoYw6AJOh9J-Z8pBDMVVPfkBpngexkA7JqZu8d5GENND6TEIup_tA1v5GPr", | 313 "sha384-XVVXBGoYw6AJOh9J-Z8pBDMVVPfkBpngexkA7JqZu8d5GENND6TEIup_tA1v5GPr", |
314 "XVVXBGoYw6AJOh9J+Z8pBDMVVPfkBpngexkA7JqZu8d5GENND6TEIup/tA1v5GPr", | 314 "XVVXBGoYw6AJOh9J+Z8pBDMVVPfkBpngexkA7JqZu8d5GENND6TEIup/tA1v5GPr", |
315 HashAlgorithmSha384); | 315 HashAlgorithmSha384); |
316 | 316 |
317 expectParse( | 317 expectParse( |
318 "sha-384-XVVXBGoYw6AJOh9J_Z8pBDMVVPfkBpngexkA7JqZu8d5GENND6TEIup_" | 318 "sha-384-XVVXBGoYw6AJOh9J_Z8pBDMVVPfkBpngexkA7JqZu8d5GENND6TEIup_" |
319 "tA1v5GPr", | 319 "tA1v5GPr", |
320 "XVVXBGoYw6AJOh9J/Z8pBDMVVPfkBpngexkA7JqZu8d5GENND6TEIup/tA1v5GPr", | 320 "XVVXBGoYw6AJOh9J/Z8pBDMVVPfkBpngexkA7JqZu8d5GENND6TEIup/tA1v5GPr", |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
407 | 407 |
408 const IntegrityMetadata invalidSha256AndValidSha256[] = { | 408 const IntegrityMetadata invalidSha256AndValidSha256[] = { |
409 IntegrityMetadata("BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", | 409 IntegrityMetadata("BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", |
410 HashAlgorithmSha256), | 410 HashAlgorithmSha256), |
411 }; | 411 }; |
412 expectParseMultipleHashes( | 412 expectParseMultipleHashes( |
413 "sha256-!!! sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", | 413 "sha256-!!! sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", |
414 invalidSha256AndValidSha256, | 414 invalidSha256AndValidSha256, |
415 WTF_ARRAY_LENGTH(invalidSha256AndValidSha256)); | 415 WTF_ARRAY_LENGTH(invalidSha256AndValidSha256)); |
416 | 416 |
417 expectParse("sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=?foo=bar", | 417 expectParse( |
418 "BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", | 418 "sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=?foo=bar", |
419 HashAlgorithmSha256); | 419 "BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", HashAlgorithmSha256); |
420 | 420 |
421 expectParse( | 421 expectParse( |
422 "sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=?foo=bar?baz=foz", | 422 "sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=?foo=bar?baz=foz", |
423 "BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", HashAlgorithmSha256); | 423 "BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", HashAlgorithmSha256); |
424 | 424 |
425 expectParse("sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=?", | 425 expectParse( |
426 "BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", | 426 "sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=?", |
427 HashAlgorithmSha256); | 427 "BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", HashAlgorithmSha256); |
428 expectParse("sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=?foo=bar", | 428 expectParse( |
429 "BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", | 429 "sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=?foo=bar", |
430 HashAlgorithmSha256); | 430 "BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", HashAlgorithmSha256); |
431 expectParse( | 431 expectParse( |
432 "sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=?foo=bar?baz=foz", | 432 "sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=?foo=bar?baz=foz", |
433 "BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", HashAlgorithmSha256); | 433 "BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", HashAlgorithmSha256); |
434 expectParse("sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=?foo", | 434 expectParse( |
435 "BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", | 435 "sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=?foo", |
436 HashAlgorithmSha256); | 436 "BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", HashAlgorithmSha256); |
437 expectParse("sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=?foo=bar?", | 437 expectParse( |
438 "BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", | 438 "sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=?foo=bar?", |
439 HashAlgorithmSha256); | 439 "BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", HashAlgorithmSha256); |
440 expectParse("sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=?foo:bar", | 440 expectParse( |
441 "BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", | 441 "sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=?foo:bar", |
442 HashAlgorithmSha256); | 442 "BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=", HashAlgorithmSha256); |
443 } | 443 } |
444 | 444 |
445 TEST_F(SubresourceIntegrityTest, ParsingBase64) { | 445 TEST_F(SubresourceIntegrityTest, ParsingBase64) { |
446 expectParse( | 446 expectParse( |
447 "sha384-XVVXBGoYw6AJOh9J+Z8pBDMVVPfkBpngexkA7JqZu8d5GENND6TEIup/tA1v5GPr", | 447 "sha384-XVVXBGoYw6AJOh9J+Z8pBDMVVPfkBpngexkA7JqZu8d5GENND6TEIup/tA1v5GPr", |
448 "XVVXBGoYw6AJOh9J+Z8pBDMVVPfkBpngexkA7JqZu8d5GENND6TEIup/tA1v5GPr", | 448 "XVVXBGoYw6AJOh9J+Z8pBDMVVPfkBpngexkA7JqZu8d5GENND6TEIup/tA1v5GPr", |
449 HashAlgorithmSha384); | 449 HashAlgorithmSha384); |
450 } | 450 } |
451 | 451 |
452 // | 452 // |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
526 expectIntegrity(kBadSha256AndGoodSha384Integrities, kBasicScript, | 526 expectIntegrity(kBadSha256AndGoodSha384Integrities, kBasicScript, |
527 strlen(kBasicScript), secureURL, insecureURL); | 527 strlen(kBasicScript), secureURL, insecureURL); |
528 | 528 |
529 expectIntegrityFailure(kSha256Integrity, kBasicScript, strlen(kBasicScript), | 529 expectIntegrityFailure(kSha256Integrity, kBasicScript, strlen(kBasicScript), |
530 secureURL, insecureURL, NoCors); | 530 secureURL, insecureURL, NoCors); |
531 expectIntegrityFailure(kGoodSha256AndBadSha384Integrities, kBasicScript, | 531 expectIntegrityFailure(kGoodSha256AndBadSha384Integrities, kBasicScript, |
532 strlen(kBasicScript), secureURL, insecureURL); | 532 strlen(kBasicScript), secureURL, insecureURL); |
533 } | 533 } |
534 | 534 |
535 } // namespace blink | 535 } // namespace blink |
OLD | NEW |