blob: 43873ca15e86b3268ff333ee5c5e98f2c6a0472f [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
<script src="../resources/common.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script>
description("Test WrapKey operation with malformed parameters");
jsTestIsAsync = true;
var extractable = true;
var nonExtractable = false;
var rawKey = asciiToUint8Array("jnOw99oOZFLIEPMr");
var aesCbcParams = {
name: "aes-cbc",
iv: asciiToUint8Array("jnOw99oOZFLIEPMr"),
}
// Not enough arguments.
shouldReject('crypto.subtle.wrapKey()');
shouldReject('crypto.subtle.wrapKey(1)');
shouldReject('crypto.subtle.wrapKey(1, 2)');
shouldReject('crypto.subtle.wrapKey(1, 2, 3)');
crypto.subtle.importKey("raw", rawKey, "aes-kw", extractable, ["wrapKey", "unwrapKey"]).then(function(result) {
wrappingKey = result;
return crypto.subtle.importKey("raw", rawKey, "aes-cbc", nonExtractable, ["encrypt", "decrypt"]);
}).then(function(result) {
key = result;
// Wrong AlgorithmIdentifier
shouldReject('crypto.subtle.wrapKey("raw", key, wrappingKey, "HMAC")');
shouldReject('crypto.subtle.wrapKey("raw", key, wrappingKey, aesCbcParams)');
// Non-extractable
shouldReject('crypto.subtle.wrapKey("raw", key, wrappingKey, "AES-KW")');
return crypto.subtle.importKey("raw", rawKey, "aes-kw", extractable, ["unwrapKey"]);
}).then(function(result) {
wrappingKey = result;
// Wrong usage
shouldReject('crypto.subtle.wrapKey("raw", key, wrappingKey, "AES-KW")').then(finishJSTest);
});
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>