正在寻找使用USB令牌从浏览器签署GST或所得税eReturns的Javascript代码。
最近有很多关于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的服务器端伪代码示例如下:
如果您使用TaxProGST.API免费库来文件GSTR3B伪代码将如下所示:
虽然webcrypto不提供对智能卡的访问,但有一个名为FortifyApp的应用程序提供了通过相同界面执行的webcrypto polyfill。
你可以阅读它是如何工作的here。
界面的文档在这里:https://peculiarventures.github.io/webcrypto-local/docs/