Handle mneomonic recovery code during 2FA recover

This commit is contained in:
Neeraj Gupta 2021-11-15 21:39:32 +05:30
parent 9b333807a2
commit e1b683734b
No known key found for this signature in database
GPG key ID: 3C5A1684DC1729E1

View file

@ -12,6 +12,9 @@ import { logError } from 'utils/sentry';
import { recoverTwoFactor, removeTwoFactor } from 'services/userService';
import { AppContext, FLASH_MESSAGE_TYPE } from 'pages/_app';
import { PAGES } from 'types';
const bip39 = require('bip39');
// mobile client library only supports english.
bip39.setDefaultWordlist('english');
export default function Recover() {
const router = useRouter();
@ -43,6 +46,13 @@ export default function Recover() {
const recover = async (recoveryKey: string, setFieldError) => {
try {
// check if user is entering mnemonic recovery key
if (recoveryKey.trim().indexOf(' ') > 0) {
if (recoveryKey.trim().split(' ').length !== 24) {
throw new Error('recovery code should have 24 words');
}
recoveryKey = bip39.mnemonicToEntropy(recoveryKey);
}
const cryptoWorker = await new CryptoWorker();
const twoFactorSecret: string = await cryptoWorker.decryptB64(
encryptedTwoFactorSecret.encryptedData,