Sample code for 30+ languages & platforms
Lua

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

Lua
local chilkat = require("chilkat")

-- 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"
--          },
-- ...
-- ...

local sb = chilkat.StringBuilder.new()
local success = sb:load_file("my_invoice.json", "utf-8")
if not success then
    print("Failed to load input file.")
    return
end

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

-- Examine the canonicalized JSON
print(sb:get_as_string())

-- Compute the SHA256 hash and show the SHA256 in hex format
print("SHA256 hash: " .. sb:get_hash("sha256", "hex", "utf-8"))