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