Problem with XAdES signing document in 5.1.0.4

You seem to have loaded a key twice. Is it password protected?

Try to use this instead: https://www.cyberens.fr/wp-content/uploads/2025/11/TMSSigner.zip

When I test it, I receive the error:

When I run it as an Administrator, the file is successfully signed.

  1. How should my code look like to have this effect?
    Current code is following:
    function SignInvoice (FileToSign, OutputFilePath, PrivKeyFile, CertFile, CertPass: string): Boolean;
    var
    XAdES : TXAdES;
    begin
    XAdES := TXAdES.Create (Parent);
    try
    XAdES.Password := CertPass;
    XAdES.KeyFilePath := PrivKeyFile;
    XAdES.CertFilePath := CertFile;
    XAdES.PKCS11Param.isToken := false;
    XAdES.Packaging := Enveloped;
    XAdES.PathToOriginalFile := ExtractFilePath(FileToSign);
    XAdES.GenerateSignature(FileToSign, OutputFilePath);
    Result := True;
    finally
    FreeAndNil (XADes);
    end;
    end;

  2. Can I get this result without Administrator privileges to C:\Windows\System32 folder?

Hi,
In XMLCanon.pas, line 251, comment or delete:

// DEBUG
  if FileExists('.\canon1.txt') = true then begin
    if FileExists('.\canon2.txt') = true then begin
      if FileExists('.\canon3.txt') = true then begin
        if FileExists('.\canon4.txt') = true then begin
          DeleteFile('.\canon1.txt');
          DeleteFile('.\canon2.txt');
          DeleteFile('.\canon3.txt');
          DeleteFile('.\canon4.txt');
          FTs.SaveToFile('.\canon1.txt');
        end
        else
        FTs.SaveToFile('.\canon4.txt');
      end
      else
      FTs.SaveToFile('.\canon3.txt');
    end
    else
      FTs.SaveToFile('.\canon2.txt');
  end
  else
    FTs.SaveToFile('.\canon1.txt');
// DEBUG