Closed devnextdoorcoders closed 3 years ago
Більш конкретно? Не зовсім зрозумів у чом питання
Вот в этом примере
node index.js --sign --crypt otrimano.cer \
--tsp all \
--key Key-6.dat:password \
--cert cert.sign.der --cert cert.cryp.der \
--input zvit.xml --output zvit.xml.sign.enc \
--email ilya.muromec@gmail.com
1) что за файлы otrimano.cer cert.sign.der cert.crypt.der
как я понимаю - два последних файла - это сертификаты подписи и согласования, как их выдаёт налоговая. А что тогда за первый сертификат?
2) В цифровой подписи ПриватБанка есть только один файл .jks. У вас в примере ниже он использован без ключей --crypt --cert Значит ваш агент может сам вытащить ключ и сертификат из хранилища .jks? Но у меня вылетает с ошибкой
node index.js --sign\
--key pb_2669421955.jks:****** \
--input example.receipt.xml \
--output example.receipt.p7s \
--no-tax \
--tsp all
/home/diskData/WORK/WWW/DSS/agent/node_modules/jkurwa/lib/util/role.js:8
if (code.match(format)) {
^
TypeError: Cannot read property 'match' of undefined
at isNaturalPerson (/home/diskData/WORK/WWW/DSS/agent/node_modules/jkurwa/lib/util/role.js:8:14)
at filerRole (/home/diskData/WORK/WWW/DSS/agent/node_modules/jkurwa/lib/util/role.js:47:48)
at Array.filter ()
at Box.keyFor (/home/diskData/WORK/WWW/DSS/agent/node_modules/jkurwa/lib/app/ctx.js:238:8)
at Box.sign (/home/diskData/WORK/WWW/DSS/agent/node_modules/jkurwa/lib/app/ctx.js:194:22)
at Box.pipe (/home/diskData/WORK/WWW/DSS/agent/node_modules/jkurwa/lib/app/ctx.js:263:35)
at do_sc (/home/diskData/WORK/WWW/DSS/agent/agent.js:156:26)
at Object.main (/home/diskData/WORK/WWW/DSS/agent/agent.js:273:13)
И ещё вопрос: можно ли в параметре --tcp указать, чтобы метка времени ставилась ТОЛЬКО на подпись - иначе АПИ налоговой ругается, если находят метку времени на данных
UPD Расколупал библиотеку, нашел сам: --tsp signature ставит метку только на подпись, АПИ налоговой принимает запрос нормально
А что тогда за первый сертификат?
це аргумент для --crypt
-- сертифікат отримувача зашифрованого файлу. налогова їх десь там публікує. якщо він там не один, беріть той де ключ співпадає по базісу з відправником. там 431 біт чи шось таке.
це якщо вам взагалі треба шифрувать.
порядок в якому вказані сертифікати для --cert значення не має.
Значит ваш агент может сам вытащить ключ и сертификат из хранилища .jks?
так, він витягує всі ключі та сертифікати з одного файлу, тому треба вказувати role
.
Но у меня вылетает с ошибкой
ну то бага. він перевіряє чи є ЄДР код насправді ДРФО кодом (або номером паспорта), ЄДР коду просто нема.
то вказуйте --role personal
, якщо це не ключ фопа або директора/бухгалтера.
@muromec Не планируете API методы к dstucrypt/agent написать? Мне надо просто с php бекендом как то связать этого агента.
И насколько ваш агент сможет работать с нагрузкой по подписям? Не тестили?
Мне надо просто с php бекендом как то связать этого агента.
ну воно вміє як ремоут дємон працювать.
И насколько ваш агент сможет работать с нагрузкой по подписям? Не тестили?
ну там десь 15 разів на секунду воно робить, але там ключі довго завантажуються та розпаковуються. тому все разом десь 3-5 на секунду. якщо брати не запаролений ключ -- десь 7. це з раундтріпом на рємоут машину.
Не могу понять из кода, какая библиотека на С используется или всё написано на JS ? Как можно ускорить обработку, хранить ключи в библиотеке или давать ей распакованные данные ключей и сертификатов чем то перед этим обработанным?
Не могу понять из кода, какая библиотека на С используется или всё написано на JS ?
все на js
Как можно ускорить обработку, хранить ключи в библиотеке или давать ей распакованные данные ключей и сертификатов чем то перед этим обработанным?
є кілька варіантів:
юзать лібу через agent -- воно один раз запускається, розпаковує ключі і отето всьо, потім тицять його через локальний сокет шоб підписав/пошифрував;
розпаковувать ключи через --unwrap і давати в такому вигляді;
проапдейтіть node-gf2m (сішний біндінг), шоб він працював з новими версіями ноди, тоді сама операція підпису прискорюється десь в два рази;
якщо демон працює з мільйоном різних ключів, тре подивитись шо там в lib/curve.js з кешем wnaf і пакуванням/розпаковуванням точок, можливо навіть з розпакованним ключем можно шось пришвидшити в моменті ініціалізації.
Але в принципі -- просто запускайте багато процесів агента на різних сокєтах і робіть round robin.
розпаковувать ключи через --unwrap і давати в такому вигляді;
https://github.com/dstucrypt/jkurwa - умеет распаковать ключи через Unwrap (не нашел в доках) ?
Але в принципі -- просто запускайте багато процесів агента на різних сокєтах і робіть round robin.
В таком режиме лучше агента отправить на выделенный сервер?
https://github.com/dstucrypt/jkurwa - умеет распаковать ключи через Unwrap (не нашел в доках) ?
https://github.com/dstucrypt/agent/#key-unwrapper
В таком режиме лучше агента отправить на выделенный сервер?
то як вам вдобно
Спасибо большое за пояснения. Сделал для себя версию в виде htttp-сервера, принимающего и отдающего все данные в запросе (без записи на диск). Отличная библиотека!
топ
Здравствуйте. Нельзя ли немного подробнее о параметрах запуска агента: что за файлы для каких ключей запуска требуются? Спасибо.