Standard.Licensing
.NET和.NET框架产品的易于使用的许可库。
安装
从Nuget获取Standard.Licensing 。
dotnet add package Standard.Licensing
用法
为您的产品创建私人和公钥
Standard.Licensing使用椭圆曲线数字签名算法(ECDSA)来确保在创建后不能更改许可证。
首先,您需要为您的产品创建一个新的公共/私钥对:
Standard.Licensing.Security.Cryptography.KeyGenerator.Create();
var keyPair = keyGenerator.GenerateKeyPair();
var privateKey = keyPair.ToEncryptedPrivateKeyString(passPhrase);
var publicKey = keyPair.ToPublicKeyString();\”>
var keyGenerator = Standard . Licensing . Security . Cryptography . KeyGenerator . Create ( ) ; var keyPair = keyGenerator . GenerateKeyPair ( ) ; var privateKey = keyPair . ToEncryptedPrivateKeyString ( passPhrase ) ; var publicKey = keyPair . ToPublicKeyString ( ) ;
将私有密钥存放并用您的产品分发公共密钥。通常,您为每种产品创建一个密钥对,否则可以使用同一键对使用所有产品的许可证。如果您希望客户在每个主要版本上购买新的许可证,则可以为每个发行版和产品创建一个密钥对。
创建许可证生成器
现在,我们需要一些东西来生成许可证。这可以通过许可证轻松完成:
var license = License . New ( ) . WithUniqueIdentifier ( Guid . NewGuid ( ) ) . As ( LicenseType . Trial ) . ExpiresAt ( DateTime . Now . AddDays ( 30 ) ) . WithMaximumUtilization ( 5 ) . WithProductFeatures ( new Dictionary < string , string > { { \"Sales Module\" , \"yes\" } , { \"Purchase Module\" , \"yes\" } , { \"Maximum Transactions\" , \"10000\" } } ) . LicensedTo ( \"John Doe\" , \"john.doe@example.com\" ) . CreateAndSignWithPrivateKey ( privateKey , passPhrase ) ;
现在,您可以获取许可证并将其保存到文件中:
File . WriteAllText ( \"License.lic\" , license . ToString ( ) , Encoding . UTF8 ) ;
或者
license . Save ( xmlWriter ) ;
验证您的申请中的许可证
主张许可证的最简单方法是在您的申请的入口处。
首先从文件或资源加载许可证:
var license = License . Load ( .. . ) ;
然后,您可以主张许可证:
Standard.Licensing.Validation;
var validationFailures = license.Validate()
.ExpirationDate(systemDateTime: DateTime.Now)
.When(lic => lic.Type == LicenseType.Trial)
.And()
.Signature(publicKey)
.AssertValidLicense();\”>
using Standard . Licensing . Validation ; var validationFailures = license . Validate ( ) . ExpirationDate ( systemDateTime : DateTime . Now ) . When ( lic => lic . Type == LicenseType . Trial ) . And ( ) . Signature ( publicKey ) . AssertValidLicense ( ) ;
Standard.Licensing不会引发任何例外,只需返回验证失败的列举即可。
现在,您可以迭代可能的验证失败:
foreach ( var failure in validationFailures ) Console . WriteLine ( failure . GetType ( ) . Name + \": \" + failure . Message + \" - \" + failure . HowToResolve ) ;
或简单地检查是否有任何故障:
if ( validationFailures . Any ( ) ) // ...
在多次使用结果之前,请确保调用验证failures.tolist()或验证failures.toArray()。
第三方项目
- Patrickrainer/LicenSemanager- WPF许可证经理供开发人员生成和验证许可证。
- SKST/LICENSEMANAGER -GUI Standard.Licensing 。请求项目。
学分
这是项目来自Portable.nicrable库。该叉的目的是增加对更多.NET平台的支持,尤其是.NET标准和.NET Core。
- DNAUCK/PORTABLE。请求原始作品。
执照
该项目已根据MIT许可获得许可。
由junian.dev制造。
