Catalog npm
PACKAGE EXPLORERView in registry

2fa-utils

npm

TOTP and HOTP utilities.

2fahotpotptotptwo factor authentication
Versions collected24
Direct dependencies13From release 1.2.7
Last observed20 Oct, 19:12 UTC

README

Current package documentation

Two-Factor Authentication

Using the algorithm provided in RFC 4226, can generate and verify HMAC-based one-time password (HOTP) and time-based one-time password (TOTP).

Features

  • Generate base-32 encoded secrets.
  • Generate HMAC-based one-time passwords (HOTP) at a specific length.
  • Generate time-based HOTPs at a specific amount of windows.
  • Verify generated tokens.

Usage

Generating Secret

For each account, a secret must be generated and shared between the server and the client. This secret will be used to create and verify HOTPs.

const secret = twoFA.generateSecret();

Generating HOTP

HOTP requires a base32-encoded secret and a counter with time-step.

// Generate base32 secret
const secret = twoFA.generateSecret();
// Create counter with 30 seconds interval 
const counter = Math.floor(Date.now() / 30000);

const hotp = twoFA.generateHOTP(secret, counter, 6)

Generating TOTP

Generating TOTP allows you to get a HOTP in a specific time window.

const secret = twoFA.generateSecret();

// Get the current time window's token
const currentTotp = twoFA.generateTOTP(secret, 0);

// Get the future time window's token (1 window ahead)
const futureTotp = twoFA.generateTOTP(secret, 1);

// Get the past time window's token (1 window behind)
const pastTotp = twoFA.generateTOTP(secret, -1);

Verifying HOTP

Verify tokens supplied via user input.

function verifyHOTP(inputToken) {
  const secret = twoFA.generateSecret();
  const counter = Math.floor(Date.now() / 30000);

  // Actual token generated by the server
  const actualToken = twoFA.generateHOTP(secret, counter)

  if (inputToken === actualToken) return true;
  return false
}

Verifying TOTP

Verify tokens supploed via user input with a time tolerance.

const secret = twoFA.generateSecret();

const inputToken = '111111';

/* This will return true if the input token 
  - is currently valid,
  - was previously valid in the last window,
  - will be valid in the next window.
*/
const isTokenValid = twoFA.verifyTOTP(inputToken, secret, 1);

Dependencies

Author

  • Boran Seckin

License

This project is licensed under the MIT License - see the LICENSE file for details.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 24

Collected releases
VersionPublishedDirect dependenciesOpen version
1.2.7Registry latest22 Aug 202613
1.2.620 Oct 202310
1.2.524 Jun 202210
1.2.417 Apr 202211
1.2.325 Feb 202211
1.2.26 Nov 202111
1.2.129 Oct 202111
1.2.01 Sept 202111
1.1.111 Sept 202116
1.1.103 Jul 202116
1.1.910 May 202116
1.1.88 May 202116
1.1.715 Apr 202116
1.1.613 Apr 202116
1.1.523 Dec 202016
1.1.425 Nov 202016
1.1.32 Oct 202016
1.1.22 May 202015
1.1.119 Apr 202015
1.1.016 Apr 202015

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

ACCESSIBLE
boranseckin/2fa-utils

Shared repository data · GitHub

License detected in repository
MIT
License branch / ref
master
Last push
17 Oct 2026
Archived
No
Contributor identities
— · partial collection

Public sponsor counts have not been collected. These signals belong to the repository owner.

Downloads & popularity

3count
Gauge · observed snapshots21 Oct 2026
31.50
2026-10-21: 3 · observed 2026-10-21T11:29:11.1849273Z
21 Oct21 Oct

github · 1 observations shown. Missing days are unknown.

View observed values
Date / source periodValueObserved at
2026-10-2132026-10-21T11:29:11.1849273Z

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 19:12 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:b10958a8d70fce9bbb6293bcce353c0c8787f3ec845f17744ba316c82d495093