Back to PermitCore
Engineering Blog

Thinking out loud about
license management & security.

Technical deep-dives written by engineers, for engineers. No fluff, no marketing — just the real tradeoffs behind building secure software licensing.

Announcement SDK
September 17, 20265 min read

Announcing the PermitCore Unity SDK

The 8th official PermitCore SDK is live — a zero-dependency Unity 2021.2+ client with native ECDSA offline verification and a single-script demo app, no Canvas or prefab setup required.

Announcement SDK
September 16, 20265 min read

Announcing the PermitCore Go SDK

The 7th official PermitCore SDK is live — a zero-dependency Go 1.21+ client with native ECDSA offline verification, a working demo app, and full docs.

Comparison Competitors
September 16, 20268 min read

Best Software Licensing APIs for Developers (2026)

A factual, sourced roundup of PermitCore, Keygen, Devolens (formerly Cryptolens), and LicenseSpring — what each is actually good for, not a ranked 'winner.'

Guide Evaluation
September 16, 20266 min read

Software Licensing API: What to Look For

A practical evaluation checklist for picking a software licensing API — the questions worth asking about key security, offline support, seat enforcement, and vendor lock-in.

Tutorial Activation
September 16, 20265 min read

How to Transfer a Software License to a New Computer

The real deactivate-then-reactivate flow that lets a customer move a node-locked license to a new machine themselves, without a support ticket.

Deep Dive Reliability
September 16, 20266 min read

What Happens If a License Server Goes Down?

Three real layers that decide what happens to a customer's app during an outage — automatic offline fallback, deliberate signed offline tokens, and the self-hosted continuity path for a total shutdown.

Tutorial Desktop
September 16, 20266 min read

Software Licensing for Desktop Applications

What's actually different about licensing a desktop app versus a web service — trial periods, node-locking to a specific machine, surviving reinstalls, and working without a constant connection.

Guide Architecture
September 16, 20267 min read

How to Build a License Key System

The real architecture behind a license key system — key format design, why servers should never store plaintext keys, and the lookup mechanism that makes validation fast and safe.

Guide Licensing Models
September 16, 20266 min read

Perpetual License vs Subscription License: Which Should You Sell?

The real tradeoffs between selling a license that never expires and one that renews — revenue shape, maintenance obligations, and how to configure either (or both) for the same product.

Tutorial Store & Payments
September 16, 20266 min read

How to Revoke a Software License After a Failed Payment

What actually happens to a Store-issued license when a customer's subscription payment fails or gets cancelled — the real Stripe webhook flow, not a hypothetical one.

Deep Dive Hardware IDs
September 16, 20266 min read

Why MAC Addresses Are Bad Hardware IDs

MAC addresses are spoofable, multi-valued, randomized by modern OSes, and unstable inside VMs and containers — why they're a poor foundation for device-locked licensing, and what works instead.

Tutorial Licensing Models
September 16, 20266 min read

Usage-Based / Metered Software Licensing Explained

How metered licensing actually works end to end — recording usage events against a license key, per-tenant event configuration, and how usage flows into real Stripe billing.

Tutorial Licensing Models
September 16, 20266 min read

How to Implement Feature-Based Licensing

How to gate individual features by license tier instead of just validating a key — the real FeaturesJson field, the API response shape, and the SDK's HasFeature() check.

Guide Build vs Buy
September 16, 20268 min read

Build vs Buy: Should You Build Your Own Software Licensing System?

What actually goes into a production license server — activation races, offline verification, RLS, abuse detection — and what it honestly costs to build versus buy.

Comparison Competitors
September 15, 20269 min read

PermitCore vs Keygen, Cryptolens, and LicenseSpring: A Sourced Comparison

A factual, dated comparison of PermitCore against three other license management platforms — pricing, self-hosting, SDK coverage, and what's actually built in versus bolted on.

Guide Anti-Piracy
September 15, 20266 min read

How to Prevent License Key Sharing

Three real, complementary techniques — node-locking, floating seat limits, and abuse detection — that stop one key from quietly becoming everyone's key.

Deep Dive Offline
September 15, 20266 min read

Offline License Validation in C#: Verifying Signed Tokens Without a Server

The real ECDSA P-256 signature check from PermitCore's .NET SDK, the token format, and what a signed token can and can't protect against.

Deep Dive Store & Payments
September 15, 20267 min read

Software Licensing with Stripe: How the Checkout-to-License Flow Actually Works

A real walkthrough of how PermitCore turns a Stripe checkout into a working license key automatically — the webhook flow, your own Stripe account, and 0% commission.

Tutorial Store
September 15, 20268 min read

Setting Up a License Store: Selling Keys Directly to Customers

Add a product, connect your own Stripe account, and get a real checkout page that issues license keys automatically.

Guide Licensing Models
September 15, 20267 min read

Node-Locked vs. Floating Licenses: Which One Do You Need?

A practical, example-driven comparison of the two license models, and how to configure each.

Tutorial Offline
September 15, 20266 min read

Offline Grace Mode: Keeping Your App Working Without a Connection

Signed cache tokens, how many grace days to allow, and the honest limits of what offline verification can and can't stop.

Tutorial Activation
September 15, 20268 min read

Activating a License on a Device: How Hardware IDs Work

What actually happens when a customer's app calls activate() — hardware fingerprinting, activation limits, and reactivation on the same device.

Tutorial Getting Started
September 15, 20267 min read

Getting Started: Create Your First Product and License Key

A real, step-by-step walkthrough with real screenshots — from an empty account to a working license key in about five minutes. First in a 5-part series.

SHA-256(plaintext) → HMAC → stored_hash AES-256-GCM PBKDF2 · 600,000 iterations
Deep Dive Encryption
June 15, 20268 min read

Zero-Knowledge Encryption in Practice: How PermitCore Keeps Your License Keys Secret

What does "zero-knowledge" actually mean in a license management context? We explain the full cryptographic chain and why a stolen database can never expose your license keys.

ISV SDK Store Email API
Guide Licensing
June 8, 20266 min read

License Key Distribution: The 5 Models Every Software Vendor Should Know

Perpetual, subscription, floating, node-locked, metered — each model solves a different problem and creates different support headaches.

dotnet add package PermitCore.SDK // validate a license key var result = await client .ValidateAsync(key); // result.Valid == true ✓
Tutorial .NET
June 1, 202612 min read

Integrate PermitCore with Your .NET Application in 15 Minutes

Install the SDK, validate and activate license keys in C#, handle offline grace periods, and protect against key sharing — production-ready code.