Cleanup - unused files / unused exports / duplicate exports
[ProtonMail-WebClient.git] / packages / shared / lib / settings / twoFactor.ts
blob7688169a50db7c02ad408c8875f9a02d66685451
1 import { hasBit } from '../helpers/bitset';
2 import { generateSharedSecret, getUri } from '../helpers/twofa';
3 import type { UserSettings } from '../interfaces';
4 import { SETTINGS_2FA_ENABLED } from '../interfaces';
6 export const TWO_FA_CONFIG = {
7     PERIOD: 30,
8     DIGITS: 6,
9     ALGORITHM: 'SHA1',
12 export const getHasTOTPEnabled = (Enabled?: number) => {
13     return hasBit(Enabled || 0, SETTINGS_2FA_ENABLED.OTP);
16 export const getHasFIDO2Enabled = (Enabled?: number) => {
17     return hasBit(Enabled || 0, SETTINGS_2FA_ENABLED.FIDO2);
20 export const getHasTOTPSettingEnabled = (userSettings?: Pick<UserSettings, '2FA'>) => {
21     return getHasTOTPEnabled(userSettings?.['2FA']?.Enabled);
24 export const getHasFIDO2SettingEnabled = (userSettings?: Pick<UserSettings, '2FA'>) => {
25     return getHasFIDO2Enabled(userSettings?.['2FA'].Enabled);
28 export const getTOTPData = (identifier: string) => {
29     const sharedSecret = generateSharedSecret();
30     const period = TWO_FA_CONFIG.PERIOD;
31     const digits = TWO_FA_CONFIG.DIGITS;
32     const uri = getUri({
33         identifier,
34         issuer: 'Proton',
35         sharedSecret,
36         period,
37         digits,
38         algorithm: TWO_FA_CONFIG.ALGORITHM,
39     });
40     return {
41         sharedSecret,
42         digits,
43         period,
44         uri,
45     };