craft_license 0.1.0 copy "craft_license: ^0.1.0" to clipboard
craft_license: ^0.1.0 copied to clipboard

Dart client for CraftLicense activation codes, device-bound buyout licenses, online renewal and offline Ed25519 certificate verification.

example/craft_license_example.dart

import 'dart:convert';
import 'dart:io';
import 'package:craft_license/craft_license.dart';

/// 使用宿主提供的环境配置进行真实激活,不打印激活码、令牌或凭证。
Future<void> main() async {
  final Map<String, String> env = Platform.environment;
  final String? url = env['LICENSE_BASE_URL'];
  final String? appId = env['LICENSE_APP_ID'];
  final String? code = env['LICENSE_ACTIVATION_CODE'];
  final String? deviceId = env['LICENSE_DEVICE_ID'];
  final String? keyFile = env['LICENSE_TRUSTED_KEY_FILE'];
  if (<String?>[url, appId, code, deviceId, keyFile].contains(null)) {
    stderr.writeln(
      'Provide LICENSE_BASE_URL, LICENSE_APP_ID, LICENSE_ACTIVATION_CODE, LICENSE_DEVICE_ID and LICENSE_TRUSTED_KEY_FILE.',
    );
    exitCode = 2;
    return;
  }
  final LicenseDevice device = LicenseDevice(
    deviceId: deviceId!,
    platform: env['LICENSE_PLATFORM'] ?? 'windows',
    clientVersion: 'example-0.1.0',
  );
  final CraftLicenseClient client = CraftLicenseClient(
    baseUrl: Uri.parse(url!),
    appId: appId!,
    allowLocalHttp: env['LICENSE_ALLOW_LOCAL_HTTP'] == 'true',
  );
  try {
    final Map<String, Object?> jwk =
        jsonDecode(await File(keyFile!).readAsString()) as Map<String, Object?>;
    final LicenseCertificateVerifier verifier = LicenseCertificateVerifier(
      trustedKeys: <LicenseVerificationKey>[
        LicenseVerificationKey.fromJwk(jwk),
      ],
    );
    final LicenseGrant grant = await client.activate(
      activationCode: code!,
      device: device,
    );
    await verifier.verify(
      certificate: grant.certificate,
      appId: appId,
      device: device,
    );
    final LicenseStatus current = await client.status(
      deviceToken: grant.deviceToken!,
    );
    final LicenseGrant renewed = await client.renew(
      deviceToken: grant.deviceToken!,
    );
    await verifier.verify(
      certificate: renewed.certificate,
      appId: appId,
      device: device,
    );
    stdout.writeln(
      'PASS activation, online status, renewal and pinned-key offline verification. Devices: ${current.activeDeviceCount}.',
    );
  } on CraftLicenseException catch (error) {
    stderr.writeln(error);
    exitCode = 1;
  } finally {
    client.close();
  }
}
0
likes
140
points
334
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Dart client for CraftLicense activation codes, device-bound buyout licenses, online renewal and offline Ed25519 certificate verification.

Topics

#licensing #activation #ed25519

License

GPL-3.0 (license)

Dependencies

cryptography, http

More

Packages that depend on craft_license