GithubHelp home page GithubHelp logo

viptech / internal-digital-signature-service Goto Github PK

View Code? Open in Web Editor NEW

This project forked from leon-mbs/internal-digital-signature-service

0.0 0.0 0.0 156 KB

Сервер для цифрового підпису для ПРРО

Shell 0.67% JavaScript 98.06% Dockerfile 1.27%

internal-digital-signature-service's Introduction

Описание

Сервис предназначен для выполнения электронной подписи документов и команд отправляемых в налоговую (Украина).
А текже для проверки подписи и декодирования ответа налоговой. Сервис может работать в двух режимах: с предустановленым приватным ключом (как правило Key-6.dat) и с передачей ключа вместе с сообщением, если сервис используют несколько компаний. Во втором случае следует запускать сервис с https протоколом.

Установка

Устанавливается как обычное приложение для Node.
Под виндовс (для использованиея например в 1С) можно скачать готовую (portable) сборку

Настройка в основном выполняется в файле config.js

//Настройки сервера
 host:                                # IP адрес  хоста
 port:                                # порт
 usessl:                              # Использовать  SSL
 key:                                 # SSL ключ
 cert:                                # SSL сертификат
 passphrase:                          # пароль к ключу

 //ключ  подписи если используется  встроеный
 keyFileName:                         # приватный  ключ выданый АЦСК
 keyPassword:                         # пароль  к  ключу
 certificateFileName:                 # сертификат
 
 
 

файлы ключей и cертификатов должны быть в папке resources

Запуск:

npm i
npm run start

Описание API

Все запросы выполняются методом POST. Данные в теле запрос в виде json файла в UTF-8

- Проверка доступности сервера:

Request:
route:      /
method:     GET
Response:
status: 200 OK
body:
{
    "success": true
}

- Проверка ключа

Request:
route:      /check
method:     POST
body:    
{
  "serversidekey":true
}
при передаче  ключа
body:    
{
  "serversidekey":false,
  "key":   base64 кодированый файл  ключа,  
  "cert":   base64 кодированый файл  сертификата,  
  "password":   пароль  к  ключу  
}
Response:
status: 200 OK
body:
{
    "success": true,
    "owner": владелец  ключа,
    "owner": идентификатор  ключа (может понадобится указать в  настройках терминала  в  налоговой)
}

в  случае  ошибки
status: 200 OK
body:
{
    "success": true,
    "error": текст  ошибки
}

- Подпись сообщения

Request:
route:      /sign
method:     POST
body:    
{
  "serversidekey":true,
  "data": base64 кодированное подписываемое сообщение 
}
при передаче  ключа
body:    
{
  "serversidekey":false,
  "data": base64 кодированеое подписываемое сообщение   
  "key":   base64 кодированый файл  ключа,  
  "cert":   base64 кодированый файл  сертификата,  
  "password":   пароль  к  ключу  
}
Response:
status: 200 OK
body:
{
    "success": true,
    "data": подписаное сообщение
}

в  случае  ошибки
status: 200 OK
body:
{
    "success": true,
    "error": текст  ошибки
}

- Проверка подписанного сообщения (ответа с налоговой)

Запрос в налоговую выполняется по адресу

http://fs.tax.gov.ua:8609/fs/doc для документов

http://fs.tax.gov.ua:8609/fs/cmd для команд

Request:
route:      /decrypt
method:     POST
body:    
{
  "serversidekey":true,
  "data": base64 кодированеое подписываемое подлписаное сообщение 
}
при передаче  ключа
body:    
{
 
  "data": base64 кодированеое подписаное сообщение   
 
}
Response:
status: 200 OK
body:
{
    "success": true,
    "data": содержимое  сообщения
}

в  случае  ошибки
status: 200 OK
body:
{
    "success": true,
    "error": текст  ошибки
}

Для jks файлов (приват банк) ичпользуются соответственно методы

/checkjks

/signjks

с тем отличием что не нужен файл сертификата поскольку сертификаты хранятся в jks контейнере вместе с ключами

internal-digital-signature-service's People

Contributors

vmarushkoossystem avatar leon-mbs avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.