Sample code for 30+ languages & platforms
Go

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

Go
    success := false

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

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

    // Get the private key from a pfx file.
    pfx := chilkat.NewPfx()
    success = pfx.LoadPfxFile("qa_data/pfx/cert_test123.pfx","test123")
    if success == false {
        fmt.Println(pfx.LastErrorText())
        pfx.DisposePfx()
        return
    }

    privKey := chilkat.NewPrivateKey()
    success = pfx.PrivateKeyAt(0,privKey)
    if success == false {
        fmt.Println(pfx.LastErrorText())
        pfx.DisposePfx()
        privKey.DisposePrivateKey()
        return
    }

    // Create IIC signature according to RSASSA-PKCS-v1_5 using SHA256
    rsa := chilkat.NewRsa()
    success = rsa.UsePrivateKey(privKey)
    if success == false {
        fmt.Println(rsa.LastErrorText())
        pfx.DisposePfx()
        privKey.DisposePrivateKey()
        rsa.DisposeRsa()
        return
    }

    // PKCS-v1_5 is used by default.
    rsa.SetEncodingMode("hex")
    rsa.SetCharset("utf-8")
    hexSig := rsa.SignStringENC(concatenatedParams,"sha256")

    fmt.Println("Signature value result is: ", *hexSig)

    // Compute the MD5 hash of the bytes.
    crypt := chilkat.NewCrypt2()
    crypt.SetEncodingMode("hex")
    crypt.SetHashAlgorithm("md5")
    bd := chilkat.NewBinData()
    bd.AppendEncoded(*hexSig,"hex")
    md5_summary := crypt.HashBdENC(bd)

    fmt.Println("MD5 summary value is: ", *md5_summary)

    pfx.DisposePfx()
    privKey.DisposePrivateKey()
    rsa.DisposeRsa()
    crypt.DisposeCrypt2()
    bd.DisposeBinData()