How licensing works
A license, once activated on a device, is a digitally signed file that the SDK verifies locally. Day-to-day validation needs no network call, because everything the SDK needs in order to check the license is already on the device.
Signature verification is anchored at SoftActivate's public certificate infrastructure, which the SDK carries built in — your application needs no certificate setup of its own.
What validation checks
Every validate_license / ValidateLicenseAsync call checks the stored license
entirely on the device:
- Authenticity: the license carries a digital signature that the SDK verifies. A
modified or forged license file fails with
BAD_SIGNATURE. - Device binding: the license is bound to the hardware fingerprint of the device that
activated it. A license copied to another machine fails with
BAD_CONTEXT. See hardware IDs and device fingerprints for which device changes are safe. - Validity dates: the SDK checks the license's issue date and expiration against the local clock.
- Product binding: when your app declares its product (
set_product_id), a license sold for a different product of yours fails withBAD_PRODUCT. See product binding. - Revocation: the SDK checks the license against a revocation list that it keeps cached locally, so this check works offline too. See revocation for details.
Staying current
A license does not stay valid forever on its own. When it lapses, the next validation call goes online once and returns a license that reflects whatever the customer is currently entitled to, whether that is a renewed subscription term, an updated seat count, or the same terms extended. See activation and validation for how your application should handle this call.
License longevity
Licenses carry proof of when they were issued, so a license issued today remains verifiable years from now, without any action from you or your customer.
The lifecycle in one paragraph
Activate once online, validate locally on every start, let renewal happen silently when the license lapses, and deactivate to move to a different machine. Subscriptions and floating seats follow the same loop, with different terms behind the scenes and no extra API to learn.