'._('There was an error importing the key').'

'; }else{ $db = get_db_instance(); $stmt = $db->prepare('UPDATE users SET pgp_key = ?, tfa = 0, pgp_verified = 0 WHERE id = ?;'); $stmt->execute([$pgp_key, $user['id']]); $user['pgp_key'] = $pgp_key; } } if(isset($_POST['enable_2fa_code'])){ if($_POST['enable_2fa_code'] !== $_SESSION['enable_2fa_code']){ echo '

'._('Sorry, the code was incorrect').'

'; } else { $db = get_db_instance(); $stmt = $db->prepare('UPDATE users SET tfa = 1, pgp_verified = 1 WHERE id = ?;'); $stmt->execute([$user['id']]); $user['tfa'] = 1; } } } if(!empty($user['pgp_key'])){ if($user['tfa'] == '1'){ echo '

'._('Yay, PGP based 2FA is enabled!').'

'; } else { $gpg = gnupg_init(); gnupg_seterrormode($gpg, GNUPG_ERROR_WARNING); gnupg_setarmor($gpg, 1); $imported_key = gnupg_import($gpg, $user['pgp_key']); if($imported_key){ $key_info = gnupg_keyinfo($gpg, $imported_key['fingerprint']); foreach($key_info as $key){ if(!$key['can_encrypt']){ echo '

'._("Sorry, this key can't be used to encrypt a message to you. Your key may have expired or has been revoked.").'

'; }else{ foreach($key['subkeys'] as $subkey){ gnupg_addencryptkey($gpg, $subkey['fingerprint']); } } } $_SESSION['enable_2fa_code'] = bin2hex(random_bytes(3)); if($encrypted = gnupg_encrypt($gpg, _('To enable 2FA, please enter the following code to confirm ownership of your key:')."\n\n$_SESSION[enable_2fa_code]\n")){ echo '

'._('To enable 2FA using your PGP key, please decrypt the following PGP encrypted message and confirm the code:').'

'; echo ""; ?>