0.7.9 • Published 4 years ago

@cibel/opentoken v0.7.9

Weekly downloads
7
License
MIT
Repository
github
Last release
4 years ago

opentoken

CircleCI Known Vulnerabilities codecov npm GitHub

About

OpenToken implementation

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

Installation

npm install --save @cibel/opentoken

Usage

Example

Import

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

Encoding

Instantiation
// instantiate with pbe password
const otk = new OpenToken('mypassword');

//or instantiate with options
const otk = new OpenToken('mypassword',{notAfter: 300,renewUntil: 300, cipher: OpenToken.CIPHER_AES_256_CBC});
Encoding from raw data
//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
// 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-qg_dnGKLmt0sWigzPhRnNfv5RnpN8lByqwZgL8VIDq3IbSrHGVyvtZ55KC6n1ttQ**

Decoding

Instantiation
const otk = new OpenToken('mypassword');
Decode to OpenToken format
const data = otk.decode(token);
console.log(data);
Decode to Map
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

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.CIPHER_AES_256_CBC
  • OpenToken.CIPHER_AES_128_CBC
  • OpenToken.CIPHER_DES_TRIPLE_168_CBC
Constructor
ArgumentsTypeRequiredDescriptionDefault Value
passwordstringYesPasswordN/A
options {}{notAfter, renewUntil, cipher}NoOpenToken validation options{notAfter:300,renewUntil:300,OpenToken.CIPHER_AES_256_CBC}
Encoding parameters

[token]=encode(payload, subject)

ArgumentRequiredTypeDefaultDescriptionDefault value
payloadYesstringN/ARaw OpenToken payloadN/A
subjectNostring'opentoken'OpenToken subject to match withN/A

[token]=encodeMap(payload, subject)

ArgumentRequiredValueDefaultDescriptionDefault value
payloadYesMapN/AKey value Opentoken formatN/A
subjectNostring'opentoken'OpenToken subject to match withN/A
Decoding parameters

[payload]=decode(token)

ArgumentRequiredTypeDefaultDescriptionDefault value
tokenYesstringN/AOpenToken payloadN/A

[payloadAsMap]=decodeAsMap(token)

ArgumentRequiredTypeDefaultDescriptionDefault value
tokenYesstringN/AOpenToken payload as MapN/A
Validate parameters

[payload]=validate(token,subject)

ArgumentRequiredValueDefaultDescriptionDefault value
tokenYesstringN/AOpenToken payloadN/A
subjectNostringN/AOpenToken subject to match withN/A

References

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

License

@cibel/opentoken is MIT licensed