Ir para conteúdo
  • Cadastre-se

dev botao

Assinar um XML com as funções do DFeCapicom


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

Recommended Posts

Boa noite.

Preciso assinar arquivos XML (do SPED e-Financeira) com chave SHA-2 (imagino que seja SHA256) 

Tentei criar um componente baseado no ACBrDFe, mas o prazo está apertado, e foi mais fácil criar o XML "na mão".

Estou tentando utilizar as funções da unit ACBrDFeCapicom para assinar o XML, mas não estou tendo sucesso.

Exemplo:

textoXML:= String com o conteúdo do arquivo

xmlAssinado := Assinar( textoXML , 'evtCadDeclarante' , 'id' );

Esta provavelmente não é a forma correta. 

Alguém teria um exemplo de como chamar a função, se é que isto é possível ?

Grato.

 

Edson.

 

Link para o comentário
Compartilhar em outros sites

Boa tarde Juliomar !

Era exatamente isto que eu precisava... Estava me matando tentando criar um componente baseado no ACBrCTe... mas ele é bem complexo.

Este ACBrBlocoX tem a estrutura bem parecida com o que pede o SPED e-Financeira.

O duro é que vou ter que gerar apenas arquivos vazios, somente a abertura e encerramento, sem movimento.

Um trabalhão lascado, pra nada.

A Receita Federal não tem mais plantão de dúvidas para pessoa jurídica, somente para pessoa física. Não responde os e-mails, ninguém nas agências orienta o contribuinte sobre SPED e-financeira (eles nem sabem do que se trata).

Só sabem cobrar multa por atraso na entrega.

Se tudo der certo, vou criar um componente "ACBrEFinanceira", e depois envio para análise.

Muito obrigado.

Edson.

 

Link para o comentário
Compartilhar em outros sites

Boa noite.

Estou tentando assinar um arquivo XML com digest SHA256, mas está ocorrendo erro:

The DigestMethod Algorithm "http://www.w3.org/2001/04/xmlenc#sha256" is not supported.

Criei as funções Assinar256, SignatureElement256, AdicionarSignatureElement256 em ACBrDFeSSL, para não alterar as funções atuais,

aí tento assinar com:     FXMLAssinado := ACBrEFinanceira1.SSL.Assinar256(FXMLOriginal , 'eFinanceira',  'evtCadDeclarante');

e o erro é disparado.

Será que o Delphi não assina com SHA256 ? 

A Receita Federal disponibilizou um programa assinador escrito em C#. Instalei o Visual Studio e testei, assina corretamente.

 

function TDFeSSLClass.SignatureElement256(const URI: String; AddX509Data: Boolean;
  IdSignature: String; Digest:TSSLDgst): String;
begin
  {(*}
  Result :=
  '<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"' + IdSignature + '>' +
    '<SignedInfo>' +
      '<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />' +
      '<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig-more#rsa-sha256"/>' +   //ALTERACAO PARA SHA256
      '<Reference URI="' + IfThen(URI = '', '', '#' + URI) + '">' +
        '<Transforms>' +
          '<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />' +
          '<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />' +
        '</Transforms>' +
        '<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />'+             // ALTERACAO PARA SHA256
        '<DigestValue></DigestValue>' +
      '</Reference>' +
    '</SignedInfo>' +
    '<SignatureValue></SignatureValue>' +
    '<KeyInfo>' +
    IfThen(AddX509Data,
      '<X509Data>' +
        '<X509Certificate></X509Certificate>' +
      '</X509Data>',
      '')+
    '</KeyInfo>'+
  '</Signature>';
  {*)}
end;

 

CadDeclaranteLote-ASSINADO.xml

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...
Em 16/05/2016 at 22:42, Edson.pol disse:

Boa noite.

Estou tentando assinar um arquivo XML com digest SHA256, mas está ocorrendo erro:

The DigestMethod Algorithm "http://www.w3.org/2001/04/xmlenc#sha256" is not supported.

Criei as funções Assinar256, SignatureElement256, AdicionarSignatureElement256 em ACBrDFeSSL, para não alterar as funções atuais,

aí tento assinar com:     FXMLAssinado := ACBrEFinanceira1.SSL.Assinar256(FXMLOriginal , 'eFinanceira',  'evtCadDeclarante');

e o erro é disparado.

Será que o Delphi não assina com SHA256 ? 

A Receita Federal disponibilizou um programa assinador escrito em C#. Instalei o Visual Studio e testei, assina corretamente.

 


function TDFeSSLClass.SignatureElement256(const URI: String; AddX509Data: Boolean;
  IdSignature: String; Digest:TSSLDgst): String;
begin
  {(*}
  Result :=
  '<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"' + IdSignature + '>' +
    '<SignedInfo>' +
      '<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />' +
      '<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig-more#rsa-sha256"/>' +   //ALTERACAO PARA SHA256
      '<Reference URI="' + IfThen(URI = '', '', '#' + URI) + '">' +
        '<Transforms>' +
          '<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />' +
          '<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />' +
        '</Transforms>' +
        '<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />'+             // ALTERACAO PARA SHA256
        '<DigestValue></DigestValue>' +
      '</Reference>' +
    '</SignedInfo>' +
    '<SignatureValue></SignatureValue>' +
    '<KeyInfo>' +
    IfThen(AddX509Data,
      '<X509Data>' +
        '<X509Certificate></X509Certificate>' +
      '</X509Data>',
      '')+
    '</KeyInfo>'+
  '</Signature>';
  {*)}
end;

 

CadDeclaranteLote-ASSINADO.xml

Amigo, você conseguiu resolver seu problema ? estou com o mesmo ...

Link para o comentário
Compartilhar em outros sites

Boa tarde André.

Fui dispensado da entrega do SPED-eFinanceira, então não dei prosseguimento nos testes.

O meu problema esbarrou no Delphi 7, que não tem suporte a SHA256.

Pelas pesquisas que fiz, existem alguns componentes pagos que conseguem assinar.

[]´s

Edson.

Link para o comentário
Compartilhar em outros sites

  • 4 meses depois ...
  • 4 semanas depois ...

Alguém conseguiu resolver o problema:

 

The DigestMethod Algorithm "http://www.w3.org/2001/04/xmlenc#sha256" is not supported.

 

Uso o Delphi Xe7

 

Grato.

Em 25/07/2017 at 11:37, André Longhi disse:

Amigo, você conseguiu resolver seu problema ? estou com o mesmo ...

 

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...
  • Este tópico foi criado há 2255 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.