Hola. Este es el código que uso.
Código PHP:
Entrada:=DirAplicacion+'Copias\VerifactuEntrada.xml';
Salida:=DirAplicacion+'Copias\VerifactuSalidaSigned.xml';
MemoXML.Lines.SaveToFile(Entrada); //guardo el xml inicial
MemoXML.Lines.SaveToFile(Salida);//guardo el xml inicial
aliascertificado:=P_DataVarios.QSala.FieldByName('ultima_firma').AsString; // tomo la firma
ACardinal:=-1;
if not FileExists(Salida ) then showmessage('Error Firmando')
else
begin
ACardinal:=ShellExecute(Handle,
PWideChar('open'),
PWideChar('autofirmacommandline'),
PWideChar('sign -i "'+Entrada+'" -o "'+Salida+'" -format xades'+' -store windows -alias "'+aliascertificado+'"'),
nil,
SW_SHOWNORMAL);
end;