Miqo.License bietet Ihnen alle teuer Tools, um die Echtheit einer Lizenz auszugeben, zu unterzeichnen und zu überprüfen. Lizenzdateien werden mit einem hochmodernen elliptischen Kurve Digital Signature Algorithmus (ECDSA) digital signiert, um sicherzustellen, dass die Lizenzen nach der Erstellung nicht manipuliert werden können.
Die Bibliothek ist für .NET Standard 2.0 und .NET Framework 4.0 und höher verfügbar. Das Testprojekt verwendet .NET Core 2.0. Sowohl die Bibliothek als auch das Nuget -Paket sind signiert.
Die Miqo.License -Bibliothek erleichtert es einfach:

Die Bibliothek ist als signiertes Nuget -Paket erhältlich.
PM> Install-Package Miqo.License
Vor der Unterzeichnung einer Lizenzdatei benötigen Sie einen privaten und öffentlichen Schlüssel. Miqo.License verwendet einen elliptischen Kurve Digital Signature Algorithmus (ECDSA), um sicherzustellen, dass die Lizenzdateien nach der Erstellung nicht manipuliert werden können. Der private Schlüssel wird verwendet, um die Lizenzdatei zu unterzeichnen, und der öffentliche Schlüssel wird verwendet, um die Echtheit der Lizenz zu überprüfen.
Sie können das bündelte Tastenerstellungstool verwenden oder ein neues Paar mit Signer() wie folgt erstellen:
var signer = new Miqo . License . ECC . Signer ( ) ;
var privateKey = signer . PrivateKey ;
var publicKey = signer . PublicKey ; Verwenden Sie Signer(privateKeyString) um einen zuvor generierten privaten Schlüssel bereitzustellen.
Der private Schlüssel sollte sicher gespeichert und für jedes Ihrer Produkte einzigartig sein. Der öffentliche Schlüssel wird mit Ihrer Software verteilt. Wenn Sie möchten, dass Ihr Kunde für jede Hauptveröffentlichung eine neue Lizenz kauft, können Sie für jede Version und jedes Produkt ein Schlüsselpaar erstellen.
Nachdem Sie die wichtigsten Paare für Ihr Produkt generiert haben, können Sie eine neue Lizenz erstellen. Der einfachste Weg, dies zu tun, besteht darin, die fließende Klasse zu verwenden.
var license = FluentLicense . CreateLicense ( )
. WithUniqueIdentifier ( Guid . NewGuid ( ) )
. As ( LicenseType . Standard )
. ExpiresAt ( DateTime . Today . AddYears ( 1 ) )
. ForProduct ( "Chewing Gum" )
. LicensedTo ( new Customer {
Name = @"Angus 'Mac' MacGyver" ,
Email = "[email protected]" ,
Company = "Phoenix Foundation"
} )
. SignLicenseWithPrivateKey ( privateKey ) ;Die Lizenz ist jetzt unterschrieben und Sie sind bereit, sie als JSON -Datei zu speichern:
license . Save ( "ChewingGum.License" ) ;Wenn Sie die Lizenzdatei in einer Datenbank oder einer anderen Art und Weise speichern möchten, können Sie verwenden:
var jsonString = license . ToJsonString ( ) ;Laden Sie die Lizenz aus einer Datei:
var license = License . Load ( "ChewingGum.License" ) ;Sie können auch eine Lizenz aus einer Zeichenfolge laden:
var license = License . LoadFromString ( jsonString ) ;Sie können jetzt mit der Validierung der Lizenz beginnen:
using Miqo . License . Validation ;
var validationFailures = license . Validate ( )
. ProductName ( "Chewing Gum" )
. And ( )
. ExpirationDate ( )
. And ( )
. Signature ( publicKey )
. AssertValidLicense ( ) ;Miqo.License wird keine Ausnahmen machen, wenn eine Validierung fehlschlägt, sondern eine Aufzählung von Validierungsfehlern zurückgibt.
Überprüfen Sie einfach, ob es einen Fehler gibt:
if ( validationFailures . Any ( ) ) {
.. .Oder wenn Sie über jeden Versagen iterieren möchten:
foreach ( var failure in validationFailures ) {
Console . WriteLine ( $ " { failure . GetType ( ) . Name } : { failure . Message } - { failure . HowToResolve } " ) ;
} Verwenden Sie validationFailures.ToList(); Bevor Sie versuchen, das Ergebnis mehrmals zu verwenden.
byte[] und Hex string Beachten Sie, dass Miqo.License byte[] für die privaten und öffentlichen Schlüssel verwendet. Sie können die HexExtensions -Erweiterungsklasse verwenden, um schnell zwischen dem byte[] und der Hex string umzuwandeln.
byte [ ] publicKey = ECC . HexExtensions . ToHex ( publicKeyHexString ) ;
string hex = ECC . HexExtensions . HexToBytes ( publicKey ) Die Lizenzdatei wird im Standard -JSON -Format gespeichert.
{
"license" : {
"id" : " 39bca166-e7ad-471a-955c-873673a9115d " ,
"createdAt" : " 2018-07-24T19:36:57.1917491Z " ,
"product" : " Chewing Gum " ,
"licenseType" : " Standard " ,
"customer" : {
"name" : " Angus 'Mac' MacGyver " ,
"company" : " Phoenix Foundation " ,
"email" : " [email protected] "
},
"expiresAt" : " 2019-07-24T00:00:00+02:00 "
},
"signature" : " ee9wYUeADZUlP7+Q+3PdrtBXqb4ricPlebTBbkMmYEdsPt/D3f6vVwlKQ4jrN1pGECaCTmljMOWWfDUNknLGdA== "
}Sie können das bündelte Key Creation -Tool verwenden, um schnell ein neues Schlüsselpaar im Hex -String -Format zu generieren.

Miqo.License wurde von tragbarer.licensing (von Daniel Nauck, Nauck It) inspiriert und verwendet einige der Validierungscode.
Zwei weitere Bibliotheken werden auch für den ECDSA -Teil verwendet.
Miqo.License wird im Rahmen der MIT -Lizenz zur Verfügung gestellt.