dstucrypt / agent

47 stars 31 forks source link

Немного пояснений #14

Closed devnextdoorcoders closed 3 years ago

devnextdoorcoders commented 3 years ago

Здравствуйте. Нельзя ли немного подробнее о параметрах запуска агента: что за файлы для каких ключей запуска требуются? Спасибо.

muromec commented 3 years ago

Більш конкретно? Не зовсім зрозумів у чом питання

devnextdoorcoders commented 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)


devnextdoorcoders commented 3 years ago

И ещё вопрос: можно ли в параметре --tcp указать, чтобы метка времени ставилась ТОЛЬКО на подпись - иначе АПИ налоговой ругается, если находят метку времени на данных

UPD Расколупал библиотеку, нашел сам: --tsp signature ставит метку только на подпись, АПИ налоговой принимает запрос нормально

muromec commented 3 years ago

А что тогда за первый сертификат?

це аргумент для --crypt -- сертифікат отримувача зашифрованого файлу. налогова їх десь там публікує. якщо він там не один, беріть той де ключ співпадає по базісу з відправником. там 431 біт чи шось таке.

це якщо вам взагалі треба шифрувать.

порядок в якому вказані сертифікати для --cert значення не має.

Значит ваш агент может сам вытащить ключ и сертификат из хранилища .jks?

так, він витягує всі ключі та сертифікати з одного файлу, тому треба вказувати role.

Но у меня вылетает с ошибкой

ну то бага. він перевіряє чи є ЄДР код насправді ДРФО кодом (або номером паспорта), ЄДР коду просто нема.

то вказуйте --role personal, якщо це не ключ фопа або директора/бухгалтера.

AlexeyBoiler commented 3 years ago

@muromec Не планируете API методы к dstucrypt/agent написать? Мне надо просто с php бекендом как то связать этого агента.

AlexeyBoiler commented 3 years ago

И насколько ваш агент сможет работать с нагрузкой по подписям? Не тестили?

muromec commented 3 years ago

Мне надо просто с php бекендом как то связать этого агента.

ну воно вміє як ремоут дємон працювать.

И насколько ваш агент сможет работать с нагрузкой по подписям? Не тестили?

ну там десь 15 разів на секунду воно робить, але там ключі довго завантажуються та розпаковуються. тому все разом десь 3-5 на секунду. якщо брати не запаролений ключ -- десь 7. це з раундтріпом на рємоут машину.

AlexeyBoiler commented 3 years ago

Не могу понять из кода, какая библиотека на С используется или всё написано на JS ? Как можно ускорить обработку, хранить ключи в библиотеке или давать ей распакованные данные ключей и сертификатов чем то перед этим обработанным?

muromec commented 3 years ago

Не могу понять из кода, какая библиотека на С используется или всё написано на JS ?

все на js

Как можно ускорить обработку, хранить ключи в библиотеке или давать ей распакованные данные ключей и сертификатов чем то перед этим обработанным?

є кілька варіантів:

Але в принципі -- просто запускайте багато процесів агента на різних сокєтах і робіть round robin.

AlexeyBoiler commented 3 years ago

розпаковувать ключи через --unwrap і давати в такому вигляді;

https://github.com/dstucrypt/jkurwa - умеет распаковать ключи через Unwrap (не нашел в доках) ?

Але в принципі -- просто запускайте багато процесів агента на різних сокєтах і робіть round robin.

В таком режиме лучше агента отправить на выделенный сервер?

muromec commented 3 years ago

https://github.com/dstucrypt/jkurwa - умеет распаковать ключи через Unwrap (не нашел в доках) ?

https://github.com/dstucrypt/agent/#key-unwrapper

В таком режиме лучше агента отправить на выделенный сервер?

то як вам вдобно

devnextdoorcoders commented 3 years ago

Спасибо большое за пояснения. Сделал для себя версию в виде htttp-сервера, принимающего и отдающего все данные в запросе (без записи на диск). Отличная библиотека!

muromec commented 3 years ago

топ