Miqo.license memberi Anda semua alat yang perlu untuk mengeluarkan, menandatangani dan memverifikasi keaslian lisensi. File lisensi ditandatangani secara digital menggunakan algoritma tanda tangan digital kurva elips canggih (ECDSA) untuk memastikan bahwa lisensi tidak dapat dirusak dengan setelah pembuatan.
Perpustakaan tersedia untuk .NET Standard 2.0 dan .NET Framework 4.0 dan lebih tinggi. Proyek Tes menggunakan .NET Core 2.0. Paket perpustakaan dan Nuget ditandatangani.
Perpustakaan Miqo.License memudahkan:

Perpustakaan tersedia sebagai paket Nuget yang ditandatangani.
PM> Install-Package Miqo.License
Sebelum menandatangani file lisensi, Anda akan memerlukan kunci pribadi dan publik. Miqo.license menggunakan algoritma tanda tangan digital kurva elips (ECDSA) untuk memastikan bahwa file lisensi tidak dapat dirusak setelah pembuatan. Kunci pribadi digunakan untuk menandatangani file lisensi, dan kunci publik digunakan untuk memverifikasi keaslian lisensi.
Anda dapat menggunakan alat pembuatan kunci yang dibundel atau membuat pasangan baru menggunakan Signer() seperti ini:
var signer = new Miqo . License . ECC . Signer ( ) ;
var privateKey = signer . PrivateKey ;
var publicKey = signer . PublicKey ; Gunakan Signer(privateKeyString) untuk memberikan kunci pribadi yang dihasilkan sebelumnya.
Kunci pribadi harus disimpan dengan aman dan harus unik untuk masing -masing produk Anda. Kunci publik didistribusikan dengan perangkat lunak Anda. Jika Anda ingin pelanggan Anda membeli lisensi baru pada setiap rilis utama, Anda dapat membuat pasangan kunci untuk setiap rilis dan produk.
Setelah menghasilkan pasangan utama untuk produk Anda, Anda siap untuk membuat lisensi baru. Cara termudah untuk melakukan ini adalah dengan menggunakan kelas fluentlicense.
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 ) ;Lisensi sekarang ditandatangani dan Anda siap menyimpannya sebagai file JSON:
license . Save ( "ChewingGum.License" ) ;Jika Anda ingin menyimpan file lisensi dalam database atau mode lain, Anda dapat menggunakan:
var jsonString = license . ToJsonString ( ) ;Muat lisensi dari file:
var license = License . Load ( "ChewingGum.License" ) ;Anda juga dapat memuat lisensi dari string:
var license = License . LoadFromString ( jsonString ) ;Anda sekarang dapat mulai memvalidasi lisensi:
using Miqo . License . Validation ;
var validationFailures = license . Validate ( )
. ProductName ( "Chewing Gum" )
. And ( )
. ExpirationDate ( )
. And ( )
. Signature ( publicKey )
. AssertValidLicense ( ) ;Miqo.license tidak akan memberikan pengecualian ketika validasi gagal, tetapi lebih suka mengembalikan pencacahan kegagalan validasi.
Cukup periksa apakah ada kegagalan:
if ( validationFailures . Any ( ) ) {
.. .Atau jika Anda ingin mengulangi setiap kegagalan, gunakan:
foreach ( var failure in validationFailures ) {
Console . WriteLine ( $ " { failure . GetType ( ) . Name } : { failure . Message } - { failure . HowToResolve } " ) ;
} Gunakan validationFailures.ToList(); sebelum mencoba menggunakan hasilnya beberapa kali.
byte[] dan string hex Perhatikan bahwa miqo.license menggunakan byte[] untuk kunci pribadi dan publik. Anda dapat menggunakan kelas ekstensi HexExtensions untuk dengan cepat mengonversi antara byte[] dan string hex.
byte [ ] publicKey = ECC . HexExtensions . ToHex ( publicKeyHexString ) ;
string hex = ECC . HexExtensions . HexToBytes ( publicKey ) File lisensi disimpan dalam format JSON standar.
{
"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== "
}Anda dapat menggunakan alat pembuatan kunci yang dibundel untuk dengan cepat menghasilkan pasangan kunci baru dalam format string hex.

Miqo.license terinspirasi oleh portabel.licensing (oleh Daniel Nauck, sauck it) dan menggunakan beberapa kode validasi.
Dua perpustakaan lain juga digunakan untuk bagian ECDSA.
Miqo.license tersedia di bawah lisensi MIT.