Move parseFontFaceDescriptor to CSSPropertyParser.cpp
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / crypto / subtle / pbkdf2 / deriveKey-failures.html
bloba6f0d23fd831e231a1087e9dda000ed29e6b2a84
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <script src="../../../resources/js-test.js"></script>
5 <script src="../resources/common.js"></script>
6 </head>
7 <body>
8 <p id="description"></p>
9 <div id="console"></div>
11 <script>
12 description("Tests deriveKey() with various bad parameters for PBKDF2");
14 jsTestIsAsync = true;
16 var testCase = {
17 password: "password",
18 salt: "salt",
19 c: 1,
20 dkLen: 20,
21 hash: "SHA-1",
22 derived_key_full_length: "0c60c80f961f0e71f3a9b524af6012062fe037a6"
25 function importPbkdf2Key() {
26 var key = null;
28 debug("Importing the password...");
30 var algorithm = {name: 'PBKDF2'};
32 var password = asciiToUint8Array(testCase.password);
33 var usages = ['deriveBits', 'deriveKey'];
34 var extractable = false;
36 // (1) Import the password
37 return crypto.subtle.importKey('raw', password, algorithm, extractable, usages).then(function(result) {
38 key = result;
39 return key;
40 });
43 var pbkdf2Key = null;
45 var params = {
46 name: 'PBKDF2',
47 salt: asciiToUint8Array(testCase.salt),
48 iterations: testCase.c,
49 hash: {name: testCase.hash}
51 importPbkdf2Key().then(function(result) {
52 pbkdf2Key = result;
54 debug("\nDeriving an AES key with no length...");
55 var derivedAlgorithm = {name: 'aes-cbc'};
56 var extractable = true;
57 var usages = ['encrypt'];
59 return crypto.subtle.deriveKey(params, pbkdf2Key, derivedAlgorithm, extractable, usages);
60 }).then(failAndFinishJSTest, function(result) {
61 logError(result);
63 debug("\nDeriving an AES key with bad length...");
64 var derivedAlgorithm = {name: 'aes-cbc', length: 120};
65 var extractable = true;
66 var usages = ['encrypt'];
68 return crypto.subtle.deriveKey(params, pbkdf2Key, derivedAlgorithm, extractable, usages);
69 }).then(failAndFinishJSTest, function(result) {
70 logError(result);
72 debug("\nDeriving an AES key with unsupported length...");
73 var derivedAlgorithm = {name: 'aes-cbc', length: 192};
74 var extractable = true;
75 var usages = ['encrypt'];
77 return crypto.subtle.deriveKey(params, pbkdf2Key, derivedAlgorithm, extractable, usages);
78 }).then(failAndFinishJSTest, function(result) {
79 logError(result);
81 debug("\nDeriving an AES-CBC key with unsupported usage (sign)...");
82 var derivedAlgorithm = {name: 'aes-cbc', length: 128};
83 var extractable = true;
84 var usages = ['sign']; // Not valid for AES-CBC.
86 return crypto.subtle.deriveKey(params, pbkdf2Key, derivedAlgorithm, extractable, usages);
87 }).then(failAndFinishJSTest, function(result) {
88 logError(result);
90 debug("\nDeriving a zero-length HMAC key...");
91 var derivedAlgorithm = {name: 'HMAC', hash: "sha-1", length: 0};
92 var extractable = true;
93 var usages = ['sign'];
95 return crypto.subtle.deriveKey(params, pbkdf2Key, derivedAlgorithm, extractable, usages);
96 }).then(failAndFinishJSTest, function(result) {
97 logError(result);
99 debug("\nDeriving an ECDH key...");
100 var derivedAlgorithm = {name: 'ECDH', namedCurve: "P-256"};
101 var extractable = true;
102 var usages = ['deriveBits'];
104 return crypto.subtle.deriveKey(params, pbkdf2Key, derivedAlgorithm, extractable, usages);
105 }).then(failAndFinishJSTest, function(result) {
106 logError(result);
108 debug("\nDeriving an RSA-OAEP key...");
109 var derivedAlgorithm = {name: 'RSA-OAEP', hash: "sha-1"};
110 var extractable = true;
111 var usages = ['encrypt'];
113 return crypto.subtle.deriveKey(params, pbkdf2Key, derivedAlgorithm, extractable, usages);
114 }).then(failAndFinishJSTest, function(result) {
115 logError(result);
117 debug("");
118 }).then(finishJSTest, failAndFinishJSTest);
120 </script>
122 </body>
123 </html>