Use same lock values as mobile clients
[ProtonMail-WebClient.git] / packages / shared / lib / helpers / twofa.ts
blob31c1e1ad16e6a151da9c55514e59eac3a937ed97
1 import { encode } from 'hi-base32';
3 export const generateSharedSecret = (length = 20) => {
4     const randomBytes = crypto.getRandomValues(new Uint8Array(length));
5     return encode(randomBytes);
6 };
8 interface GetUriArguments {
9     identifier: string;
10     sharedSecret: string;
11     issuer?: string;
12     digits?: number;
13     algorithm?: string;
14     period?: number;
16 export const getUri = ({
17     identifier,
18     sharedSecret,
19     issuer = 'ProtonMail',
20     digits = 6,
21     algorithm = 'SHA1',
22     period = 30,
23 }: GetUriArguments) => {
24     return `otpauth://totp/${identifier}?secret=${sharedSecret}&issuer=${issuer}&algorithm=${algorithm}&digits=${digits}&period=${period}`;