Pistitium.Licenser 1.0.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package Pistitium.Licenser --version 1.0.2
NuGet\Install-Package Pistitium.Licenser -Version 1.0.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Pistitium.Licenser" Version="1.0.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Pistitium.Licenser --version 1.0.2
#r "nuget: Pistitium.Licenser, 1.0.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Pistitium.Licenser as a Cake Addin
#addin nuget:?package=Pistitium.Licenser&version=1.0.2

// Install Pistitium.Licenser as a Cake Tool
#tool nuget:?package=Pistitium.Licenser&version=1.0.2

Pistitium Software

Pistitium.Licenser

Pistitium.Licenser Provides a framework to:

  • Provides a framework to generate unique license keys based on:

    • String

    • Hardware Identifier

      • HardwareIdentity class uniquely identifies computer hardware on the running machine
    • Guid

  • Allows for generation of:

    • Evaluation License Key (1 Month Expiration)
    • Evaluation License Key with custom expiration
    • Registration License Key (1 Year Expiration)
    • Registration License Key with custom expiration

Installation

Install via Visual Studio Manage Nuget Packages... or download:

https://www.nuget.org/packages/Pistitium.Licenser

.NET CLI
> dotnet add package Pistitium.Licenser --version 1.0.X

Usage

///////////////////////////////////////////////////////////
// Sample of how to use HardwareIdentity
///////////////////////////////////////////////////////////
using Pistitium.Licenser;

