1.1.3 • Published 6 years ago

hotp-totp-generator v1.1.3

Weekly downloads
8
License
MIT
Repository
github
Last release
6 years ago

HOTP-TOTP-Generator

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

If something doens't work, please file an issue

Installation

  • npm install hotp-totp-generator --save

Sample Usage:

  var 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 NameTypeDefaultValue Description
keystring-Unique shared secret key for encrypting C values for HMAC algorithm
counternumber-8-bytes incrementing counter value
algorithmenum: 'sha1' \| 'sha256' \| 'sha512''sha1'HMAC Algorithm used for encrypting the counter
digitsnumber6Return 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 NameTypeDefaultValue Description
keystring-Unique shared secret key for encrypting epoch time for HMAC algorithm
Tnumbercurrent unix timeEpoch time (Unix time)
T0number0The Unix time to start counting time steps
Xnumber30The time step in seconds
algorithmenum: 'sha1' \| 'sha256' \| 'sha512''sha1'HMAC Algorithm used for encrypting the unix time
digitsnumber6Return 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 would be very appreciated! Please open an issue / 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 code coverage status
  • Add npm status
  • Add unit tests
1.1.3

6 years ago

1.1.2

6 years ago

1.1.1

6 years ago

1.1.0

6 years ago

1.0.0

6 years ago