Jump to content

Compre o Delphi
Com até 30% de desconto
e parcelado em até 12x sem juros

Saiba Mais

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Saiba mais

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Saiba mais

João Alberto Amaral

ANSWERED Assinatura de XML usando TDFeSSL

Recommended Posts

Olá pessoal,

Estou tendo muita dificuldade para assinar um xml usando o TDFeSSL, tudo porque a tag que deve ser assinada esta com a identificação dela em minúsculo ou seja id=”COD”, pelos teste que fiz só assinou quando eu coloquei ID=”COD”.

Esta assinatura é para um documento do Comercio Exterior o Certicado de Origem que no caso a entidade definiu a tag em minúsculo como no exemplo abaixo:

Será que há solução ?  🙂

<ns1:CertOrigin>

                <CODEH id="CODEH">

                               <CODExporter>

                                               <COD id="COD">

                               ...

                                               <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">

                                              

                                                               <Reference URI="#COD">

                                                              

                                                              

                                               </COD>

                               </CODExporter>

                               <EH>

                                               <EHId></EHId>

...

                                               <EHURL> </EHURL>

                               </EH>

                               <CertificationEH>

                                               <CertificateNo></CertificateNo>

                                               <CertificateDate>2010-06-28T15:38:48.0Z</CertificateDate>

                                               <CertificateID></CertificateID>

                               </CertificationEH>

                </CODEH>

                <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">

                                              

                                              

                               <Reference URI="#CODEH">

 

                </Signature>

</ns1:CertOrigin>070004-042207.xml

Share this post


Link to post
Share on other sites

Por favor não cole.. mas anexe o arquivo XML

Por favor poste um trecho de código que faria essa assinatura


Consultor SAC ACBr

Daniel Simões de Almeida
Ajude o Projeto ACBr crescer - Assine o SAC

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

Share this post


Link to post
Share on other sites

mude a linha de assinatura para o seguinte 

A.Assinar(XML,'CODExporter', 'COD', '', '', 'id');

.

  • Like 1

Consultor SAC ACBr Rafael Dias
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

ACBrFramework Desenvolvedor ACBrFramework.

 

Share this post


Link to post
Share on other sites
18 horas atrás, Rafael Dias disse:

mude a linha de assinatura para o seguinte 

A.Assinar(XML,'CODExporter', 'COD', '', '', 'id');

.

Olá Rafael,

Segui sua dica mas não tive sucesso, continua o mesmo erro:

image.png.f0d436df247a43e38558e5c8233420df.png

Share this post


Link to post
Share on other sites

então o problema é outro pois este ultimo parâmetro é exatamente para isso que serve.


Consultor SAC ACBr Rafael Dias
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

ACBrFramework Desenvolvedor ACBrFramework.

 

Share this post


Link to post
Share on other sites
3 horas atrás, João Alberto Amaral disse:

Olá Rafael,

Segui sua dica mas não tive sucesso, continua o mesmo erro:

image.png.f0d436df247a43e38558e5c8233420df.png

Você está usando libXML2 ?

A msg parece indicar o uso da obsoleta MSXML...


Consultor SAC ACBr

Daniel Simões de Almeida
Ajude o Projeto ACBr crescer - Assine o SAC

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

Share this post


Link to post
Share on other sites
32 minutos atrás, Daniel Simoes disse:

Você está usando libXML2 ?

A msg parece indicar o uso da obsoleta MSXML...

Estou usando assim:    A.SSLXmlSignLib :=  xsMSxml;

Se coloco no xml assim:  <COD Id="COD"> ele assina, mas ai não passa na validação da entidade que ira recepcionar o xml.

 

image.png.937c3a2b91c467dbb6821c50175ede82.png

 

Share this post


Link to post
Share on other sites
Em 28/08/2019 at 18:43, Daniel Simoes disse:

use xsLibXML2...

Segui sua dica mas não deu certo. Esta dando uma violação de endereço. 

O mais estranho é que se troco a tag para Id e uso xsMSxml ele assina.

 

image.png.f37ccdca4b559123217b21f454246336.png

 

Share this post


Link to post
Share on other sites

Pela msg de erro... me parece que você está usando DLLs de 64 bits, para um sistema compilado em 32 bits


Consultor SAC ACBr

Daniel Simões de Almeida
Ajude o Projeto ACBr crescer - Assine o SAC

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

Share this post


Link to post
Share on other sites
Em 30/08/2019 at 18:03, Daniel Simoes disse:

Pela msg de erro... me parece que você está usando DLLs de 64 bits, para um sistema compilado em 32 bits

Estou compilando 32 bits e usando as DLLs da pasta acbr\DLLs\LibXml2\x86

Share this post


Link to post
Share on other sites

e quanto as DLLs da OpenSSL ?

  Para 32 bits use: \ACBr\DLLs\OpenSSL\1.0.2.13\x86

