подписать строку с помощью xml privateKey в узле js - PullRequest
0 голосов
/ 21 октября 2018

У меня есть хешированная строка sh1, которую я хочу подписать закрытым ключом xml в моем коде js узла. Как я могу это сделать? Я использовал для этого crypto, но он не поддерживает закрытый ключ xml.один, пожалуйста, скажите мне, что делать? вот мой код:

   var sha1 = crypto.createHash('sha1');
   const crypto = require('crypto');

   const sign = crypto.createSign('RSA-SHA1');
   const TerminalCode = 123;
   const MerchantCode = 4566;
   const privateKey ="<RSAKeyValue><Modulus>tew9OJzFRBF0UbAU5M3vF18UDWxCseQkWtQI7tTrQcJisT31oqSv0uvwx3zQf0oGj9VnxeNeytm+xFxVt1lq+oGP5icJdiFdPHl2P5lD+T4sEyKGsiuPqXXkpWG3oY1V2t4BHmnJTr4jPRYInSQi9RvOWDUtRlgFLEQxgV2flvc=</Modulus><Exponent>AQAB</Exponent><P>3ElB9JPqabnMPzr8K1Fi4qd8YxIdbJln2JMx54G0ISjMzhv29GW3g3jOpAAtKlR49HTnz5F4T65mWm3jRhK4NQ==</P><Q>02rAXLUMpPu/CByB2TamTkVDpRsDRteGZ2dBjtOB4D6YQir6hsuQpnhCR7vzz7p8IFf06flL/Ly7ZL1Bpo5v+w==</Q><DP>HYWX2D5GiRrEW6j9CJUkqnmFuwU/ekFo4GaBpqQETvlX0TuAMiq7mFwFXYdEhkrB1wkf0/qL5CncP7xAXDDADQ==</DP><DQ>WSN5V50+Z5F9Sf47AUp5dCbgDo0FJKlakd6HVaD38YRyzfMxDgRmSMoLqBMnCT6ndzuel8f0seshV6g0NfV4YQ==</DQ><InverseQ>g7bnQMwCsRSOtPCBYub7P4AHJgvv+kbc4Kacq0UlZk8f+uMSoPU14stoiNHeo3htW8rx/XySW72EuLG6ej6OWA==</InverseQ><D>nsISix0EaWpx//eRxDqSs+qdLTmU2nkl4L25LfNReomQZuyTN+RQK9kKvowFx49qOosZjG/ngU6UU/fgNakq2QkKw8D9w+cbwF7kyDpr6AkngfY0w+X3q5hZUEcCFKiA6P0nw55TvSoGvtQK+zAdVAjJGmHCZ4qIWzXLX1CcOUE=</D></RSAKeyValue>"





    var string =`#${MerchantCode}#${TerminalCode}#123#$12344566#$12342326#http://kalno.ir/pasargad/payback#${1003}#$434536`
    sha1.update(string);
    sha1 = sha1.digest('hex');
    sign.write(toString(sha1));
// sign.end();
    privateKey = sign.sign(privateKey, 'base64')

, но когда я делаю это, крипто-знак выдает мне ошибку, содержащую, что этот закрытый ключ XML не является правильным. "Ошибка: ошибка: 0906D06C: Процедуры PEM: PEM_read_bio: без начальной строки "

1 Ответ

0 голосов
/ 21 октября 2018

Конвертируйте ваш XML-ключ в PEM с помощью Online Converter или используйте библиотеки, такие как rsa-xml , чтобы преобразовать его в Node.JS

const RSAXML = require('rsa-xml');
const xmlKey = '<RSAKeyValue>...</RSAKeyValue>';
const pemKey = new RSAXML().exportPemKey(xmlKey);

console.log(pemKey); // -----BEGIN RSA PRIVATE KEY----- ...
...