Как сделать цифровую подпись GST Return или eReturn, используя JavaScript-браузер и USB-токен пользователя?Могу ли я использовать WebCrypto API? - PullRequest
0 голосов
/ 15 апреля 2019

Поиск кода Javascript для подписи GST или eReturns подоходного налога из браузера с помощью USB-токена.

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

В последнее время много говорят об API WebCrypto, но на данный момент API WebCrypto не предоставляет доступ к (Windows) или любым другим хранилищам ключей или локальным устройствам шифрования USB / Smartcard.Более старые методы - это java-апплеты, Active X и т. Д., Которые постепенно или постепенно прекращаются из предложений Modern Browser.

Большинство веб-приложений требуют цифровой подписи pdf документов, файлов, eReturns (XML или JSON)и т. д. из браузера пользователя с использованием хранилища ключей на локальном компьютере пользователя, USB-токена или смарт-карты.

Также в большинстве сценариев подписи для требования защиты данных в пределах границ сервера не рекомендуется отправлять полный файл PDF или данные в браузер или на сервер API подписи.

Таким образом,Рекомендуется использовать JavaScript через расширение браузера для доступа к какому-либо приложению, работающему в локальной системе, для доступа к локальному хранилищу ключей, создания подписи и отправки обратно (контейнер PKCS7 или CMS в случае подписи PDF) на сервер, где подпись может быть введена обратноPDF или eReturn, из которого был создан хеш для подписи и который был отправлен в браузер.

Для сценариев подписания в браузере одним из таких бесплатных расширений Chrome является расширение Signer.Digital chrome.Локальная система (хост, работающий за браузером Chrome в Windows) может быть загружен с https://download.cnet.com/Signer-Digital-Chrome-Extension/3000-33362_4-78042540.html При установке этого хоста и перезапуске Chrome автоматически добавится Signer.Digital Chrome Extension

Фактическийработа этого расширения показана здесь

Пример кода псевдокода на стороне сервера JavaScript и для подписи возврата GST с использованием расширения Signer.Digital:

function getSignature(hash){
       //Sign GSTR Return Hash using Signer.Digital Chrome Extension
       //This method returns CMS (PKCS7) Signature
       SignerDigital.signGstHash(hash)
    .then(function(signature){
           //send signature to return filing server
       },function(error){
           //send error to server and/or report error to user
       });
   }

//For Income Tax Return signing use method:
//This method returns SHA256 Signature
SignerDigital.signITHash(hash, PAN)

Пример псевдокода на стороне сервера дляФайл GSTR3B будет выглядеть следующим образом:

  1. Пользователь нажал кнопку FileReturn в браузере.
  2. Вызов метода для загрузки GSTR3B Сводка возврата - ApiAction «RETSUM»
  3. Вызов метода вычисленияхэш ResponsePayload из вышеприведенного шага 2.
  4. Отправьте хэш на шаге выше для подписи, где вышеупомянутый метод JavaScript получит хэш возврата GSTR, подписанный с использованием метода расширения SigherDigital.
  5. Возвращает подпись (как показано в JavaScriptвыше) к серверу веб-приложений, который продолжит вызов API GSTR3B Filing к GSTNсервер.

Если вы используете TaxProGST.API бесплатная библиотека для файла GSTR3B псевдокод будет выглядеть следующим образом:

  1. Пользователь нажал кнопку FileReturn в браузере.
  2. Вызвать метод GSTR3BAPI.GetGstr3BDataSchedulePayloadAsync - загрузить GSTR3B Сводка возврата - ApiAction «RETSUM»
  3. Вызвать метод GSTR3BAPI.ComputeReturn3BHash (ResponsePayload 1045 * * Hash
  4. Возврат подписи (как показано выше в JavaScript) на сервер веб-приложений
  5. Серверное приложение продолжит выполнениеGSTR3B Вызов API-интерфейса к серверу GSTN с использованием метода GSTR3BAPI.FileReturn3BFromBrowser
0 голосов
/ 22 апреля 2019

Хотя webcrypto не предоставляет доступ к смарт-картам, существует приложение под названием FortifyApp , которое предоставляет полифилл webcrypto, который работает через тот же интерфейс.

Вы можете прочитать о том, как это работает здесь .

Документация для интерфейса здесь: https://peculiarventures.github.io/webcrypto-local/docs/

...