Ir para conteúdo
  • Cadastre-se

dev botao

VerificarAssinatura com openssl


andrecrp
  • Este tópico foi criado há 3356 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts


Ao realizar o armazenamento dos arquivos xmls recebidos por e-mail optei por utilizar a função do ACBR  VerificarAssinatura (trunk2) com o objetivo de atestar a autenticidade do XML,
nos testes realizados encontrei diversos problemas que impediram a utilização da função, segue abaixo os erros encontrados, peço que se possível informem caso o procedimento ou utilização da função está errado.

Código utilizado para testes com openssl, pode carregar qualquer arquivo XML assinado com e sem o protocolo de autorização. 
ACBrNFe1.NotasFiscais.Clear;
ACBrNFe1.NotasFiscais.LoadFromFile(ARQUIVO);
if not ACBrNFe1.NotasFiscais.VerificarAssinatura(msgERRO) then
   ShowMessage(msgERRO)
else
   ....

Erros
1o) Para xmls já assinados a função está realizando a assinatura e por consequência solicitando o certificado que para este caso não deveria utilizar, deveria utilizar as tags <x509 ..> do arquivo XML
2o) Se configurar o certificado apresenta outra mensagem unable to parse

Se alguém tiver alguma informação ou já enfrentou o mesmo problema agradeço.


André


 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia André,

Informe o segundo parâmetro de LoadFromFile.

Exemplo:

ACBrNFe1.NotasFiscais.LoadFromFile(ARQUIVO, False);

Realize novos testes.

Outro coisa, acredito que função VerificarAssinatura não serve para verificar a assinatura de NF-e emitidas pelos fornecedores e sim as emitidas por você.

 

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Bom dia Italo, agradeço pelo retorno.

Alterei o parâmetro e o erro persiste, outro ponto importante que cabe ressaltar é que tentei também utilizar a função (diretamente sem passar pela assinatura) da seguinte forma :

ACBrNFe1.NotasFiscais.Clear;
ACBrNFe1.NotasFiscais.LoadFromFile(ARQUIVO, False);
if not ACBrNFe1.SSL.VerificarAssinatura(ACBrNFe1.NotasFiscais.Items[0].XMLAssinado,msgERRO) then
   ShowMessage(msgERRO);
 

 'Error: unable to parse';

Esta verificação é essencial para autenticidade dos XML recebidos por e-mail, parte dos xmls destinados são recebidos por e-mail e os demais faço a importação pelo WS de distribuição da SEFAZ, não faço download de todos devido as instruções da SEFAZ que o DOWNLOAD não deve ser realizado da totalidade das NF-e, porém, como mudaram o WS talvez tenham mudado esta regra também.


André. 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde André,

Como já tinha dito antes, acredito que o VerificarAssinatura não serve para verificar a assinatura de notas fiscais recebidas e sim emitidas.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Bom dia Italo!

aproveitando o gancho do André, estou enfrentando o mesmo problema, tem um cliente meu que tem certificado A3 e três empresas e uso essa função para verificar a validade da assinatura das NFe recebidas e sempre apresenta a mensagem de assinatura digital inválida, porém outro cliente meu que usa A1 e nos mesmo moldes da empresa anterior e roda perfeito. (eles centralizam todos os dados na Matriz )

Com relação ao 1º cliente perguntei se ele tem o cuidado de selecionar o certificado correto quando importa a nota e confirmou que sim.

Tem alguma outra forma de testar a autenticidade do arquivo xml?

Obrigado por enquanto.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Wagner,

Quando você diz: "uso essa função para verificar a validade da assinatura das NFe recebidas", a palavra "recebidas" significa: NF-e recebida de fornecedores ou NF-e recebida da filial?

Volto a frisar que pela analise que fiz nos fontes do componente essa função server para valida a assinatura realizada na NF-e que você emitiu.

Uma coisa é você pegar o XML emitido pela empresa XYZ (fornecedor) e checar a validade da assinatura desse documento.

Outra é você pegar o XML emitido pela filial da sua empresa e checar a validade da assinatura.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Bom dia Italo

Conforme informei na 1a interação o problema ocorre ao utilizar a função VerificarAssinatura para validar xmls de NF-e recebidas (emitidas contra a empresa , emitida por fornecedores), tendo como base sua informação esta função é utilizada apenas para geração e validação da assinatura para as notas emitidas e não para as recebidas.
Vou trabalhar nesta função e assim que estiver ok, lhe envio para fazer o commit no projeto Acbr.

att

André.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3356 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...