4 <script src=
"../../../resources/js-test.js"></script>
5 <script src=
"../resources/common.js"></script>
8 <p id=
"description"></p>
9 <div id=
"console"></div>
12 description("Tests bad algorithm inputs for AES-CTR");
16 var keyData
= hexStringToUint8Array("2b7e151628aed2a6abf7158809cf4f3c");
17 var data
= asciiToUint8Array("hello");
20 Promise
.resolve(null).then(function(result
) {
21 var usages
= ['encrypt', 'decrypt'];
22 var extractable
= false;
23 // FIXME: Should use aes-ctr here.
24 var algorithm
= {name
: 'aes-cbc'};
26 debug("\nImporting AES-CBC key...");
27 return crypto
.subtle
.importKey('raw', keyData
, algorithm
, extractable
, usages
);
28 }).then(function(result
) {
31 debug("\nencrypt() with counter null...");
32 return crypto
.subtle
.encrypt({name
: 'AES-CTR', counter
: null}, key
, data
);
33 }).then(failAndFinishJSTest
, function(result
) {
36 debug("\nencrypt() without counter...");
37 return crypto
.subtle
.encrypt({name
: 'AES-CTR'}, key
, data
);
38 }).then(failAndFinishJSTest
, function(result
) {
41 debug("\nencrypt() without length...");
42 return crypto
.subtle
.encrypt({name
: 'AES-CTR', counter
: new Uint8Array(0)}, key
, data
);
43 }).then(failAndFinishJSTest
, function(result
) {
46 debug("\nencrypt() with a length of 256...");
47 return crypto
.subtle
.encrypt({name
: 'AES-CTR', counter
: new Uint8Array(16), length
: 256}, key
, data
);
48 }).then(failAndFinishJSTest
, function(result
) {
51 debug("\nencrypt() with a length of -3...");
52 return crypto
.subtle
.encrypt({name
: 'AES-CTR', counter
: new Uint8Array(16), length
: -3}, key
, data
);
53 }).then(failAndFinishJSTest
, function(result
) {
56 debug("\nencrypt() with length that is Infinity...");
57 return crypto
.subtle
.encrypt({name
: 'AES-CTR', counter
: new Uint8Array(16), length
: Infinity
}, key
, data
);
58 }).then(failAndFinishJSTest
, function(result
) {
60 }).then(finishJSTest
, failAndFinishJSTest
);