22k image19k image

Kagi Frequently Asked Question


Question:

What about software with unique software keys?

Answer:

Many authors provide unique keys for each registered user of their software. The idea is that if someone copies the software, they will know where it came from. The question is how do payers receive the unique software key when they pay through Kagi.

There are two ways to generate the key, the author can do it or Kagi can do it.

Author Generates Key


When the payment is processed, Kagi sends an email acknowledgement to the payer and a copy of the same message to the author. The author uses the data in that email message to generate a unique registration key and forwards that key to the payer. It's pretty simple.

If the payer does not have an email address, we send the acknowledgement directly to the author and the author uses that data to generate the key and gets that registration key to the payer using whatever contact information was provided by the payer and thus entered into the system and included in the acknowledgement. When unique keys are generated and no email is provided, the author will either need to postal mail or phone or fax the reg key info.

Kagi Generates Key


Kagi can generate the registration code for the author.

The way it works is that the user information is fed into the author's algorithm and a registration code is generated. That data is then substituted into the message returned to the payer (and copied to the author).

This registration code information can also be printed on to a postcard receipt when they purchaser has paid for a postcard receipt.

Key Generation Algorithm Advice


If you are creating a protection algorithm for your software, avoid floating point calculations such as log, sine, cosine, tangent, etc. The results of these operations vary based upon the accuracy of the floating point routines in your programming environment, your processor, your purchaser's machine, etc.

For example, does pi equal 3.1614 or 3.141593 or 3.14159265358979323846? If your algorithm assumes one value and the purchaser's machine generates a different one, your "valid" registration codes will not work on their computer.

How to send us your algorithm


We are going to script your algorithm. Right now we are using HyperTalk in HyperCard. Later we might use Java. We use a scripting language for three reasons; transportability, reliability, security. If we script it in HyperTalk we can move that script to some other system such as Java if we feel that is the best solution. When someone else provides us with executable code, and our server dies, we have no idea which executable killed it. If we write the code in a scripting language, the scripting language should not crash our server. Finally, if we cannot see what your executable is doing, we have no way to know if it is doing something it should not. So we will script your algorithm.

The variables we have to work with are USERNAME, EMAIL, and a four digit number that increments with each payment. You can of course use additional variables such as a random number or the time in seconds.

Your algorithm should start with these variables and no others. If you can program in HyperTalk, sending us HyperTalk makes this process go very fast. If not, describe the algorithm just as if you are documenting your code for someone else who does not understand the language you wrote it in (a good assumption because it is probably true). Provide 10 to 20 samples of what goes in and what comes out.

Figure out how you want to deal with the situation when the user does not supply the variable you use (no EMAIL or no USERNAME). What if they supply 300 characters worth of stuff that goes into that variable. What about characters outside of the normal lower ASCII range that might not make it through email gateways without being modified? What about upper vs lower case letters and is your algorithm sensitive to that?

Once you have signed up as a client, send all this to admin@kagi.com and we will put it in the queue for getting implemented. You should anticipate providing registration codes to your payers until we confirm that we are calculating the regisration codes correctly.

Finally, the blurb that you provide to us to send to your customers will need to be altered with placeholders for the registration code and if needed, the username and email used to generate that code. The placeholders that you would put into your blurb are and

For example:

Thank you for buying MyProg. Your registration code is "" (without the quotes) and the name you must enter exactly as shown is "" (also without the quotes). Thanks for paying for MyProg.

Modification Date: Monday, April 14, 1997


Previous, Next, FAQ Table of Contents, FAQ Feedback
Kagi
1442-A Walnut Street #392
Berkeley, CA 94709-1405
USA
kagi@kagi.com
fax +1 510 652 6589