diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2024-08-23 09:36:28 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-23 22:06:28 +0530 |
commit | d9a7b30d1fa93dc742c9a3ee0fe8666be7ce1c0f (patch) | |
tree | f84a25cb776c870fd1e33a88e6df38615e717007 /tests/unit_node/crypto/crypto_key_test.ts | |
parent | d54d29662f30c0fa5e1f048fdce4835e51248682 (diff) |
fix(ext/node): import JWK octet key pairs (#25180)
Ref https://github.com/denoland/deno/issues/24129
`kty: "okp"` is defined in
[rfc8037](https://www.rfc-editor.org/rfc/rfc8037.html)
Diffstat (limited to 'tests/unit_node/crypto/crypto_key_test.ts')
-rw-r--r-- | tests/unit_node/crypto/crypto_key_test.ts | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/unit_node/crypto/crypto_key_test.ts b/tests/unit_node/crypto/crypto_key_test.ts index 6365119e2..6c2c9f851 100644 --- a/tests/unit_node/crypto/crypto_key_test.ts +++ b/tests/unit_node/crypto/crypto_key_test.ts @@ -439,3 +439,61 @@ Deno.test("create private key with invalid utf-8 string", function () { "not valid utf8", ); }); + +Deno.test("Ed25519 jwk public key #1", function () { + const key = { + "kty": "OKP", + "crv": "Ed25519", + "d": "nWGxne_9WmC6hEr0kuwsxERJxWl7MmkZcDusAxyuf2A", + "x": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo", + }; + const keyObject = createPublicKey({ key, format: "jwk" }); + + assertEquals(keyObject.type, "public"); + const spkiActual = keyObject.export({ type: "spki", format: "pem" }); + + const spkiExpected = `-----BEGIN PUBLIC KEY----- +MCowBQYDK2VwAyEA11qYAYKxCrfVS/7TyWQHOg7hcvPapiMlrwIaaPcHURo= +-----END PUBLIC KEY----- +`; + + assertEquals(spkiActual, spkiExpected); +}); + +Deno.test("Ed25519 jwk public key #2", function () { + const key = { + "kty": "OKP", + "crv": "Ed25519", + "x": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo", + }; + + const keyObject = createPublicKey({ key, format: "jwk" }); + assertEquals(keyObject.type, "public"); + + const spki = keyObject.export({ type: "spki", format: "pem" }); + const spkiExpected = `-----BEGIN PUBLIC KEY----- +MCowBQYDK2VwAyEA11qYAYKxCrfVS/7TyWQHOg7hcvPapiMlrwIaaPcHURo= +-----END PUBLIC KEY----- +`; + assertEquals(spki, spkiExpected); +}); + +Deno.test("Ed25519 jwk private key", function () { + const key = { + "kty": "OKP", + "crv": "Ed25519", + "d": "nWGxne_9WmC6hEr0kuwsxERJxWl7MmkZcDusAxyuf2A", + "x": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo", + }; + + const keyObject = createPrivateKey({ key, format: "jwk" }); + assertEquals(keyObject.type, "private"); + + const pkcs8Actual = keyObject.export({ type: "pkcs8", format: "pem" }); + const pkcs8Expected = `-----BEGIN PRIVATE KEY----- +MC4CAQAwBQYDK2VwBCIEIJ1hsZ3v/VpguoRK9JLsLMREScVpezJpGXA7rAMcrn9g +-----END PRIVATE KEY----- +`; + + assertEquals(pkcs8Actual, pkcs8Expected); +}); |