https://github.com/defnot001/totp-generator-ts
Generates TOTP-Tokens as specified in RFC 6238.
https://github.com/defnot001/totp-generator-ts
jssha npm-package totp totp-generator totp-tokens typescript zod
Last synced: 2 months ago
JSON representation
Generates TOTP-Tokens as specified in RFC 6238.
- Host: GitHub
- URL: https://github.com/defnot001/totp-generator-ts
- Owner: defnot001
- Created: 2023-02-02T09:46:32.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-02T16:19:44.000Z (about 1 year ago)
- Last Synced: 2025-03-20T00:11:13.652Z (3 months ago)
- Topics: jssha, npm-package, totp, totp-generator, totp-tokens, typescript, zod
- Language: TypeScript
- Homepage:
- Size: 55.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README

[](https://badge.fury.io/js/totp-generator-ts)
[](https://www.npmjs.com/package/totp-generator-ts)# Time-based one-time password generator (TOTP)
This package is heavily inspired by [bellstrand/totp-generator](https://github.com/bellstrand/totp-generator). It uses the [JsSHA package](https://www.npmjs.com/package/jssha) to generate one-time passwords described in [RFC 6238](https://www.rfc-editor.org/rfc/rfc6238).
Major benefits of this package are the usage of [Typescript](https://www.typescriptlang.org/) and [tsup](https://github.com/egoist/tsup) so it can provide a CommonJS and ESModule version. It also uses [zod](https://zod.dev/) as a validation library to parse user inputs.
To use this package, simply install is using [npm](https://docs.npmjs.com/about-npm), [yarn](https://yarnpkg.com/) or [pnpm](https://pnpm.io/).
```sh
npm install totp-generator-ts
```You can look at the documentation in the code using documenting comments or follow this guide.
## Guide
This guide will only show the usage of this package with **Typescript** but it can also be used in any **Javascript** Application.
First, import the package into your program.
```ts
import { TokenGenerator } from 'totp-generator-ts';
```Instantiate an object from the class, optionally passing configuration. The default settings are:
- SHA-1 Algorithm
- 30 second time-step size
- 6 digit tokens
- current time as the timestampYou can change the values using the constructor or changing them later in your program.
```ts
const tokenGen = new TokenGenerator({
algorithm: 'SHA-512',
period: 60,
digits: 8,
timestamp: 1675325019,
});tokenGen.digits = 6;
```To generate a token, simply used the public function `getToken()` which takes a string as an argument.
The string has to be **at least** one character long (it should most definitly be longer) and can only contain **base32 characters** defined in [RFC 4684](https://datatracker.ietf.org/doc/html/rfc4648).
```ts
import { TokenGenerator } from 'totp-generator-ts';const tokenGen = new TokenGenerator();
const token = tokenGen.getToken('JBSWY3DPEHPK3PXP');
console.log(token);
```This package will validate all your inputs and throw errors accordingly.
Contrary to the specifications for the TOTP-Algorithm described in [RFC 6238](https://www.rfc-editor.org/rfc/rfc6238), this program does not support time values greater than a 32bit-integer and will therefore **NOT WORK** after the year 2038!
If you find any issues or have suggestions please make sure to report them on the [issue tracker](https://github.com/defnot001/totp-generator-ts/issues).
You can also write me an [email](mailto:[email protected]) and/or join my [discord server](https://discord.gg/wmJ3WBYcZF).
Thank you for using my repository and good luck with your next secure program!