Generate and validate time-based OTP (one time password) for multifactor authentication.
npm install otp-code-generator-and-validator
$ npm install otp-code-generator-and-validator
`
Usage
Generate Secret
`javascript
import {generateSecret} from "otp-code-generator-and-validator";
let secret = generateSecret();
console.log(secret); // IGJZFST44NAHVVXT
`
$3
- Returns: \ 16 character setup key.
Generate Token
`javascript
import {generateTOTP} from "otp-code-generator-and-validator";
let tokens = {
previous: generateTOTP({
secret: secret,
now: Date.now() - 30000
}),
current: generateTOTP({
secret: secret
}),
next: generateTOTP({
secret: secret,
now: Date.now() + 30000
})
}
console.log(tokens); // {previous: "608121", current: "394406", next: "714744"}
`
$3
- secret \ 16 character setup key.
- now [optional] \ Token creation time in Unix format. Default: Date.now().
- timeStep [optional] \ Token change time in seconds. Default: 30.
- Returns: \ 6 digit token.
Verify Token
`javascript
import {verifyTOTP} from "otp-code-generator-and-validator";
let verify = verifyTOTP({
secret: secret,
token: tokens.current
});
console.log(verify); // true | false
`
$3
- secret \ 16 character setup key.
- token \ 6 digit token.
- now [optional] \ Token creation time in Unix format. Default: Date.now().
- timeStep [optional] \ Token change time in seconds. Default: 30.
- Returns: \ true | false.
Generate URL
`javascript
import {generateKeyUri} from "otp-code-generator-and-validator";
let url = generateKeyUri({
secret: secret,
account: "Account Name"
});
console.log(url); // otpauth://totp/Account%20Name?secret=IGJZFST44NAHVVXT&algorithm=SHA1&digits=6&period=30
`
$3
- secret \ 16 character setup key.
- account \ User account name.
- app [optional] \ The name of the application that adds verification. Default: null.
- timeStep [optional] \ Token change time in seconds. Default: 30.
- Returns: \ A link that can be opened by authentication apps.
Generate QR Code
`javascript
import {generateQRCode} from "otp-code-generator-and-validator";
let code = await generateQRCode({
text: url
});
console.log(code); // data:image/png;base64,iVBORw0KGg...0lAlwyn0==
`
$3
- text \ Text that will be encoded in QR code.
- options [optional] \
See QR Code options. Default:
`json
{
"errorCorrectionLevel": "medium",
"type": "image/png",
"width": 500,
"color": {
"dark": "#000000",
"light": "#ffffff"
}
}
``