ZeroDev.Kora
3.2.0
dotnet add package ZeroDev.Kora --version 3.2.0
NuGet\Install-Package ZeroDev.Kora -Version 3.2.0
<PackageReference Include="ZeroDev.Kora" Version="3.2.0" />
<PackageVersion Include="ZeroDev.Kora" Version="3.2.0" />
<PackageReference Include="ZeroDev.Kora" />
paket add ZeroDev.Kora --version 3.2.0
#r "nuget: ZeroDev.Kora, 3.2.0"
#:package ZeroDev.Kora@3.2.0
#addin nuget:?package=ZeroDev.Kora&version=3.2.0
#tool nuget:?package=ZeroDev.Kora&version=3.2.0
ZeroDev.Kora
Official .NET SDK for Kora. Targets .NET 8.
dotnet add package ZeroDev.Kora
Validation
using Kora;
using var kora = new KoraClient("https://kora.example.com", product: "MyApp", publicKey: Environment.GetEnvironmentVariable("KORA_PUBLIC_KEY"));
var result = await kora.ValidateAsync(licenseKey, fields: new() { ["hwid"] = machineId });
if (!result.Valid) throw new Exception(result.Message);
With publicKey set, an answer without a valid x-kora-signature throws KoraException. A rejected license is not an exception: check Valid and Code.
Devices
await kora.ActivateAsync(licenseKey, fields: new() { ["hwid"] = machineId });
await kora.DeactivateAsync(licenseKey, new() { ["hwid"] = machineId });
ActivateAsync takes a free seat in each whitelist group of the product, then validates. DeactivateAsync frees it and returns Success, Code and Removed.
Offline licenses
var file = await admin.FileAsync("42");
var license = kora.Offline(file);
Offline checks the file against publicKey with no network call and throws when the signature is wrong, the license expired or refresh_after has passed.
Licenses, products and customers
using var admin = new KoraClient("https://kora.example.com", apiKey: Environment.GetEnvironmentVariable("KORA_TOKEN"));
var page = await admin.Licenses.ListAsync(new() { ["status"] = "active", ["limit"] = "25" });
var license = await admin.Licenses.CreateAsync(new { product_id = 1, customer_id = 4 });
await admin.Licenses.UpdateAsync(license["id"]!.ToString(), new { status = "suspended" });
await admin.Customers.UpdateAsync("4", new { blocked = true });
await admin.MergeAsync("4", "9");
Failed calls throw KoraException with Status.
| 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 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. |
-
net8.0
- BouncyCastle.Cryptography (>= 2.4.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.