public void HardwareIdentityTest()
{
    try
    {
        Console.WriteLine("Inside HardwareIdentityTester.Run()");
        Console.WriteLine();

        bool regenerateLicenseFile = true;
        bool doNotRegenerateLicenseFile = false;
        string licensePath1 = @"F:\PistitiumLicenseFile\pistitium1.xml";
        string licensePath2 = @"F:\\PistitiumLicenseFile\pistitium2.xml";

        HardwareIdentity hi = new();                                
        hi.Write(licensePath1, regenerateLicenseFile);
        hi.Write(licensePath2, doNotRegenerateLicenseFile);
        hi.LoadFromXmlFile(licensePath1);

        Console.WriteLine(hi.ToString());
        Console.WriteLine();
        Console.WriteLine(hi.GetXml());
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

// Sample Output
Inside HardwareIdentityTester.Run()

[ HardwareIdentity ]
           MachineId: C85B0009AEDBFBFFB59AD15806E9BFEB76EB
              CPU Id: BFEBFBFF000906E9
         BIOS Serial: PF0QLHTN
    BIOS Software Id: 4KCN45WW
  Board Manufacturer: LENOVO
         MAC Address: C8:5B:76:EB:B5:9A
Network Adapter GUID: FC22B4A0-C0B0-44DC-B6F5-953FF1845C8A
    Hard Disk Serial: AEDBD158

<?xml version="1.0" encoding="utf-8"?><HardwareIdentity MachineId="C85B0009AEDBFBFFB59AD15806E9BFEB76EB"><Identity CpuId="BFEBFBFF000906E9" BiosSerial="PF0QLHTN" BiosSoftware="4KCN45WW" BoardManufacturer="LENOVO" MacAddress="C8:5B:76:EB:B5:9A" NetworkAdapterGuid="FC22B4A0-C0B0-44DC-B6F5-953FF1845C8A" HardDiskSerial="AEDBD158" /></HardwareIdentity>

///////////////////////////////////////////////////////////
// Create LicenseKey using HardwareIdentity
///////////////////////////////////////////////////////////
public static void GenerateKeyFromHardwareIdentity()
{
    HardwareIdentity hardwareIdentity = new HardwareIdentity();
    LicenseKey key = LicenseKey.Generate(hardwareIdentity, LicenseKey.KeyType.Evaluation);

    Console.WriteLine($"0 : {key.Value} : {hardwareIdentity.MachineId}");
    Console.WriteLine(key);
    Console.WriteLine();

    Console.WriteLine(key.GetXml());
}

// Sample Output
0 : ZLLJM-5085LL-336PR-44419-WTTYD : C85B0009AEDBFBFFB59AD15806E9BFEB76EB
[ LicenseKey ]
           Type: Evaluation
          Value: ZLLJM-5085LL-336PR-44419-WTTYD
         Status: Activated
     Start Date: 2023-03-02 19:36:50
Expiration Date: 2023-04-01 19:36:50

<?xml version="1.0" encoding="utf-8"?><LicenseKey Type="Evaluation" Value="ZLLJM-5085LL-336PR-44419-WTTYD" Status="Activated" StardDate="2023-03-02 19:36:50" EndDate="2023-04-01 19:36:50" />

///////////////////////////////////////////////////////////
// Create LicenseKey using Guid
///////////////////////////////////////////////////////////
public static void Display(int count, LicenseKey key, Guid guid)
{
    Console.WriteLine($"Cycle: {count} : Key: {key.Value} : Guid: {guid}");
    Console.WriteLine(key);
    Console.WriteLine();
}

public void Run()
{
    Console.WriteLine("Inside LicenseKeyTester.Run()");
    Console.WriteLine();

    // Use a Dictionary to see that there are no duplicates
    Dictionary<string, string> keyValues = new(); 

    try
    {             
        int count = 1001;

        for (int i = 1; i < count; i++)
        {
            Guid guid = Guid.NewGuid(); // Same input for evaluation and registration
            LicenseKey key = LicenseKey.Generate(guid, LicenseKey.KeyType.Evaluation); // Defaults to 1 Month Expiration

            Display(i, key, guid);

            keyValues.Add(key.Value, guid.ToString());

            key = LicenseKey.Generate(guid, LicenseKey.KeyType.Registration); // Defaults to 1 Year Expiration

            Display(i, key, guid);

            keyValues.Add(key.Value, guid.ToString());

            guid = Guid.NewGuid(); // Same input for evaluation and registration
            key = LicenseKey.Generate(guid, LicenseKey.KeyType.Evaluation, 90);

            Display(i, key, guid);

            keyValues.Add(key.Value, guid.ToString());

            key = LicenseKey.Generate(guid, LicenseKey.KeyType.Registration, 180);

            Display(i, key, guid);

            keyValues.Add(key.Value, guid.ToString());

            // Once the key is generated you can associate the guid and key with a customer account
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

// Sample Output
Cycle: 1000 : Key: KJKXZ-3333HK-323TY-11436-TEDTA : Guid: 7658aa7a-8d11-4947-bc3a-533715fc3b78
[ LicenseKey ]
           Type: Evaluation
          Value: KJKXZ-3333HK-323TY-11436-TEDTA
         Status: Activated
     Start Date: 2023-03-02 19:22:40
Expiration Date: 2023-04-01 19:22:40

Cycle: 1000 : Key: 676KYX-PX6DX-PV665-8DZXT-681XR : Guid: 7658aa7a-8d11-4947-bc3a-533715fc3b78
[ LicenseKey ]
           Type: Registration
          Value: 676KYX-PX6DX-PV665-8DZXT-681XR
         Status: Activated
     Start Date: 2023-03-02 19:22:40
Expiration Date: 2024-03-01 19:22:40

Cycle: 1000 : Key: KJXXJ-3366NX-493PY-44163-PRTTR : Guid: 249c27a6-aadd-45e6-94f8-caa4020ca275
[ LicenseKey ]
           Type: Evaluation
          Value: KJXXJ-3366NX-493PY-44163-PRTTR
         Status: Activated
     Start Date: 2023-03-02 19:22:40
Expiration Date: 2023-05-31 19:22:40

Cycle: 1000 : Key: 673KAX-PK3EK-CG635-5CNKP-376XA : Guid: 249c27a6-aadd-45e6-94f8-caa4020ca275
[ LicenseKey ]
           Type: Registration
          Value: 673KAX-PK3EK-CG635-5CNKP-376XA
         Status: Activated
     Start Date: 2023-03-02 19:22:40
Expiration Date: 2023-08-29 19:22:40

License

MIT

Product Compatible and additional computed target framework versions.
.NET net6.0-windows7.0 is compatible.  net7.0-windows was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.5 178 4/20/2023
1.0.4 184 3/14/2023
1.0.3 199 3/8/2023
1.0.2 216 3/2/2023