Example of verifying cryptographically signed and encrypted license files using Dart

Example Dart Cryptographic License Files

This is an example of how to verify and decrypt cryptographic license files in Dart, using Ed25519 signature verification and AES-256-GCM encryption.

This example verifies the aes-256-gcm+ed25519 algorithm.

Running the example

Install dependencies with dart pub:

dart pub get

Then run the example program, where -f is the path to a license file, -k is your Ed25519 public key, and -l is a license key. Feel free to use these example values:

dart run main.dart --license-file examples/license.lic \
  --license-key "9FB017-8E74A0-AC60C5-2C8BF6-2D2B90-V3" \
  --public-key "e8601e48b69383ba520245fd07971e983d06d22c4257cfd82304601479cee788"

You should see output indicating that the license file is valid, with its decrypted dataset:

license file was successfully verified!
  > {
      enc: F7g/36/UVMXnPCO7YGA6LaInutjxF06sU...fJCfqFqd5FiLYF33bR1qnYd2M9dfzM+XQ==.Jsw6jutQje0ZWmTn.n++MX8kfMTsqTZQjb2EFVg==,
      sig: VIOP81jRI4EHR7SY69k1O9AV79DNdYgU6uuiY6pR5o9z9Kgh6xli2eHYLVJCprhj2DIPnORD1xxsG22TqeXFDQ==,
      alg: aes-256-gcm+ed25519
    }
license file was successfully decrypted!
  > {
      data: {
        id: e2da9594-218f-41b6-a4d8-43c92b71a6c4,
        type: licenses,
        attributes: {name: Dart Example, ...},
        relationships: {...},
        links: {...}
      }
      included: [
        {id: a963360d-fafb-406a-bfe6-950bafc8bc00, type: products, ...},
        {id: f28621f6-34ec-42e7-84b5-2c659870399b, type: policies, ...},
        {id: 893201f7-e0f8-4a5a-99b5-c567e73f1366, type: users, ...},
        {id: c9e7a95c-e2ac-4580-b3d0-954b48b5c984, type: entitlements, ...},
        {id: dfb1cfce-8614-4ac7-82c4-f5eaa334ba96, type: entitlements, ...},
        {id: ecc6211a-f806-442f-b08a-aa2432d5837a, type: entitlements, ...}
      ],
      meta: {
        issued: 2022-10-04T21:34:54.589Z,
        expiry: 2023-10-04T21:34:54.589Z,
        ttl: 31556952
      }
    }

If the verification fails, check your public key.

If the decryption fails, check your license key.

Questions?

Reach out at support@keygen.sh if you have any questions or concerns!

GitHub

View Github