aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bun.js/bindings/webcrypto/CryptoKeyOKP.cpp20
-rw-r--r--test/bun.js/web-crypto.test.ts17
2 files changed, 28 insertions, 9 deletions
diff --git a/src/bun.js/bindings/webcrypto/CryptoKeyOKP.cpp b/src/bun.js/bindings/webcrypto/CryptoKeyOKP.cpp
index a4138d8c9..b7dc55018 100644
--- a/src/bun.js/bindings/webcrypto/CryptoKeyOKP.cpp
+++ b/src/bun.js/bindings/webcrypto/CryptoKeyOKP.cpp
@@ -232,17 +232,19 @@ bool CryptoKeyOKP::isValidOKPAlgorithm(CryptoAlgorithmIdentifier algorithm)
auto CryptoKeyOKP::algorithm() const -> KeyAlgorithm
{
- CryptoEcKeyAlgorithm result;
+ CryptoKeyAlgorithm result;
+ // FIXME: This should be set to the actual algorithm name in the case of X25519
result.name = CryptoAlgorithmRegistry::singleton().name(algorithmIdentifier());
- switch (m_curve) {
- case NamedCurve::X25519:
- result.namedCurve = X25519;
- break;
- case NamedCurve::Ed25519:
- result.namedCurve = Ed25519;
- break;
- }
+ // This is commented out because the spec doesn't define the namedCurve field for OKP keys
+ // switch (m_curve) {
+ // case NamedCurve::X25519:
+ // result.namedCurve = X25519;
+ // break;
+ // case NamedCurve::Ed25519:
+ // result.namedCurve = Ed25519;
+ // break;
+ // }
return result;
}
diff --git a/test/bun.js/web-crypto.test.ts b/test/bun.js/web-crypto.test.ts
index d7afd523c..250282b96 100644
--- a/test/bun.js/web-crypto.test.ts
+++ b/test/bun.js/web-crypto.test.ts
@@ -72,3 +72,20 @@ describe("Web Crypto", () => {
expect(isSigValid).toBe(true);
});
});
+
+describe("Ed25519", () => {
+ describe("generateKey", () => {
+ it("should return CryptoKeys without namedCurve in algorithm field", async () => {
+ const { publicKey, privateKey } = (await crypto.subtle.generateKey("Ed25519", true, [
+ "sign",
+ "verify",
+ ])) as CryptoKeyPair;
+ expect(publicKey.algorithm!.name).toBe("Ed25519");
+ // @ts-ignore
+ expect(publicKey.algorithm!.namedCurve).toBe(undefined);
+ expect(privateKey.algorithm!.name).toBe("Ed25519");
+ // @ts-ignore
+ expect(privateKey.algorithm!.namedCurve).toBe(undefined);
+ });
+ });
+});