| Index: LayoutTests/crypto/unwrapKey-badParameters.html
|
| diff --git a/LayoutTests/crypto/wrap-unwrap.html b/LayoutTests/crypto/unwrapKey-badParameters.html
|
| similarity index 38%
|
| rename from LayoutTests/crypto/wrap-unwrap.html
|
| rename to LayoutTests/crypto/unwrapKey-badParameters.html
|
| index d72992e6245b87d99c6a789e2bfbfeebe0d02a8d..6090982bcf7d6af20d433af386a4bedb022668eb 100644
|
| --- a/LayoutTests/crypto/wrap-unwrap.html
|
| +++ b/LayoutTests/crypto/unwrapKey-badParameters.html
|
| @@ -3,81 +3,39 @@
|
| <head>
|
| <script src="../resources/js-test.js"></script>
|
| <script src="resources/common.js"></script>
|
| -<script src="resources/keys.js"></script>
|
| </head>
|
| <body>
|
| <p id="description"></p>
|
| <div id="console"></div>
|
|
|
| <script>
|
| -description("Tests cypto.subtle.sign and crypto.subtle.verify");
|
| -
|
| -// FIXME: This is only testing invalid parameters right now. Once the
|
| -// chromium-side implements the algorithms more interesting tests should be
|
| -// added.
|
| +description("Tests calls to unwrapKey() with bad inputs.");
|
|
|
| jsTestIsAsync = true;
|
|
|
| -importTestKeys().then(function(result) {
|
| - keys = result;
|
| - key = keys.hmacSha1;
|
| - wrappingKey = keys.aesCbc;
|
| -
|
| - wrapAlgorithm = {name: 'aes-cbc', iv: new Uint8Array(16)};
|
| -
|
| - // --------------------------------
|
| - // wrapKey invalid parameters
|
| - // --------------------------------
|
| -
|
| - // Invalid format.
|
| - shouldRejectPromiseWithNull("crypto.subtle.wrapKey('bad-format', key, wrappingKey, wrapAlgorithm)");
|
| -
|
| - // Invalid key
|
| - shouldThrow("crypto.subtle.wrapKey('raw', 1, wrappingKey, wrapAlgorithm)");
|
| -
|
| - // Invalid wrappingKey
|
| - shouldThrow("crypto.subtle.wrapKey('raw', key, '', wrapAlgorithm)");
|
| -
|
| - // Invalid wrapAlgorithm
|
| - shouldThrow("crypto.subtle.wrapKey('raw', key, wrappingKey, undefined)");
|
| -
|
| - // Key is not extractable.
|
| - shouldRejectPromiseWithNull("crypto.subtle.wrapKey('raw', keys.aesCbcJustDecrypt, wrappingKey, wrapAlgorithm)");
|
| -
|
| - // wrappingKey's usage does not include wrapKey.
|
| - shouldRejectPromiseWithNull("crypto.subtle.wrapKey('raw', key, keys.aesCbcJustDecrypt, wrapAlgorithm)");
|
| -
|
| - // SHA-1 isn't a valid wrapKey algorithm.
|
| - shouldRejectPromiseWithNull("crypto.subtle.wrapKey('raw', key, wrappingKey, {name: 'SHA-1'})");
|
| +function importUnwrappingKey()
|
| +{
|
| + var data = new Uint8Array(16);
|
| + var extractable = true;
|
| + var keyUsages = ['unwrapKey'];
|
|
|
| - // Wrap algorithm doesn't match the wrapping key's algorithm (AES-CBC key
|
| - // with AES-CTR wrap algorithm)
|
| - aesCtrAlgorithm = {name: 'AES-CTR', counter: new Uint8Array(16), length: 0};
|
| - shouldRejectPromiseWithNull("crypto.subtle.wrapKey('raw', key, wrappingKey, aesCtrAlgorithm)");
|
| -
|
| - // --------------------------------
|
| - // unwrapKey invalid parameters
|
| - // --------------------------------
|
| + return crypto.subtle.importKey('raw', data, {name: 'AES-CBC'}, extractable, keyUsages);
|
| +}
|
|
|
| +importUnwrappingKey().then(function(result) {
|
| wrappedKey = new Uint8Array(100);
|
| - unwrappingKey = keys.aesCbc;
|
| + unwrappingKey = result;
|
| unwrapAlgorithm = {name: 'aes-cbc', iv: new Uint8Array(16)};
|
| unwrappedKeyAlgorithm = unwrapAlgorithm;
|
| extractable = true;
|
| keyUsages = ['encrypt'];
|
|
|
| - // Invalid format
|
| - shouldRejectPromiseWithNull("crypto.subtle.unwrapKey('bad-format', wrappedKey, unwrappingKey, unwrapAlgorithm, unwrappedKeyAlgorithm, extractable, keyUsages)");
|
| -
|
| // Invalid wrappedKey
|
| shouldThrow("crypto.subtle.unwrapKey('raw', null, unwrappingKey, unwrapAlgorithm, unwrappedKeyAlgorithm, extractable, keyUsages)");
|
|
|
| // Invalid unwrappingKey
|
| shouldThrow("crypto.subtle.unwrapKey('raw', wrappedKey, 'hi', unwrapAlgorithm, unwrappedKeyAlgorithm, extractable, keyUsages)");
|
|
|
| - // unwrappingKey does not include unwrapKey usage.
|
| - shouldRejectPromiseWithNull("crypto.subtle.unwrapKey('raw', wrappedKey, keys.aesCbcJustDecrypt, unwrapAlgorithm, unwrappedKeyAlgorithm, extractable, keyUsages)");
|
| -
|
| // Invalid keyUsages (also, unwrappedKeyAlgorithm is set to null).
|
| shouldThrow("crypto.subtle.unwrapKey('raw', wrappedKey, 'hi', unwrapAlgorithm, null, extractable, 9)");
|
|
|
| @@ -87,15 +45,27 @@ importTestKeys().then(function(result) {
|
| // Invalid unwrappedKeyAlgorithm (specified but bad).
|
| shouldThrow("crypto.subtle.unwrapKey('raw', wrappedKey, unwrappingKey, unwrapAlgorithm, 3, extractable, keyUsages)");
|
|
|
| + // Invalid format
|
| + return crypto.subtle.unwrapKey('bad-format', wrappedKey, unwrappingKey, unwrapAlgorithm, unwrappedKeyAlgorithm, extractable, keyUsages);
|
| +}).then(failAndFinishJSTest, function(result) {
|
| + error = result;
|
| + shouldBeNull("error");
|
| +
|
| // SHA-1 isn't a valid unwrapKey algorithm.
|
| - shouldRejectPromiseWithNull("crypto.subtle.unwrapKey('raw', wrappedKey, unwrappingKey, {name: 'SHA-1'}, unwrappedKeyAlgorithm, extractable, keyUsages)");
|
| + return crypto.subtle.unwrapKey('raw', wrappedKey, unwrappingKey, {name: 'SHA-1'}, unwrappedKeyAlgorithm, extractable, keyUsages);
|
| +}).then(failAndFinishJSTest, function(result) {
|
| + error = result;
|
| + shouldBeNull("error");
|
|
|
| // Mismatch between the unwrappingKey's algorithm and unwrapAlgorithm.
|
| - shouldRejectPromiseWithNull("crypto.subtle.unwrapKey('raw', wrappedKey, unwrappingKey, aesCtrAlgorithm, unwrappedKeyAlgorithm, extractable, keyUsages)");
|
| -
|
| + aesCtrAlgorithm = {name: 'AES-CTR', counter: new Uint8Array(16), length: 0};
|
| + return crypto.subtle.unwrapKey('raw', wrappedKey, unwrappingKey, aesCtrAlgorithm, unwrappedKeyAlgorithm, extractable, keyUsages);
|
| +}).then(failAndFinishJSTest, function(result) {
|
| + error = result;
|
| + shouldBeNull("error");
|
| }).then(finishJSTest, failAndFinishJSTest);
|
|
|
| -
|
| </script>
|
|
|
| </body>
|
| +</html>
|
|
|