MIQO.LICENSE는 라이센스의 진위를 발행, 서명 및 확인할 수있는 모든 NECCESSARY 도구를 제공합니다. 라이센스 파일은 최첨단 타원 곡선 디지털 서명 알고리즘 (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[] 와 16 string 사이를 변환합니다 Miqo.license는 개인 및 공개 키에 byte[] 사용합니다. HexExtensions Extension 클래스를 사용하여 byte[] 와 Hex 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== "
}번들 된 키 생성 도구를 사용하여 16 진 문자열 형식의 새 키 쌍을 빠르게 생성 할 수 있습니다.

Miqo.license는 Portable.licensing (Daniel Nauck, Nauck IT)에서 영감을 얻었으며 일부 유효성 검사 코드를 사용합니다.
ECDSA 부품에는 다른 두 라이브러리도 사용됩니다.
MIQO.LICENSE는 MIT 라이센스에 따라 제공됩니다.