| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <html> | 2 <html> |
| 3 <head> | 3 <head> |
| 4 <script src="../fast/js/resources/js-test-pre.js"></script> | 4 <script src="../fast/js/resources/js-test-pre.js"></script> |
| 5 </head> | 5 </head> |
| 6 <body> | 6 <body> |
| 7 <p id="description"></p> | 7 <p id="description"></p> |
| 8 <div id="console"></div> | 8 <div id="console"></div> |
| 9 | 9 |
| 10 <script> | 10 <script> |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 44 debug(" rejected with value of " + value); | 44 debug(" rejected with value of " + value); |
| 45 startNextTest(); | 45 startNextTest(); |
| 46 } | 46 } |
| 47 | 47 |
| 48 function failHandler(value) | 48 function failHandler(value) |
| 49 { | 49 { |
| 50 testFailed(value); | 50 testFailed(value); |
| 51 startNextTest(); | 51 startNextTest(); |
| 52 } | 52 } |
| 53 | 53 |
| 54 aesCbc = { name: 'aes-cbc' }; |
| 55 |
| 54 allTests = [ | 56 allTests = [ |
| 55 function() | 57 function() |
| 56 { | 58 { |
| 57 keyFormat = "raw"; | 59 keyFormat = "raw"; |
| 58 data = asciiToArrayBuffer("private"); | 60 data = asciiToArrayBuffer("private"); |
| 59 algorithm = {name: "Sha-256"}; | 61 algorithm = { name: 'hmac', hash: { name: 'sha-256' } }; |
| 60 extractable = true; | 62 extractable = true; |
| 61 // Note there are duplicates | 63 // Note there are duplicates |
| 62 keyUsages = ['encrypt', 'encrypt', 'encrypt', 'sign']; | 64 keyUsages = ['encrypt', 'encrypt', 'encrypt', 'sign']; |
| 63 | 65 |
| 64 crypto.subtle.importKey(keyFormat, data, algorithm, extractable, keyUsag
es).then( | 66 crypto.subtle.importKey(keyFormat, data, algorithm, extractable, keyUsag
es).then( |
| 65 function(value) { | 67 function(value) { |
| 66 key = value; | 68 key = value; |
| 67 shouldBe("key.type", "'private'") | 69 shouldBe("key.type", "'private'") |
| 68 shouldBe("key.extractable", "true") | 70 shouldBe("key.extractable", "true") |
| 69 shouldBe("key.algorithm.name", "'SHA-256'") | 71 shouldBe("key.algorithm.name", "'HMAC'") |
| 72 shouldBe("key.algorithm.hash.name", "'SHA-256'") |
| 70 shouldBe("key.usages.join(',')", "'encrypt,sign'") | 73 shouldBe("key.usages.join(',')", "'encrypt,sign'") |
| 71 | 74 |
| 72 startNextTest(); | 75 startNextTest(); |
| 73 }, failHandler); | 76 }, failHandler); |
| 74 }, | 77 }, |
| 75 | 78 |
| 76 // Same test as above, but with an keyUsages. | 79 // Same test as above, but with an keyUsages, and AES-CBC. |
| 77 function() | 80 function() |
| 78 { | 81 { |
| 79 keyFormat = "raw"; | 82 keyFormat = "raw"; |
| 80 data = asciiToArrayBuffer("private"); | 83 data = asciiToArrayBuffer("private"); |
| 81 algorithm = {name: "Sha-256"}; | 84 algorithm = aesCbc; |
| 82 extractable = true; | 85 extractable = true; |
| 83 keyUsages = []; | 86 keyUsages = []; |
| 84 | 87 |
| 85 crypto.subtle.importKey(keyFormat, data, algorithm, extractable, keyUsag
es).then( | 88 crypto.subtle.importKey(keyFormat, data, algorithm, extractable, keyUsag
es).then( |
| 86 function(value) { | 89 function(value) { |
| 87 key = value; | 90 key = value; |
| 88 shouldBe("key.type", "'private'") | 91 shouldBe("key.type", "'private'") |
| 89 shouldBe("key.extractable", "true") | 92 shouldBe("key.extractable", "true") |
| 90 shouldBe("key.algorithm.name", "'SHA-256'") | 93 shouldBe("key.algorithm.name", "'AES-CBC'") |
| 91 shouldBe("key.usages.join(',')", "''") | 94 shouldBe("key.usages.join(',')", "''") |
| 92 | 95 |
| 93 startNextTest(); | 96 startNextTest(); |
| 94 }, failHandler); | 97 }, failHandler); |
| 95 }, | 98 }, |
| 96 | 99 |
| 97 // Same test as above, but with extractable = false. | 100 // Same test as above, but with extractable = false. |
| 98 function() | 101 function() |
| 99 { | 102 { |
| 100 keyFormat = "raw"; | 103 keyFormat = "raw"; |
| 101 data = asciiToArrayBuffer("private"); | 104 data = asciiToArrayBuffer("private"); |
| 102 algorithm = {name: "Sha-256"}; | 105 algorithm = aesCbc; |
| 103 extractable = false; | 106 extractable = false; |
| 104 keyUsages = []; | 107 keyUsages = []; |
| 105 | 108 |
| 106 crypto.subtle.importKey(keyFormat, data, algorithm, extractable, keyUsag
es).then( | 109 crypto.subtle.importKey(keyFormat, data, algorithm, extractable, keyUsag
es).then( |
| 107 function(value) { | 110 function(value) { |
| 108 key = value; | 111 key = value; |
| 109 shouldBe("key.type", "'private'") | 112 shouldBe("key.type", "'private'") |
| 110 shouldBe("key.extractable", "false") | 113 shouldBe("key.extractable", "false") |
| 111 shouldBe("key.algorithm.name", "'SHA-256'") | 114 shouldBe("key.algorithm.name", "'AES-CBC'") |
| 112 shouldBe("key.usages.join(',')", "''") | 115 shouldBe("key.usages.join(',')", "''") |
| 113 | 116 |
| 114 startNextTest(); | 117 startNextTest(); |
| 115 }, failHandler); | 118 }, failHandler); |
| 116 }, | 119 }, |
| 117 | 120 |
| 118 // Same test as above, but with key.type of public. | 121 // Same test as above, but with key.type of public. |
| 119 function() | 122 function() |
| 120 { | 123 { |
| 121 keyFormat = "raw"; | 124 keyFormat = "raw"; |
| 122 data = asciiToArrayBuffer("public"); | 125 data = asciiToArrayBuffer("public"); |
| 123 algorithm = {name: "Sha-256"}; | 126 algorithm = aesCbc; |
| 124 extractable = false; | 127 extractable = false; |
| 125 keyUsages = []; | 128 keyUsages = []; |
| 126 | 129 |
| 127 crypto.subtle.importKey(keyFormat, data, algorithm, extractable, keyUsag
es).then( | 130 crypto.subtle.importKey(keyFormat, data, algorithm, extractable, keyUsag
es).then( |
| 128 function(value) { | 131 function(value) { |
| 129 key = value; | 132 key = value; |
| 130 shouldBe("key.type", "'public'") | 133 shouldBe("key.type", "'public'") |
| 131 shouldBe("key.extractable", "false") | 134 shouldBe("key.extractable", "false") |
| 132 shouldBe("key.algorithm.name", "'SHA-256'") | 135 shouldBe("key.algorithm.name", "'AES-CBC'") |
| 133 shouldBe("key.usages.join(',')", "''") | 136 shouldBe("key.usages.join(',')", "''") |
| 134 | 137 |
| 135 startNextTest(); | 138 startNextTest(); |
| 136 }, failHandler); | 139 }, failHandler); |
| 137 }, | 140 }, |
| 138 | 141 |
| 139 // Same test as above, but with keyFormat = spki | 142 // Same test as above, but with keyFormat = spki |
| 140 function() | 143 function() |
| 141 { | 144 { |
| 142 keyFormat = "spki"; | 145 keyFormat = "spki"; |
| 143 data = asciiToArrayBuffer("public"); | 146 data = asciiToArrayBuffer("public"); |
| 144 algorithm = {name: "Sha-256"}; | 147 algorithm = aesCbc; |
| 145 extractable = false; | 148 extractable = false; |
| 146 keyUsages = []; | 149 keyUsages = []; |
| 147 | 150 |
| 148 crypto.subtle.importKey(keyFormat, data, algorithm, extractable, keyUsag
es).then( | 151 crypto.subtle.importKey(keyFormat, data, algorithm, extractable, keyUsag
es).then( |
| 149 function(value) { | 152 function(value) { |
| 150 key = value; | 153 key = value; |
| 151 shouldBe("key.type", "'public'") | 154 shouldBe("key.type", "'public'") |
| 152 shouldBe("key.extractable", "false") | 155 shouldBe("key.extractable", "false") |
| 153 shouldBe("key.algorithm.name", "'SHA-256'") | 156 shouldBe("key.algorithm.name", "'AES-CBC'") |
| 154 shouldBe("key.usages.join(',')", "''") | 157 shouldBe("key.usages.join(',')", "''") |
| 155 | 158 |
| 156 startNextTest(); | 159 startNextTest(); |
| 157 }, failHandler); | 160 }, failHandler); |
| 158 }, | 161 }, |
| 159 | 162 |
| 160 function() | 163 function() |
| 161 { | 164 { |
| 162 keyFormat = "spki"; | 165 keyFormat = "spki"; |
| 163 data = asciiToArrayBuffer("reject"); | 166 data = asciiToArrayBuffer("reject"); |
| 164 algorithm = {name: "Sha-256"}; | 167 algorithm = aesCbc; |
| 165 extractable = false; | 168 extractable = false; |
| 166 keyUsages = []; | 169 keyUsages = []; |
| 167 | 170 |
| 168 crypto.subtle.importKey(keyFormat, data, algorithm, extractable, keyUsag
es).then( | 171 crypto.subtle.importKey(keyFormat, data, algorithm, extractable, keyUsag
es).then( |
| 169 failHandler, | 172 failHandler, |
| 170 function(value) { | 173 function(value) { |
| 171 debug("rejected with " + value); | 174 debug("rejected with " + value); |
| 172 startNextTest(); | 175 startNextTest(); |
| 173 }); | 176 }); |
| 174 }, | 177 }, |
| 175 | 178 |
| 176 function() | 179 function() |
| 177 { | 180 { |
| 178 keyFormat = "spki"; | 181 keyFormat = "spki"; |
| 179 data = asciiToArrayBuffer("throw"); | 182 data = asciiToArrayBuffer("throw"); |
| 180 algorithm = {name: "Sha-256"}; | 183 algorithm = aesCbc; |
| 181 extractable = false; | 184 extractable = false; |
| 182 keyUsages = []; | 185 keyUsages = []; |
| 183 | 186 |
| 184 shouldThrow("crypto.subtle.importKey(keyFormat, data, algorithm, extract
able, keyUsages)"); | 187 shouldThrow("crypto.subtle.importKey(keyFormat, data, algorithm, extract
able, keyUsages)"); |
| 185 startNextTest(); | 188 startNextTest(); |
| 186 }, | 189 }, |
| 187 | 190 |
| 188 function() | 191 function() |
| 189 { | 192 { |
| 190 keyFormat = "raw"; | 193 keyFormat = "raw"; |
| 191 data = asciiToArrayBuffer(""); | 194 data = asciiToArrayBuffer(""); |
| 192 algorithm = {name: 'sha-256'}; | 195 algorithm = aesCbc; |
| 193 extractable = true; | 196 extractable = true; |
| 194 | 197 |
| 195 // Note contains duplicates and invalid entries. | 198 // Note contains duplicates and invalid entries. |
| 196 keyUsages = []; | 199 keyUsages = []; |
| 197 | 200 |
| 198 // Invalid format. | 201 // Invalid format. |
| 199 shouldThrow("crypto.subtle.importKey('invalid format', data, algorithm,
extractable, keyUsages)"); | 202 shouldThrow("crypto.subtle.importKey('invalid format', data, algorithm,
extractable, keyUsages)"); |
| 200 | 203 |
| 201 // Invalid key usage. | 204 // Invalid key usage. |
| 202 shouldThrow("crypto.subtle.importKey(keyFormat, data, algorithm, extract
able, ['SIGN'])"); | 205 shouldThrow("crypto.subtle.importKey(keyFormat, data, algorithm, extract
able, ['SIGN'])"); |
| 203 | 206 |
| 204 // Undefined key usage. | 207 // Undefined key usage. |
| 205 // FIXME: http://crbug.com/262383 | 208 // FIXME: http://crbug.com/262383 |
| 206 //shouldThrow("crypto.subtle.importKey(keyFormat, data, algorithm, extra
ctable, undefined)"); | 209 //shouldThrow("crypto.subtle.importKey(keyFormat, data, algorithm, extra
ctable, undefined)"); |
| 207 | 210 |
| 208 // Invalid data | 211 // Invalid data |
| 209 shouldThrow("crypto.subtle.importKey(keyFormat, [], algorithm, extractab
le, keyUsages)"); | 212 shouldThrow("crypto.subtle.importKey(keyFormat, [], algorithm, extractab
le, keyUsages)"); |
| 210 shouldThrow("crypto.subtle.importKey(keyFormat, null, algorithm, extract
able, keyUsages)"); | 213 shouldThrow("crypto.subtle.importKey(keyFormat, null, algorithm, extract
able, keyUsages)"); |
| 211 | 214 |
| 215 // Missing hash parameter for HMAC. |
| 216 invalidHmac = { name: 'hmac' }; |
| 217 shouldThrow("crypto.subtle.importKey(keyFormat, data, invalidHmac, extra
ctable, keyUsages)"); |
| 218 |
| 219 // SHA-1 doesn't support the importKey operation. |
| 220 sha1 = { name: 'sha-1' }; |
| 221 shouldThrow("crypto.subtle.importKey(keyFormat, data, sha1, extractable,
keyUsages)"); |
| 222 |
| 212 startNextTest(); | 223 startNextTest(); |
| 213 }, | 224 }, |
| 214 | 225 |
| 215 ]; | 226 ]; |
| 216 | 227 |
| 217 // Begin! | 228 // Begin! |
| 218 startNextTest(); | 229 startNextTest(); |
| 219 </script> | 230 </script> |
| 220 | 231 |
| 221 <script src="../fast/js/resources/js-test-post.js"></script> | 232 <script src="../fast/js/resources/js-test-post.js"></script> |
| 222 </body> | 233 </body> |
| 223 </html> | 234 </html> |
| OLD | NEW |