digital-signature keystore smartcard sign

digital signature - ¿Cómo firmar digitalmente GST Return o eReturn utilizando el formulario de JavaScript del navegador y el token USB del usuario? ¿Puedo usar la API de WebCrypto?



digital-signature keystore (2)

Aunque webcrypto no proporciona acceso a tarjetas inteligentes, existe una aplicación llamada FortifyApp que proporciona un polyfill de criptografía web que lo hace a través de esa misma interfaz.

Puedes leer acerca de cómo funciona here .

La documentación de la interfaz se encuentra aquí: https://peculiarventures.github.io/webcrypto-local/docs/

En busca de un código Javascript para firmar GST o el impuesto a las ganancias eReturns desde el navegador mediante USB Token.


Recientemente se ha hablado mucho acerca de la API de WebCrypto, pero a partir de ahora, la API de WebCrypto no proporciona acceso a (Windows) ni a ningún otro almacén de claves o dispositivo criptográfico local USB / tarjeta inteligente. Los métodos más antiguos son los applets de Java, Active X, etc., que se eliminan gradualmente o se eliminan gradualmente de las ofertas del Modern Browser.

La mayoría de las aplicaciones web requieren documentos, archivos, retornos electrónicos (XML o JSON), etc. de firma digital, desde el navegador del usuario utilizando el almacén de claves local de la máquina, el token USB o la tarjeta inteligente.

También en la mayoría de los escenarios de firmas, por el requisito de proteger los datos dentro de los límites del servidor, no se recomienda enviar archivos o datos pdf completos al navegador o al servidor API de firmas.

Por lo tanto, es una buena práctica usar JavaScript a través de la extensión del navegador para acceder a algunas aplicaciones que se ejecutan en el sistema local para acceder al KeyStore local y generar la firma y enviarla (PKCS7 o CMS en caso de firma de PDF) al servidor donde se puede inyectar la firma. volver a PDF o eReturn desde el cual se creó el hash para firmar y se envió al navegador.

Para los escenarios de firma basados ​​en el navegador, una de esas extensiones gratuitas de Chrome disponible es la extensión de chrome Signer.Digital. El sistema local (el host que se ejecuta detrás del navegador Chrome en Windows) se puede descargar desde https://download.cnet.com/Signer-Digital-Chrome-Extension/3000-33362_4-78042540.html instalación de este host y el reinicio de Chrome se agregarán automáticamente Signer.Digital Chrome Extension

El trabajo real de esta extensión se ilustra here

Ejemplo de código de pseudocódigo de JavaScript y del lado del servidor para firmar la devolución de GST utilizando la extensión digital 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)

El ejemplo de pseudocódigo del lado del servidor al archivo GSTR3B sería el siguiente:

  1. El usuario hizo clic en el botón FileReturn en el navegador.
  2. Método de llamada para descargar GSTR3B Resumen de retorno - ApiAction "RETSUM"
  3. El método de llamada calcula el hash de ResponsePayload del paso 2 anterior.
  4. Envíe Hash en el paso anterior para firmar, donde el método JavaScript anterior obtendrá el hash de retorno GSTR firmado utilizando el método de extensión SigherDigital.
  5. Devuelva la firma (como se muestra en JavaScript más arriba) al servidor de aplicaciones web que continuará con la llamada de la API de presentación de GSTR3B al servidor GSTN.

Si está utilizando la biblioteca gratuita TaxProGST.API para archivar el pseudocódigo GSTR3B sería el siguiente:

  1. El usuario hizo clic en el botón FileReturn en el navegador.
  2. Método de llamada GSTR3BAPI.GetGstr3BDataSchedulePayloadAsync - para descargar GSTR3B Resumen de retorno - ApiAction "RETSUM"
  3. Llame al método GSTR3BAPI.ComputeReturn3BHash (ResponsePayload del paso 2 anterior)
  4. Envíe Hash en el paso anterior para firmar, donde el método JavaScript anterior obtendrá el hash de retorno GSTR firmado utilizando el método de extensión SigherDigital.
  5. Devuelva la firma (como se muestra en JavaScript más arriba) al servidor de aplicaciones web
  6. La aplicación del servidor continuará con la llamada de la API de archivado GSTR3B al servidor GSTN utilizando el método GSTR3BAPI.FileReturn3BFromBrowser