Sample code for 30+ languages & platforms
Dart

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

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // 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"
  //          },
  // ...
  // ...

  final sb = CkStringBuilder();
  try {
    sb.loadFile('my_invoice.json', 'utf-8');
  } on ChilkatException {
    print('Failed to load input file.');
    return;
  }

  // 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.getAsString());

  // Compute the SHA256 hash and show the SHA256 in hex format
  print('SHA256 hash: ${sb.getHash('sha256', 'hex', 'utf-8')}');
}