Skip to content

Commit

Permalink
feat: add support for Time based OTP
Browse files Browse the repository at this point in the history
  • Loading branch information
vigneshshanmugam committed Sep 13, 2024
1 parent 9600695 commit 040ad2f
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 0 deletions.
23 changes: 23 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
"http-proxy": "^1.18.1",
"kleur": "^4.1.5",
"micromatch": "^4.0.7",
"otpauth": "^9.3.2",
"pirates": "^4.0.5",
"playwright": "=1.45.1",
"playwright-chromium": "=1.45.1",
Expand Down
64 changes: 64 additions & 0 deletions src/core/totp.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/**
* MIT License
*
* Copyright (c) 2020-present, Elastic NV
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
*/

import { TOTP } from "otpauth";

type TOTPOptions = {
/**
* Service provider name.
*/
issuer?: string
/**
* Account Identifier.
*/
label?: string
/**
* Include issuer prefix in label.
*/
issuerInLabel?: boolean
/**
* The encoded secret key used to generate the TOTP.
*/
secret?: string
/**
* The algorithm used to generate the TOTP.
* @default 'SHA1'
*/
algorithm?: string
/**
* Length of the generated token.
* @default 6
*/
digits?: number
/**
* Interval in seconds for which the token is valid.
* @default 30
*/
period?: number
};

export function createTOTP(options: TOTPOptions) {
return new TOTP({ ...options });
}
1 change: 1 addition & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ export {
after,
} from './core';
export { expect } from './core/expect';
export { createTOTP } from './core/totp';

/**
* Export all the driver related types to be consumed
Expand Down

0 comments on commit 040ad2f

Please sign in to comment.