Para onde você está copiando as DLLs ?

  O ideal é manter todas elas na mesma pasta do seu executável

 


Consultor SAC ACBr

Daniel Simões de Almeida
Ajude o Projeto ACBr crescer - Assine o SAC

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

Share this post


Link to post
Share on other sites
17 minutos atrás, Daniel Simoes disse:

e quanto as DLLs da OpenSSL ?

  Para 32 bits use: \ACBr\DLLs\OpenSSL\1.0.2.13\x86

Para onde você está copiando as DLLs ?

  O ideal é manter todas elas na mesma pasta do seu executável

 

Sim, estou com tudo na pasta do executável

Share this post


Link to post
Share on other sites

Por favor passe um pente fino nas DLLs, se necessário copie-as novamente...

Por favor faça um teste usando o Demo do ACBr, nessa mesma pasta...

 


Consultor SAC ACBr

Daniel Simões de Almeida
Ajude o Projeto ACBr crescer - Assine o SAC

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

Share this post


Link to post
Share on other sites
20 horas atrás, Daniel Simoes disse:

Por favor passe um pente fino nas DLLs, se necessário copie-as novamente...

Por favor faça um teste usando o Demo do ACBr, nessa mesma pasta...

 

Cheguei a conclusão que as DLLs estão corretas, porque fazendo teste deixando a tag desta maneira:

<COD Id="COD">, o programa assina com o comando

A.Assinar(XML,'CODExporter', 'COD','','','');

Mas quando executo desta outra maneira:

A.Assinar(XML,'CODExporter', 'COD','','','Id');

O executável reporta o erro de violação de endereço, assim tanto faz passa Id ou id o erro ocorre direto quando informo o identificador.

Estou usando o xsLibXML2.

Mas preciso que a tag  <COD id="COD"> seja assinada  desta maneira pois é a exigência da Entidade Certificadora.

Share this post


Link to post
Share on other sites

Humm.. ótima pegada... parece ser algum Bug nas rotinas que não previram um parâmetro diferente...podemos tentar reproduzir o erro...

Você poderia anexar um XML que você está tentando assinar ?


Consultor SAC ACBr

Daniel Simões de Almeida
Ajude o Projeto ACBr crescer - Assine o SAC

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

Share this post


Link to post
Share on other sites

Notei vários problemas na ACBrDFeSSL que a impedem de assinar corretamente esse documento... Estou analisando as correções...

  • Like 1

Consultor SAC ACBr

Daniel Simões de Almeida
Ajude o Projeto ACBr crescer - Assine o SAC

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

Share this post


Link to post
Share on other sites

Enviei modificações para o SVN... que devem resolver o problema de assinatura do seu XML... em libXML2 ou MSXML

Consegui assinar os dois blocos, usando um código como:

    XMLAss :=  ADFeSSL.Assinar(AXML, 'CODExporter', 'COD','','','','id');
    XMLAss :=  ADFeSSL.Assinar(XMLAss, 'ns1:CertOrigin', 'CODEH','','','','id'); 

 

  • Like 2

Consultor SAC ACBr

Daniel Simões de Almeida
Ajude o Projeto ACBr crescer - Assine o SAC

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

Share this post


Link to post
Share on other sites
2 horas atrás, Daniel Simoes disse:

Enviei modificações para o SVN... que devem resolver o problema de assinatura do seu XML... em libXML2 ou MSXML

Consegui assinar os dois blocos, usando um código como:

    XMLAss :=  ADFeSSL.Assinar(AXML, 'CODExporter', 'COD','','','','id');
    XMLAss :=  ADFeSSL.Assinar(XMLAss, 'ns1:CertOrigin', 'CODEH','','','','id'); 

 

Perfeito !

Atualizei e já assinei.

Brigadão.

  • Like 2

Share this post


Link to post
Share on other sites

Bom dia Pessoal,

Me surgiu uma duvida referente o TDFeSSL no Assinar(XML,'CODExporter', 'COD','','','','id');

recebi um arquivo do mesmo tipo assinado por outro sistema porem ele coloca algumas informações que o meu usando o acbr não esta colocando,

segue anexo a imagem com a comparação.

Será que consigo fazer isso usando o TDFeSSL.

Desde já obrigado pela ajuda.

assinaturaCO.jpg

Share this post


Link to post
Share on other sites

Acho que são opcionais... e me parece uma redundância... e até mesmo disperdício de espaço... pois todas essas informações (Subject Name, chave pública)  estão dentro do certificado, na Tag <X509Certificate>...

No ACBr, você poderia usar o método abaixo.. para carregar o certificado, e obter essas informações...

    function CarregarCertificadoPublico(const DadosX509Base64: Ansistring): Boolean; 

 

  • Like 1

Consultor SAC ACBr

Daniel Simões de Almeida
Ajude o Projeto ACBr crescer - Assine o SAC

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

Share this post


Link to post
Share on other sites

×
×
  • Create New...