
Product
Socket for Jira Is Now Available
Socket for Jira lets teams turn alerts into Jira tickets with manual creation, automated ticketing rules, and two-way sync.
software-license-key
Advanced tools
Library for generating and validating software license keys with data embedded in the key.
This is a library for generating and validating software license keys with data embedded in the license key.
npm install software-license-key
You can then require the library in your code by using:
const SoftwareLicenseKey = require('software-license-key');
Key generation can be done manually or by leveraging the library. You can generate your own key pairs for usage by using the following commands:
#generate private key
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
#generate public key from private
openssl rsa -pubout -in private_key.pem -out public_key.pub
You can pass these keys to the library by calling the constructor with a parameter that is a buffer of the key itself.
const fs = require('fs');
//instantiate with the private key
var privateKeyFile = fs.readFileSync('/path/to/cert.pem', 'utf8');
var generator = new SoftwareLicenseKey(privateKeyFile);
//instantiate with the public key
var publicKeyFile = fs.readFileSync('/path/to/cert.pub', 'utf8');
var validator = new SoftwareLicenseKey(publicKeyFile);
var privateKey = "-----BEGIN RSA PRIVATE KEY-----\n" +
"MIIEogIBAAKCAQEAwYXYEB7ubL1nKk/VltbQTGU1WNvwpH9VgAO6ZZH2J0uKQXAY\n" +
"rDASO0OLsy/RnyWN+IS4hwr73KuxCppEG/6UOVlVKymCii/d5DrPjTnW5TtOD0hn\n" +
"/SxxyW1IKaPJbWzhxlpbPygfytDAwS2FTRsDem4SJVLxVERsAI1RkKnN1rCtWb+u\n" +
"V5PLga5ORAD0bCSniDdbEkkWLmWHgo6CYEUwUGDBXeqaXNEI+TXXZ+U3rIFejSZ8\n" +
"+6GVKd7GG72EL1MS110S2MHOkrFRlA7v+7BrtGGx2bWdoX13wp5s7DVhJmmeakiQ\n" +
"LOs7P3QvMvUjfOOef5uem1wJmL16xfsPP1UZxwIDAQABAoIBAHKSWyiwJ1gZikpy\n" +
"mXGEHC4efUbub7nz6RqxGlmn4KPDBUdYpkLK8wBDLSIY3XHrOfI4IUdSKWqr+1Tb\n" +
"oBcy0W5ihRnYqYBGdof4iYiDBccRJVXG+EnbVkJ6gI6meUpffAuC0yLBDpF0pam4\n" +
"2YKcy6JgKD4QrO/G0mpBQFj1Lvg6+O3/DGwYfsWrn+Zen/4S/fHJ8NE6stQTHQcD\n" +
"pE8kM/0po/wmzbvyKa5ygcl7LRFa4d0Lr7jngpj5KIVhJ0FA9uORJaS4vK5v9v58\n" +
"mRKednWl0hnpspi469vo695gTfovOMrkiSoIMa14V8mP+1h0CAYWv9NZkrLQGC3u\n" +
"Alj+KwECgYEA8fIF85Nwh60SbU/phmBbmGsjiB+blE+d1DFro0LiTIoMefVa0IhL\n" +
"+JVRCKnNFqkAyzQDXcGYEzTXbMdZkMxS8ZvlfnTuUnGw0a336NH45M4qunOU4VCG\n" +
"o1Ek6Cyu9nk4/ZNS7VsBiqtVBaGXINZN1jIPDQJQN3Udt6qkzsVqNO8CgYEAzMO6\n" +
"MEtWLp+mtyLDCjOQgFr+RWoaiABPqdrKivWjDcgIr3WUr1CPy3Nv8YAlfiWMRbRB\n" +
"+AfzXkW1vFx0jAVO70TqRS0MKkRjl1hKLZgyIsts3CoWhMWlMkKtTPXq1cIBUIrB\n" +
"/Kq9EC9YPUvaVf41tptBJ6XB/VcES4MsjRJaWKkCgYAuo0Gkb0Jc1O7dZW8VeROO\n" +
"8PAbeERMNYCt+4zNHsJykJXRGIuV8P/7/gRt0BV5jcBaaz9O3leLND9md5L7R3eh\n" +
"nTSCyNV7zPCRqqBEH92DdX5lDIyhVh1t8+FSY/KiDkH/F1v/5vAII/iyqjBwov7E\n" +
"EEg4cL63wfqlgd5dAU70vwKBgARmMBnZhIB77ZkBpi8R7IjVa6ESJn/FgfCkQrW5\n" +
"kUc6hPVAEXGyyWQVltIZbrTHGbxlowUxJolf9geV9OsNMiTx1hamYRyHW5xkyTMx\n" +
"keItfKk+Pj2cAXCS/iYpImJ1SJHyaTiEcotmeP7YIli2nXDO5Rd0+DX5KJ52sv5U\n" +
"5pwBAoGAMNpoQcibyyjzuEAssiUP1QnyzxeM+o4PnbE02k8IRXLZoyHENkt+PQHN\n" +
"tqYo2Gf5rSMg/SaDCgBrHlOb2WbQPawiAewjkZxlMD2wFzp7/bhTn3cN45bEhn/l\n" +
"KyHMXak3IycYjYCznallCFUQ6OCiuTho+l891jTFuF/xgzI13EU=\n" +
"-----END RSA PRIVATE KEY-----";
var generator = new SoftwareLicenseKey(privateKey);
var publicKey = "-----BEGIN PUBLIC KEY-----\n" +
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwYXYEB7ubL1nKk/VltbQ\n" +
"TGU1WNvwpH9VgAO6ZZH2J0uKQXAYrDASO0OLsy/RnyWN+IS4hwr73KuxCppEG/6U\n" +
"OVlVKymCii/d5DrPjTnW5TtOD0hn/SxxyW1IKaPJbWzhxlpbPygfytDAwS2FTRsD\n" +
"em4SJVLxVERsAI1RkKnN1rCtWb+uV5PLga5ORAD0bCSniDdbEkkWLmWHgo6CYEUw\n" +
"UGDBXeqaXNEI+TXXZ+U3rIFejSZ8+6GVKd7GG72EL1MS110S2MHOkrFRlA7v+7Br\n" +
"tGGx2bWdoX13wp5s7DVhJmmeakiQLOs7P3QvMvUjfOOef5uem1wJmL16xfsPP1UZ\n" +
"xwIDAQAB\n" +
"-----END PUBLIC KEY-----";
var validator = new SoftwareLicenseKey(publicKey);
If you'd prefer to have the library generate the key pairs for you, just instantiate it without passing a key.
var generator = new SoftwareLicenseKey();
To generate a license key you must instantiate with a private key or no key for automatic generation.
var generator = new SoftwareLicenseKey();
var licenseKeyData = {"fakeField": "some data"}
console.log(generator.generateLicense(licenseKeyData));
To validate a license key you must use the corresponding public key for the private key that generated the license key.
var publicKey = "-----BEGIN PUBLIC KEY-----\n" +
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwYXYEB7ubL1nKk/VltbQ\n" +
"TGU1WNvwpH9VgAO6ZZH2J0uKQXAYrDASO0OLsy/RnyWN+IS4hwr73KuxCppEG/6U\n" +
"OVlVKymCii/d5DrPjTnW5TtOD0hn/SxxyW1IKaPJbWzhxlpbPygfytDAwS2FTRsD\n" +
"em4SJVLxVERsAI1RkKnN1rCtWb+uV5PLga5ORAD0bCSniDdbEkkWLmWHgo6CYEUw\n" +
"UGDBXeqaXNEI+TXXZ+U3rIFejSZ8+6GVKd7GG72EL1MS110S2MHOkrFRlA7v+7Br\n" +
"tGGx2bWdoX13wp5s7DVhJmmeakiQLOs7P3QvMvUjfOOef5uem1wJmL16xfsPP1UZ\n" +
"xwIDAQAB\n" +
"-----END PUBLIC KEY-----";
var validator = new SoftwareLicenseKey(publicKey);
var licenseKey = "====BEGIN LICENSE KEY====\n" +
"YgjrPp6+YEKin4Gox6CuEKwlu3qjvEGMu7GpelAjhnHLakQp9HdbzEZPMlFiD9++g1MKjCOu7lAwTpwXXIc/3YlsS2codN/piwAyx9HlbkCeXBk3PB+fOrv8a80Op7OZPTiY8As5YWrpfBLYZ79fOvsHqfZdc/i46aHYfX0NhW0K9RJfFgBFQRU1SaB4lDdOHedn2S6cBq5YyEgLBEIRPaheQR8/ojsa/KsI/oCC1m/0Jy1331aU/u/egGIGD8nh275zIoipJxmPzRszy6MRP8kTL+80NVneKWt7YFsNrQF9kvq6ggX9TijTsffJiUD2rkmRNVZ90LMPQKmg3eaL6g==||U2FsdGVkX1+29gUVOieMmxu/cfgZk9J4amjuzjX3aInFzubpSpSi/262FEyVmX/d\n" +
"ht0rbXKzg1gfRtnK1UU7cm+AyFKA0acCB+RN8F+GAkGFlUnH5YDI78j//IdPAWScqf5hEUIsrIC/RLIbKmDv8dWZ8+E7100xBt4IZ38IJ348Bcm0INcrfkjJNyj0okurWFjzubKCOcNxtEg931U8T34rQMSQhz1iVeNnLajpyO2/lNTMY00Xb7bYKVMpQsWRkGE3t60PYyH5EQWSksoK/R6Z4NymP4FMgRWAV8HnR4VbnCwJlkNHnmurdOFuQB0/kzoFCquXPJhaQRnbAlihaBC2GDamhBTnAdiEEQUHnGkKlh0kcIDWZI7UmoaMW52dri4BAXv/ZLwcyQrc1SnCMg==\n" +
"====END LICENSE KEY====";
var decryptedLicenseKeydata = validator.validateLicense(licenseKey);
console.log(JSON.stringify(decryptedLicenseKeydata));
See CHANGELOG.md for release history and security updates.
FAQs
Library for generating and validating software license keys with data embedded in the key.
The npm package software-license-key receives a total of 2,807 weekly downloads. As such, software-license-key popularity was classified as popular.
We found that software-license-key demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket for Jira lets teams turn alerts into Jira tickets with manual creation, automated ticketing rules, and two-way sync.

Company News
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.

Security News
NIST will stop enriching most CVEs under a new risk-based model, narrowing the NVD's scope as vulnerability submissions continue to surge.