Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(627)

Side by Side Diff: LayoutTests/crypto/normalize-algorithm.html

Issue 18475002: WebCrypto: Add framework for AlgorithmIdentifier normalization. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rename verify --> verifySignature (because "verify" is a macro on Mac) Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | LayoutTests/crypto/normalize-algorithm-expected.txt » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <script src="../fast/js/resources/js-test-pre.js"></script>
5 </head>
6 <body>
7 <p id="description"></p>
8 <div id="console"></div>
9
10 <script>
11 description("Tests algorithm normalization.");
12
13 // -------------------------------
14 // Helpers to return a normalized algorithm identifier.
15 // -------------------------------
16
17 function normalizeDigest(algorithmIdentifier) {
18 return crypto.subtle.digest(algorithmIdentifier).algorithm;
19 }
20
21 function normalizeEncrypt(algorithmIdentifier) {
22 // TODO(eroman): Use a valid key.
23 var key;
24 return crypto.subtle.encrypt(algorithmIdentifier, key).algorithm;
25 }
26
27 // -------------------------------
28 // Case insensitivity of "name"
29 // -------------------------------
30 algorithm = normalizeDigest({name: "SHA-1"});
31 shouldBe("algorithm.name", "'SHA-1'");
32 algorithm = normalizeDigest({name: "sHa-256"});
33 shouldBe("algorithm.name", "'SHA-256'");
34
35 // -------------------------------
36 // Failures if "name" is invalid
37 // -------------------------------
38 shouldThrow("normalizeDigest({})");
39 shouldThrow("normalizeDigest({name: null})");
40 shouldThrow("normalizeDigest({name: -1})");
41 shouldThrow("normalizeDigest({name: ''})");
42 shouldThrow("normalizeDigest({name: 'nosuchalgorithm'})");
43 shouldThrow("normalizeDigest({name: '\\u0189'})");
44
45 // -------------------------------
46 // Failures if the algorithm identifier is not an object
47 // -------------------------------
48 shouldThrow("normalizeDigest(null)");
49 shouldThrow("normalizeDigest(0)");
50 shouldThrow("normalizeDigest(undefined)");
51 shouldThrow("normalizeDigest('')");
52
53 // -------------------------------
54 // Skip unrecognized parameters.
55 // -------------------------------
56 algorithm = normalizeDigest({name: "sHa-1", noSuchParam: 3});
57 shouldBeUndefined("algorithm.noSuchParam");
58
59 // -------------------------------
60 // Normalized algorithm COPIES all data
61 // -------------------------------
62 originalIv = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 1 5]);
63 algorithm = normalizeEncrypt({ name: "aes-cbc", iv: originalIv });
64
65 // Make sure it constructed the normalized result.
66 shouldBe("algorithm.name", "'AES-CBC'");
67 shouldBe("algorithm.iv.length", "16");
68 shouldBe("algorithm.iv[3]", "3");
69
70 // Mutate the original (un-normalized) algorithm. Verify that this doesn't affec t the normalized output.
71 originalIv[3] = 0;
72 shouldBe("algorithm.iv[3]", "3");
73
74 // -------------------------------
75 // AES-CBC normalization failures
76 // -------------------------------
77
78 // The "iv" MUST be 16 bytes long.
79 rawAlgorithm = {
80 name: "AES-CBC",
81 iv: new Uint8Array([1, 2, 3])
82 };
83 shouldThrow("normalizeEncrypt(rawAlgorithm)");
84
85 // -------------------------------
86 // Normalize a normalized algorithm (SHA-384)
87 // -------------------------------
88 algorithm = normalizeDigest({name: "sHa-384"});
89 shouldBe("algorithm.name", "'SHA-384'");
90 algorithm = normalizeDigest(algorithm);
91 shouldBe("algorithm.name", "'SHA-384'");
92
93 // -------------------------------
94 // Normalize a normalized algorithm (AES-CBC, encrypt)
95 // -------------------------------
96 algorithm = normalizeEncrypt({ name: "aEs-cbc", iv: originalIv });
97 // Make sure it constructed the normalized result.
98 shouldBe("algorithm.name", "'AES-CBC'");
99 shouldBe("algorithm.iv.length", "16");
100 shouldBe("algorithm.iv[1]", "1");
101 algorithm = normalizeEncrypt(algorithm);
102 shouldBe("algorithm.name", "'AES-CBC'");
103 shouldBe("algorithm.iv.length", "16");
104 shouldBe("algorithm.iv[1]", "1");
105
106 // -------------------------------
107 // Unsupported operation on algorithm
108 // -------------------------------
109 shouldThrow("normalizeEncrypt({ name: 'SHA-1' })");
110 shouldThrow("normalizeDigest({ name: 'AES-CBC', iv: originalIv })");
111
112 </script>
113
114 <script src="../fast/js/resources/js-test-post.js"></script>
115 </body>
116 </html>
OLDNEW
« no previous file with comments | « no previous file | LayoutTests/crypto/normalize-algorithm-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698