Bom dia Pessoal,
como nunca trabalhei com assinatura digital estou tendo uma certa dificuldade para assinar um arquivo XML não fiscal onde não terá aquela parte de referência a Nota Fiscal, utilizo o Delphi 7, está assinando normalmente, mas sempre ao validar diz estar com a assinatura inválida, tenho tomado cuidado em não editá-lo após a assinatura, se alguém poder me ajudar:
var A : TDFeSSL;
S : AnsiString;
I : Integer;
begin
Result := true;
A := TDFeSSL.Create;
A.SSLLib := libCapicom;
try
A.SelecionarCertificado;
{Carrega o XML}
XMLSignature.Active := false;
XMLSignature.Active := True;
XMLSignature.LoadFromFile ( 'C:\CertSignature_tmp.xml' ) ;
with TStringList.Create do
try
S := '';
{retira dos os espaços em braco e quebras de linha}
for I := 0 to Count - 1 do
S := S + Trim ( StringReplace ( StringReplace ( Strings[ I ] , #13 , '' , [ rfReplaceAll ] ) , #10 , '' , [ rfReplaceAll ] ) ) ;
// obtém o XML assinado no Text do StringList
Text := '<?xml version="1.0" encoding="utf-8"?>' + A.Assinar ( XMLSignature.XML.Text , 'Assinatura' , '' ) ;
// salva o XML em disco
SaveToFile ( CaminhoCertidao ) ;
finally
Free;
end;
A.Free;
{Apaga o arquivo temporário}
DeleteFile ( 'C:\CertSignature_tmp.xml' ) ;
except
MessageBox ( Handle , 'Erro ao carregar os certificados.' , 'Erro' , MB_ICONSTOP or MB_OK ) ;
Result := false;
Abort;
end;