blob: 579fa141e80344e37f7c669865624c84240a7788 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test.js"></script>
<script src="resources/common.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script>
description("Tests calling cypto.subtle.sign and crypto.subtle.verify with incorrect inputs");
jsTestIsAsync = true;
function importHmacKey()
{
var importAlgorithm = {name: 'HMAC', hash: {name: 'sha-1'}};
var keyData = new Uint8Array(16);
var extractable = true;
var usages = ['sign', 'verify'];
return crypto.subtle.importKey('raw', keyData, importAlgorithm, extractable, usages);
}
data = asciiToUint8Array("hello");
hmac = {name: 'HMAC', hash: {name: 'sha-1'}};
importHmacKey().then(function(result) {
key = result;
// Pass invalid signature parameters to verify()
return crypto.subtle.verify(hmac, key, null, data);
}).then(failAndFinishJSTest, function(result) {
logError(result);
// Pass invalid signature parameters to verify()
return crypto.subtle.verify(hmac, key, 'a', data);
}).then(failAndFinishJSTest, function(result) {
logError(result);
// Pass invalid signature parameters to verify()
return crypto.subtle.verify(hmac, key, [], data);
}).then(failAndFinishJSTest, function(result) {
logError(result);
// Operation does not support signing.
return crypto.subtle.sign({name: 'sha-1'}, key, data);
}).then(failAndFinishJSTest, function(result) {
logError(result);
// Operation doesn't support signing (also given an invalid key, but the
// first failure takes priority)
return crypto.subtle.sign({name: 'AES-CBC'}, key, data);
}).then(failAndFinishJSTest, function(result) {
logError(result);
}).then(finishJSTest, failAndFinishJSTest);
</script>
</body>
</html>