¿Hay alguna manera de validar firmas en Node.JS (v0.4 +) con claves públicas?Uso de la clave pública para verificar la firma en Node.JS crypto
El módulo de cifrado actual permite esto con certificados pero no con claves públicas. Por ejemplo:
var crypto = require("crypto");
verifier = crypto.createVerifier("sha1");
verifier.update("signed data");
verifier.verify(CERT, signature);
variable CERT
debe ser firmado certificado (supongo que la clave pública se extrae de eso), pero todo lo que tengo es la clave pública y no un certificado.
manera Sólo sólida para lograr esto parece ser vertido el contenido de los datos, la clave pública y la firma en archivos y ejecutar openssl dgst
fs.writeFileSync("public.key", pubkey);
fs.writeFileSync("sig.sha1", signature);
fs.writeFileSync("data.txt", data);
exec("openssl dgst -sha1 -verify public.key -signature sig.sha1 data.txt", ...)
Pero la creación (y eliminar) los archivos cada vez que necesito para verificar una la firma parece un desperdicio total.
¿Alguna buena idea de cómo hacerlo mejor?
ACTUALIZACIÓN 2011-08-03
módulo de cifrado en Node.js v0.5 permite verificar both with certificates and public keys (RSA o X.509)
Bueno, estoy bastante seguro de que openssl es el camino a seguir. ¿Te permitirá transmitir los valores o debe esa aplicación usar archivos? ¿Con qué frecuencia vas a hacer esto? – jcolebrand
Regularmente, pero no muy a menudo. Puedo vivir con esta solución, pero se siente tan mal, especialmente cuando se compara con el cripto.verificador mucho más elegante. Preferiría no usar archivos. – Andris
Quiero pasar una clave pública como primer argumento, pero no estoy seguro de si debería ser la cadena codificada en b64, la cadena envuelta con '---- BEGIN KEY ----' y '----- END KEY ---- 'o nuevo Buffer (the_string,' base64 '). Intenté todo, pero crypto todavía está buscando CERTIFICADO. ¿Cómo puedo decir que estoy pasando una clave pública directamente? –