Sample code for 30+ languages & platforms
DataFlex

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

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    String sConcatenatedParams
    Handle hoPfx
    Variant vPrivKey
    Handle hoPrivKey
    Handle hoRsa
    String sHexSig
    Handle hoCrypt
    Variant vBd
    Handle hoBd
    String sMd5_summary
    String sTemp1

    Move False To iSuccess

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

    Move "12345678|2019-06-12T17:05:43+02:00|9952|bb123bb1231|cc123cc1231|ss123ss123|199.01" To sConcatenatedParams

    // Get the private key from a pfx file.
    Get Create (RefClass(cComChilkatPfx)) To hoPfx
    If (Not(IsComObjectCreated(hoPfx))) Begin
        Send CreateComObject of hoPfx
    End
    Get ComLoadPfxFile Of hoPfx "qa_data/pfx/cert_test123.pfx" "test123" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoPfx To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get Create (RefClass(cComChilkatPrivateKey)) To hoPrivKey
    If (Not(IsComObjectCreated(hoPrivKey))) Begin
        Send CreateComObject of hoPrivKey
    End
    Get pvComObject of hoPrivKey to vPrivKey
    Get ComPrivateKeyAt Of hoPfx 0 vPrivKey To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoPfx To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Create IIC signature according to RSASSA-PKCS-v1_5 using SHA256
    Get Create (RefClass(cComChilkatRsa)) To hoRsa
    If (Not(IsComObjectCreated(hoRsa))) Begin
        Send CreateComObject of hoRsa
    End
    Get pvComObject of hoPrivKey to vPrivKey
    Get ComUsePrivateKey Of hoRsa vPrivKey To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoRsa To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // PKCS-v1_5 is used by default.
    Set ComEncodingMode Of hoRsa To "hex"
    Set ComCharset Of hoRsa To "utf-8"
    Get ComSignStringENC Of hoRsa sConcatenatedParams "sha256" To sHexSig

    Showln "Signature value result is: " sHexSig

    // Compute the MD5 hash of the bytes.
    Get Create (RefClass(cComChilkatCrypt2)) To hoCrypt
    If (Not(IsComObjectCreated(hoCrypt))) Begin
        Send CreateComObject of hoCrypt
    End
    Set ComEncodingMode Of hoCrypt To "hex"
    Set ComHashAlgorithm Of hoCrypt To "md5"
    Get Create (RefClass(cComChilkatBinData)) To hoBd
    If (Not(IsComObjectCreated(hoBd))) Begin
        Send CreateComObject of hoBd
    End
    Get ComAppendEncoded Of hoBd sHexSig "hex" To iSuccess
    Get pvComObject of hoBd to vBd
    Get ComHashBdENC Of hoCrypt vBd To sMd5_summary

    Showln "MD5 summary value is: " sMd5_summary


End_Procedure