I am trying to generate OTP in express js using speakeasy https://www.npmjs.com/package/speakeasy.
Here is the sample code i've tried
var speakeasy = require('speakeasy');
var secret = speakeasy.generateSecret({length:32});
//generate token
var code = speakeasy.totp({
secret:secret.base32,
encoding: 'base32',
step:300,
window:100,
counter:123
});
//verify token
var verified = speakeasy.totp.verify({
secret:secret.base32 ,
encoding: 'base32',
token: code
});
When verify the token console.log(verified) always return false.
I've followed this github link https://github.com/speakeasyjs/speakeasy/issues/52 but it didn't help
I don't know about speakeasy, but we've successfully used notp in our project to generate one-time passwords we use with Express, maybe this might help : https://www.npmjs.com/package/notp
module.exports = (num = 4) => {
return Math.random().toFixed(num).substr(`-${num}`)
}
OTP: 9749
Add step value given while generating token for verify.
var verified = speakeasy.totp.verify({
secret:secret.base32 ,
encoding: 'base32',
token: code,
step: 300
});