digital-signature - node - npm install jose jwe jws




Como assinar digitalmente o GST Return ou eReturn usando o formulário JavaScript Navegador e o token USB do usuário? Posso usar a API do WebCrypto? (2)

Embora o webcrypto não forneça acesso a cartões inteligentes, existe um aplicativo chamado FortifyApp que fornece um polyfill webcrypto que faz isso por meio da mesma interface.

Você pode ler sobre como funciona here .

A documentação para a interface está aqui: https://peculiarventures.github.io/webcrypto-local/docs/

Procurando código Javascript para assinar GST ou Imposto de Renda eReturns do Navegador usando o Token USB.


Recentemente, muita coisa está sendo falada sobre a API WebCrypto, mas a partir de agora, a API WebCrypto não fornece acesso ao (Windows) ou a qualquer outro armazenamento de Chaves ou dispositivo criptográfico USB / Smartcard local. Métodos mais antigos são applets java, Active X, etc, que são eliminados ou estão sendo eliminados das ofertas do Navegador Moderno.

A maioria dos aplicativos da web exigem documentos, arquivos, eReturns (XML ou JSON), etc. de assinatura digital, do Navegador do usuário usando o armazenamento de chaves, o Token USB ou o cartão inteligente da máquina local do usuário.

Também na maioria dos cenários de assinatura, para o requisito de proteger os dados dentro dos limites do servidor, não é recomendável enviar arquivos PDF ou dados completos para o navegador ou para assinar o servidor da API.

Assim, é recomendável usar o JavaScript através da extensão do navegador para acessar algum aplicativo em execução no sistema local para acessar o KeyStore local e produzir a assinatura e enviar de volta (PKCS7 ou CMS no caso de assinatura PDF) para o servidor onde a assinatura pode ser injetada de volta para PDF ou eReturn a partir do qual o hash foi criado para assinatura e foi enviado para o navegador.

Para cenários de assinatura baseados em navegador, uma dessas extensões gratuitas do Google Chrome disponíveis é a extensão do Chrome Signer.Digital. O sistema local (host rodando atrás do navegador chrome no Windows) pode ser baixado em https://download.cnet.com/Signer-Digital-Chrome-Extension/3000-33362_4-78042540.html instalar este host e reiniciar o Chrome adicionará automaticamente Signer.Digital Chrome Extension

O funcionamento real desta extensão é ilustrado here

Exemplo de JavaScript e código do pseudocódigo do lado do servidor para assinar o retorno de GST usando a extensão 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)

Exemplo de pseudocódigo no lado do servidor para o arquivo GSTR3B seria como abaixo:

  1. O usuário clicou no botão FileReturn no navegador.
  2. Método de chamada para baixar GSTR3B Resumo de retorno - ApiAction “RETSUM”
  3. O método de chamada calcula o hash de ResponsePayload da etapa 2 acima.
  4. Envie Hash no passo acima para assinar, onde acima do método JavaScript receberá o hash de retorno GSTR assinado usando o método SigherDigital Extension.
  5. Retorna a assinatura (conforme mostrado no JavaScript acima) para o servidor de aplicativos da Web que prosseguirá com a chamada da API de arquivamento GSTR3B para o servidor GSTN.

Se você estiver usando biblioteca livre TaxProGST.API para arquivar pseudocódigo GSTR3B seria como abaixo:

  1. O usuário clicou no botão FileReturn no navegador.
  2. Chame o método GSTR3BAPI.GetGstr3BDataSchedulePayloadAsync - para baixar GSTR3B Resumo de retorno - ApiAction “RETSUM”
  3. Chame o método GSTR3BAPI.ComputeReturn3BHash (ResponsePayload da etapa 2 acima)
  4. Envie Hash no passo acima para assinar, onde acima do método JavaScript receberá o hash de retorno GSTR assinado usando o método SigherDigital Extension.
  5. Assinatura de retorno (conforme mostrado no JavaScript acima) para o servidor de aplicativos da Web
  6. O aplicativo do servidor prosseguirá com a chamada da API de arquivamento GSTR3B para o servidor GSTN usando o método GSTR3BAPI.FileReturn3BFromBrowser