From 9c348a0acd7d1bc288c2ce5b66016571b9603288 Mon Sep 17 00:00:00 2001 From: Divy Srivastava Date: Thu, 14 Mar 2024 06:39:46 -0700 Subject: fix(ext/node): support `spki` format in createPublicKey (#22918) --- tests/unit_node/crypto/crypto_key_test.ts | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'tests/unit_node') diff --git a/tests/unit_node/crypto/crypto_key_test.ts b/tests/unit_node/crypto/crypto_key_test.ts index 656c7bb24..bcb47b5a7 100644 --- a/tests/unit_node/crypto/crypto_key_test.ts +++ b/tests/unit_node/crypto/crypto_key_test.ts @@ -284,3 +284,32 @@ Deno.test("createPublicKey() EC", function () { assertEquals(key.asymmetricKeyType, "ec"); assertEquals(key.asymmetricKeyDetails?.namedCurve, "p256"); }); + +Deno.test("createPublicKey SPKI for DH", async function () { + const { publicKey, privateKey } = await crypto.subtle.generateKey( + { + name: "ECDH", + namedCurve: "P-384", + }, + true, + ["deriveKey", "deriveBits"], + ); + + const exportedPublicKey = await crypto.subtle.exportKey("spki", publicKey); + const exportedPrivateKey = await crypto.subtle.exportKey("pkcs8", privateKey); + + const pubKey = createPublicKey({ + key: Buffer.from(exportedPublicKey), + format: "der", + type: "spki", + }); + + const privKey = createPrivateKey({ + key: Buffer.from(exportedPrivateKey), + format: "der", + type: "pkcs8", + }); + + assertEquals(pubKey.asymmetricKeyType, "ec"); + assertEquals(privKey.asymmetricKeyType, "ec"); +}); -- cgit v1.2.3