This commit is contained in:
Manav Rathi 2024-05-25 15:24:16 +05:30
parent 19e08cf803
commit e88b5c99ba
No known key found for this signature in database

View File

@ -1,4 +1,5 @@
import log from "@/next/log"; import log from "@/next/log";
import { ensure } from "@/utils/ensure";
import { recoverTwoFactor, removeTwoFactor } from "@ente/accounts/api/user"; import { recoverTwoFactor, removeTwoFactor } from "@ente/accounts/api/user";
import { PAGES } from "@ente/accounts/constants/pages"; import { PAGES } from "@ente/accounts/constants/pages";
import { TwoFactorType } from "@ente/accounts/constants/twofactor"; import { TwoFactorType } from "@ente/accounts/constants/twofactor";
@ -35,8 +36,8 @@ export default function Recover({
const { logout } = appContext; const { logout } = appContext;
const [encryptedTwoFactorSecret, setEncryptedTwoFactorSecret] = const [encryptedTwoFactorSecret, setEncryptedTwoFactorSecret] =
useState<B64EncryptionResult>(null); useState<Omit<B64EncryptionResult, "key"> | null>(null);
const [sessionID, setSessionID] = useState(null); const [sessionID, setSessionID] = useState<string | null>(null);
const [doesHaveEncryptedRecoveryKey, setDoesHaveEncryptedRecoveryKey] = const [doesHaveEncryptedRecoveryKey, setDoesHaveEncryptedRecoveryKey] =
useState(false); useState(false);
@ -70,7 +71,6 @@ export default function Recover({
setEncryptedTwoFactorSecret({ setEncryptedTwoFactorSecret({
encryptedData: resp.encryptedSecret, encryptedData: resp.encryptedSecret,
nonce: resp.secretDecryptionNonce, nonce: resp.secretDecryptionNonce,
key: null,
}); });
} }
} catch (e) { } catch (e) {
@ -111,13 +111,14 @@ export default function Recover({
recoveryKey = bip39.mnemonicToEntropy(recoveryKey); recoveryKey = bip39.mnemonicToEntropy(recoveryKey);
} }
const cryptoWorker = await ComlinkCryptoWorker.getInstance(); const cryptoWorker = await ComlinkCryptoWorker.getInstance();
const { encryptedData, nonce } = ensure(encryptedTwoFactorSecret);
const twoFactorSecret = await cryptoWorker.decryptB64( const twoFactorSecret = await cryptoWorker.decryptB64(
encryptedTwoFactorSecret.encryptedData, encryptedData,
encryptedTwoFactorSecret.nonce, nonce,
await cryptoWorker.fromHex(recoveryKey), await cryptoWorker.fromHex(recoveryKey),
); );
const resp = await removeTwoFactor( const resp = await removeTwoFactor(
sessionID, ensure(sessionID),
twoFactorSecret, twoFactorSecret,
twoFactorType, twoFactorType,
); );