Zengain beta open for customers sign up now:
click here
Documentation
SupportNalpeiron.comGithubFree TrialFeedback
  • Documentation
  • Zentitle2 Docs
  • Zengain Docs
  • Zentitle I (V10)
  • Education & Training
  • Welcome
    • Zentitle2 documentation: License Management Software
    • Introduction to Zentitle2
  • Latest UI Changes
  • Zentitle Overview
    • Zentitle Quick Overview
      • Zentitle2 Features & Benefits
      • A single source of truth: 1 platform
      • Zentitle Architecture
      • Zentitle supports every platform
      • Zentitle business models
      • Critical differences for secure site/offline/dark site management
      • Zentitle for SaaS Licensing
  • Quick Start
    • Onboarding Zentitle2
    • Integrating is easy
    • Pricing & Packaging with Zentitle
  • Using the Platform UI
    • Introduction
    • New User Setup
    • Getting around
      • Search
      • Using reports
      • Providing feedback
    • Getting started
  • UI: ADMINISTRATION
    • Introduction
    • Users
      • Managing Users
      • Resending user invites
      • User permissions
      • Lost password
    • API Credentials
      • Package Registry
    • Webhooks
      • Logs
      • Workflow automation software
    • Integrations
      • FastSpring
      • SalesForce Sample Integration
        • Sample Integration Installation
        • Post-Installation Configuration
        • Connecting Salesforce to Zentitle
        • Creating a Zentitle Customer in SalesForce
        • Creating a Zentitle Entitlement in SalesForce
        • Editing Zentitle Entitlements in SalesForce
        • Managing Software Activations in SalesForce
    • Configuration
      • Import customers
      • Account Based Licensing (Identity-based licensing)
        • Setup Account Based Licensing with OpenID tokens.
        • Setup Account Based Licensing with username/password
        • Branding the user experience
      • End User Portal
        • End User Portal User Access
        • End user - Use of the portal
        • End User Offline Activation
      • Custom Fields
      • Security (2FA)
    • "Hard" Delete
  • UI: Dashboard
    • The Dashboard
  • UI: Customers
    • Customers and contacts
    • Customers
      • Adding (managing) contacts
      • The contact page
      • Setting up End User Portal (EUP) access
      • Inviting contacts to EUP
      • Disabling Customers
      • Managing Entitlements (from the Customer page)
  • UI: Entitlements
    • Entitlements
      • Using Entitlements
      • Maintenance options
    • Working with Entitlements
      • Activation Codes
      • Contacts (ABL)
      • Activations
      • Activity log
      • Notes
    • Managing Entitlements
      • Allocating entitlements
      • Change the offering (upgrade/downgrade)
      • Entitlements with overrides/changes
      • Renewing an entitlement
      • Resetting the usage count
      • Disabling Entitlements
      • Entitlements in overdraft (seats)
  • UI: Product Catalog
    • Product paradigm
    • Products
      • Product Features
      • Overdraft option (feature usage)
      • Feature Control
      • Product Attributes
      • Product Editions
      • Edition Setup
    • Offerings
      • Overdraft option (seats)
      • Managing offerings
      • Maintenance options
      • Change offering (upgrade/downgrade)
      • Custom Fields
    • Plans
      • Trial plans
    • Global Features (and attributes)
  • UI: Local License Server
    • Local License Server (LLS)
      • Local License Server Installation
      • LLS License End-User Management
      • Entitlements to be used on LLS instances
      • LLS Licensing API
      • LLS Release Notes
  • UI: Help
    • Support
  • Developers
    • Licensing & Management APIs
      • API docs
      • API Rate limits
      • Collecting credentials for integration
      • API Versioning
    • The Licensing Client (.NET)
      • Configure NuGet Source
      • Configuring the Activation
      • Configuring the SharedActivation
      • Working with SharedActivation
      • Licensing API Nonce
      • IActivation interface
      • Zentitle2Core Library
      • Exceptions
      • FAQ
      • Release Notes
    • The Licensing Client (C++)
      • Configuring the Activation
      • Licensing API Nonce
      • IActivation interface
      • Zentitle2Core Library
      • Exceptions
      • Release Notes
    • The Licensing Client (Java)
      • Configure JAR Source
      • Configuring the Activation
      • Licensing API Nonce
      • IActivation interface
      • Zentitle2Core Library
      • Exceptions
      • FAQ
      • Release Notes
    • The Zentitle2Core Library (C++)
      • Security
      • Offline Activation
      • Generating Device Fingerprint
      • Using the Zentitle2Core Library
      • Troubleshooting and FAQs
    • Platform Summary
      • Turboscale architecture
      • SaaS Application Licensing
      • On-Premise Licensing
        • 1-Step Offline Deactivation: On-Premise
        • 2-Step Offline Activation: On-Premise
    • Offline Activation
    • Virtual Machine Control
    • No-code Test Application
      • Creating a Product and Entitlement
      • Download the demo files
      • OnPremDemo.dll.config setup
      • Test the demo application
        • Install Desktop Runtime
    • No-code SaaS Example
      • Creating a Product and Entitlement
      • Download the demo files
      • Collecting the serverside parameters
      • Edit appsettings.json file for IDE based Testing
      • Edit docker-compose.yml file for Docker-based Testing
      • Test the demo application
        • Using docker to test
    • Naming conventions/Glossary
  • Premium Features
    • Overdraft Tracker (Basic)
      • API references (Overdraft)
      • Overdraft Tracker on the dashboard
      • Reporting with the Overdraft Tracker
    • Network Licensing
    • Change log feature
  • Use Cases
    • Dark Site Local License Server (Network-based licensing)
    • Renewals (Customer Success) Management
    • Subscription grace periods
    • Self-service - End-user portal
    • Virtualized Environments
    • Usage-Based Licensing
    • Trial Management
    • Identity Based Licensing: Understanding IDP
    • Single Tenant Option
    • Entitlements with ERP & billing systems
    • Entitlements with Subscriptions
    • Entitlements with a CRM
    • E-commerce Integration
    • IoT and hardware licensing
    • SaaS Applications
    • Overuse tracking (overdrafts)
    • Order Fulfillment
  • Zentitle and M&A deals
  • Other
    • Zentitle2 Changelog
      • Terms and Conditions Changelog
