amagovpt / autenticacao.gov

Middleware Oficial de Identificação Eletrónica em Portugal - Cartão de Cidadão, da Chave Móvel Digital e Sistema de Certificação de atributos profissionais
https://www.autenticacao.gov.pt
European Union Public License 1.2
168 stars 33 forks source link

Error ao assinar com VPN ligada #54

Closed stivencamara closed 3 years ago

stivencamara commented 3 years ago

Boas,

Estou com um erro engraçado.

Desenvolvi uma aplicação para assinar documentos, a mesma está a correr bem, porém, ao assinar com a VPN do cliente ligada, ocorre o erro:

Timestamp error during signature -506454527

        PTEID_PDFSignature pTEID_PDFSignature = new PTEID_PDFSignature(sourcePath);
        pTEID_PDFSignature.enableSmallSignatureFormat();

                //Método usado para mostrar a data
        pTEID_PDFSignature.enableTimestamp();

        card.SignPDF(pTEID_PDFSignature, page, x, y, location, reason, targetPath);

_O mesmo não acontece quando estou a utilizar o software Autenticação Gov (versão Windows), somente ao fazer referencia da dll (pteidlibdotnet.dll) dotnet do sdk.

O que pode está a acontecer? Como resolvo esse problema? Por que isso só ocorre quando estou com a VPN ligada? Após habilitar o TimeStamp, o método que assina (SignPDF) faz alguma requisição externa ou outra qualquer que a VPN esteja a bloquear? O Firewall da VPN pode está a bloquear?

stivencamara commented 3 years ago

Boas,

Após atribuir a Autoridade do TimeStamp, o erro não ocorreu mais.

        PTEID_Config config = new PTEID_Config(PTEID_Param.PTEID_PARAM_XSIGN_TSAURL);
        config.setString("http://timestamp.digicert.com"); //ou http://sha256timestamp.ws.symantec.com/sha256/timestamp

XAdES signature configuration The SDK allows to configure XAdES signature parameters. For example, to change the Time Stamping Authority (TSA) by changing the url or the server request timeout, as follows

PTEID_Config config = new PTEID_Config(PTEID_PARAM_XSIGN_TSAURL);
config.setString("http://sha256timestamp.ws.symantec.com/sha256/timestamp"); //use a third party TSA

new PTEID_Config(PTEID_PARAM_XSIGN_TIMEOUT).setLong(60); // allow a timeout of 60 seconds`

Quando não é atribuido um valor, qual é o padrão? Só por questão de curiosidade.

ACamposPT commented 3 years ago

Viva,

Esse erro é EIDMW_TIMESTAMP_ERROR, ou seja, erro na aplicação do selo temporal, muito provavelmente por falha na comunicação com o serviço online de selos temporais. Vê o tópico "Serviço de Selos Temporais: " onde explica qual o serviço predefinido e quais as limitações do mesmo, em: https://amagovpt.github.io/docs.autenticacao.gov/user_manual.html#configura%C3%A7%C3%A3o-da-aplica%C3%A7%C3%A3o

Quanto a questões de rede, podes sempre configurar na aplicação, com podes ver no tópico: https://amagovpt.github.io/docs.autenticacao.gov/user_manual.html#configura%C3%A7%C3%A3o-da-aplica%C3%A7%C3%A3o

No tópico "Tratamento de erros" no manual do SDK, tem informação sobre como podes tratar os erros, no link: https://amagovpt.github.io/docs.autenticacao.gov/manual_sdk.html#assinatura-digital

stivencamara commented 3 years ago

Boas,

Muito obrigado pela resposta.