Sample code for 30+ languages & platforms
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=2

Chilkat Swift Downloads

Swift

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!)")

}