npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@codejockie/otp-gen

v1.0.4

Published

An OTP generator that implements RFC4226 (HOTP) and RFC6238 (TOTP)

Downloads

71

Readme

OTP Gen

Build Status codecov npm

A One Time Password generator with a customisable implementation of the HMAC based One Time Password (HOTP) and Time based One Time Password (TOTP).

Installation

npm install @codejockie/otp-gen

Code Sample:

  import { hotp, totp } from "@codejockie/otp-gen"

  // HOTP
  const hotpToken = hotp({ key: "shared_secret", counter: 20 })

  // TOTP
  const totpToken = totp({ key: "shared_secret" })

API

HOTP

HMAC based One Time Password (HOTP) function takes an object as an argument as follows:

Key | Type | Default | Value Description --------- | --------- | ------- | ----------------- key | string | - | Unique shared secret key for encrypting C (counter) values for HMAC algorithm counter | number | - | 8-byte incrementing counter value algorithm | HashAlgo| "sha1" | HMAC Algorithm to use digits | number | 6 | Return digits of HOTP value, according to RFC4226, length >= 6

TOTP

Time based One Time Password (TOTP) function takes an object as an argument as follows:

Key | Type | Default | Value Description --------- | --------- | ------- | ----------------- key | string | - | Shared secret used for encryption epochTime | number | Current Unix time | Unix Epoch time, defaults to current Unix time t0 | number | 0 | Unix time used to start counting time steps timeStepX | number | 30 | Time step in seconds, default 30s algorithm | HashAlgo| "sha1" | HMAC Algorithm to use digits | number | 6 | Return digits of TOTP value, according to RFC6238, length >= 6

HashAlgo is an enum consisting of these values: "sha1" | "sha256" | "sha512"

Examples:

Using a different hashing algorithm

import { hotp } from "@codejockie/otp-gen"

hotp({
  key: "shared_secret",
  counter: 12345,
  algorithm: "sha256",
})

Using a different return digits

import { totp } from "@codejockie/otp-gen"

hotp({
  key: "shared_secret",
  counter: 12345,
  digits: 10,
})

Using a different unix time

import { totp } from "@codejockie/otp-gen"

totp({
  key: "shared_secret",
  epochTime: 123456
})

Using a different T0 and Time Step X

import { totp } from "@codejockie/otp-gen"

totp({
  key: "shared_secret",
  t0: 10,
  timeStepX: 60,
})

TypeScript

This library has first hand support for TS.

TypeScript Usage

  import { HashAlgo, hotp, totp } from "@codejockie/otp-gen"

  // HOTP
  const hotpToken = hotp({ key: "shared_secret", counter: 20, algorithm: HashAlgo.SHA512 })

  // TOTP
  const totpToken = totp({ key: "shared_secret", algorithm: HashAlgo.SHA512 }) 

Contributing

Pull Requests are welcomed!

Issues

Please file an issue if you encounter any.