Enigma.LicenseManager
1.0.0
dotnet add package Enigma.LicenseManager --version 1.0.0
NuGet\Install-Package Enigma.LicenseManager -Version 1.0.0
<PackageReference Include="Enigma.LicenseManager" Version="1.0.0" />
<PackageVersion Include="Enigma.LicenseManager" Version="1.0.0" />
<PackageReference Include="Enigma.LicenseManager" />
paket add Enigma.LicenseManager --version 1.0.0
#r "nuget: Enigma.LicenseManager, 1.0.0"
#:package Enigma.LicenseManager@1.0.0
#addin nuget:?package=Enigma.LicenseManager&version=1.0.0
#tool nuget:?package=Enigma.LicenseManager&version=1.0.0
Enigma.LicenseManager
Enigma.LicenseManager is a comprehensive .NET library designed for secure license management in applications. It provides robust cryptographic protection using both traditional RSA and modern ML-DSA (FIPS 204) digital signature algorithms, ensuring your software licensing is both secure and future-proof.
✨ Features
- Dual Cryptographic Support: Choose between RSA and ML-DSA (post-quantum) signatures
- Flexible License Management: Create, validate, and manage licenses with customizable properties
- Cross-Platform Compatibility: Supports .NET Standard 2.0, 2.1, and .NET 9.0
- JSON Serialization: Easy license storage and distribution in JSON format
- Product Version Matching: Support for wildcard patterns in product IDs
- Expiration Handling: Built-in support for time-based license expiration
📝 License Creation
Create an RSA-Signed License
Generate a license with RSA digital signature for traditional cryptographic security:
await using var privateKeyFile = new FileStream("<YourKeyFile.pem>", FileMode.Open, FileAccess.Read);
var privateKey = PemUtils.LoadPrivateKey(privateKeyFile, "<KeyPassword>");
var license = new LicenseBuilder()
.SetProductId("MyApp 1.*")
.SetExpirationDate(DateTime.UtcNow.AddDays(1))
.SignWithRsa(privateKey)
.Build();
Create an ML-DSA-Signed License
Generate a license with ML-DSA (post-quantum) signature for enhanced future security:
await using var privateKeyFile = new FileStream("<YourKeyFile.pem>", FileMode.Open, FileAccess.Read);
var privateKey = PemUtils.LoadPrivateKey(privateKeyFile, "<KeyPassword>");
var license = new LicenseBuilder()
.SetProductId("MyApp")
.SignWithMlDsa(privateKey)
.Build();
💾 License Persistence
Save License to JSON
Export your generated license to a JSON file for distribution:
await using var fs = new FileStream("<DestinationPath>", FileMode.Create, FileAccess.Write);
await license.SaveAsync(fs);
Load License from JSON
Import a license from a JSON file for validation:
await using var fs = new FileStream("<LicenseFilePath>", FileMode.Open, FileAccess.Read);
var license = await License.LoadAsync(fs);
✅ License Validation
Verify License Authenticity
Validate a license against its public key to ensure authenticity and integrity:
await using var publicKeyFile = new FileStream("<YourKeyFile.pem>", FileMode.Open, FileAccess.Read);
var publicKey = PemUtils.LoadKey(publicKeyFile);
var service = new LicenseService();
var (isValid, _) = service.IsValid(license, publicKey, "MyApp");
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 is compatible. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.7.2
- DeviceId (>= 6.9.0)
- Enigma.Cryptography (>= 4.0.1)
- Newtonsoft.Json (>= 13.0.1)
- Ulid (>= 1.3.0)
-
.NETStandard 2.0
- DeviceId (>= 6.9.0)
- Enigma.Cryptography (>= 4.0.1)
- Newtonsoft.Json (>= 13.0.1)
- Ulid (>= 1.3.0)
-
.NETStandard 2.1
- DeviceId (>= 6.9.0)
- Enigma.Cryptography (>= 4.0.1)
- Newtonsoft.Json (>= 13.0.1)
- Ulid (>= 1.3.0)
-
net6.0
- DeviceId (>= 6.9.0)
- Enigma.Cryptography (>= 4.0.1)
- Newtonsoft.Json (>= 13.0.1)
- Ulid (>= 1.3.0)
-
net7.0
- DeviceId (>= 6.9.0)
- Enigma.Cryptography (>= 4.0.1)
- Newtonsoft.Json (>= 13.0.1)
- Ulid (>= 1.3.0)
-
net8.0
- DeviceId (>= 6.9.0)
- Enigma.Cryptography (>= 4.0.1)
- Newtonsoft.Json (>= 13.0.1)
- Ulid (>= 1.3.0)
-
net9.0
- DeviceId (>= 6.9.0)
- Enigma.Cryptography (>= 4.0.1)
- Newtonsoft.Json (>= 13.0.1)
- Ulid (>= 1.3.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.0.0 | 184 | 10/8/2025 |