> ## Documentation Index
> Fetch the complete documentation index at: https://help.cryptolens.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Node Js

## Introduction

The easiest way to set up licensing in your Node JS application is by using our Node SDK. It's available on the link below:

* [https://github.com/Cryptolens/cryptolens-nodejs](https://github.com/Cryptolens/cryptolens-nodejs)

## Getting started

### Installation

```bash theme={null}
npm add cryptolens
```

### Key Verification

To verify a license key, you can use the code below. The RSAPublicKey, token and the product id can be found on [<u>this page</u>](/examples/key-verification).

```javascript theme={null}
const key = require('cryptolens').Key;
const Helpers = require('cryptolens').Helpers;

var RSAPubKey = "Your RSA Public key, which can be found here: https://app.cryptolens.io/User/Security";
var result = key.Activate(token="Access token with with Activate permission", RSAPubKey, ProductId=3349, Key="GEBNC-WZZJD-VJIHG-GCMVD", MachineCode=Helpers.GetMachineCode());

result.then(function(license) {

    // success
    
    // Please see https://app.cryptolens.io/docs/api/v3/model/LicenseKey for a complete list of parameters.
    console.log(license.Created);

}).catch(function(error) {
    // in case of an error, an Error object is returned.
    console.log(error.message);
});
```

### Offline activation (saving/loading licenses)

Assuming the license key verification was successful, we can save the result in a file so that we can use it instead of contacting Cryptolens.

First, we need to add the reference to the helper methods:

```javascript theme={null}
const Helpers = require('cryptolens').Helpers;
```

We can now proceed and save it as a string.

```javascript theme={null}
var licenseString = Helpers.SaveAsString(license);
```

When loading it back, we can use the code below:

```javascript theme={null}
var license = Helpers.LoadFromString(RSAPubKey, licenseString);
```

If you want to make sure that the license file is not too old, you can specify the maximum number of days as shown below (after 30 days, this method will return null).

```javascript theme={null}
var license = Helpers.LoadFromString(RSAPubKey, licenseString, 30);
```
