junian / Standard.Licensing

Easy-to-use licensing library for .NET Framework, Mono, .NET Core, and MAUI / Xamarin products
https://junian.dev/Standard.Licensing/
MIT License
535 stars 120 forks source link

How to lock the generated license to only one computer? #18

Open cmabox opened 3 years ago

cmabox commented 3 years ago

I tested the generated license and it can be used on multiple computers. Can it be locked to only one computer? How? Thanks.

hiepgia commented 3 years ago

You can simple generate Hardware ID (Example: libc.hwid) and add it to license via WithAdditionalAttributes.

AntiGuideAkquinet commented 1 year ago

I believe this would be an interesting feature to add the library.

As recommended saeidjoker/libc.hwid could be used if we modify the targeted librarys as suggested in #20

I would suggest a generation caller syntax like:

var license = License.New()  
    .WithUniqueIdentifier(Guid.NewGuid())  
    .As(LicenseType.Trial)  
    .ExpiresAt(DateTime.Now.AddDays(30))  
    .WithMaximumUtilization(5)
    .WithHardwareIds(
        "9FA0CAC93D077EAE61252557E02BBDD2F34BCDE6",
        "77EAE6125255BDD2F34BCDE69FA0CAC93D07E02B",
        "2F34BCDE69FA77EAE6125255BDD0CAC93D07E02B")
    .WithProductFeatures(new Dictionary<string, string>  
    {  
        {"Sales Module", "yes"},  
        {"Purchase Module", "yes"},  
        {"Maximum Transactions", "10000"}  
    })  
    .LicensedTo("John Doe", "john.doe@example.com")  
    .CreateAndSignWithPrivateKey(privateKey, passPhrase);
/// <summary>
/// Sets the allowed hardware ids of the <see cref="License"/>.
/// </summary>
/// <param name="hardwareIds">The valid hardware ids <see cref="License"/>.</param>
/// <returns>The <see cref="ILicenseBuilder"/>.</returns>
ILicenseBuilder WithHardwareIds(params string[] hardwareIds);

An additional WithCurrentHardwareIds could be interesting for locally signed certificates.

mzayarnyuk commented 1 year ago

additional better pass if validates 2 from 4 ids, depends what PC parts user can replace someties; other lic soft do that; but most of id's is can be simulated with virtual enviroment; additonal will good prevent app from run on virtualizatio OS, and additional checks to made work of hacker harder