Tenho um exemplo em Delphi e gostaria de fazer uma função em xharbour com a mesma funcionalidade.
Sei que aqui no fórum tem muitos colegas que com certeza saberia fazer esta função em xharbour.
A minha maior dificuldade está exatamente na função TCertfly.Assinar(.....)
Esta função foi escrita em cSharp e, tem o objetivo de assinar o xml com certificado digital tipo A3, a minha ideia e fazer a mesma funcionalidade também para o certificados A1 e poder utilizar no harbour e no xharbour, a parte mais difícil seria possibilitar a DLL ser utilizada em qualquer linguagem de programação e, a DLL já está com esta implementação, agora eu tenho apenas um exemplo de consumir está DLL em Delphi e gostaria de fazer isto também no xHarbour, conto com o apoio dos amigos.
Este é o código da função em DELPHI
unit ExemploCertFly;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
uses StrUtils, Certfly;
procedure TForm2.Button1Click(Sender: TObject);
var
Ret: Integer;
function ExtraiURI(const AXML: String): String;
var
I, J: integer;
begin
Result := '';
I := PosEx('Id=', AXML, 6);
if I = 0 then
I := PosEx('id=', AXML, 6);
if I = 0 then // XML não tem URI
exit ;
I := PosEx('"', AXML, I + 2);
J := PosEx('"', AXML, I + 1);
Result := copy(AXML, I + 1, J - I - 1);
end;
var
URI: string;
Xml: TStringList;
begin
Xml := TStringList.Create;
try
xml.LoadFromFile('C:\xml\R1000_N.xml');
URI := ExtraiURI(xml.Text)
finally
Xml.Free
end;
* Faz a assinatura do xml
Ret := TCertfly.Assinar('C:\xml\R1000_N.xml', 'C:\xml\R1000_ASS.xml', 'MinhaTag','0', '1ce63d4dcefb45e9', '1234');
if Ret = 0 then
ShowMessage('Sucesso')
else
ShowMessage('False');
end;
end.