Как создать файл pem с узлами - PullRequest
0 голосов
/ 07 апреля 2019

я работаю с веб-приложением для одного клиента, которому нужно подписать некоторые документы, которые другие компании предоставляют ему 2 файла - file1.key - file2.cer, если я понимаю, что файлы зашифрованы паролем, поэтому пользователю нужен его пароль

компания дает мне пример в php и говорит, что мне нужно получить закрытый ключ с такими командами

-convert * .key a * .pem: openssl pkcs8 -inform DER -in llave.key -outllave.key.pem -проход пасс: контрастия

-конвертер * .cer в * .pem: openssl pkcs8 -информировать DER -в llave.key -out llave.key.pem -проход пасс: контрастия

но для конечного пользователя я не могу просить его «выполнить эту команду», конечному пользователю необходимо указать свой пароль

компания предоставит мне код в php

$private_file="c:/firma/llave_carlos.key.pem";
$public_file="c:/firma/cert_carlos.cer.pem";
$private_key = openssl_get_privatekey(file_get_contents($private_file));
exito = openssl_sign($cadena_original,$Firma,$private_key, OPENSSL_ALGO_SHA256);
openssl_free_key($private_key);
$public_key = openssl_pkey_get_public(file_get_contents($public_file));
$PubData = openssl_pkey_get_details($public_key);
$result = openssl_verify($cadena_original, $Firma, $public_key, "sha256WithRSAEncryption");

но я работаю с поиском Nodejs в google, я нашел пакет npm node-openssl-cert, но до сих пор я не могу найти метод, аналогичный php "openssl_get_privatekey"

я думаю, что решение с помощью модуля cryptoот узла

const crypto = require('crypto');

const { privateKey, publicKey } = crypto.generateKeyPairSync('ec', {
  namedCurve: 'sect239k1'
});

const sign = crypto.createSign('SHA256');
sign.write('some data to sign');
sign.end();
const signature = sign.sign(privateKey, 'hex');

const verify = crypto.createVerify('SHA256');
verify.write('some data to sign');
verify.end();
console.log(verify.verify(publicKey, signature));

но моя проблема в этой строке

const { privateKey, publicKey } = crypto.generateKeyPairSync('ec', {
  namedCurve: 'sect239k1'
});

"privatekey" и "publickey" должны исходить из файлов

спасибо за поддержку и извините за мойанглийский не знаю

...