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

Side by Side Diff: LayoutTests/crypto/resources/common.js

Issue 806913006: [WebCrypto] Move LayoutTests from crypto to crypto/subtle (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Update path for deserialize legacy tests Created 6 years 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
« no previous file with comments | « LayoutTests/crypto/random-values-types.js ('k') | LayoutTests/crypto/resources/keys.js » ('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 function logError(error)
2 {
3 debug("error is: " + error.toString());
4 }
5
6 // Verifies that the given "bytes" holds the same value as "expectedHexString".
7 // "bytes" can be anything recognized by "bytesToHexString()".
8 function bytesShouldMatchHexString(testDescription, expectedHexString, bytes)
9 {
10 expectedHexString = "[" + expectedHexString.toLowerCase() + "]";
11 var actualHexString = "[" + bytesToHexString(bytes) + "]";
12
13 if (actualHexString === expectedHexString) {
14 debug("PASS: " + testDescription + " should be " + expectedHexString + " and was");
15 } else {
16 debug("FAIL: " + testDescription + " should be " + expectedHexString + " but was " + actualHexString);
17 }
18 }
19
20 // Builds a hex string representation for an array-like input.
21 // "bytes" can be an Array of bytes, an ArrayBuffer, or any TypedArray.
22 // The output looks like this:
23 // ab034c99
24 function bytesToHexString(bytes)
25 {
26 if (!bytes)
27 return null;
28
29 bytes = new Uint8Array(bytes);
30 var hexBytes = [];
31
32 for (var i = 0; i < bytes.length; ++i) {
33 var byteString = bytes[i].toString(16);
34 if (byteString.length < 2)
35 byteString = "0" + byteString;
36 hexBytes.push(byteString);
37 }
38
39 return hexBytes.join("");
40 }
41
42 function bytesToASCIIString(bytes)
43 {
44 return String.fromCharCode.apply(null, new Uint8Array(bytes));
45 }
46
47 function hexStringToUint8Array(hexString)
48 {
49 if (hexString.length % 2 != 0)
50 throw "Invalid hexString";
51 var arrayBuffer = new Uint8Array(hexString.length / 2);
52
53 for (var i = 0; i < hexString.length; i += 2) {
54 var byteValue = parseInt(hexString.substr(i, 2), 16);
55 if (byteValue == NaN)
56 throw "Invalid hexString";
57 arrayBuffer[i/2] = byteValue;
58 }
59
60 return arrayBuffer;
61 }
62
63 function asciiToUint8Array(str)
64 {
65 var chars = [];
66 for (var i = 0; i < str.length; ++i)
67 chars.push(str.charCodeAt(i));
68 return new Uint8Array(chars);
69 }
70
71 var Base64URL = {
72 stringify: function (a) {
73 var base64string = btoa(String.fromCharCode.apply(0, a));
74 return base64string.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_");
75 },
76 parse: function (s) {
77 s = s.replace(/-/g, "+").replace(/_/g, "/").replace(/\s/g, '');
78 return new Uint8Array(Array.prototype.map.call(atob(s), function (c) { r eturn c.charCodeAt(0) }));
79 }
80 };
81
82 function failAndFinishJSTest(error)
83 {
84 testFailed('' + error);
85 finishJSTest();
86 }
87
88 // Returns a Promise for the cloned key.
89 function cloneKey(key)
90 {
91 // Sending an object through a MessagePort implicitly clones it.
92 // Use a single MessageChannel so requests complete in FIFO order.
93 var self = cloneKey;
94 if (!self.channel) {
95 self.channel = new MessageChannel();
96 self.callbacks = [];
97 self.channel.port1.addEventListener('message', function(e) {
98 var callback = self.callbacks.shift();
99 callback(e.data);
100 }, false);
101 self.channel.port1.start();
102 }
103
104 return new Promise(function(resolve, reject) {
105 self.callbacks.push(resolve);
106 self.channel.port2.postMessage(key);
107 });
108 }
109
110 // Logging the serialized format ensures that if it changes it will break tests.
111 function logSerializedKey(o)
112 {
113 if (internals) {
114 // Removing the version tag from the output so serialization format chan ges don't need to update all the crypto tests.
115 var serialized = internals.serializeObject(o);
116 var serializedWithoutVersion = new Uint8Array(serialized, 2);
117 debug("Serialized key bytes: " + bytesToHexString(serializedWithoutVersi on));
118 }
119 }
120
121 function shouldEvaluateAs(actual, expectedValue)
122 {
123 if (typeof expectedValue == "string")
124 return shouldBeEqualToString(actual, expectedValue);
125 return shouldEvaluateTo(actual, expectedValue);
126 }
OLDNEW
« no previous file with comments | « LayoutTests/crypto/random-values-types.js ('k') | LayoutTests/crypto/resources/keys.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698