This is a list of requirements for a module for adding licensing to the CERT Macintosh application. Its purpose would be to:
1) Restrict use of CERT for each client to a certain period of time.
2) Collect records of how often each client uses CERT.

Users will need to add and remove licenses.
Allow the user to add a license.
Allow the user to inspect licenses. At the least they need to know when they will expire.
Allow the user to delete licenses.
It should be difficult to guess a key.
It should be possible to check that a key is at least a valid one, without contacting the server.
It would also be good if the license expiration date were encoded in the license so we could use that if it isn’t possible to connect to the server.
Possible pieces of info in the license: Client name/number, key, expiration date.

Every time the application is launched:
Send the license back to our server.
Server will respond with the date/time the license expires.
If it’s still valid, allow the app to continue. Store the date/time when the license will expire so we can check it while the app is running.
If not, provide a message then quit.
If we can’t connect to the server?

At some interval while the app is running check to see if we have gone past the expiration date/time that was retrieved when the app launched (i.e. don’t re-contact the server).

Each time the server is contacted we will:
Record the license/client and date/time of the contact.
Record the IP address?

Definitions:
Key: short sequence of numbers and/or letters. Validity can be determined by a formula which selects a sparse set of keys from a larger space.
License: Wrapper around a key plus possible other data.