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 importing a JWK key for HMAC.");
16 var nonExtractable
= false;
17 var extractable
= true;
24 "k": "ahjkn-_387fgnsibf23qsvahjkn-_387fgnsibf23qs"
27 debug("Importing a key...\n");
28 crypto
.subtle
.importKey("jwk", hmacKey
, {name
: "HMAC", hash
: {name
: "SHA-256"}}, nonExtractable
, ["sign", "verify"]).then(function(result
) {
31 shouldBe("key.type", "'secret'");
32 shouldBe("key.extractable", "false");
33 shouldBe("key.algorithm.name", "'HMAC'");
34 shouldBe("key.algorithm.length", "256");
35 shouldBe("key.usages", '["sign", "verify"]');
37 debug("\nUsing the key to sign message 'foo'...");
38 return crypto
.subtle
.sign(key
.algorithm
, key
, asciiToUint8Array('foo'));
39 }).then(function(result
) {
41 shouldBe("bytesToHexString(new Uint8Array(signature))", "'e03736fe098892b2a2da77812431f7c014d32e2fd69f3bcff883ac923a8fa2da'");
43 debug("\nVerifying the signature...");
44 return crypto
.subtle
.verify(key
.algorithm
, key
, result
, asciiToUint8Array('foo'));
45 }).then(function(result
) {
46 verificationResult
= result
;
47 shouldBe("verificationResult", "true");
48 }).then(finishJSTest
, failAndFinishJSTest
);