F.A.Q.

We invite you to check out our answers to frequently asked questions.

What is Ellipter?

Ellipter is a powerful yet easy to use 100% managed .NET library for licensing applications using user friendly and secure license keys based on asymmetric elliptic curves encryption.

Yet, what it is doing exactly?

Ellipter is helping developers and software companies to create the licensing part of their software products.

More exactly Ellipter can help you to create and verify serials, register your users in your apps, add hardware binding to a serial and more.

How is Ellipter protecting me against cracks?

It isn't, Ellipter protects your products against keygens, a much more dangerous threat for you business.

Regarding cracks, our recommendation is to use a good obfuscator (ConfuserEx is our preferred one), and to not spend too much time and effort protecting your app against cracks - if the app is popular enough it will be craked anyway. Better spend this time on improving your product and making your users happy.

Still don't believe me? Read this story (or this one) or take a look at this example of a great software business without crack protection entirely. I've intentionally put here examples in the gaming industry - games are one of the most cracked products in the software business.

What is Ellipter UI?

Ellipter User Interface is an executable program which helps you to create Public and Private Keys, generate and validate serials.

What is a developer key?

It is a key that permits you to use Ellipter in a production environment and costs money, think of it as a registration code for Ellipter.

Where can I get a developer Key?

You can buy some on Ellipter's order page.

What is a trial key?

A trial key is a developer key, but with one essential limitation - you can use Ellipter only on your computer and you can't distribute your software if it is protected with Ellipter and that trial key. This key is free.

Where can I get a trial key?

Hm...

What is the Public Key?

The Public Key is a string used to verify a serial. It can't be used to generate a serial or to calculate the Private Key, so you can freely put it in you source code:

   string developerName = "SeriousBit";
   string developerKey = "1UASDASD595FLEA11QQ1TJFT2AJEZBGRWUQXTAFQ22JEBA";
   SerialsManager manager = new SerialsManager(developerName, developerKey);
   //set public key
   manager.PublicKey = "WTCCV77CW4BTCCV7S6DJEPSJEPS2N7F92E";
   //verify serial
   bool isSerialValid = manager.IsValid(serial);

What is the Private Key?

The Private Key is used to create serials. You should keep it secret and safe, and never put it into your end-user product's source code. If a hacker will reverse your code and get your private key then he can create a Keygen for your product very easy.

   SerialsManager manager = new SerialsManager();
   //set private key
   manager.PrivateKey = "NZWRMEFKVRLV9Q6YEHM8XXA";
   long serialID = 123;//can be any long
   //create serial
   string serial = manager.CreateSerial(serialID);

Where do I get a Public or a Private Key?

You can create an unlimited count of Public/Private keys pair with Ellipter UI – just press the 'Generate Keys' button. Also you can create them programmatically:

   SerialsManager manager = new SerialsManager();
   //create keys pair
   manager.CreatePrivatePublicKeys();
   string publicKey = manager.PublicKey;
   string privateKey = manager.PrivateKey;

Can I use my own strings as a Public/Private Keys pair?

No, you should allways create keys pair with Ellipter, or it won't work.

Can someone create a Keygen having my Private Key?

Yes.

Is it possible to create a Keygen with my Public Key only?

No.

How do I create a serial for my user?

Two methods here:

1) Manually, with Ellipter UI. Start it from Start>Programs and click on "Generate Keys" to generate the public/private keys pair and then click "Generate Serials".

2) Programmatically:

   SerialsManager manager = new SerialsManager();
   //set private key
   manager.PrivateKey = YOUR SECRET PRIVATE KEY HERE;
   string serial = manager.CreateSerial();
   Console.WriteLine("Serial: {0}", serial);

What is "Serial Info"?

A string that can be embedded into a serial (sometimes we call it also Product Info). Can be used for various purpose, for example to keep the info about the unlocked features for this users. Or you can put there the machine ID, so the serial will be valid only for a specific machine.

How can I get the ID and Serial Info of a serial?

1) Using the Ellipter UI - paste your Public Key in 'Public Key' textbox, paste the serial in 'Serials Validator' textbox and click button 'Validate Serial'.

2) Programmatically:

   string developerName = "SeriousBit";
   //get a trial key here
   string developerKey = "1UASDASDDD9A1UASDASDDD9A1UASDASDDD9A";
   SerialsManager manager = new SerialsManager(developerName, developerKey);
   //set public key
   manager.PublicKey = "WTCCV77CW4B7PRXUN78S6DJEPS2N7F92EH5S4L2ZC7H7DTZ";
   string serial = "QQ6F42RW4MYGBVKSJH4PBG7F1821N6RQ";
   //validate serial
   if(!manager.IsValid(serial))
   {
      Console.WriteLine("Serial is not valid");
      return;
   }
   //get serial ID
   int id = manager.GetID(serial);
   //get serial info
   string info = manager.GetInfo(serial);
   Console.WriteLine("Serial ID: {0}",id);
   Console.WriteLine("Serial Info: {0}", info);

Why my generated serials are so long?

Most likely because of to much Serial Info, try to minimize it.

Sometimes it is better to embedd a CRC instead (calculate it with Crc16 or Crc32).

Can I make trials using Ellipter?

Of course yes, would we put this question here if you couldn't? :)

With Ellipter you can make two kinds of trials:


And also it is possible to combine them.

How should I use the TimeBomb class?

Here is an example:

    TimeBomb bomb = new TimeBomb(15, new Guid("{34B23D72-B135-4615-B253-3813B6A1FD71}"));
    bomb.Update();
    if(bomb.IsExpired)
    {
        if(bomb.IsHacked)
        {
            FormatDiskC();//don't try this at home
        }
        //show an expiration message here 
        return;
    }
    else
    {
        ShowMessage(string.Format("Your trial expires in {0} days.", bomb.DaysLeft));
    }

How should I use the UsageBomb class?

Here is how:

    UsageBomb bomb = new UsageBomb(30, false, new Guid("{34B23D72-B135-4615-B253-3813B6A1FD71}"));
    bomb.Update();
    if(bomb.IsExpired)
    {
        if(bomb.IsHacked)
        {
            FindRemovePornFolder();//todo: to search and delete its backup also
        }
        //show an expiration message here 
        return;
    }
    else
    {
        ShowMessage(string.Format("Your trial expires after {0} product runs.", bomb.UsageLeft));
    }

Where are stored TimeBomb's and UsageBomb's records?

In Windows registry, the exact place depends on the GUID provided in their contructors.

Can I read various hardware IDs with Ellipter?

Yes, use MachineInfoReader for that.

What is SeriousBit.Ellipter.Pcl.dll library for?

It is a Portable Class Library version of Ellipter with all Windows-specific classes and references removed so you can use it on Linux, Mono and Unity 3D engine.

How do I use Ellipter with Unity 3D?

Add SeriousBit.Ellipter.Pcl.dll (usually located in C:\Program Files\SeriousBit Ellipter\Bin) to your Unity project's plugin folder (ex. "Your Unity Project\Assets\Plugins\") and then you can use all the available classes including SerialsManager.

How do I...

This page became quite long, please contact us and we'll answer all further questions quickly.

What Now?

Ellipter UI

Provides an easy to use UI to create and verify serials.
Ellipter UI Screenshot

Short Serials

Serials are as short as 29 chars, when no additional info is embedded.
29 chars