LicenPro.SDK
1.8.3
dotnet add package LicenPro.SDK --version 1.8.3
NuGet\Install-Package LicenPro.SDK -Version 1.8.3
<PackageReference Include="LicenPro.SDK" Version="1.8.3" />
<PackageVersion Include="LicenPro.SDK" Version="1.8.3" />
<PackageReference Include="LicenPro.SDK" />
paket add LicenPro.SDK --version 1.8.3
#r "nuget: LicenPro.SDK, 1.8.3"
#:package LicenPro.SDK@1.8.3
#addin nuget:?package=LicenPro.SDK&version=1.8.3
#tool nuget:?package=LicenPro.SDK&version=1.8.3
LicenPro.SDK
A robust .NET SDK for implementing secure software licensing in your applications. Connects to the LicenPro Dashboard for license management and validation.
Overview
LicenPro.SDK enables developers to protect their .NET applications with multiple licensing models while integrating seamlessly with the LicenPro Dashboard for centralized license management.
Supported Frameworks
- .NET 8.0
- .NET 9.0
Installation
dotnet add package LicenPro.SDK --version 1.0.0-rc1
Or via Package Manager Console:
Install-Package LicenPro.SDK -Version 1.0.0-rc1
Features
License Types
- Perpetual License - One-time purchase, permanent activation
- Trial License - Time-limited evaluation licenses
- Node-Locked License - Hardware-bound licenses tied to specific machines
- Subscription License - Time-based recurring licenses
- Floating License - Shared pool of licenses managed by the server
- Concurrent License - Simultaneous user-based licensing
Security Features
- RSA digital signatures for license integrity
- SHA-256 checksums for tamper detection
- Hardware ID binding for machine-specific licenses
- Encrypted offline cache with Windows DPAPI
- JWT-based session management for online validation
Validation Modes
- Offline Validation - Local cryptographic verification
- Online Validation - Server-side license status checking
- Hybrid Mode - Offline with periodic online sync
Quick Start
1. Configure SDK
using LicenPro;
using LicenPro.Utilities;
// Load configuration from appsettings.json
var secrets = LicenseUtils.LoadLicensingSecrets(config.GetSection("LicensingSecrets"));
2. Load and Validate License
try
{
var result = await LicenseManager.LoadLicenseAsync(@"C:\Path\To\license.bin");
if (result.Status == LicenseStatus.Valid)
{
Console.WriteLine($"License valid: {result.License.Type}");
}
}
catch (LicenseValidationException ex)
{
Console.WriteLine($"Validation failed: {ex.Message}");
}
3. Check Features
if (FeatureManager.IsFeatureEnabled("PremiumFeature"))
{
// Enable premium functionality
}
int maxUsers = FeatureManager.GetFeatureInt("MaxUsers");
4. Online Validation (Optional)
// For floating/concurrent licenses
LicenseManager.SetServerBaseEndpoint("https://your-licenpro-server.com");
await LicenseManager.ConnectSessionAsync();
Configuration
Add to appsettings.json:
{
"LicensingSecrets": {
"PublicKey": "your-base64-public-key",
"ApiKey": "your-api-key"
},
"LicenPro": {
"ServerBaseEndpoint": "https://your-server.com",
"HeartbeatIntervalMinutes": 5,
"EncryptOfflineCache": true
}
}
Dashboard Integration
The SDK connects to the LicenPro Dashboard for:
- License generation and distribution
- Real-time activation tracking
- Concurrent session management
- Usage analytics and reporting
- Remote license revocation
API Reference
LicenseManager
LoadLicenseAsync()- Load and validate license filesValidateLicenseAsync()- Validate loaded licensesConnectSessionAsync()- Start online sessionDisconnectSessionAsync()- End online session
FeatureManager
IsFeatureEnabled(string featureName)- Check feature availabilityGetFeatureInt/Float/String/DateTime()- Retrieve typed feature valuesThrowIfNotAllowed()- Enforce feature restrictions
License Types
PerpetualLicense- Single-user permanent licensesTrialLicense- Evaluation licenses with expirationNodeLockedLicense- Hardware-bound licensesSubscriptionLicense- Time-limited renewable licensesFloatingLicense- Server-managed shared licensesConcurrentLicense- Multi-user simultaneous access
Support
For issues, questions, or feature requests related to SDK integration, please contact support.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- Microsoft.Extensions.Configuration.Binder (>= 8.0.0)
- Microsoft.Extensions.Configuration.UserSecrets (>= 8.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- System.Management (>= 8.0.0)
- System.Security.Cryptography.ProtectedData (>= 8.0.0)
-
net9.0
- Microsoft.Extensions.Configuration.Binder (>= 8.0.0)
- Microsoft.Extensions.Configuration.UserSecrets (>= 8.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- System.Management (>= 8.0.0)
- System.Security.Cryptography.ProtectedData (>= 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.8.3 | 93 | 6/16/2026 |
| 1.8.2 | 93 | 6/15/2026 |
| 1.8.1 | 104 | 6/14/2026 |
| 1.8.0 | 93 | 6/14/2026 |
| 1.7.0 | 121 | 4/13/2026 |
| 1.6.0 | 100 | 4/13/2026 |
| 1.5.1 | 100 | 4/12/2026 |
| 1.5.0 | 99 | 4/12/2026 |
| 1.4.0 | 101 | 4/12/2026 |
| 1.3.9 | 108 | 4/10/2026 |
| 1.3.8 | 101 | 4/10/2026 |
| 1.3.7 | 102 | 4/10/2026 |
| 1.3.5 | 104 | 4/9/2026 |
| 1.3.4 | 104 | 4/9/2026 |
| 1.3.3 | 105 | 4/9/2026 |
| 1.3.2 | 104 | 4/8/2026 |
| 1.3.1 | 104 | 3/26/2026 |
| 1.3.0 | 102 | 3/26/2026 |
| 1.2.9 | 102 | 3/26/2026 |
| 1.2.8 | 105 | 3/26/2026 |
Server message pass-through: validation, session, and meter consume/balance APIs now surface the server's user-facing message instead of generic client text. Session forbidden responses use server text for blocked/mismatch cases. Metered (Credit-Based / Usage-Based): ConsumeAsync and GetBalanceAsync via MeterManager. Previous (1.8.2): stable hardware fingerprint persisted across reboots and network changes.