@cibel/opentoken

OpenToken implementation

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
@cibel/opentoken
0100.7.94 years ago4 years agoMinified + gzip package size for @cibel/opentoken in KB

Readme

opentoken
CircleCI Known Vulnerabilities codecov npm GitHub
- [Example](#example)
- [Configuration](#configuration)

About

OpenToken implementation https://tools.ietf.org/html/draft-smith-opentoken-02

Installation

``` npm install --save @cibel/opentoken ```

Usage

Example

Import

```js const OpenToken = require('@cibel/opentoken'); ```

Encoding

Instantiation
```js // instantiate with pbe password const otk = new OpenToken('mypassword'); //or instantiate with options const otk = new OpenToken('mypassword',{notAfter: 300,renewUntil: 300, cipher: OpenToken.CIPHERAES256CBC}); ```
Encoding from raw data
```js //Encode from raw OpenToken format const subject = 'Alice'; const payload = 'foo=bar\nbar=baz'; const token = otk.encode(payload, subject); console.log(token); //T1RLAQHYWXG5ELaGj5iUPQr-Enh5Jnm1jxB1xYzddUN5Et3jhYtn4coNAABwodDZZuXqG-lAHs9QGYeyjILE-KmR3lqnD-0wTpEUmQH98WaW0x0fscslpO8A8uqyfWaCuTkeSQOvkit7on1Sb-qg
dnGKLmt0sWigzPhRnNfv5RnpN8lByqwZgL8VIDq3IbSrHGVyvtZ55KC6n1ttQ ```
Encoding from Map
```js // Encode from map const subject = 'Alice'; const payload = new Map('foo','bar'
,'bar','baz'); const token = otk.encodeMap(payload, subject); console.log(token); //T1RLAQHYWXG5ELaGj5iUPQr-Enh5Jnm1jxB1xYzddUN5Et3jhYtn4coNAABwodDZZuXqG-lAHs9QGYeyjILE-KmR3lqnD-0wTpEUmQH98WaW0x0fscslpO8A8uqyfWaCuTkeSQOvkit7on1Sb-qgdnGKLmt0sWigzPhRnNfv5RnpN8lByqwZgL8VIDq3IbSrHGVyvtZ55KC6n1ttQ ```

Decoding

Instantiation
```js const otk = new OpenToken('mypassword'); ```
Decode to OpenToken format
```js const data = otk.decode(token); console.log(data); ```
Decode to Map
```js const data = otk.decodeAsMap(token); console.log(data); //Map { 'subject' => 'Alice','not-before' => '2019-12-06T14:12:53Z','not-on-or-after' => '2019-12-06T14:17:53Z','renew-until' => '2019-12-06T14:17:53Z','foo' => 'bar','bar' => 'baz' } ```

Validation

```js const otk = new OpenToken('mypassword'); const data = otk.validate(token); //If we want to validate the subject as well const subject = 'Alice'; const data = otk.validate(token,subject); console.log(data); ```

Configuration

Constants
  • OpenToken.CIPHERAES256CBC
  • OpenToken.CIPHERAES128CBC
  • OpenToken.CIPHERDESTRIPLE168CBC
Constructor
| Arguments | Type | Required | Description | Default Value | | ------------ | ------------------------|------------|-------------------------------| --------------------------- | password | string |Yes | Password | N/A | | options {} | {notAfter, renewUntil, cipher} | No | OpenToken validation options | {notAfter:300,renewUntil:300,OpenToken.CIPHERAES256CBC}|
Encoding parameters
[token]=encode(payload, subject) | Argument | Required | Type | Default | Description | Default value | |------------|-----------|---------------------------|-------|---------------------------------|-----------------| |payload | Yes |string | N/A | Raw OpenToken payload | N/A | |subject | No |string | 'opentoken' | OpenToken subject to match with | N/A | [token]=encodeMap(payload, subject) | Argument | Required | Value | Default | Description | Default value | |------------|-----------|---------------------------|-------|---------------------------------|-----------------| |payload | Yes |Map | N/A | Key value Opentoken format | N/A | |subject | No |string | 'opentoken' | OpenToken subject to match with | N/A |
Decoding parameters
[payload]=decode(token) | Argument | Required | Type | Default | Description | Default value | |------------|-----------|---------------------------|-------|---------------------------------|-----------------| |token | Yes |string | N/A | OpenToken payload | N/A | [payloadAsMap]=decodeAsMap(token) | Argument | Required | Type | Default | Description | Default value | |------------|-----------|---------------------------|-------|---------------------------------|-----------------| |token | Yes |string | N/A | OpenToken payload as Map | N/A |
Validate parameters
[payload]=validate(token,subject) | Argument | Required | Value | Default | Description | Default value | |------------|-----------|---------------------------|-------|---------------------------------|-----------------| |token | Yes |string | N/A | OpenToken payload | N/A | |subject | No |string | N/A | OpenToken subject to match with | N/A |

References

https://tools.ietf.org/html/draft-smith-opentoken-02

License

@cibel/opentoken is MIT licensed