<!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("Test exporting a public EC key.");
jsTestIsAsync = true;
var extractable = true;
var publicKeySpkiHex = "3059301306072A8648CE3D020106082A8648CE3D030107034200049CB0CF69303DAFC761D4E4687B4ECF039E6D34AB964AF80810D8D558A4A8D6F72D51233A1788920A86EE08A1962C79EFA317FB7879E297DAD2146DB995FA1C78";
debug("\nImporting a SPKI key...");
crypto.subtle.importKey("spki", hexStringToUint8Array(publicKeySpkiHex), {name: "ECDSA", namedCurve: "P-256"}, extractable, ['verify']).then(function(result) {
key = result;
debug("\nExporting the key as JWK...");
return crypto.subtle.exportKey("jwk", key);
}).then(function(result) {
exportedJWK = result;
shouldEvaluateAs("exportedJWK.kty", "EC");
shouldEvaluateAs("exportedJWK.crv", "P-256");
shouldEvaluateAs("exportedJWK.x", "nLDPaTA9r8dh1ORoe07PA55tNKuWSvgIENjVWKSo1vc");
shouldEvaluateAs("exportedJWK.y", "LVEjOheIkgqG7gihlix576MX-3h54pfa0hRtuZX6HHg");
shouldBe("exportedJWK.alg", "undefined");
shouldBe("exportedJWK.ext", "true");
shouldBe("exportedJWK.key_ops", "['verify']");
shouldBe("exportedJWK.use", "undefined");
debug("\nExporting the key as SPKI...");
return crypto.subtle.exportKey("spki", key);
}).then(function(result) {
exportedSpki = result;
bytesShouldMatchHexString("exportedSpki", publicKeySpkiHex, exportedSpki);
}).then(finishJSTest, failAndFinishJSTest);
</script>
</body>
</html>