What is the best way to protect a Cocoa shareware application from software piracy? Are there developer libraries/tools out there for this task?
Allan Odgaard - using openssl for license keys is one way to do it.
Let's see here.
Home-brewed approaches:
Recommended Service Solutions:
- Aquaticmac
- eSellerate - Also handles transaction processing
This list is by no means comprehensive, but rather just a brief mention of some of the popular choices. Obviously, they can only detour piracy so there is clearly a compromise on how much time should be invested. I'd also suggest googling Wil Shipley's (delicious app) thoughts about why developers shouldn't go to great lengths to prevent piracy.
AquaticPrime is a simple, easy Cocoa licensing framework. It uses securely signed plist's as it’s “license key”, which makes it simple to embed arbitrary information into the license.
With AquaticPrime one would generally distribute the license as a small file, rather than as a text string, which may be an advantage or disadvantage for your application.
The framework includes code to generate licenses in C#, Carbon, Cocoa, PHP, Python, Ruby and STL. It also includes a GUI one-off license generator. My experience with it has been great.
I nice solution that I can recommend is the potion store (from potion factory) together with the cocoafob classes (from gleb dolgich). They provide code generation and verification and an actual store for selling your app(s)
both are open source
Speaking of Wil Shipley, he has made his in-application payment and registration framework available for licensing under the name of Golden % Braeburn. I believe that Delicious Library and SousChef both use this framework.
Don't forget to do some reading on Common methods of cracking Cocoa apps. Be wary of method swizzling and Input Managers. You don't have to go out of your way to protect your app -- A cracker will always outdo you -- but don't be naive either!