hotp-totp-generator
v1.1.3
Published
A highly customizable implementation of HMAC-based OTP (HOTP) and Time-based OTP (TOTP).
Downloads
9
Readme
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 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 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