Sample code for 30+ languages & platforms
PureBasic

ITIDA Canonicalize JSON and Compute SHA256 Hash

See more Egypt ITIDA Examples

Demonstrates creating the canonical (ITIDA) version of a JSON document, and then computes the SHA256 hash of the canonicalized JSON.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkStringBuilder.pb"

Procedure ChilkatExample()

    success.i = 0

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

    ; Load the JSON containing the document to be signed.

    ; The JSON file should look like this:
    ; NOTE: The JSON should NOT begin with "{ "documents" : [ ..."

    ;       {
    ;          "issuer":{
    ;             "address":{
    ;                "branchID":"0",
    ;                "country":"EG",
    ;                "regionCity":"Cairo",
    ;                "postalCode":"",
    ;                "buildingNumber":"0",
    ;                "street":"123rd Street",
    ;                "governate":"GOVERNATE"
    ;             },
    ;             "type":"B",
    ;             "id":"209999899",
    ;             "name":"Xyz SAE"
    ;          },
    ; ...
    ; ...

    sb.i = CkStringBuilder::ckCreate()
    If sb.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkStringBuilder::ckLoadFile(sb,"my_invoice.json","utf-8")
    If success = 0
        Debug "Failed to load input file."
        CkStringBuilder::ckDispose(sb)
        ProcedureReturn
    EndIf

    ; Convert the contents of sb to the ITIDA canonical form.
    ; Always pass utf-8 for the 2nd arg.
    CkStringBuilder::ckEncode(sb,"itida","utf-8")

    ; Examine the canonicalized JSON
    Debug CkStringBuilder::ckGetAsString(sb)

    ; Compute the SHA256 hash and show the SHA256 in hex format
    Debug "SHA256 hash: " + CkStringBuilder::ckGetHash(sb,"sha256","hex","utf-8")


    CkStringBuilder::ckDispose(sb)


    ProcedureReturn
EndProcedure