demoiselle / signer

Repositório que contém os componentes para facilitar a implementação de assinatura digital nos padrões da ICP-BRASIL
https://www.frameworkdemoiselle.gov.br/v3/signer/
GNU Lesser General Public License v3.0
142 stars 73 forks source link

Data da assinatura inválida usando PKCS7Signer #409

Open eduardoteodorus opened 2 months ago

eduardoteodorus commented 2 months ago

Pessoal, Estou com um problema de assinatura no PJe, em que a mensagem de erro retornada por esse sistema é a seguinte: "A data de primeira assinatura (10/06/2024 17:23:55.000) do documento é inválida: superior à data atual (10/06/2024 17:23:52.225)." O que acontece basicamente é que a data/hora da máquina do usuário onde o assinador está instalado está levemente adiantada em relação à data/hora dos servidores do Tribunal.

Assim, gostaria de saber em que ponto do código do assinador ele obtém a hora da máquina do usuário e se é essa data que é inserida como data da assinatura. Também gostaria de saber se é possível informar uma data obtida de um serviço, por exemplo, para que esta seja usada como data da assinatura.

Obs: Utilizamos a assinatura do hash do conteúdo utilizando PKCS7Signer, conforme recomendado na documentação: https://www.frameworkdemoiselle.gov.br/v3/signer/docs/policy-impl-cades-funcionalidades.html#policy-impl-cades-funcionalidades-assinar-hash

Obrigado pessoal.

esaito commented 2 months ago

Esse valor de atributo é gerado pela biblioteca chamada BouncyCastle que é usada pelo Signer. Não sei dizer com certeza, mas acho que não tem como passar algum parâmetro para que a data seja obtida via um servidor de data (NTP, por exemplo). Me parece que o mais fácil seria sincronizar as máquinas dos usuários com um servidor de data, e se ocorrer esse erro informar que o computador está com data defasada. Claro que o Tribunal tem suas prerrogativas, mas se a data é algo muito importante o que deveria se usado é um carimbo do tempo, através da politica AD_RT, que realmente daria valor jurídico inconstestável a data, mas isso geraria custo para gerar a assinatura.