otpauth
Version:
One Time Password (HOTP/TOTP) library for Node.js, Deno and browsers
83 lines (59 loc) • 2.54 kB
Markdown
[](https://github.com/hectorm/otpauth/tags)
[](https://github.com/hectorm/otpauth/actions)
[](https://david-dm.org/hectorm/otpauth)
[](https://david-dm.org/hectorm/otpauth?type=dev)
[](https://www.npmjs.com/package/otpauth)
***
One Time Password (HOTP/TOTP) library for Node.js, Deno and browsers.
## Usage
### Node.js
```javascript
import * as OTPAuth from 'otpauth';
// Create a new TOTP object.
let totp = new OTPAuth.TOTP({
issuer: 'ACME',
label: 'AzureDiamond',
algorithm: 'SHA1',
digits: 6,
period: 30,
secret: 'NB2W45DFOIZA' // or "OTPAuth.Secret.fromBase32('NB2W45DFOIZA')"
});
// Generate a token.
let token = totp.generate();
// Validate a token.
let delta = totp.validate({
token: token,
window: 1
});
// Convert to Google Authenticator key URI.
// otpauth://totp/ACME:AzureDiamond?issuer=ACME&secret=NB2W45DFOIZA&algorithm=SHA1&digits=6&period=30
let uri = totp.toString(); // or "OTPAuth.URI.stringify(totp)"
// Convert from Google Authenticator key URI.
let parsedTotp = OTPAuth.URI.parse(uri);
```
```javascript
// @deno-types="https://deno.land/x/otpauth/dist/otpauth.d.ts"
import * as OTPAuth from 'https://deno.land/x/otpauth/dist/otpauth.esm.js'
// Same as above...
```
```html
<script src="https://cdn.jsdelivr.net/npm/otpauth/dist/otpauth.umd.min.js"></script>
<script>
// Same as above...
</script>
```
See the documentation page.
> [https://hectorm.github.io/otpauth/](https://hectorm.github.io/otpauth/)
In Node.js, the same algorithms as
[`Crypto.createHmac`](https://nodejs.org/api/crypto.html#crypto_crypto_createhmac_algorithm_key_options)
function are supported, since it is used internally. In Deno and browsers, the `SHA1`, `SHA224`, `SHA256`, `SHA384`,
`SHA512`, `SHA3-224`, `SHA3-256`, `SHA3-384` and `SHA3-512` algorithms are supported by using the
[](https://github.com/Caligatio/jsSHA) library.
[](https://github.com/hectorm/otpauth/blob/master/LICENSE.md)
© [Héctor Molinero Fernández](https://hector.molinero.dev/).