Quiero convertir el siguiente código de un programa Node (v18.1) a Deno (v1.22), donde se genera un par de claves durante el intercambio de claves SSH:
// generate.mjs import { generateKeyPairSync } from "crypto"; const keys = generateKeyPairSync("x25519"); El código anterior es parte de un cliente SSH más grande, que funciona principalmente en Deno cuando se ejecuta en el modo de compatibilidad de Nodo ( --compat ). Sin embargo, generateKeyPairSync aún no está implementado , por lo que quiero cambiarlo a un equivalente de Deno:
deno run --compat --unstable --allow-env ./generate.mjs error: Uncaught Error: Not implemented: crypto.generateKeyPairSync throw new Error(message); ^ at notImplemented (https://deno.land/std@0.142.0/node/_utils.ts:22:9) at generateKeyPairSync (https://deno.land/std@0.142.0/node/internal/crypto/keygen.ts:662:3) at file:///C:/Users/gjzwiers/repos/nodeno_ssh/generate.mjs:3:14 He mirado en generateKey en la API de WebCrypto , pero parece que no es compatible x25519 . ¿Existe una alternativa para x25519 en la API WebCrypto, o hay otra forma de hacer que esto funcione en Deno?
Terminé usando un módulo externo como se sugiere en los comentarios. Usé node-forge para generar un par de claves, que funciona muy bien cuando se ejecuta en el modo de compatibilidad de nodos para Deno:
// run with: deno run --compat --unstable --allow-env --allow-read generate.mjs import forge from 'node-forge'; const ed25519 = forge.pki.ed25519; const keypair = ed25519.generateKeyPair();