13

有没有一种使用公钥验证 Node.JS (v0.4+) 中签名的好方法?

当前的加密模块允许使用证书但不允许使用公钥。例如:

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 中的 Crypto 模块允许使用证书和公钥 (RSA 或 X.509)进行验证

4

1 回答 1

1

你为什么不把你的公钥放入自签名证书中呢?然后节点的加密模块将为您正常工作。

http://www.akadia.com/services/ssh_test_certificate.html

我认为这样做会比分叉一个 openssl 子进程更有效。

于 2011-07-08T04:26:47.083 回答