Bueno, lo que quiero obtener es algo como esto.
import * as forge from 'node-forge' const aliceKey = forge.pki.ed25519.generateKeyPair(); const bobKey = forge.pki.ed25519.generateKeyPair(); //get shared secret for bob and alice function getSharedKey(publicKey, privateKey){ //some code } const sharedKeyFromAlicePerspective = getSharedKey(bobKey.publicKey , aliceKey.privateKey); const sharedKeyFromBobPerspective = getSharedKey(aliceKey.publicKey, bobKey.privateKey); console.log(sharedKeyFromAlicePerspective === sharedKeyFromBobPerspective)//expect 'true'También estoy abierto a cambiar la biblioteca por otra segura y bien mantenida y probada si no es posible en el estándar que proporciona esta biblioteca (mi punto es hacer las claves públicas seguras más pequeñas posibles para el cifrado entre las partes)
bueno, además de la respuesta de @Topaco, descubrí que si está en un navegador compatible con Crypto.subtle api, puede prescindir de los módulos.
const aliceKey = await window.crypto.subtle.generateKey({name: 'ECDH', namedCurve: 'P-521'},false, ['deriveBits']); const bobKey = await window.crypto.subtle.generateKey({name: 'ECDH', namedCurve: 'P-521'},false, ['deriveBits']); const secret = await window.crypto.subtle.deriveBits({ name: "ECDH", namedCurve: "P-521", public: bobKey.publicKey }, aliceKey.privateKey, 521 )