add generateTotpUri
This commit is contained in:
parent
3b0abbc015
commit
1454ff4641
17
README.md
17
README.md
|
@ -41,6 +41,11 @@ var authenticator = window.Authenticator;
|
||||||
authenticator.generateKey().then(function (formattedKey) {
|
authenticator.generateKey().then(function (formattedKey) {
|
||||||
// "acqo ua72 d3yf a4e5 uorx ztkh j2xl 3wiz"
|
// "acqo ua72 d3yf a4e5 uorx ztkh j2xl 3wiz"
|
||||||
|
|
||||||
|
authenticator.generateTotpUri(formattedKey, "john.doe@email.com", "ACME Co", 'SHA1', 6, 30);
|
||||||
|
//
|
||||||
|
// otpauth://totp/ACME%20Co:john.doe@email.com?secret=ACQOUA72D3YFA4E5UORXZTKHJ2XL3WIZ&issuer=ACME%20Co&algorithm=SHA1&digits=6&period=30
|
||||||
|
|
||||||
|
|
||||||
authenticator.generateToken(formattedKey).then(function (formattedToken) {
|
authenticator.generateToken(formattedKey).then(function (formattedToken) {
|
||||||
// "957 124"
|
// "957 124"
|
||||||
|
|
||||||
|
@ -108,6 +113,18 @@ validates a time-based token within a +/- 30 second (90 seconds) window
|
||||||
|
|
||||||
returns `null` on failure or an object such as `{ delta: 0 }` on success
|
returns `null` on failure or an object such as `{ delta: 0 }` on success
|
||||||
|
|
||||||
|
### generateTotpUri(formattedKey, accountName, issuer, algorithm, digits, period)
|
||||||
|
|
||||||
|
generates an `OTPAUTH://` scheme URI for QR Code generation.
|
||||||
|
|
||||||
|
**OTPAuth Scheme**
|
||||||
|
|
||||||
|
* <https://github.com/google/google-authenticator/wiki/Key-Uri-Format>
|
||||||
|
* `otpauth://totp/<<ISSUER>>:<<ACCOUNT_NAME>>?secret=<<BASE32_KEY>>&issuer=<<ISSUER>>`
|
||||||
|
* `otpauth://totp/<<ISSUER>>:<<ACCOUNT_NAME>>?secret=<<BASE32_KEY>>&issuer=<<ISSUER>>&algorithm=<<ALGO>>&digits=<<INT>>&period=<<SECONDS>>`
|
||||||
|
|
||||||
|
Note that `ISSUER` is specified twice for backwards / forwards compatibility.
|
||||||
|
|
||||||
QR Code
|
QR Code
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
|
|
@ -81,6 +81,18 @@ function verifyGoogleAuthToken(key, token) {
|
||||||
Authenticator.generateKey = generateGoogleAuthKey;
|
Authenticator.generateKey = generateGoogleAuthKey;
|
||||||
Authenticator.generateToken = generateGoogleAuthToken;
|
Authenticator.generateToken = generateGoogleAuthToken;
|
||||||
Authenticator.verifyToken = verifyGoogleAuthToken;
|
Authenticator.verifyToken = verifyGoogleAuthToken;
|
||||||
|
Authenticator.generateTotpUri = function (secret, accountName, issuer, algo, digits, period) {
|
||||||
|
// Full OTPAUTH URI spec as explained at
|
||||||
|
// https://github.com/google/google-authenticator/wiki/Key-Uri-Format
|
||||||
|
return 'otpauth://totp/'
|
||||||
|
+ encodeURI(issuer || '') + ':' + encodeURI(accountName || '')
|
||||||
|
+ '?secret=' + secret.replace(/[\s\.\_\-]+/g, '').toUpperCase()
|
||||||
|
+ '&issuer=' + encodeURIComponent(issuer || '')
|
||||||
|
+ '&algorithm=' + (algo || 'SHA1')
|
||||||
|
+ '&digits=' + (digits || 6)
|
||||||
|
+ '&period=' + (period || 30)
|
||||||
|
;
|
||||||
|
};
|
||||||
|
|
||||||
}(
|
}(
|
||||||
'undefined' !== typeof window ? (window.Authenticator = {}) : module.exports
|
'undefined' !== typeof window ? (window.Authenticator = {}) : module.exports
|
||||||
|
|
Loading…
Reference in New Issue