Remove client-side isLoggedIn value
[ProtonMail-WebClient.git] / packages / srp / lib / keys.ts
blobda6fb640088260a17a91915fc6c10d770e4bec61
1 import bcrypt from 'bcryptjs';
3 import { arrayToBinaryString, binaryStringToArray, decodeBase64, encodeBase64 } from '@proton/crypto/lib/utils';
5 import { BCRYPT_PREFIX } from './constants';
7 /**
8  * Compute the key password.
9  */
10 export const computeKeyPassword = async (password: string, salt: string) => {
11     if (!password || !salt || salt.length !== 24 || password.length < 1) {
12         throw new Error('Password and salt required.');
13     }
14     const saltBinary = binaryStringToArray(decodeBase64(salt));
15     const hash: string = await bcrypt.hash(password, BCRYPT_PREFIX + bcrypt.encodeBase64(saltBinary, 16));
16     // Remove bcrypt prefix and salt (first 29 characters)
17     return hash.slice(29);
20 /**
21  * Generate salt for a key.
22  */
23 export const generateKeySalt = () => encodeBase64(arrayToBinaryString(crypto.getRandomValues(new Uint8Array(16))));