有没有一种好的方法,可以使用公钥在Node.JS (v0.4+)中验证签名?
当前的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", ...)
但是每次需要验证签名时都创建(和删除)文件似乎是一种完全浪费。
有什么好的想法可以更好地完成这项任务吗?
更新于2011-08-03
Node.js v0.5中的加密模块允许使用证书和公钥(RSA或X.509)进行验证(传送门)。