node-forge nació como una implementación de TLS en JavaScript y hoy se usa sobre todo por sus componentes de PKI: generar y analizar certificados X.509 y CSR, leer y escribir contenedores PKCS#12, cifrado y firmas RSA, y un analizador ASN.1. Funciona igual en navegadores y en Node.js y no tiene código nativo.
No admite curvas elípticas aparte de Ed25519. forge.pki expone solo rsa y ed25519, y la comprobación confirmó la consecuencia: certificateFromPem() con un certificado ECDSA lanza Cannot read public key. OID is not RSA., y publicKeyFromPem() con una clave pública EC lanza Cannot read public key. Unknown OID., aunque los mismos bytes se analizan sin problema con el lector ASN.1 del propio forge. El código que inspecciona certificados del mundo real se encuentra con claves ECDSA constantemente y necesita otro analizador para ellas; X509Certificate de node:crypto o el decodificador de certificados admiten ambos tipos de clave.
Con RSA interopera sin problemas una vez que los parámetros coinciden. Las firmas PKCS#1 v1.5 y PSS hechas con forge se verificaron con node:crypto; PSS exige que el resumen, el resumen de MGF1 y la longitud de la sal coincidan en ambos lados, y forge te obliga a indicar los tres, como hace el ejemplo. Las claves públicas se cargan desde PEM de SPKI, de PKCS#1 y de certificado, y las claves privadas desde PKCS#8, PKCS#8 cifrado, PKCS#1 y PKCS#12; abre los contenedores en el inspector de PFX para ver qué contienen.
Las firmas Ed25519 de forge fueron idénticas byte a byte a las de node:crypto con la misma semilla. Su clave privada es la forma expandida de 64 bytes —la semilla seguida de la clave pública—, así que las bibliotecas que esperan la semilla de 32 bytes solo necesitan la primera mitad.
La verificación de firmas tiene un historial de análisis demasiado permisivo, y un caso sigue abierto. El aviso GHSA-86w9-cpqp-85rv (CVE-2026-85393), publicado en septiembre de 2026 sin versión corregida, indica que la verificación RSA PKCS#1 v1.5 en las versiones hasta la 1.4.0 ignora los elementos adicionales dentro del identificador de algoritmo de DigestInfo, lo que permite falsificar firmas con claves de exponente público pequeño, como 3. La comprobación reprodujo esa permisividad: un bloque con el relleno correcto y un elemento adicional en ese lugar se verificó en forge y node:crypto lo rechazó. Hasta que se publique una corrección, verifica las firmas PKCS#1 v1.5 con node:crypto o WebCrypto, y evita las claves RSA con exponente 3. La propia 1.4.0 corrigió la tanda anterior —se rechazaron tanto un campo adicional después del resumen como las firmas Ed25519 no canónicas—, y las versiones anteriores a la 1.3.0 tenían errores de falsificación de firmas previos (CVE-2022-24771, CVE-2022-24772).