System Documentation




There are two primary components of OffByZero Cobalt; the Server and the Licence Client.

OffByZero Cobalt Server

The OffByZero Cobalt Server is responsible for the creation and management of Licences. It provides a web UI for the creation and management of licences, and exposes a web service interface for the Licence Client to register Licences. It also exposes a web interface for the creation and emailing of licences by third party software (e.g. web shops).

All communication between the OffByZero Cobalt Server and the Licence Client is performed over encrypted SSL channels, and consists entirely of digitally signed XML documents. This means the communication cannot easily be eavesdropped or tampered.

OffByZero Cobalt Licence Client

The OffByZero Cobalt Licence Client presents a simple, flexible API to allow you to register and unregister licences from within your application. It handles all the details of communication with the Server, as well as validation of signed documents. This makes integration quick and easy (as you can see from this sample code, in either C# or VB.NET.

Online Licensing


The most common case is online licensing. The Licence Client software is used to register the Licence on the server, which in turn replies with a Licence Response that contains that status of the licence.

The Licence Response contains the status of the Licence; for example, it might report that the user can install the software, or that the Licence has no more installations available, or even that the Licence has been tampered with since it was issued.

Offline Licensing

In some cases, you may wish to issue a licence that does not contact the server at all; such a Licence is known as an Offline Licence. You can make any Licence an Offline Licence by checking the 'Offline' box when creating or editing that Licence.

An Offline Licence is verified by the Licence Client, but because the server is never contacted, there is no way of limiting the number of installations of a particular Offline Licence. For this reason, we recommend that Offline Licences only be used when absolutely necessary (for example, when selling to customers whose computers are not connected to the Internet).

Products, Features and Licences


A Product in OffByZero Cobalt represents a software product that you sell. A product has one or more Features and as many Licences as you want.


Features represent the functionality of a product. Even the simplest Product has a single Feature (usually called 'Core') that your application will query in order to see if it is properly licenced. You can create additional Features to give fine-grained control over features through OffByZero Cobalt.

For example, if your application is a text editor, you may wish to create a Feature called 'Print'. If that Feature is not available for a particular licence, then your application will disable printing.


You create a Licence when a customer purchases a licence to use your software. A Licence is Registered when your application is installed, Unregistered when your application is uninstalled, and Checked whenever you like.

In addition to the contact details of the customer, a Licence has settings for three areas: Usage Restrictions, Periodic Confirmation and Features.

Usage Restrictions
Allow Citrix / Terminal Services

By default, a Licence prevents the application from running under a Terminal Services or Citrix environment. If this option is enabled, then the application will be permitted to run under such an environment, and instead of each installed computer counting against the Maximum Clients, each individual user will be counted instead. This way you can fully support the use of your application in a Terminal Services or Citrix environment with ease.

Offline Licence

An Offline Licence is verified entirely by the Licence Client; the server is never contacted. There are disadvantages to this approach; see Offline Licensing for details.

Maximum Clients

This value controls the maximum number of computers that may have this Licence installed at any one time. When the number is exceeded the Licence will not install on any more computers until one or more instances are uninstalled.

Maximum Version

In order to prevent customers from using a Licence for an old version of your application with a newer version, you can specify the Maximum Version of your application for which any particular Licence will work.

Periodic Confirmation

When you create or edit a Licence, you can choose how often the Licence Client will contact the server to verify the Licence and get any changes to the Licence. Note that if you change the settings on a Licence (say, by increasing Maximum Clients or turning off a Feature) those changes will not be known to the Licence Client until the server has been contacted.

A Licence can be set to contact the server periodically, either based on the number of days since last contact, or the number of times the application has been started, or both.


A Licence has settings for each Feature that is offered by the Product.


Every Feature on every Licence must have a type; there are four available:

  • Periodic Features have an expiry date.
  • Purchase Features do not have an expiry date; they are licensed in perpetuity.
  • Demo Features are for short-term demonstrations only. They expire like Periodic Features.
  • If a Feature on a Licence is set to None, the Feature is meant to be unavailable for consumers of that Licence.
Registered Until

If a Feature on a Licence is of type Periodic or Demo, then it has an expiry date, which is set here.


On a Licence, all Features - even those of type None - can have a Value. A Value is just a free text value (255 characters in length) that will be associated with the Feature on the Licence.

For example, consider an application that could have one of several UI themes depending upon the customer. An easy way of doing this would be to create a Feature called 'UI Theme', and set the value on that Featre for each particular Licence to the correct theme filename.

Software Licensing Scenarios


OffByZero Cobalt is designed to be a generic and flexible solution to your software protection needs. The client API, with which you integrate, gives you all the information your application requires but leaves the specific implementation of the user interface and protection strategy up to you. For example you may want to perform licence checking constantly or every week, you may want to show UI when something is amiss or show nothing and simply monitor usage. In the sections below we describe we describe software licensing scenarios which can all be accomplished with OffByZero Cobalt.

Active Software Protection

Create new licences for each user or account (you can have a configurable number of client machine installs on one licence), and then register the licence during software operation. Check feature status on the licence and allow software operation when successful. You can then configure, per licence, how often you want to check registration with the server. You can make the periodic licence confirmation as aggressive (every startup) or lenient (only during install) as you like. This type of active software protection provides the best security for your software to ensure that it is not used without a licence. Because the software calls the server periodically, you also have the flexibility of changing licence details as you go e.g. extending licence periods and adding/removing features.

Passive Software Monitoring

Because you control the user interface elements of your software licensing solution, you can choose to not show any licensing UI. You could use this solution simply for monitoring of your user base. OffByZero Cobalt can tell you when clients were installed, uninstalled, on which machines, and by which users.

Concurrent User Protection

With the OffByZero Cobalt server you can configure advanced software licensing solutions such as concurrent user protection. This is ideal for when you want your software to be installable on a large number of computers (say all computers within an organization), but only allow a smaller number to be running concurrently. OffByZero Cobalt provides an elegant and simple solution for this scenario that you can integrate into your software in minutes.

Supported Platforms

The OffByZero Cobalt Licence Client is supported on version 2.0, 3.0 and 3.5 of the Microsoft .NET Framework, when running on the following operating systems: Windows ME, Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7. Windows 2000 requires initial registration as a power user.

The Licence Client requires the Windows WMI component to be installed and accessible by the current user (which it generally is by default).

The OffByZero Cobalt Licence Client is supported when obfuscated with either Dotfuscator or

The OffByZero Cobalt Server is accessible through a web interface that is supported on:

  • Microsoft Internet Explorer 7, 8
  • Firefox 3.x
  • Safari 4.x
  • Google Chrome

Frequently Asked Questions

  • How do I set custom attributes on a licence?
    Every Feature can have a Value, and the Value is accessible through the Licence class on the client. For example, imagine a situation where you are licensing a server application, and you want to control the number of users on a per-licence basis. You could create a Users feature, set the Value to the number of users you allow, and interrogate it from .NET using the Value property on the Feature.
  • What happens if the client computer is offline?
    Cobalt caches the last response from the server, and uses that to determine the status of each Feature. When an Internet connection is available, Cobalt may (depending upon the update frequency set on the licence) use it to update the status of each Feature on the licence.
  • Can I automate the creation and maintenance of licences?
    Yes. Cobalt provides a web service API through which you can create and edit licences. See Website Integration for more details.
  • Do you support the Guest account on Windows?
    No. The Guest account has very limited access to the Internet on some versions of .NET, and no access to the hardware details necessary for Cobalt to identify the machine. For these reasons, we require software that uses Cobalt to run as either a regular or administrator user.
  • Do you support Java?
    We plan to add a Java version of the Licence Client in our next release.
  • Do you support native Win32 (i.e. Microsoft Windows without .NET)?
    We plan to add a Win32 version of the Licence Client in our next release.
  • Why do you spell 'licence' with a C?
    Because licence is a noun ('if you purchase a licence ...') and license is a verb ('... then you are licensed to use the software') [source].