Ir para conteúdo
  • Cadastre-se

dev botao

Assinatura de Documento XML


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

Recommended Posts

Alguém sabe o porque que da erro desconhecido quando chega no bloco:

try
          signedKey := xmldsig.sign(dsigKey,NOKEYINFO);
          if (signedKey = nil) then
          begin
            MsgErro('Assinatura Falhou.');
            Result := False;
            Exit;
          end;
        except
          on e: Exception do
          begin
            MsgErro('Erro durante a assinatura ->' + sLineBreak + e.Message);
            Result := False;
            Exit;
          end;
        end;
 

 

uXMLAssina.pas

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Você poderia usar a ACBrDFeSSL, para assinar XMLs, usando tecnologias como OpenSSL, ou Wincrypt, e MsXml ou LibXML2

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.

Link para o comentário
Compartilhar em outros sites

Ao tentar utilizar o componente ACBrDFeSSL com o codigo abaixo dá a seguinte mensagem de erro : erro não especificado.

O arquivo já vem montado com as tags de forma correta. O que pode estar errado?

function AssinaDocXml2(const FileXml, Id: string; var FileOut: string): Boolean;
var
  A: TDFeSSL;
  B : TDFeSSLXmlSignMsXml;
  I: Integer;
  fileXmlNew : string;
  AXml: AnsiString;
begin
  fileXmlNew := MontaFileXml(FileXml, Id);
  AXml := AnsiString(WideString(fileXmlNew));

  A := TDFeSSL.Create;
  A.SSLCryptLib := cryCapicom;
  A.SelecionarCertificado;
  B := TDFeSSLXmlSignMsXml.Create(A);
  with TStringList.Create do
    try
      // carrega o XML de template
      Add(AXml);
      // obtém o XML assinado no Text do StringList
      Text := B.Assinar(Text, 'Assinatura', '');
      // salva o XML em disco
      SaveToFile(FileOut);
    finally
      Free;
    end;
  A.Free;
end;

 

Link para o comentário
Compartilhar em outros sites

  • 3 anos depois...
  • Solution
Em 21/12/2018 at 07:15, Marcos Fernando Barbosa disse:

Ao tentar utilizar o componente ACBrDFeSSL com o codigo abaixo dá a seguinte mensagem de erro : erro não especificado.

O arquivo já vem montado com as tags de forma correta. O que pode estar errado?

function AssinaDocXml2(const FileXml, Id: string; var FileOut: string): Boolean;
var
  A: TDFeSSL;
  B : TDFeSSLXmlSignMsXml;
  I: Integer;
  fileXmlNew : string;
  AXml: AnsiString;
begin
  fileXmlNew := MontaFileXml(FileXml, Id);
  AXml := AnsiString(WideString(fileXmlNew));

  A := TDFeSSL.Create;
  A.SSLCryptLib := cryCapicom;
  A.SelecionarCertificado;
  B := TDFeSSLXmlSignMsXml.Create(A);
  with TStringList.Create do
    try
      // carrega o XML de template
      Add(AXml);
      // obtém o XML assinado no Text do StringList
      Text := B.Assinar(Text, 'Assinatura', '');
      // salva o XML em disco
      SaveToFile(FileOut);
    finally
      Free;
    end;
  A.Free;
end;

 

procedure TForm1.AssinarXml(const ElementoFinal:String);
var SSL : TDFeSSL;
    XMLUTF8, XMLAssinado : String;
begin
  SSL := TDFeSSL.Create;
  try
    SSL.SSLCryptLib     := cryWinCrypt;
    SSL.SSLXmlSignLib   := xsMsXml;
    SSL.ArquivoPFX      := 'c:\Temp\arquivo.pfx';
    SSL.Senha           := 'senha1234';
    SSl.CarregarCertificado;
    XMLUTF8 := Memo1.Text;
    XMLAssinado := SSL.Assinar(XMLUTF8, ElementoFinal, '');
    Memo2.Text := XMLAssinado;
  finally
    SSL.free;
  end;
end;

 

Agora, tiagomartins disse:

procedure TForm1.AssinarXml(const ElementoFinal:String);
var SSL : TDFeSSL;
    XMLUTF8, XMLAssinado : String;
begin
  SSL := TDFeSSL.Create;
  try
    SSL.SSLCryptLib     := cryWinCrypt;
    SSL.SSLXmlSignLib   := xsMsXml;
    SSL.ArquivoPFX      := 'c:\Temp\arquivo.pfx';
    SSL.Senha           := 'senha1234';
    SSl.CarregarCertificado;
    XMLUTF8 := Memo1.Text;
    XMLAssinado := SSL.Assinar(XMLUTF8, ElementoFinal, '');
    Memo2.Text := XMLAssinado;
  finally
    SSL.free;
  end;
end;

na uses vc declara essas bibliotecas ACBrDFeSSL, ACBrSocket,

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 549 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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...