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("Test generating a HMAC key.");
16 var extractable
= true;
19 debug("\nGenerating a key with default length...");
21 Promise
.resolve(null).then(function(result
) {
22 return crypto
.subtle
.generateKey("hmac", extractable
, ["sign", "verify"]);
23 }).then(failAndFinishJSTest
, function(result
) {
25 return crypto
.subtle
.generateKey({name
: "hmac"}, extractable
, ["sign", "verify"]);
26 }).then(failAndFinishJSTest
, function(result
) {
28 return crypto
.subtle
.generateKey({name
: "hmac", length
: undefined, hash
: {name
: "sha-1"}}, extractable
, ["sign", "verify"]);
29 }).then(failAndFinishJSTest
, function(result
) {
31 return crypto
.subtle
.generateKey({name
: "hmac", length
: {}, hash
: {name
: "sha-1"}}, extractable
, ["sign", "verify"]);
32 }).then(failAndFinishJSTest
, function(result
) {
34 return crypto
.subtle
.generateKey({name
: "hmac", hash
: {name
: "sha-1"}}, extractable
, ["sign", "verify"]);
35 }).then(function(result
) {
38 shouldBe("key.type", "'secret'");
39 shouldBe("key.extractable", "true");
40 shouldBe("key.algorithm.name", "'HMAC'");
41 shouldBe("key.algorithm.length", "512");
42 shouldBe("key.usages", '["sign", "verify"]');
44 debug("\nGenerating a key with custom length...");
45 return crypto
.subtle
.generateKey({name
: "hmac", hash
: {name
: "sha-1"}, length
: 40}, extractable
, ["sign"]);
46 }).then(function(result
) {
49 shouldBe("key.type", "'secret'");
50 shouldBe("key.extractable", "true");
51 shouldBe("key.algorithm.name", "'HMAC'");
52 shouldBe("key.algorithm.length", "40");
53 shouldBe("key.usages", '["sign"]');
54 }).then(finishJSTest
, failAndFinishJSTest
);