Sample code for 30+ languages & platforms
Visual FoxPro

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 Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL lcConcatenatedParams
LOCAL loPfx
LOCAL loPrivKey
LOCAL loRsa
LOCAL lcHexSig
LOCAL loCrypt
LOCAL loBd
LOCAL lcMd5_summary

lnSuccess = 0

* 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('Chilkat.Pfx')
lnSuccess = loPfx.LoadPfxFile("qa_data/pfx/cert_test123.pfx","test123")
IF (lnSuccess = 0) THEN
    ? loPfx.LastErrorText
    RELEASE loPfx
    CANCEL
ENDIF

loPrivKey = CreateObject('Chilkat.PrivateKey')
lnSuccess = loPfx.PrivateKeyAt(0,loPrivKey)
IF (lnSuccess = 0) THEN
    ? loPfx.LastErrorText
    RELEASE loPfx
    RELEASE loPrivKey
    CANCEL
ENDIF

* Create IIC signature according to RSASSA-PKCS-v1_5 using SHA256
loRsa = CreateObject('Chilkat.Rsa')
lnSuccess = loRsa.UsePrivateKey(loPrivKey)
IF (lnSuccess = 0) THEN
    ? loRsa.LastErrorText
    RELEASE loPfx
    RELEASE loPrivKey
    RELEASE loRsa
    CANCEL
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('Chilkat.Crypt2')
loCrypt.EncodingMode = "hex"
loCrypt.HashAlgorithm = "md5"
loBd = CreateObject('Chilkat.BinData')
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