CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
Loading...
Searching...
No Matches
Fido2Ui.cpp File Reference

FIDO2 UI views and user-presence approval workflow. More...

#include "mod_fido2/Fido2Ui.h"
#include "mod_fido2/ctap2.h"
#include "mod_fido2/ctaphid.h"
#include "mod_fido2/fido2.h"
#include "mod_fido2/fido2_storage.h"
#include "cdc_core/KeyFingerprint.h"
#include "cdc_core/PinManager.h"
#include "cdc_core/Raii.h"
#include "cdc_hal/IDisplay.h"
#include "cdc_log.h"
#include "cdc_ui/I18n.h"
#include "cdc_ui/ViewStack.h"
#include "cdc_views/ConfirmView.h"
#include "cdc_views/ContextMenuView.h"
#include "cdc_views/InfoView.h"
#include "cdc_views/ListView.h"
#include "cdc_views/PinEntryView.h"
#include "cdc_views/ToastView.h"
#include <esp_attr.h>
#include <freertos/FreeRTOS.h>
#include <freertos/semphr.h>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <strings.h>

Go to the source code of this file.

Namespaces

namespace  cdc
namespace  cdc::mod_fido2

Functions

static void cdc::mod_fido2::registerStrings ()
static void cdc::mod_fido2::ensurePromptMutex ()
static void cdc::mod_fido2::onOverwriteConfirm (void *)
static void cdc::mod_fido2::onOverwriteCancel (void *)
static int cdc::mod_fido2::strcasecmp_safe (const char *a, const char *b)
 Null-safe ASCII case-insensitive comparison.
static void cdc::mod_fido2::rebuildList ()
 Rebuilds credential list view from current storage contents.
static void cdc::mod_fido2::showDetail (uint16_t display_index)
 Shows detailed view for selected credential.
static void cdc::mod_fido2::handleDelete (uint16_t display_index)
 Deletes selected credential and refreshes list.
static void cdc::mod_fido2::onListSelect (uint16_t index, void *userData)
 List selection callback opening credential detail view.
static void cdc::mod_fido2::onListMenu (uint16_t index, void *userData)
 List menu callback opening context actions for selected credential.
static void cdc::mod_fido2::restoreView ()
 Restores view stack to pre-prompt depth.
static void cdc::mod_fido2::promptComplete (fido2_user_presence_result_t result)
 Completes user-presence prompt flow with result handling.
static bool cdc::mod_fido2::onPinVerify (const char *pin)
 PIN verification callback for locked-screen approval flow.
static void cdc::mod_fido2::onPinSuccess ()
 PIN success callback approving user presence.
static void cdc::mod_fido2::onPinCancel ()
 PIN cancel callback denying user presence.
static void cdc::mod_fido2::onPinFailure (bool lockedOut)
 PIN failure callback handling lockout vs retry messaging.
static void cdc::mod_fido2::onPromptApprove (void *userData)
 Prompt approve callback; optionally triggers PIN entry on lock screen.
static void cdc::mod_fido2::onPromptDeny (void *userData)
 Prompt deny callback.
void cdc::mod_fido2::fido2_ui_init ()
 Initializes FIDO2 UI resources and list views.
cdc::ui::IViewcdc::mod_fido2::fido2_ui_get_list_view ()
 Returns FIDO2 credential list view.
const char * cdc::mod_fido2::fido2_ui_get_label ()
 Returns localized module label for menus.
fido2_user_presence_result_t cdc::mod_fido2::fido2_ui_user_presence_callback (const char *rp_id, fido2_action_t action, const char *user_name)
 User-presence callback used by FIDO2 core for approval prompts.
bool cdc::mod_fido2::fido2_ui_abort_prompt ()
 Forcibly denies any in-flight user-presence prompt.

Variables

static const char * TAG = "FIDO2_UI"
constexpr ui::I18nEntry cdc::mod_fido2::kStrings []
static ui::ListViewcdc::mod_fido2::s_listView = nullptr
 FIDO2 UI view and list state.
static ui::InfoViewcdc::mod_fido2::s_detailView = nullptr
static ui::InfoViewcdc::mod_fido2::s_promptView = nullptr
static ui::PinEntryViewcdc::mod_fido2::s_pinEntry = nullptr
static ui::ListItem cdc::mod_fido2::s_listItems [FIDO2_MAX_CREDENTIALS]
static char cdc::mod_fido2::s_labels [FIDO2_MAX_CREDENTIALS][100]
static uint8_t cdc::mod_fido2::s_sortMap [FIDO2_MAX_CREDENTIALS]
static uint8_t cdc::mod_fido2::s_listCount = 0
static SemaphoreHandle_t cdc::mod_fido2::s_promptSem = nullptr
 User-presence prompt state shared across callback and UI flow.
static SemaphoreHandle_t cdc::mod_fido2::s_promptMutex = nullptr
static volatile fido2_user_presence_result_t cdc::mod_fido2::s_promptResult = FIDO2_UP_PENDING
static char cdc::mod_fido2::s_promptRpId [FIDO2_RP_ID_MAX_LEN] = {}
static fido2_action_t cdc::mod_fido2::s_promptAction = FIDO2_ACTION_AUTHENTICATE
static uint8_t cdc::mod_fido2::s_promptReturnDepth = 0
static ui::IViewcdc::mod_fido2::s_promptReturnView = nullptr
static bool cdc::mod_fido2::s_promptWasLocked = false
static bool cdc::mod_fido2::s_promptBacklightWasOn = false
static volatile bool cdc::mod_fido2::s_promptActive = false
static SemaphoreHandle_t cdc::mod_fido2::s_overwriteSem = nullptr
 Pre-confirm modal state for overwrite warning.
static volatile bool cdc::mod_fido2::s_overwriteApproved = false

Detailed Description

FIDO2 UI views and user-presence approval workflow.

Definition in file Fido2Ui.cpp.

Variable Documentation

◆ TAG

const char* TAG = "FIDO2_UI"
static

Definition at line 32 of file Fido2Ui.cpp.