Licensing a database app

From: Brian <blow_at_shaw.wave.ca>
Date: 1998/07/10
Message-ID: <Gmdp1.5008$606.18214162_at_news.rdc1.ab.wave.home.com>#1/1


Well, we have implemented a solution for licensing our app. I'm writing to let you guys know what we did.

A few weeks ago, I posted a message about limiting a database app to a certain number of rows in selected tables. The kicker was the customer (namely the customer's DBA) has full access to all tables. So we couldn't simply store the customer's limit in the database.

A few suggestions were
- encrypt the limits and store the values in the database

  • hardcode the limit in the business components that provide access to the data
  • hardware dongle
  • MS Licensing API

We chose the first and implemented it. We used the MS Crypto API to create a digital signature of the fields. If any limit gets changed, the digital signature won't match. We also encrypt the fields to make things more difficult.

So when a user logs on, we decrypt the fields with the customer's limits, verify the signature and count the rows of the corresponding table.

The only problem we encountered was the encrypted data and signatures were binary data. They contained non-printable characters, and worse, nulls. ADO recordsets truncated the data at the nulls, a la C/C++. So we used a quasi uuencode/uudecode algorithm to encode the data into all printable characters.

So that's it. Thanks for the suggestions and ideas. Brian Received on Fri Jul 10 1998 - 00:00:00 CEST

Original text of this message