يوفر لك 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[] string السداسي لاحظ أن miqo.license يستخدم byte[] للمفاتيح الخاصة والعامة. يمكنك استخدام فئة امتداد HexExtensions للتحويل بسرعة بين byte[] string السداسي.
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 من المحمول.
تستخدم مكتبتان أخريان أيضًا لجزء ECDSA.
يتم توفير miqo.license بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.