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の暗号化モジュールを使用すると、証明書と公開鍵 (RSAまたはX.509)の両方で検証できます。

4

1 に答える 1

1

公開鍵を取得して自己署名証明書に入れてみませんか?その後、ノードの暗号モジュールが正常に機能します。

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

これを行うことは、opensslサブプロセスをフォークするよりもはるかに効率的だと思います。

于 2011-07-08T04:26:47.083 に答える