Miqo.license ให้เครื่องมือที่จำเป็นทั้งหมดแก่คุณเพื่อออกลงชื่อและตรวจสอบความถูกต้องของใบอนุญาต ไฟล์ใบอนุญาตมีการลงนามแบบดิจิทัลโดยใช้อัลกอริทึมลายเซ็นรูปไข่ดิจิตอลที่ล้ำสมัย (ECDSA) เพื่อให้แน่ใจว่าใบอนุญาตไม่สามารถดัดแปลงได้หลังจากการสร้าง
ห้องสมุดมีให้สำหรับ. NET Standard 2.0 และ. NET Framework 4.0 และสูงกว่า โครงการทดสอบใช้. NET Core 2.0 ทั้งไลบรารีและแพ็คเกจ NUGET ได้รับการลงนาม
ห้องสมุด miqo.license ทำให้ง่ายต่อการ:

ไลบรารีมีให้บริการเป็นแพ็คเกจ NuGet ที่ลงนาม
PM> Install-Package Miqo.License
ก่อนที่จะลงนามในไฟล์ใบอนุญาตคุณจะต้องมีคีย์ส่วนตัวและสาธารณะ MIQO.License ใช้อัลกอริทึมลายเซ็นรูปไข่ดิจิตอล (ECDSA) เพื่อให้แน่ใจว่าไฟล์ใบอนุญาตไม่สามารถดัดแปลงได้หลังจากสร้าง คีย์ส่วนตัวใช้เพื่อลงนามในไฟล์ใบอนุญาตและคีย์สาธารณะใช้เพื่อตรวจสอบความถูกต้องของใบอนุญาต
คุณสามารถใช้เครื่องมือสร้างคีย์แบบรวมหรือสร้างคู่ใหม่โดยใช้ Signer() เช่นนี้:
var signer = new Miqo . License . ECC . Signer ( ) ;
var privateKey = signer . PrivateKey ;
var publicKey = signer . PublicKey ; ใช้ Signer(privateKeyString) เพื่อจัดเตรียมคีย์ส่วนตัวที่สร้างขึ้นก่อนหน้านี้
คีย์ส่วนตัวควรจัดเก็บอย่างปลอดภัยและควรจะไม่ซ้ำกันสำหรับแต่ละผลิตภัณฑ์ของคุณ คีย์สาธารณะแจกจ่ายด้วยซอฟต์แวร์ของคุณ หากคุณต้องการให้ลูกค้าซื้อใบอนุญาตใหม่ในแต่ละรุ่นหลัก ๆ คุณสามารถสร้างคู่คีย์สำหรับแต่ละรุ่นและผลิตภัณฑ์
หลังจากสร้างคู่คีย์สำหรับผลิตภัณฑ์ของคุณแล้วคุณพร้อมที่จะสร้างใบอนุญาตใหม่ วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการใช้คลาส 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 ) ;ขณะนี้มีการลงนามใบอนุญาตและคุณพร้อมที่จะบันทึกเป็นไฟล์ JSON:
license . Save ( "ChewingGum.License" ) ;หากคุณต้องการจัดเก็บไฟล์ลิขสิทธิ์ในฐานข้อมูลหรือแฟชั่นอื่น ๆ คุณสามารถใช้:
var jsonString = license . ToJsonString ( ) ;โหลดใบอนุญาตจากไฟล์:
var license = License . Load ( "ChewingGum.License" ) ;นอกจากนี้คุณยังสามารถโหลดใบอนุญาตจากสตริง:
var license = License . LoadFromString ( jsonString ) ;ตอนนี้คุณสามารถเริ่มตรวจสอบใบอนุญาต:
using Miqo . License . Validation ;
var validationFailures = license . Validate ( )
. ProductName ( "Chewing Gum" )
. And ( )
. ExpirationDate ( )
. And ( )
. Signature ( publicKey )
. AssertValidLicense ( ) ;Miqo.license จะไม่โยนข้อยกเว้นใด ๆ เมื่อการตรวจสอบล้มเหลว แต่จะกลับไปที่การแจงนับความล้มเหลวในการตรวจสอบความถูกต้อง
เพียงตรวจสอบว่ามีความล้มเหลวหรือไม่:
if ( validationFailures . Any ( ) ) {
.. .หรือถ้าคุณต้องการที่จะทำซ้ำในแต่ละความล้มเหลวการใช้งาน:
foreach ( var failure in validationFailures ) {
Console . WriteLine ( $ " { failure . GetType ( ) . Name } : { failure . Message } - { failure . HowToResolve } " ) ;
} ใช้ validationFailures.ToList(); ก่อนที่จะพยายามใช้ผลลัพธ์หลายครั้ง
byte[] และ hex string โปรดทราบว่า miqo.license ใช้ byte[] สำหรับกุญแจส่วนตัวและสาธารณะ คุณสามารถใช้คลาสส่วนขยาย HexExtensions เพื่อแปลงระหว่าง byte[] และ string hex ได้อย่างรวดเร็ว
byte [ ] publicKey = ECC . HexExtensions . ToHex ( publicKeyHexString ) ;
string hex = ECC . HexExtensions . HexToBytes ( publicKey ) ไฟล์ใบอนุญาตถูกบันทึกในรูปแบบ JSON มาตรฐาน
{
"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== "
}คุณสามารถใช้เครื่องมือสร้างคีย์แบบรวมเพื่อสร้างคู่คีย์ใหม่ในรูปแบบสตริง HEX ได้อย่างรวดเร็ว

Miqo.license ได้รับแรงบันดาลใจจากพกพา Licensing (โดย Daniel Nauck, Nauck IT) และใช้รหัสการตรวจสอบบางอย่าง
อีกสองห้องสมุดยังใช้สำหรับส่วน ECDSA
Miqo.license มีให้บริการภายใต้ใบอนุญาต MIT