Licensing & DRMSoftware License Management
Hardware Node-LockLicensing & DRM•8 min read•Updated November 2026

Software License Management: Asymmetric Ed25519 DRM & Hardware Node-Locking

Apps Manager provides modern software license management using asymmetric Ed25519 cryptography. Securely bind licenses to physical machine hardware fingerprints (Machine UUID, Motherboard Serial, CPU ID) and verify tokens 100% offline in Electron, React, Node.js, and desktop binaries without server dependencies.

Jump to:

Overview & Architecture

Traditional software licensing models rely either on symmetric keys (vulnerable to reverse-engineering and keygens) or continuous online telemetry servers (which fail when customers are offline or behind corporate firewalls). Apps Manager solves this using modern asymmetric Ed25519 cryptography. The server signs license tokens with its private key; your client applications verify the signature locally using only the public key in under 1 millisecond. Combined with hardware node-locking, licenses cannot be shared across unauthorized machines.

Core Capabilities

Ed25519 Asymmetric Cryptography: Mathematically impossible to forge license keys without the server-side private key.
Hardware Node-Locking: Binds licenses to unique device hardware signatures (Machine UUID, CPU ID, Motherboard Serial, and MAC address).
100% Offline Verification: Client desktop applications verify license validity, expiration dates, and tier features completely offline.
Seat Limits & Multi-Device Control: Enforce limits (e.g. up to 2 machines per customer) with remote device unbinding from the portal.
Anti-Tamper Hardware Trial System: Writes encrypted hardware trial markers so users cannot reset free trials by clearing cache or reinstalling.
Configurable Grace Periods: Support PERMISSIVE policies (e.g. 7-day offline grace period before requiring online heartbeat) or STRICT policies.

Detailed Implementation Guides

1How Hardware Node-Locking Works

When a customer enters a license key in your application, the client SDK computes a cryptographic SHA-256 hash of the physical machine hardware.

System Fingerprint: Derived from OS Machine UUID, BIOS/Motherboard serial, and CPU identifier.
Hardware Binding: The activation endpoint checks current active device seats against the license tier limit and binds the machine ID.
Offline Lease Token: The server signs an Ed25519 lease containing the machine ID hash. If copied to a different computer, the local signature check succeeds, but the hardware fingerprint verification fails immediately.
Zero Privacy Risk

System hardware identifiers are hashed with SHA-256 on the local machine before transmission. Raw serial numbers or personally identifiable hardware specs are never stored in plaintext.

2License Lifecycle States

Licenses in Apps Manager transition through clear states managed via the dashboard, API, or automated Stripe/Razorpay webhooks.

StateDescriptionClient Behavior
ACTIVEValid paid license with available seatsSoftware features fully unlocked; heartbeats run periodically
TRIALHardware-bound trial period activeSoftware unlocked with countdown timer until expiration
EXPIREDSubscription term ended without renewalSoftware prompts user to renew; grace period applies if configured
REVOKEDManually revoked due to refund or chargebackSoftware immediately locks features on next check
DEVICE_LIMITAll allocated machine seats are currently boundPrompts user to unbind an older device from the Customer Portal

REST API Reference

POST/client/apps/:appPublicId/licenses/activate
Public

Activate a license key and bind to current machine hardware fingerprint

POST/client/apps/:appPublicId/licenses/validate
Public

Validate lease token online and refresh active device heartbeat

POST/client/apps/:appPublicId/licenses/deactivate
Public

Unbind current machine seat to transfer license to another computer

Production Code Integration

Electron / Node.js: Offline License Verification with apps-manager-sdk
import { AppsManagerClient } from 'apps-manager-sdk';

// Initialize the client with your App credentials
const client = new AppsManagerClient({
  baseUrl: 'https://apps-manager.in',
  appId: 'app_68f492',
  publicKey: process.env.APPS_MANAGER_PUBLIC_KEY,
  autoHeartbeat: true,
  offlineGracePeriodDays: 7,
  offlinePolicy: 'PERMISSIVE',
});

// Activate a license key entered by the user
async function handleUserActivation(licenseKey) {
  try {
    const result = await client.activate(licenseKey, {
      deviceName: 'Developer Workstation'
    });
    console.log('License activated successfully:', result.license);
    return true;
  } catch (err) {
    console.error('Activation failed:', err.message);
    return false;
  }
}

// Check license validity locally (works 100% offline!)
async function verifyAppAccess() {
  const state = await client.validate();
  if (state.isLicensed) {
    console.log(`Unlocked: ${state.license.tier} Edition (${state.daysRemaining} days remaining)`);
    return true;
  } else {
    console.warn('License invalid or expired:', state.error);
    return false;
  }
}

Frequently Asked Questions

Does client software need an active internet connection to run?

No! Because Ed25519 uses asymmetric digital signatures, your desktop application embeds only the public key. It cryptographically verifies the digital signature, machine hardware hash, and expiration date completely offline with zero server pings.

Can a user bypass licensing by changing their computer system clock?

No. The SDK records monotonicity markers in encrypted storage. If the system clock is rewound backwards past the last verified timestamp, the SDK detects clock tampering and requires an online heartbeat.

Start Building with Apps Manager Today

Build databases, create scraping APIs, convert websites to JSON, and issue Ed25519 cryptographic software licenses in minutes. Zero credit card required.

Get Started Free