Swift
Swift
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 Swift Downloads
func chilkatTest() {
var success: Bool = false
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
var concatenatedParams: String? = "12345678|2019-06-12T17:05:43+02:00|9952|bb123bb1231|cc123cc1231|ss123ss123|199.01"
// Get the private key from a pfx file.
let pfx = CkoPfx()!
success = pfx.loadFile(path: "qa_data/pfx/cert_test123.pfx", password: "test123")
if success == false {
print("\(pfx.lastErrorText!)")
return
}
let privKey = CkoPrivateKey()!
success = pfx.privateKey(at: 0, privKey: privKey)
if success == false {
print("\(pfx.lastErrorText!)")
return
}
// Create IIC signature according to RSASSA-PKCS-v1_5 using SHA256
let rsa = CkoRsa()!
success = rsa.usePrivateKey(privKey: privKey)
if success == false {
print("\(rsa.lastErrorText!)")
return
}
// PKCS-v1_5 is used by default.
rsa.encodingMode = "hex"
rsa.charset = "utf-8"
var hexSig: String? = rsa.signStringENC(str: concatenatedParams, hashAlg: "sha256")
print("Signature value result is: \(hexSig!)")
// Compute the MD5 hash of the bytes.
let crypt = CkoCrypt2()!
crypt.encodingMode = "hex"
crypt.hashAlgorithm = "md5"
let bd = CkoBinData()!
bd.appendEncoded(encData: hexSig, encoding: "hex")
var md5_summary: String? = crypt.hashBdENC(bd: bd)
print("MD5 summary value is: \(md5_summary!)")
}