A lightweight License file generator and parser for NodeJS.
-
Generate an RSA 2048 bit private key
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
-
Extract the public key from an RSA keypair
openssl rsa -pubout -in private_key.pem -out public_key.pem
const licenseFile = require('nodejs-license-file');
const template = [
'====BEGIN LICENSE====',
'{{&licenseVersion}}',
'{{&applicationVersion}}',
'{{&firstName}}',
'{{&lastName}}',
'{{&email}}',
'{{&expirationDate}}',
'{{&serial}}',
'=====END LICENSE====='
].join('\n');
try {
const licenseFileContent = licenseFile.generate({
privateKeyPath: 'path/to/key.pem',
template,
data: {
licenseVersion: '1',
applicationVersion: '1.0.0',
firstName: 'Name',
lastName: 'Last Name',
email: 'some@email.com',
expirationDate: '12/10/2025'
}
});
console.log(licenseFileContent);
} catch (err) {
console.log(err);
}
This will produce a license key, which uses the default template and will look similar to this:
====BEGIN LICENSE====
1
1.0.0
Name
Last Name
some@email.com
12/10/2025
xxxxxxxxxxxxxxxxxxxxx
=====END LICENSE=====
const licenseFile = require('nodejs-license-file');
try {
const data = licenseFile.parse({
publicKeyPath: 'path/to/key.pub',
licenseFilePath: 'path/to/file.lic',
template
});
console.log(data);
} catch (err) {
console.log(err);
}
There is an execution result:
{
valid: true,
serial: 'oZDqoEr2avwhAqwV4HInq9otNzeBeD/azq2yn2jA ...',
data: {
licenseVersion: '1',
applicationVersion: '1.0.0',
firstName: 'Name',
lastName: 'Last Name',
email: 'some@email.com',
expirationDate: '12/10/2025'
}
}
NOTICE: All numeric data will be converted to strings after parsing. You need to take care of a parsed data types.
const licenseFile = require('nodejs-license-file');
try {
const licence = `
====BEGIN LICENSE====
1
1.0.0
Name
Last Name
some@email.com
12/10/2025
xxxxxxxxxxxxxxxxxxxxx
=====END LICENSE=====
`;
const data = licenseFile.parse({
publicKeyPath: 'path/to/key.pub',
licenseFile: licence,
template
});
console.log(data);
} catch (err) {
console.log(err);
}
There is an execution result:
{
valid: true,
serial: 'oZDqoEr2avwhAqwV4HInq9otNzeBeD/azq2yn2jA ...',
data: {
licenseVersion: '1',
applicationVersion: '1.0.0',
firstName: 'Name',
lastName: 'Last Name',
email: 'some@email.com',
expirationDate: '12/10/2025'
}
}
NOTICE: All numeric data will be converted to strings after parsing. You need to take care of a parsed data types.