1
私はnodejs暗号で秘密鍵を作成しました。この鍵でファイルに署名したいと思います。 私のコードは以下の通りです:nodejs暗号でファイルに署名できません
var ecdh = crypto.createECDH('brainpoolP512t1');
ecdh.generateKeys();
var key = ecdh.getPrivateKey('buffer');
var data= fs.readFileSync(req.file.path);
var sign = crypto.createSign('sha512');
sign.update(data);
var signature = sign.sign(key, 'hex');
しかし、私はエラーを取得する:
Error: error:0906D06C:PEM routines:PEM_read_bio:no start line
at Error (native)
at Sign.sign (crypto.js:283:26)
at /....js:32:27
at Immediate.<anonymous> (/.../node_modules/multer/lib/make-middleware.js:52:37)
at runCallback (timers.js:578:20)
at tryOnImmediate (timers.js:554:5)
at processImmediate [as _immediateCallback] (timers.js:533:5)
私はそれがキーの形式とは何かを持っているけど、私はこの問題を解決する方法がわかりません。誰も助けることができますか?
UPDATE:
var KEY_START = '-----BEGIN EC PRIVATE KEY-----\n';
var KEY_END = '\n-----END EC PRIVATE KEY-----';
const ecdh = crypto.createECDH('brainpoolP512t1');
ecdh.generateKeys();
var key =KEY_START + ecdh.getPrivateKey('base64') + KEY_END;
var data= fs.readFileSync(req.file.path);
const sign = crypto.createSign('sha512');
sign.update(data);
var signature = sign.sign(key, 'hex');
そして今、私は別のエラーgeht: 私はPEM形式に合わせてのPrivateKeyを編集し、あなたがする必要がでデータに署名
Error: error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long
at Error (native)
at Sign.sign (crypto.js:283:26)
at /...js:37:27
at Immediate.<anonymous> (/.../node_modules/multer/lib/make-middleware.js:52:37)
at runCallback (timers.js:578:20)
at tryOnImmediate (timers.js:554:5)
at processImmediate [as _immediateCallback] (timers.js:533:5)
は私が署名するファイルのファイルパスをそこに立つべきと思いましたか? – nolags
私は間違い、私は私の答えを更新しました。 – mscdex
これで、DH秘密鍵から有効なPEM形式のキーを(ノード内で)生成する場合のコード例を追加しました。 – mscdex