dhrumilap
dhrumilap

Reputation: 142

Suggest a pattern or architecture for software license registration and validation mechanism

I'm working on building a generic and reusable software license registration library that will be embedded into multiple products. I'm thinking of writing an Enterprise Library for this, and would like to get some better suggestions here.

The mechanism will be some sort of plugin which will drive the registration mechanism of the product in which it is implemented. The product will generate it's GUI for the registration form, but the business logic for license generation and validation will be written on the separate project. This project will just be referenced to or "plugged" into the main product to drive the license mechanism.

Could I get some strong architectural patterns to build this project around?

Upvotes: 8

Views: 6512

Answers (3)

HTTP 410
HTTP 410

Reputation: 17618

Check out the detailed documentation for the Desaware licensing system. After investigating and implementing it, I think that it is well-designed and contains several good design principles and patterns.

Specifically:

  • The licensing system doesn't control application behaviour. It just supplies licence status information and leaves the application to decide what to do with that information. This allows the application to be more or less lenient in its enforcement of the license.
  • The public/private key system means that the license is cryptographically-strong, at least in theory. The reality of course is that strength also depends on implementation. The documentation defines various threat models so that you can decide which are relevant to your situation.
  • The licensing system takes into account several typical customer behaviours and requirements.
  • The licensing system is very extensible.

Upvotes: 2

jparthj
jparthj

Reputation: 1646

Create a private key and public key concept.

Let your host application have one predefined key and same key will be with the consumer product.

On consumer side, the host application has to check the combination of public key and private key. Define the work flow algorithm that will be harder for someone to decode. Also embed the the library into the project so that the assembly can not be found to the user.

You will get code for implementing above flow on following link:

Implementing Licencing mechanism for a Software

And for more discussion over license, you can follow the link below :

http://www.otc.utexas.edu/SoftwareAndCopyrights.jsp

Upvotes: 10

user1168577
user1168577

Reputation: 1973

Take a look at Service Provider Frameworks.

Upvotes: 2

Related Questions