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 = ;hotpTotpGenerator;
Customizing Default Return Digits
const hotpTotpGenerator = ;hotpTotpGenerator;
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 = ;hotpTotpGenerator;
T0
and X
Customizing const hotpTotpGenerator = ;hotpTotpGenerator;
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