TaltosWorks.Licensing.Core
1.1.1
dotnet add package TaltosWorks.Licensing.Core --version 1.1.1
NuGet\Install-Package TaltosWorks.Licensing.Core -Version 1.1.1
<PackageReference Include="TaltosWorks.Licensing.Core" Version="1.1.1" />
<PackageVersion Include="TaltosWorks.Licensing.Core" Version="1.1.1" />
<PackageReference Include="TaltosWorks.Licensing.Core" />
paket add TaltosWorks.Licensing.Core --version 1.1.1
#r "nuget: TaltosWorks.Licensing.Core, 1.1.1"
#addin nuget:?package=TaltosWorks.Licensing.Core&version=1.1.1
#tool nuget:?package=TaltosWorks.Licensing.Core&version=1.1.1
TaltosWorks.Licensing
A .NET Standard 2.0 library for license generation, validation, and management. This library provides a secure licensing system that utilizes RSA encryption for signature verification.
Features
- Create and manage RSA key pairs for license signing
- Generate signed license files
- Validate licenses with expiration support
- Embed public keys in assemblies
- Support for trial and perpetual license types
Getting Started
Installation
'Install-Package TaltosWorks.Licensing.Core'
Key Concepts
- LicenseManager: Used by publishers to generate keys and create licenses
- LicenseHelper: Used by consumer applications to validate licenses
- LicenseBase: Base class for all license models
Usage Examples
Creating a Custom License Model
Create a class that inherits from LicenseBase
to define your custom license properties:
public class MyAppLicense : LicenseBase
{
public string[] Features { get; set; }
public int MaxUsers { get; set; }
// You can override the validator, that gets the context from the helper
protected override void Validate(IDictionary<string, string> validationErrors, object? validationContext)
{
// cast the context to your type and validate
}
}
Creating and Saving Key Pairs
// Initialize license manager
var licenseManager = new LicenseManager();
// Generate and save key pair
await licenseManager.SaveKeyPair("MyAppLicense.rsa.keypair");
// Save public key separately (to be distributed with application)
await licenseManager.SavePublicKey("MyAppLicense.rsa.public");
Creating License Files
// First load your key pair var
licenseManager = new LicenseManager();
await licenseManager.LoadKeyPair("MyAppLicense.rsa.keypair");
// Create a new license
var license = new MyAppLicense { LicenseType = LicenseType.Trial, LicensedTo = "Customer Name", Expires = DateTime.Now.AddDays(30), Features = new[] { "Basic", "Advanced", "Premium" }, MaxUsers = 5 };
// Save the license to a file
await licenseManager.SaveLicense(license, "customer-license.lic");
Embedding Public Key in Your Application
- Add your public key file to your project as an embedded resource
- Set the Build Action to "Embedded Resource"
- Make sure the namespace matches your assembly structure
Loading and Validating a License
// Create license helper with public key from file
var licenseHelper = new LicenseHelper<MyAppLicense>("MyAppLicense.rsa.public");
// Or load from embedded resource
// var licenseHelper = new LicenseHelper<MyAppLicense>(Assembly.GetExecutingAssembly());
// Load and validate the license
var license = await licenseHelper.LoadLicense("customer-license.lic");
By default only the expirationng date is validated. You can override the Validate
method in your custom license class to add additional validation logic.
Of course, you can use the returned license object to check the properties you set in your custom license class.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 was computed. 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 was computed. 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 was computed. 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 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. 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. |
-
.NETStandard 2.0
- System.Text.Json (>= 9.0.4)
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.1.1 | 63 | 5/9/2025 |