Powered by GitBook
LogoLogo

Nalpeiron Privacy Policy

  • Privacy and Cookie Policy

Nalpeiron Growth Platform Terms

  • Nalpeiron ELTC

Get a FREE Trial

  • Click here for FREE Trial

© Copyright - Nalpeiron, all rights reserved. Nalpeiron, The Nalpeiron Growth Platform, Zentitle and Zengain are trademarks of Nalpeiron Inc. All use subject to our Terms above.

On this page
  • Token Functions Documentation
  • Generate an activation request token from the provided data
  • Parse an activation response token to extract its payload data

Was this helpful?

Export as PDF
  1. Developers
  2. The Zentitle2Core Library (C++)

Offline Activation

PreviousSecurityNextGenerating Device Fingerprint

Last updated 1 year ago

Was this helpful?

Offline activation ensures that software products can be activated and remain functional without an online connection. This approach is crucial for organizations needing to manage licenses in the environment.

For more details, please refer to the

Important - Source of Keys and Tokens

  • Encryption Key: The AES encryption key is generated by the application and stored in persistent storage. The same key should be used during the generation of the activation request and parsing of the activation response

// encryption key example: vP3YI46HziBgPfWBqcSqHqzL0uQD8fB+nBc6pSP0C3Q=
  • Token: Comes from the server/End User Portal

  • Account Key: The tenant key from the account settings

Token Functions Documentation

Generate an activation request token from the provided data

bool generateActivationRequestToken(char *token, int *tokenLength, const char *data, const char* encryptionKey, const char* accountKey);

Parameters

  • token (char*): Buffer to store the generated token

  • tokenLength (int*): Length of the generated token

  • data (const char*): Data to be included in the token

  • encryptionKey (const char*): AES key to encrypt the token, the same key that was used during the generation of the activation request, should be used

  • accountKey (const char*): Key to sign the token

Return Value

  • true If the token is successfully generated

  • false If there is an error when generating the token

Example

char token[1024];
int tokenLen;
const char* data = "example_data";
const char* encryptionKey = "example_encryption_key";
const char* accountKey = "example_account_key";

bool success = generateActivationRequestToken(token, &tokenLen, data, encryptionKey, accountKey);
if (success) {
    // Use the generated token
} else {
    // Handle the error
}

Parse an activation response token to extract its payload data

bool parseActivationResponseToken(char* data, int* payloadLength, const char* token, const char* encryptionKey, const char* accountKey);

Parameters

  • data (char*): Buffer to store the extracted payload

  • payloadLength (int*): Length of the extracted payload

  • token (const char*): Activation response token

  • encryptionKey (const char*): AES key to decrypt the token

  • accountKey (const char*): Key to validate the token

Return Value

  • true If the token is successfully parsed

  • false If there is an error when parsing the token

Example

char payload[1024];
int payloadLen;
const char* token = "example_token";
const char* encryptionKey = "example_encryption_key";
const char* accountKey = "example_account_key";

bool success = parseActivationResponseToken(payload, &payloadLen, token, encryptionKey, accountKey);
if (success) {
    // Process the extracted payload
} else {
    // Handle the error
}
Offline Activation Tokens Library Documentation
.