Ir para conteúdo
  • Cadastre-se

dev botao

NFE Erro ao Validar usando libWinCrypt


Ver Solução Respondido por Daniel Simoes,
  • Este tópico foi criado há 2524 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Bom a Todos

Estou tendo um problema com uso do libWinCrypt  quando assino uma nota e envio pela primeira vez ele faz normal então fecho o sistema  abro novamente e tento assinar retorna o erro 

Minha configuração 

Geral.SSLCryptLib := cryWinCrypt;
Geral.SSLHttpLib := httpWinINet;
Geral.SSLXmlSignLib := xsLibXml2;

[18:19, 26/12/2017] Fernando Moreira: Mensagem
    1    Falha na validação dos dados da nota: 47074

1871 - Element '{http://www.w3.org/2000/09/xmldsig#}KeyInfo': Missing child element(s). Expected is ( {http://www.w3.org/2000/09/xmldsig#}X509Data ).

acho que o problema esta nessa tag

 

<KeyInfo>
        <X509Data>
          <X509Certificate>MIIFtDCCBJygAwIBAg(...)AhA0oDjO/oaDeEC</X509Certificate>
        </X509Data>
</KeyInfo>

 

Obrigado 

 

  • Fundadores
Postado

Seus fontes estão atualizados ?  Repare em "procedure LibXmlInit; .. existe:

  __xmlSaveNoEmptyTags^ := 1;  

Isso informa a LibXML2, para não gerar Tags "SelfClosed" como a que está no seu XML

		<KeyInfo/>

pois o método "TDFeSSLXmlSignClass.AjustarXMLAssinado", não conseguirá manipular elas...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado

Sim os Fontes estão atualizados 

 

procedure LibXmlInit;
begin
  if (LibXMLLoaded) then
    Exit;

  // --Inicializar funções das units do libxml2
  libxml2.Init;

  { Init libxml and libxslt libraries }
  xmlInitThreads();
  xmlInitParser();
  xmlSubstituteEntitiesDefault(1);
  __xmlLoadExtDtdDefaultValue^ := XML_DETECT_IDS or XML_COMPLETE_ATTRS;
  __xmlIndentTreeOutput^ := 1;
  __xmlSaveNoEmptyTags^ := 1;

  LibXMLLoaded := True;
end;

Postado
2 horas atrás, Rafael Dias disse:

Correção enviada ao Repositorio.

No Demo funcionou na minha aplicação não vai 

Minha aplicação é Distribuida no Servidor de Aplicação eu mando fazer o LoadStream do Arquivo o Validar quando fecho meu servidor de aplicação e envio a primeira vez ele funciona. etão fecho minha aplicação cliente deixando o servidor aberto reconecto com servidor e envio novamente então vem o erro 

'1871 - Element ''{http://www.w3.org/2000/09/xmldsig#}KeyInfo'': Missing child element(s). Expected is ( {http://www.w3.org/2000/09/xmldsig#}X509Data ).'#$A

 

no procedure NotaFiscal.Validar; 

 NotaEhValida := SSL.Validar(AXML, GerarNomeArqSchema(ALayout, VerServ), Erro); ---Retorna False

66309-env-lot.xml

Postado

Boa noite no meu caso 

quando chega aqui esta o AddX509Data esta como false e não cria


function TDFeSSLXmlSignClass.AdicionarSignatureElement(ConteudoXML: String;
  AddX509Data: Boolean; docElement, IdSignature: String;
  IdAttr: String = ''): String;

Postado

Fiz uma manobra aqui não sei se esta correto

Veja modificação em vermelho

// Inserindo Template da Assinatura digital
  if (not LibXmlEstaAssinado(aXML, SignatureNode, SelectionNamespaces,
    infElement)) then
    aXML := AdicionarSignatureElement(aXML, True, docElement,
      IdSignature, IdAttr);

 

Postado

Não precisa postar todo o codigo neste tipo caso anexe a unit modificada.

agora sobre a modificação resolve o problema mas não mostra o erro de verdade, pois mesmo com isso gera um xml incorreto, mas na outra função arruma ele.

O problema é descobrir o por que sua libxml não esta obedecendo a configuração.

 

Postado (editado)

Function Assinar 

  if (not LibXmlEstaAssinado(aXML, SignatureNode, SelectionNamespaces,
    infElement)) then
    aXML := AdicionarSignatureElement(aXML, True, docElement,
      IdSignature, IdAttr);

ACBrDFeXsLibXml2.pas

 

Só um detalhe não é só no meu computador, na programação com 6 computadores e em 3 clientes que atualizei 

:(

Editado por Gutierres
  • Fundadores
  • Solution
Postado

Apliquei várias modificações nos fontes... e alguns ajustes que o Rafael Teno me enviou...

Favor testar novamente...

Citar

-- ACBrDFeXsLibXml2 --
[*] Diversos ajustes de String x AnsiString
[*] Limpeza e revisão dos fontes..
[-] Correção de Memory Leak em TDFeSSLXmlSignLibXml2.CanonC14n
[-] Correção no método "VerificarAssinatura", para conferir se houve alterações
    no conteúdo do XML, comparando o "DigestValue"
    (por: DSA)  

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado
1 hora atrás, Daniel Simoes disse:

Apliquei várias modificações nos fontes... e alguns ajustes que o Rafael Teno me enviou...

Favor testar novamente...

 

Resolvido, Fiz os teste agora foi blz

Muito obrigado.

  • Este tópico foi criado há 2524 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...