Coder Social home page Coder Social logo

opentoken's Introduction

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
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.CIPHER_AES_256_CBC}
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

opentoken's People

Contributors

xarenard avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.