9

node.js暗号APIとパスフレーズで保護された秘密鍵を使用してメッセージに署名して検証しようとしています。これにより、次のようになります。

> var sig = crypto.createSign('RSA-SHA256').update('psst').sign(pk,'hex');
Enter PEM pass phrase:

そして、ノードはこの時点でロックアップします。プログラムでパスフレーズを渡すオプションが見つからないようです。

4

1 に答える 1

12

更新:これをコアで修正しました

これに対する私の修正は coreに上陸したばかりで、まだ正式リリースされていませんが、リリースされたら次のように使用できます。

var sig = crypto.createSign('RSA-SHA256').update('psst').sign({
  key: pk,
  passphrase: 'password'
}, 'hex');

これがリリースされたら更新します。v0.11.8 リリースで上陸しました。

元の回答:

これが機能するソリューションです。アプリの起動時に秘密鍵を復号化し、通常どおり使用できます。次に例を示します。

var  childProcess = require('child_process'),
  crypto = require('crypto');

var pk;

var sign = function () {
  var sig = crypto.createSign('RSA-SHA256').update('psst').sign(pk,'hex');
  console.log(sig);
};

childProcess.exec('openssl rsa -in /path/to/private_key -passin pass:your_password', {},
    function (err, stdout, stderr) {
  if (err) throw err;
  pk = stdout; // Save in memory for later use
  sign();
});
于 2013-10-03T08:56:29.580 に答える