如何使用JavaScript表单浏览器和用户的USB令牌对GST Return或eReturn进行数字签名?我可以使用WebCrypto API吗?

问题描述 投票:0回答:2

正在寻找使用USB令牌从浏览器签署GST或所得税eReturns的Javascript代码。

digital-signature keystore smartcard sign
2个回答
1
投票

最近有很多关于WebCrypto API的讨论,但截至目前,WebCrypto API不提供对(Windows)或任何其他Key存储或本地加密USB /智能卡设备的访问。较旧的方法是java applet,Active X等,这些方法已逐步淘汰或正在逐步淘汰现代浏览器产品。

大多数Web应用程序需要使用用户的本地计算机密钥存储区,USB令牌或智能卡从用户的浏览器中进行数字签名pdf文档,文件,eReturns(XML或JSON)等。

此外,在大多数签名方案中,为了保护服务器边界内的数据,不建议将完整的pdf文件或数据发送到浏览器或签署API服务器。

因此,通过浏览器扩展使用JavaScript来访问本地系统上运行的某些应用程序以访问本地KeyStore并生成签名并发送回(在PDF签名的情况下为PKCS7或CMS容器)到服务器可以注入签名的良好实践返回PDF或eReturn,从中创建用于签名的哈希并发送到浏览器。

对于基于浏览器的签名方案,可以使用一个免费的Chrome扩展程序是Signer.Digital chrome扩展。可以从https://download.cnet.com/Signer-Digital-Chrome-Extension/3000-33362_4-78042540.html下载本地系统(在Windows上运行Chrome浏览器后面的主机)安装此主机并重新启动Chrome将自动添加Signer.Digital Chrome Extension

here说明了这个扩展的实际工作情况

示例JavaScript和服务器端伪代码代码使用Signer.Digital扩展来签署GST返回:

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. 呼叫方法下载GSTR 3B返回摘要 - Api动作“RETSUM”
  3. 调用方法从上面的步骤2计算ResponsePayload的哈希值。
  4. 在上面的步骤中发送哈希进行签名,其中上面的JavaScript方法将使用SigherDigital Extension方法获得GSTR返回哈希签名。
  5. 将签名(如上面的JavaScript所示)返回给Web应用程序服务器,该服务器将继续向GSTN服务器发送GSTR3B归档API调用。

如果您使用TaxProGST.API免费库来文件GSTR3B伪代码将如下所示:

  1. 用户在浏览器上单击了FileReturn按钮。
  2. 调用方法GSTR3BAPI.GetGstr3BDataSchedulePayloadAsync - 下载GSTR3B返回摘要 - ApiAction“RETSUM”
  3. 调用方法GSTR3BAPI.ComputeReturn3BHash(上面第2步的ResponsePayload)
  4. 在上面的步骤中发送哈希进行签名,其中上面的JavaScript方法将使用SigherDigital Extension方法获得GSTR返回哈希签名。
  5. 将签名(如上面的JavaScript所示)返回给Web应用程序服务器
  6. 服务器应用程序将使用GSTR3BAPI.FileReturn3BFromBrowser方法继续向GSTN服务器发送GSTR3B归档API调用

0
投票

虽然webcrypto不提供对智能卡的访问,但有一个名为FortifyApp的应用程序提供了通过相同界面执行的webcrypto polyfill。

你可以阅读它是如何工作的here

界面的文档在这里:https://peculiarventures.github.io/webcrypto-local/docs/

© www.soinside.com 2019 - 2024. All rights reserved.