是否有一種驗證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