是否有一种验证Node.JS(v0.4 +)中使用公钥的签名的好方法?使用公钥验证Node.JS中的签名crypto
当前的加密模块允许使用证书,但不能使用公钥。例如:
var crypto = require("crypto");
verifier = crypto.createVerifier("sha1");
verifier.update("signed data");
verifier.verify(CERT, signature);
可变CERT
需要被签名证书(我猜的公钥是从拉),但我已经是公开密钥,而不是证书。
只唯实的方式来实现这一目标似乎数据,公钥和签名的内容被倾倒入文件并执行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", ...)
但是创建(和删除)文件每次我需要验证签名似乎是一个完全浪费。
任何好主意如何做得更好?
UPDATE 2011-08-03
在Node.js的V0.5加密模块允许验证both with certificates and public keys(RSA或X.509)
嗯,我很确定openssl是要走的路。它会让你流中的值或必须该应用程序使用文件?你多久会这样做? – jcolebrand 2011-06-02 17:50:40
定期,但不是很经常。我可以接受这个解决方案,但它感觉错了,尤其是与更加优雅的加密验证程序相比。我不想使用文件。 – Andris 2011-06-02 18:01:56
我想传递一个公钥作为第一个参数,但我不确定它是否应该是b64编码的字符串,用'---- BEGIN KEY ----'和'----- END KEY ----'或新的缓冲区(the_string,'base64')。我尝试了所有,但加密仍在寻找CERTIFICATE。如何判断我是直接传递公钥? – 2012-04-09 23:27:58