Delphi ActiveX
Delphi ActiveX
IKOF Generation Code for Montenegro Fiscalization Service
See more _Miscellaneous_ Examples
Demonstrates computing the IKOF MD5 summary value as described in section 4.3 of this document: https://poreskauprava.gov.me/ResourceManager/FileDownload.aspx?rId=416042&rType=2Chilkat Delphi ActiveX Downloads
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;
...
procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
concatenatedParams: WideString;
pfx: TChilkatPfx;
privKey: TPrivateKey;
rsa: TChilkatRsa;
hexSig: WideString;
crypt: TChilkatCrypt2;
bd: TChilkatBinData;
md5_summary: WideString;
begin
success := 0;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
concatenatedParams := '12345678|2019-06-12T17:05:43+02:00|9952|bb123bb1231|cc123cc1231|ss123ss123|199.01';
// Get the private key from a pfx file.
pfx := TChilkatPfx.Create(Self);
success := pfx.LoadPfxFile('qa_data/pfx/cert_test123.pfx','test123');
if (success = 0) then
begin
Memo1.Lines.Add(pfx.LastErrorText);
Exit;
end;
privKey := TPrivateKey.Create(Self);
success := pfx.PrivateKeyAt(0,privKey.ControlInterface);
if (success = 0) then
begin
Memo1.Lines.Add(pfx.LastErrorText);
Exit;
end;
// Create IIC signature according to RSASSA-PKCS-v1_5 using SHA256
rsa := TChilkatRsa.Create(Self);
success := rsa.UsePrivateKey(privKey.ControlInterface);
if (success = 0) then
begin
Memo1.Lines.Add(rsa.LastErrorText);
Exit;
end;
// PKCS-v1_5 is used by default.
rsa.EncodingMode := 'hex';
rsa.Charset := 'utf-8';
hexSig := rsa.SignStringENC(concatenatedParams,'sha256');
Memo1.Lines.Add('Signature value result is: ' + hexSig);
// Compute the MD5 hash of the bytes.
crypt := TChilkatCrypt2.Create(Self);
crypt.EncodingMode := 'hex';
crypt.HashAlgorithm := 'md5';
bd := TChilkatBinData.Create(Self);
bd.AppendEncoded(hexSig,'hex');
md5_summary := crypt.HashBdENC(bd.ControlInterface);
Memo1.Lines.Add('MD5 summary value is: ' + md5_summary);
end;