License Your Code
With Cinnabar License Manager.

What is Cinnabar License Manager?

Cinnabar License Manager (CLM) allows you to enforce the licensing terms of your programs at runtime. CLM allows individual product features to be licensed separately — this allows you to ship a single executable which includes all features, and enable or disable features at runtime based on the purchased license.

What licensing parameters does CLM support natively?

As shipped, CLM can enforce licensing restrictions based on the following parameters:

  • Product name (product-based licensing)
  • Feature name (feature-based licensing)
  • The domain name of the execution machine (domain-locked licensing)
  • The MAC address of the execution machine (node-locked licensing)
  • A predefined expiration date (expire-date licensing)
  • A predefined number of days after first use (expire-period licensing)
At runtime, you can use CLM's APIs to check these constraints against a given license file or files. If any of the constraints are not met, CLM throws a LicenseManagerException, which your code can catch and react to appropriately.

Can CLM be extended to support my custom licensing parameters?

Yes!

License parameters are defined by creating a license parameter file. The native file format for a license specification file is XML. Here's a sample license specification file:

	<License name="TestProduct">
		<Licensee name="Cinnabar Systems">
			<Feature name="TestFeature">
				<Attribute name="clm-Expire-Date"
					type="string" value="20031031"/>
				<Attribute name="customFeatureAttribute"
					type="string" value="1234"/>
			</Feature>
		</Licensee>
	</License>

Although CLM specifies some pre-defined attribute names for the natively-supported license parameters mentioned above, you are free to add your own custom attributes to the license specification file.

At runtime, you can use CLM's APIs to retrieve the custom attributes in the license, and make appropriate decisions based on the value of those attributes.

The ability to add your own custom attributes to the license files creates an essentially unlimited number of licensing parameters that you can utilize, and thus an unlimited number of ways in which you can license your programs.

Are CLM license files secure?

Yes!

After you create a license specification file, you use a utility program supplied with CLM to convert it into a license file. A license file contains the license specification file, along with a cryptographic signature. The signature ensures that if the license file is changed after it is created, the change can be detected.

At runtime, if CLM detects that a license file has been changed, a LicenseManagerException is thrown, which your code can catch and react to appropriately.

Is it easy to integrate CLM into my existing program?

Yes!

In fact, it could hardly be easier. You can integrate CLM into your existing program with just a few lines of code, like the following:

	import com.cinnabarsystems.clm.*;

	try
	{
		LicenseManager clm = new LicenseManager(
			new FileInputStream("license.lic"),
			getClass().getResourceAsStream("pubkey"));

		clm.acquireLicense("MyProduct", "MyFeature");
		
		System.out.println("Acquired license ok");
	}
	catch (LicenseManagerException e)
	{
		System.out.println("Couldn't acquire license: " + e);
	}

How do I integrate CLM with my build and release process?

CLM includes a Java program named LicenseTool that you use to create, verify, and dump license files. In addition, Ant tasks are provided for each of these functions. If you already use Ant as a part of your build and release process, you can integrate CLM with your processes with very little effort.

How does the Canner make CLM even more secure?

No purely Java-based licensing scheme can be completely secure. This is due to the ease of decompiling and otherwise reverse-engineering Java code. A determined attacker can decompile your program, remove the license-checking code, then recompile to create a version of your program that does not require a valid license file.

Using the Canner in combination with CLM creates a highly secure licensing system for Java applications. The Canner prevents decompilation and reverse engineering, so your CLM-based Java applications are completely safe.

System Requirements

Cinnabar License Manager currently runs on Windows 98/NT 4.0/2000/Me/XP. It requires an installed JRE or JDK version 1.2 or higher. If you would be interested in using Cinnabar License Manager on other platforms, please contact us.

Copyright © 2002-2007 Cinnabar Systems LLC. All Rights Reserved.