blob: e236e1d966221290ccc70a85931e92dd0c192ca5 [file] [edit]
<html>
<head>
<title>CryptoKey OKP serializationt</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
promise_test(async (test) => {
const channel = new MessageChannel();
const keyData1 = {
crv: "Ed25519",
x: "2OGJY9gJ1IfZVJrMrsZ0Ln7rok2KDTsUt-PK6gaJPcw",
kty: "OKP"
};
const keyData2 = {
crv: "Ed25519",
d: "88j0xI34eBRujNO_bfTlDjibpwdOFcI1Lc1dMI1MqB8",
x: "2OGJY9gJ1IfZVJrMrsZ0Ln7rok2KDTsUt-PK6gaJPcw",
kty: "OKP"
};
const key1 = await crypto.subtle.importKey("jwk", keyData1, "Ed25519", true, ["verify"]);
const key2 = await crypto.subtle.importKey("jwk", keyData2, "Ed25519", true, ["sign"]);
channel.port1.postMessage(key1);
const key3 = await new Promise(resolve => channel.port2.onmessage = (event) => resolve(event.data));
assert_equals(key3.extractable, key1.extractable, "key1 extractable");
assert_array_equals(key3.usages, key1.usages, "key1 usages");
const keyData3 = await crypto.subtle.exportKey("jwk", key3);
assert_equals(keyData3.crv, keyData1.crv, "keyData1.crv");
assert_equals(keyData3.x, keyData1.x, "keyData1.x");
assert_equals(keyData3.kty, keyData1.kty, "keyData1.kty");
channel.port1.postMessage(key2);
const key4 = await new Promise(resolve => channel.port2.onmessage = (event) => resolve(event.data));
assert_equals(key4.extractable, key2.extractable, "key2 extractable");
assert_array_equals(key4.usages, key2.usages, "key2 usages");
const keyData4 = await crypto.subtle.exportKey("jwk", key4);
assert_equals(keyData4.crv, keyData4.crv, "keyData1.crv");
assert_equals(keyData4.d, keyData4.d, "keyData4.d");
assert_equals(keyData4.kty, keyData4.kty, "keyData4.kty");
}, "postMessage a CryptoKeyOKP should work");
</script>
</body>
</html>