Sample code for 30+ languages & platforms
Lianja

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=2

Chilkat Lianja Downloads

Lianja
llSuccess = .F.

// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

lcConcatenatedParams = "12345678|2019-06-12T17:05:43+02:00|9952|bb123bb1231|cc123cc1231|ss123ss123|199.01"

// Get the private key from a pfx file.
loPfx = createobject("CkPfx")
llSuccess = loPfx.LoadPfxFile("qa_data/pfx/cert_test123.pfx","test123")
if (llSuccess = .F.) then
    ? loPfx.LastErrorText
    release loPfx
    return
endif

loPrivKey = createobject("CkPrivateKey")
llSuccess = loPfx.PrivateKeyAt(0,loPrivKey)
if (llSuccess = .F.) then
    ? loPfx.LastErrorText
    release loPfx
    release loPrivKey
    return
endif

// Create IIC signature according to RSASSA-PKCS-v1_5 using SHA256
loRsa = createobject("CkRsa")
llSuccess = loRsa.UsePrivateKey(loPrivKey)
if (llSuccess = .F.) then
    ? loRsa.LastErrorText
    release loPfx
    release loPrivKey
    release loRsa
    return
endif

// PKCS-v1_5 is used by default.
loRsa.EncodingMode = "hex"
loRsa.Charset = "utf-8"
lcHexSig = loRsa.SignStringENC(lcConcatenatedParams,"sha256")

? "Signature value result is: " + lcHexSig

// Compute the MD5 hash of the bytes.
loCrypt = createobject("CkCrypt2")
loCrypt.EncodingMode = "hex"
loCrypt.HashAlgorithm = "md5"
loBd = createobject("CkBinData")
loBd.AppendEncoded(lcHexSig,"hex")
lcMd5_summary = loCrypt.HashBdENC(loBd)

? "MD5 summary value is: " + lcMd5_summary


release loPfx
release loPrivKey
release loRsa
release loCrypt
release loBd