Unicode C++
Unicode C++
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 Unicode C++ Downloads
#include <CkPfxW.h>
#include <CkPrivateKeyW.h>
#include <CkRsaW.h>
#include <CkCrypt2W.h>
#include <CkBinDataW.h>
void ChilkatSample(void)
{
bool success = false;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
const wchar_t *concatenatedParams = L"12345678|2019-06-12T17:05:43+02:00|9952|bb123bb1231|cc123cc1231|ss123ss123|199.01";
// Get the private key from a pfx file.
CkPfxW pfx;
success = pfx.LoadPfxFile(L"qa_data/pfx/cert_test123.pfx",L"test123");
if (success == false) {
wprintf(L"%s\n",pfx.lastErrorText());
return;
}
CkPrivateKeyW privKey;
success = pfx.PrivateKeyAt(0,privKey);
if (success == false) {
wprintf(L"%s\n",pfx.lastErrorText());
return;
}
// Create IIC signature according to RSASSA-PKCS-v1_5 using SHA256
CkRsaW rsa;
success = rsa.UsePrivateKey(privKey);
if (success == false) {
wprintf(L"%s\n",rsa.lastErrorText());
return;
}
// PKCS-v1_5 is used by default.
rsa.put_EncodingMode(L"hex");
rsa.put_Charset(L"utf-8");
const wchar_t *hexSig = rsa.signStringENC(concatenatedParams,L"sha256");
wprintf(L"Signature value result is: %s\n",hexSig);
// Compute the MD5 hash of the bytes.
CkCrypt2W crypt;
crypt.put_EncodingMode(L"hex");
crypt.put_HashAlgorithm(L"md5");
CkBinDataW bd;
bd.AppendEncoded(hexSig,L"hex");
const wchar_t *md5_summary = crypt.hashBdENC(bd);
wprintf(L"MD5 summary value is: %s\n",md5_summary);
}