blob: 7aed467fce4e9fb68076a0f950c93822a862c23b [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../fast/js/resources/js-test-pre.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script>
description("Tests cypto.subtle.generateKey.");
jsTestIsAsync = true;
// Note that fractional numbers are truncated, so this length should be
// interpreted as 1024.
aesCbc = { name: 'aes-cbc', length: 1024.9 };
extractable = true;
keyUsages = ['encrypt', 'decrypt'];
// length property is missing.
invalidAesKeyGen = { name: 'aes-cbc' };
shouldThrow("crypto.subtle.generateKey(invalidAesKeyGen, extractable, keyUsages)");
// length is invalid (outside of range of "unsigned short")
invalidAesKeyGen = { name: 'aes-cbc', length: 70000 };
shouldThrow("crypto.subtle.generateKey(invalidAesKeyGen, extractable, keyUsages)");
// length is invalid (outside of range of "unsigned short")
invalidAesKeyGen = { name: 'aes-cbc', length: -3 };
shouldThrow("crypto.subtle.generateKey(invalidAesKeyGen, extractable, keyUsages)");
// keyUsages is invalid.
shouldThrow("crypto.subtle.generateKey(aesCbc, extractable, -1)");
crypto.subtle.generateKey(aesCbc, extractable, keyUsages).then(function(newKey)
{
key = newKey;
shouldBe("key.type", "'private'")
shouldBe("key.extractable", "true")
shouldBe("key.algorithm.name", "'AES-CBC'")
shouldBe("key.algorithm.length", "1024")
shouldBe("key.usages.join(',')", "'encrypt,decrypt'")
finishJSTest();
});
</script>
<script src="../fast/js/resources/js-test-post.js"></script>
</body>
</html>