Sample code for 30+ languages & platforms
Tcl

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 Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

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

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

# Get the private key from a pfx file.
set pfx [new_CkPfx]

set success [CkPfx_LoadPfxFile $pfx "qa_data/pfx/cert_test123.pfx" "test123"]
if {$success == 0} then {
    puts [CkPfx_lastErrorText $pfx]
    delete_CkPfx $pfx
    exit
}

set privKey [new_CkPrivateKey]

set success [CkPfx_PrivateKeyAt $pfx 0 $privKey]
if {$success == 0} then {
    puts [CkPfx_lastErrorText $pfx]
    delete_CkPfx $pfx
    delete_CkPrivateKey $privKey
    exit
}

# Create IIC signature according to RSASSA-PKCS-v1_5 using SHA256
set rsa [new_CkRsa]

set success [CkRsa_UsePrivateKey $rsa $privKey]
if {$success == 0} then {
    puts [CkRsa_lastErrorText $rsa]
    delete_CkPfx $pfx
    delete_CkPrivateKey $privKey
    delete_CkRsa $rsa
    exit
}

# PKCS-v1_5 is used by default.
CkRsa_put_EncodingMode $rsa "hex"
CkRsa_put_Charset $rsa "utf-8"
set hexSig [CkRsa_signStringENC $rsa $concatenatedParams "sha256"]

puts "Signature value result is: $hexSig"

# Compute the MD5 hash of the bytes.
set crypt [new_CkCrypt2]

CkCrypt2_put_EncodingMode $crypt "hex"
CkCrypt2_put_HashAlgorithm $crypt "md5"
set bd [new_CkBinData]

CkBinData_AppendEncoded $bd $hexSig "hex"
set md5_summary [CkCrypt2_hashBdENC $crypt $bd]

puts "MD5 summary value is: $md5_summary"

delete_CkPfx $pfx
delete_CkPrivateKey $privKey
delete_CkRsa $rsa
delete_CkCrypt2 $crypt
delete_CkBinData $bd