В последнее время много говорят об 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 будет выглядеть следующим образом:
- Пользователь нажал кнопку FileReturn в браузере.
- Вызов метода для загрузки GSTR3B Сводка возврата - ApiAction «RETSUM»
- Вызов метода вычисленияхэш ResponsePayload из вышеприведенного шага 2.
- Отправьте хэш на шаге выше для подписи, где вышеупомянутый метод JavaScript получит хэш возврата GSTR, подписанный с использованием метода расширения SigherDigital.
- Возвращает подпись (как показано в JavaScriptвыше) к серверу веб-приложений, который продолжит вызов API GSTR3B Filing к GSTNсервер.
Если вы используете TaxProGST.API бесплатная библиотека для файла GSTR3B псевдокод будет выглядеть следующим образом:
- Пользователь нажал кнопку FileReturn в браузере.
- Вызвать метод GSTR3BAPI.GetGstr3BDataSchedulePayloadAsync - загрузить GSTR3B Сводка возврата - ApiAction «RETSUM»
- Вызвать метод GSTR3BAPI.ComputeReturn3BHash (ResponsePayload 1045 * * Hash
- Возврат подписи (как показано выше в JavaScript) на сервер веб-приложений
- Серверное приложение продолжит выполнениеGSTR3B Вызов API-интерфейса к серверу GSTN с использованием метода GSTR3BAPI.FileReturn3BFromBrowser