Easily Unity software licensing with Cryptolens! Unity is a powerful cross-platform game engine. Since it uses C# as the scripting language, we can easily integrate it with Cryptolens client library. In this post, we explain how you can add license key verification into a Unity game and briefly cover payment integration.
Adding software licensing
Download the binaries (please pick those without “System.Management”).
Once licensing is in place, the next step is to add payment integration. Since Cryptolens is cloud-based, you can easily integrate it with your own billing system or use our existing integrations with popular platforms such as Stripe and PayPal. You can read more about how this can be accomplished here.
Please feel free to reach out should you have any questions!
Not a customer yet? Sign Up for a free trial and implement our software licensing system in Unity within minutes.
Many times your customers may have either restricted internet access or no internet access at all. Although Cryptolens is a cloud-based licensing solution, you can still use it to protect offline devices. In this post, we cover three ways internet access can be restricted and how license key verification can be performed.
Periodic internet access
If your users are connected to the internet on a regular basis, we can cache the response from the “Activate” method each time we are able to contact the server. If, at some point, internet connection would not be present, we would fallback on a cached version of the license object.
When using this approach, it’s important to define how long time your users can be offline. There is a field called “SignDate” in the license key object, which is the time when the response was signed by the server (i.e. the last time you successfully called Activate). So, if you only want to allow your users to be offline for 30 days, you can compare the current date with the “SignDate”.
License server (re-routing)
If your users have certain devices that have no direct internet access, one option is to use a license server, which will re-route all requests through a server hosted by the user. Only the server has internet access.
There is currently a Windows version of the server, freely available on GitHub.
Air gap (no internet)
If the devices have no internet access at all, we can use a similar idea that was described in periodic internet access, with the only difference that we always fallback on the license file.
In Cryptolens, there are three ways you can create such a file:
In the dashboard
Next to each license key, there is a yellow button which can be used to create license files:
Using activation forms
Activation forms allow your customers to download activation files themselves.
Using the API
If you want to automate license file creation, you can either call the Activate method using one of our client APIs or call the Web API directly (eg. using curl).
Floating licenses makes it easier for your customers to switch between machines that actively run your software, without having to deactivate them first. For instance, you can constrain the number of concurrent users to 10, but still allow the software to be installed on eg. 100 computers.
In Cryptolens, floating licensing works by letting your app to regularly poll the server to check if the number of concurrent users has been exceeded, which can be accomplished with the code snippet below:
import io.cryptolens.methods.*;
import io.cryptolens.models.*;
public static void main(String args[]) {
String RSAPubKey = "RSA Public Key";
String auth = "Access token";
LicenseKey license = Key.Activate(auth, RSAPubKey, new ActivateModel(3349, "MTMPW-VZERP-JZVNZ-SCPZM", Helpers.GetMachineCode(), 300, 1));
if (license == null || !Helpers.IsOnRightMachine(license, true, true)) {
System.out.println("The license does not work.");
} else {
System.out.println("The license is valid!");
System.out.println("It will expire: " + license.Expires);
}
}
Normally, if the app stops polling the server, that user will be automatically deactivated within the specified period of time. However, if you want to deactivate it instantly, you can use the code below:
import io.cryptolens.methods.*;
import io.cryptolens.models.*;
public static void main(String args[]) {
String auth = "";
boolean result = Key.Deactivate(auth, new DeactivateModel(3349, "MTMPW-VZERP-JZVNZ-SCPZM", Helpers.GetMachineCode(), true));
if (result == true) {
System.out.println("Deactivation successful.");
} else {
System.out.println("Deactivation failed.");
}
}
If you want to manage and create license keys for Java applications, you have a few different alternatives to choose between. The simplest way to implement software licensing is to code a license key generator that performs partial key verification. However, for more serious and long-term use cases, a software licensing solution that performs full key verification is to be preferred. In this blog, we will briefly cover those two alternatives to help you license and protect your Java applications with license keys.
License Key Generator in Java
A software license solution has to create a lock in your Java project that only unlocks the application if the user inserts a valid license key. Creating a license key generator is a shortcut to licensing where your code performs partial key verification and generates subsets of license keys. However, such a solution is far from optimal for larger-scale use. The structure that you use to generate license keys will leak over time, and it is quite easy to bypass the homemade and lightweight licensing system. If you want to learn more, please read this blog post.
LaaS – Manage and Create License Keys for Java Applications
Coding a software licensing system that performs full key verification and has the necessary licensing features you need for an application in production will take a lot of time and money. Outsourcing software licensing to a Licensing as a Service (LaaS) provider such as Cryptolens is then a more optimal choice for many software companies. Then, you get all of the advanced licensing features at a fraction of the price of coding and maintaining a licensing system yourself.
Getting started with our software license manager for Java applications is easy! Our Java client API allows you to easily verify license keys, and you can read more about how to add it to your project on GitHub. You then have to sign up to our platform for free and add a code snippet to your Java code.
Below is an example of the code that you can use in your application.
import io.cryptolens.Cryptolens;
import io.cryptolens.Helpers;
import io.cryptolens.LicenseKey;
public class Main {
public static void main(String[] args) {
String RSAPubKey = "<RSAKeyValue><Modulus>sGbvxwdlDbqFXOMlVUnAF5ew0t0WpPW7rFpI5jHQOFkht/326dvh7t74RYeMpjy357NljouhpTLA3a6idnn4j6c3jmPWBkjZndGsPL4Bqm+fwE48nKpGPjkj4q/yzT4tHXBTyvaBjA8bVoCTnu+LiC4XEaLZRThGzIn5KQXKCigg6tQRy0GXE13XYFVz/x1mjFbT9/7dS8p85n8BuwlY5JvuBIQkKhuCNFfrUxBWyu87CFnXWjIupCD2VO/GbxaCvzrRjLZjAngLCMtZbYBALksqGPgTUN7ZM24XbPWyLtKPaXF2i4XRR9u6eTj5BfnLbKAU5PIVfjIS+vNYYogteQ==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
Cryptolens cryptolens = Cryptolens.getDefault();
cryptolens.setRSAPublicKey(RSAPubKey);
Cryptolens.ActivateResponse response =
cryptolens.activate( "WyIyNTk1IiwidVVrQm94OGlYS3pHZlhTc0x6Rm9mN1piektrT0FSd0REaFZ0ZXZJMSJd"
, 3349
, "ICVLD-VVSZR-ZTICT-YKGXL"
, Helpers.GetMachineCode()
);
if (!response.successful()) {
System.out.println("Failed to activate!");
Cryptolens.ActivateServerError er = response.getServerError();
Exception ex = response.getException();
if (er != null) {
System.out.println("Server error: " + er);
}
if (ex != null) {
ex.printStackTrace(System.out);
}
return;
}
LicenseKey licenseKey = response.getLicenseKey();
System.out.println("Activation was successful!");
System.out.println(licenseKey.getKey());
System.out.println(licenseKey.getF1());
}
}
Not a customer yet? Sign Up for a free trial and implement our software licensing system within minutes.
How do you create license keys for software in Python? Well, setting up a Python license key system is effortless with Cryptolens. Instead of coding your own solution from scratch, we have detailed guides and SDKs so you can set up key verification and protect your Python code. If you want to read more about the code-it-yourself VS outsourcing route, please read this blog post.
We have also made the following YouTube video that goes into detail about how you implement a Python license key manager:
Creating License Keys for a Python Application
A software license management solution has to establish a lock in your software code that only allows entry to people who put in a valid digital license key. If the key is invalid, or if they are unable to insert a key, the system should deny entry to the application. Without this system in place, anyone can access your software app, and it becomes very difficult to sell such a product. That is why a software licensing solution is important when protecting your code against unauthorized users.
1. Let us begin with the SDK. Cryptolens offers comprehensive SDKs in your favorite programming languages, including Python, to make it effortless to implement a Licensing as a Service (LaaS) platform within minutes. Install our Python SDK here.
2. Create a free Cryptolens account to get access to our easy-to-use dashboard where you can create and manage license keys and restrictions. You can also find your access tokens and other parameters that you have to insert into your code. Cryptolens offers you a way to implement licensing for free at your own pace, and you only have to pay when you get customers of your own. Check out our pricing plans here, and you can always get started for free.
3. The last step for implementing a Python license key system is to insert a code snippet into your application’s code. We provide comprehensive help guides to make the implementation seem effortless. See the full code snippet in your programming language here. This is an overview of what the Python code snippet looks like:
from licensing.helpers import Helpers
from licensing.models import Response, RSAPublicKey
from licensing.methods import Key
pubKey = "<RSAKeyValue><Modulus>sGbvxwdlDbqFXOMlVUnAF5ew0t0WpPW7rFpI5jHQOFkht/326dvh7t74RYeMpjy357NljouhpTLA3a6idnn4j6c3jmPWBkjZndGsPL4Bqm+fwE48nKpGPjkj4q/yzT4tHXBTyvaBjA8bVoCTnu+LiC4XEaLZRThGzIn5KQXKCigg6tQRy0GXE13XYFVz/x1mjFbT9/7dS8p85n8BuwlY5JvuBIQkKhuCNFfrUxBWyu87CFnXWjIupCD2VO/GbxaCvzrRjLZjAngLCMtZbYBALksqGPgTUN7ZM24XbPWyLtKPaXF2i4XRR9u6eTj5BfnLbKAU5PIVfjIS+vNYYogteQ==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>"
res = Key.activate(token="WyIyNTU1IiwiRjdZZTB4RmtuTVcrQlNqcSszbmFMMHB3aWFJTlBsWW1Mbm9raVFyRyJd",\
rsa_pub_key=pubKey,\
product_id=3349, key="ICVLD-VVSZR-ZTICT-YKGXL", machine_code="test")
if res[0] == None:
print("An error occured: {0}".format(res[1]))
else:
print("Success")
AutoCAD® is a powerful computer-aided design (CAD) software. It’s also quite extensible since anyone can easily create plug-ins. In this post, we briefly summarise several tips on how to securely license and sell your AutoCAD plug-ins.
Creating the plugin
If you are about to create a new AutoCAD plug-in, we would recommend to review the following tutorial provided by Autodesk.
Adding software licensing
Assuming you have Visual Studio 2017 open, you can add a simple key verification mechanism as described below:
Right click on your project in the Solution Explorer and click on Manage NuGet Packages.
Add the code-snippet form this page in the code where the plugin loads for the first time.
Selling the plug-in
One way to sell AutoCAD plug-ins is by publishing them in the Autodesk App Store, where a basic licensing mechanism is already provided. The problem with this approach is that the licensing models available are quite limited (eg. you can only charge your customers once for the plug-in and they will be able to use it in perpetuity). For instance, selling your plug-in as a service (subscription model) is not supported.
A better approach is to still publish your plug-in in the Autodesk App Store and set it to be a free app. You can then ask your customers to get a separate license key to be able to unlock all features.
You can read more about various ways of selling your software in our help pages. I would also recommend to check out the available licensing models.
If you have any questions, please feel free to reach out!
One of the problems experienced by software vendors when selling to large customers is that some of their machines that will be running the software do not have direct internet access.
Although it is still possible to use offline activation, having an active connection to Cryptolens makes things much easier for both you as the software vendor and your customers.
To solve this, we can use a license server that will re-route all the license verification requests from the computers in the network to Cryptolens, as shown below:
If you have already implemented key verification in your application, the license server can be set up quite quickly in two steps:
On a mission to make software licensing more accessible, we have recently improved our Web API to make integrations with other services easier. For example, we have made it possible to return license keys as plain text, which many third party platforms require.
When selling software, there are two problems that need to be solved: payment processing and software licensing. Cryptolens core has always been the comprehensive licensing API. If you are using SendOwl or DPD, you can keep using them for payments and Cryptolens for software licensing.
If you have a new project, I would recommend to check out our new tutorial about built-in recurring payments and payment forms.
Not a customer yet? Sign Up for a free trial and implement our software licensing system within minutes.