Giter Site home page Giter Site logo

peilingling / hotp-totp-generator Goto Github PK

View Code? Open in Web Editor NEW

This project forked from albertusdev/hotp-totp-generator

0.0 0.0 0.0 12 KB

A HMAC-based OTP (HOTP) and Time-based OTP (TOTP) that generates OTP tokens from OTP key with customizable hash algorithm.

License: MIT License

JavaScript 100.00%

hotp-totp-generator's Introduction

HOTP-TOTP-Generator

Version Downloads/week License

A highly customizable implementation of HMAC-based OTP (HOTP) and Time-based OTP (TOTP).

If something doesn't work, please file an issue

Installation

  • npm install hotp-totp-generator --save

Sample Usage:

  const hotpOtpGenerator = require('hotp-otp-generator')

  // Example of HOTP
  const hotpToken = hotpOtpGenerator.hotp({ key: '12345678901234567890', counter: 100 });

  // Example of TOTP
  const totpToken = hotpOtpGenerator.totp({ key: '12345678901234567890' });

Docs

HOTP Implementation

For HMAC-based One Time Password (HOTP), parameter is an object consisting of:

Key Name Type Default Value Description
key string - Unique shared secret key for encrypting C values for HMAC algorithm
counter number - 8-bytes incrementing counter value
algorithm enum: 'sha1' | 'sha256' | 'sha512' 'sha1' HMAC Algorithm used for encrypting the counter
digits number 6 Return digits of HOTP value

Example:

Customizing Default Algorithm

const hotpTotpGenerator = require('hotp-totp-generator');
hotpTotpGenerator.hotp({
  key: "my-hotp-key",
  counter: 123,
  algorithm: 'sha256',
});

Customizing Default Return Digits

const hotpTotpGenerator = require('hotp-totp-generator');
hotpTotpGenerator.hotp({
  key: "my-hotp-key",
  counter: 123,
  digits: 10,
});

TOTP Implementation

For Time-based One Time Password (TOTP), parameter is an object consisting of:

Key Name Type Default Value Description
key string - Unique shared secret key for encrypting epoch time for HMAC algorithm
T number current unix time Epoch time (Unix time)
T0 number 0 The Unix time to start counting time steps
X number 30 The time step in seconds
algorithm enum: 'sha1' | 'sha256' | 'sha512' 'sha1' HMAC Algorithm used for encrypting the unix time
digits number 6 Return digits of HOTP value

Example:

Customizing Unix Time

const hotpTotpGenerator = require('hotp-totp-generator');
hotpTotpGenerator.totp({
  key: "my-totp-key",
  T: 123456
});

Customizing T0 and X

const hotpTotpGenerator = require('hotp-totp-generator');
hotpTotpGenerator.totp({
  key: "my-totp-key",
  T0: 10,
  X: 60,
});

Contributing

Any contribution for this library will be very appreciated! Feel free to open issues / pull requests! If you are interested on contributing, you can check out several things todo in the TODO section below.

TODO

  • Make CLI tool
  • Add unit tests
  • Add code coverage status

hotp-totp-generator's People

Contributors

albertusdev 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.