CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
Loading...
Searching...
No Matches
cdc::mod_password Namespace Reference

Classes

class  PasswordModule
struct  PasswordEntry
class  PasswordStore
struct  WizardState
struct  PasswordPayload

Functions

static void registerStrings ()
static bool isValidSlot (uint16_t slot)
 Validates that a slot number is within the configured password range.
static void cmd_password_list (const char *args)
 Serial command handler listing all password entries.
static void cmd_password_get (const char *args)
 Serial command handler printing one password entry by index.
static bool isPlaceholder (const char *s)
 Serial command handler adding one password entry.
static void generateRandomPassword (char *out, size_t outSize)
 Generates a 16-character random password from charset a-zA-Z0-9$!%=.
static void cmd_password_add (const char *args)
static void cmd_password_edit (const char *args)
 Serial command handler editing one field of a password entry. Usage: PASSWORD_EDIT <index> <field> <new value...> Field: title | username | password | url | totp | notes.
static void cmd_password_del (const char *args)
 Serial command handler deleting one password entry by index.
static void cmd_password (const char *args)
static void registerCommands ()
 Registers serial commands exposed by the password module.
static void freeListBuffers ()
 Releases dynamic buffers used by the password list view.
static bool ensureListBuffers ()
 Ensures list and entry buffers are allocated for current store capacity.
static void rebuildList ()
 Rebuilds password list items from sorted store entries.
static void onTypePassword (void *userData)
 Types currently selected password through attached keyboard provider.
static void showDetails (uint16_t slot)
 Shows full entry details in the info view for a slot.
static void wizardFinish ()
 Persists wizard add/edit changes and returns to list view.
static void pushT9WizardStep (const char *title, const char *initialText, uint16_t maxLen, ui::T9InputView::SaveCallback onSave)
 Pushes a configured T9 input step for wizard flow.
static void onWizardTitle (const char *text)
 Saves title field and advances to username step.
static void onWizardUsername (const char *text)
 Saves username field and advances to password step.
static void onWizardPassword (const char *text)
 Saves password field; an "x" input generates a random 16-char password via the shared generator. Then advances to URL step.
static void onWizardUrl (const char *text)
 Saves URL field and advances to optional TOTP slot step.
static void onWizardTotp (const char *text)
 Validates and saves optional TOTP slot, then advances to notes step.
static void onWizardNotes (const char *text)
 Saves notes field and completes wizard persistence.
static void wizardStart ()
 Starts add-entry wizard with empty fields.
static void wizardEdit (uint16_t slot)
 Starts edit-entry wizard prefilled with existing slot data.
static void onMenuView ()
 Opens details view for currently active entry.
static void onMenuEdit ()
 Opens edit wizard for currently active entry.
static void onMenuDeleteConfirm (void *userData)
 Confirmation callback deleting selected entry slot.
static void onMenuDelete ()
 Opens delete confirmation dialog for currently active entry.
static void onListMenu (uint16_t index, void *userData)
 Opens contextual action menu for selected list entry.
static void onListSelect (uint16_t index, void *userData)
 Handles direct selection from list view (view existing or add new).
static bool importPasswordEntry (const cJSON *je, void *user)
 Maps and upserts one vault entry from its JSON representation.
static void copyText (char *dst, size_t dstSize, const char *src)
 Copies text into bounded destination buffer.
const char * skipSpaces (const char *s)
 Advances over leading ASCII whitespace in a C string.
const char * nextToken (const char *s, char *out, size_t outSize)
 Extracts one whitespace-delimited token from a string.

Variables

constexpr uint8_t PASSWORD_TITLE_LEN = 24
constexpr uint8_t PASSWORD_USERNAME_LEN = 64
constexpr uint8_t PASSWORD_PASSWORD_LEN = 64
constexpr uint8_t PASSWORD_URL_LEN = 96
constexpr size_t PASSWORD_PAYLOAD_MAX
constexpr size_t PASSWORD_FIXED_PAYLOAD
constexpr size_t PASSWORD_NOTES_LEN = PASSWORD_PAYLOAD_MAX - PASSWORD_FIXED_PAYLOAD
constexpr ui::I18nEntry kStrings []
static constexpr const char * CMD_MODULE = "password"
 Serial command handlers for password module.
static bool s_commandsRegistered = false
static const cdc::serial::SubCommand kPasswordSubs []
static ui::ListView s_listView
 Password module UI state and reusable view instances.
static ui::T9InputView s_t9Input
static ui::InfoView s_infoView
static bool s_viewsInitialized = false
static ui::ListItems_listItems = nullptr
static PasswordStore::EntryIndexs_entries = nullptr
static uint16_t s_entryCount = 0
static uint16_t s_capacity = 0
static uint16_t s_activeSlot = 0
static WizardState s_wizard = {}
static constexpr uint16_t NOTES_INPUT_MAX
static char s_passwordToType [PasswordStore::PASSWORD_LEN+1] = {}
 Shared output buffer used for keyboard typing callback payload.
static constexpr int kSchemaVer = 1
 Schema version written to and expected from the password backup section.

Function Documentation

◆ cmd_password()

void cdc::mod_password::cmd_password ( const char * args)
static

Definition at line 405 of file PasswordModule.cpp.

References cdc::serial::dispatchSubCommand(), and kPasswordSubs.

Referenced by registerCommands().

◆ cmd_password_add()

◆ cmd_password_del()

void cdc::mod_password::cmd_password_del ( const char * args)
static

Serial command handler deleting one password entry by index.

Parameters
argsCommand arguments (<index>).

Definition at line 380 of file PasswordModule.cpp.

References cdc::mod_password::PasswordStore::deleteEntry(), cdc::mod_password::PasswordStore::instance(), isValidSlot(), nextToken(), and cdc::serial::Console::printf().

◆ cmd_password_edit()

◆ cmd_password_get()

◆ cmd_password_list()

void cdc::mod_password::cmd_password_list ( const char * args)
static

Serial command handler listing all password entries.

Parameters
argsUnused command arguments.

Definition at line 85 of file PasswordModule.cpp.

References cdc::mod_password::PasswordStore::instance(), and cdc::serial::Console::printf().

◆ copyText()

void cdc::mod_password::copyText ( char * dst,
size_t dstSize,
const char * src )
static

Copies text into bounded destination buffer.

Parameters
dstDestination buffer.
dstSizeDestination size.
srcSource string.

Definition at line 33 of file PasswordStore.cpp.

Referenced by cdc::mod_password::PasswordStore::addEntry(), cdc::mod_password::PasswordStore::listEntriesSorted(), cdc::mod_password::PasswordStore::readEntry(), and cdc::mod_password::PasswordStore::updateEntry().

◆ ensureListBuffers()

bool cdc::mod_password::ensureListBuffers ( )
static

Ensures list and entry buffers are allocated for current store capacity.

Returns
true when buffers are ready for use.

Definition at line 465 of file PasswordModule.cpp.

References cdc::mod_password::PasswordStore::capacity(), cdc::mod_password::PasswordStore::instance(), s_capacity, s_entries, and s_listItems.

Referenced by rebuildList().

◆ freeListBuffers()

void cdc::mod_password::freeListBuffers ( )
static

Releases dynamic buffers used by the password list view.

Definition at line 452 of file PasswordModule.cpp.

References s_capacity, s_entries, s_entryCount, and s_listItems.

Referenced by cdc::mod_password::PasswordModule::stop().

◆ generateRandomPassword()

void cdc::mod_password::generateRandomPassword ( char * out,
size_t outSize )
static

Generates a 16-character random password from charset a-zA-Z0-9$!%=.

Parameters
outOutput buffer (must hold at least 17 bytes).

Definition at line 161 of file PasswordModule.cpp.

References cdc::hal::getSecureElementInstance().

Referenced by cmd_password_add(), and onWizardPassword().

◆ importPasswordEntry()

bool cdc::mod_password::importPasswordEntry ( const cJSON * je,
void * user )
static

Maps and upserts one vault entry from its JSON representation.

Title is the entry's identity: an existing entry with the same title is overwritten (backup wins), otherwise a new slot is allocated. Returns false for malformed entries or storage failures so the caller can tally them as failed.

Parameters
jeJSON array element.
userUnused.
Returns
true if the entry was stored.

Definition at line 998 of file PasswordModule.cpp.

References cdc::mod_password::PasswordStore::instance(), LOG_W, cdc::mod_password::PasswordEntry::notes, cdc::mod_password::PasswordEntry::password, TAG, cdc::mod_password::PasswordEntry::title, cdc::mod_password::PasswordStore::TOTP_SLOT_NONE, cdc::mod_password::PasswordEntry::totpSlot, cdc::mod_password::PasswordEntry::url, and cdc::mod_password::PasswordEntry::username.

Referenced by cdc::mod_password::PasswordModule::importBackup().

◆ isPlaceholder()

bool cdc::mod_password::isPlaceholder ( const char * s)
static

Serial command handler adding one password entry.

Parameters
argsCommand arguments (<title> <username|- > <password> <url|- > [totpSlot] [notes]).

Definition at line 153 of file PasswordModule.cpp.

Referenced by cmd_password_add().

◆ isValidSlot()

bool cdc::mod_password::isValidSlot ( uint16_t slot)
static

Validates that a slot number is within the configured password range.

Parameters
slotLogical slot number.
Returns
true if slot index is in range.

Definition at line 76 of file PasswordModule.cpp.

References cdc::mod_password::PasswordStore::instance().

Referenced by cmd_password_add(), cmd_password_del(), cmd_password_edit(), and cmd_password_get().

◆ nextToken()

const char * cdc::core::nextToken ( const char * s,
char * out,
size_t outSize )
inline

Extracts one whitespace-delimited token from a string.

Supports \ (backslash-space) as an escaped literal space inside a token, so tokens may contain space characters when escaped.

Parameters
sInput cursor position.
outOutput token buffer (will be null-terminated on success).
outSizeOutput buffer capacity.
Returns
Pointer to the next unread input position, or nullptr when no token exists.

Definition at line 31 of file StringUtils.h.

Referenced by cmd_password_add(), cmd_password_del(), cmd_password_edit(), and cmd_password_get().

◆ onListMenu()

void cdc::mod_password::onListMenu ( uint16_t index,
void * userData )
static

Opens contextual action menu for selected list entry.

Parameters
indexSelected row index.
userDataOptional user pointer (unused).

Definition at line 805 of file PasswordModule.cpp.

References onMenuDelete(), onMenuEdit(), onMenuView(), s_activeSlot, s_entries, s_entryCount, cdc::ui::showContextMenu(), cdc::ui::tr(), and wizardStart().

Referenced by cdc::mod_password::PasswordModule::getMenuItems().

◆ onListSelect()

void cdc::mod_password::onListSelect ( uint16_t index,
void * userData )
static

Handles direct selection from list view (view existing or add new).

Parameters
indexSelected row index.
userDataOptional user pointer (unused).

Definition at line 830 of file PasswordModule.cpp.

References s_activeSlot, s_entries, s_entryCount, showDetails(), and wizardStart().

Referenced by cdc::mod_password::PasswordModule::getMenuItems().

◆ onMenuDelete()

void cdc::mod_password::onMenuDelete ( )
static

Opens delete confirmation dialog for currently active entry.

Definition at line 793 of file PasswordModule.cpp.

References onMenuDeleteConfirm(), s_activeSlot, cdc::ui::showConfirm(), cdc::ui::tr(), and cdc::ui::ConfirmView::WARNING.

Referenced by onListMenu().

◆ onMenuDeleteConfirm()

void cdc::mod_password::onMenuDeleteConfirm ( void * userData)
static

◆ onMenuEdit()

void cdc::mod_password::onMenuEdit ( )
static

Opens edit wizard for currently active entry.

Definition at line 769 of file PasswordModule.cpp.

References s_activeSlot, and wizardEdit().

Referenced by onListMenu().

◆ onMenuView()

void cdc::mod_password::onMenuView ( )
static

Opens details view for currently active entry.

Definition at line 762 of file PasswordModule.cpp.

References s_activeSlot, and showDetails().

Referenced by onListMenu().

◆ onTypePassword()

void cdc::mod_password::onTypePassword ( void * userData)
static

Types currently selected password through attached keyboard provider.

Parameters
userDataOptional user pointer (unused).

Definition at line 529 of file PasswordModule.cpp.

References cdc::core::getKeyboard(), s_passwordToType, cdc::ui::showToastError(), cdc::ui::showToastSuccess(), and cdc::ui::tr().

Referenced by showDetails().

◆ onWizardNotes()

void cdc::mod_password::onWizardNotes ( const char * text)
static

Saves notes field and completes wizard persistence.

Parameters
textEntered notes text.

Definition at line 753 of file PasswordModule.cpp.

References s_wizard, and wizardFinish().

Referenced by onWizardTotp().

◆ onWizardPassword()

void cdc::mod_password::onWizardPassword ( const char * text)
static

Saves password field; an "x" input generates a random 16-char password via the shared generator. Then advances to URL step.

Parameters
textEntered password text.

Definition at line 702 of file PasswordModule.cpp.

References generateRandomPassword(), onWizardUrl(), pushT9WizardStep(), s_wizard, cdc::ui::tr(), and cdc::mod_password::PasswordStore::URL_LEN.

Referenced by onWizardUsername().

◆ onWizardTitle()

void cdc::mod_password::onWizardTitle ( const char * text)
static

Saves title field and advances to username step.

Parameters
textEntered title text.

Definition at line 678 of file PasswordModule.cpp.

References onWizardUsername(), pushT9WizardStep(), s_wizard, cdc::ui::tr(), and cdc::mod_password::PasswordStore::USERNAME_LEN.

Referenced by wizardEdit(), and wizardStart().

◆ onWizardTotp()

void cdc::mod_password::onWizardTotp ( const char * text)
static

Validates and saves optional TOTP slot, then advances to notes step.

Parameters
textEntered TOTP slot text.

Definition at line 733 of file PasswordModule.cpp.

References NOTES_INPUT_MAX, onWizardNotes(), onWizardTotp(), pushT9WizardStep(), s_wizard, cdc::ui::showToastError(), cdc::mod_password::PasswordStore::TOTP_SLOT_NONE, and cdc::ui::tr().

Referenced by onWizardTotp(), and onWizardUrl().

◆ onWizardUrl()

void cdc::mod_password::onWizardUrl ( const char * text)
static

Saves URL field and advances to optional TOTP slot step.

Parameters
textEntered URL text.

Definition at line 718 of file PasswordModule.cpp.

References onWizardTotp(), pushT9WizardStep(), s_wizard, cdc::mod_password::PasswordStore::TOTP_SLOT_NONE, and cdc::ui::tr().

Referenced by onWizardPassword().

◆ onWizardUsername()

void cdc::mod_password::onWizardUsername ( const char * text)
static

Saves username field and advances to password step.

Parameters
textEntered username text.

Definition at line 688 of file PasswordModule.cpp.

References cdc::ui::ViewStack::instance(), onWizardPassword(), cdc::mod_password::PasswordStore::PASSWORD_LEN, cdc::ui::ViewStack::push(), s_t9Input, s_wizard, and cdc::ui::tr().

Referenced by onWizardTitle().

◆ pushT9WizardStep()

void cdc::mod_password::pushT9WizardStep ( const char * title,
const char * initialText,
uint16_t maxLen,
ui::T9InputView::SaveCallback onSave )
static

Pushes a configured T9 input step for wizard flow.

Parameters
titleStep title.
initialTextInitial input text.
maxLenMaximum accepted text length.
onSaveSave callback for this step.

Definition at line 629 of file PasswordModule.cpp.

References cdc::ui::ViewStack::instance(), cdc::ui::ViewStack::push(), and s_t9Input.

Referenced by onWizardPassword(), onWizardTitle(), onWizardTotp(), onWizardUrl(), wizardEdit(), and wizardStart().

◆ rebuildList()

◆ registerCommands()

void cdc::mod_password::registerCommands ( )
static

Registers serial commands exposed by the password module.

Definition at line 412 of file PasswordModule.cpp.

References CMD_MODULE, cmd_password(), cdc::serial::getCommandRegistry(), kPasswordSubs, and s_commandsRegistered.

Referenced by cdc::mod_password::PasswordModule::init().

◆ registerStrings()

void cdc::mod_password::registerStrings ( )
static

◆ showDetails()

◆ skipSpaces()

const char * cdc::core::skipSpaces ( const char * s)
inline

Advances over leading ASCII whitespace in a C string.

Parameters
sInput string pointer.
Returns
Pointer to first non-whitespace character, or nullptr when input is null.

Definition at line 13 of file StringUtils.h.

Referenced by cmd_password_add(), and cmd_password_edit().

◆ wizardEdit()

void cdc::mod_password::wizardEdit ( uint16_t slot)
static

Starts edit-entry wizard prefilled with existing slot data.

Parameters
slotLogical slot to edit.

Definition at line 659 of file PasswordModule.cpp.

References cdc::mod_password::PasswordStore::instance(), onWizardTitle(), pushT9WizardStep(), s_wizard, cdc::ui::showToastError(), cdc::mod_password::PasswordStore::TITLE_LEN, and cdc::ui::tr().

Referenced by onMenuEdit().

◆ wizardFinish()

◆ wizardStart()

void cdc::mod_password::wizardStart ( )
static

Variable Documentation

◆ CMD_MODULE

const char* cdc::mod_password::CMD_MODULE = "password"
staticconstexpr

Serial command handlers for password module.

Definition at line 65 of file PasswordModule.cpp.

Referenced by registerCommands().

◆ kPasswordSubs

const cdc::serial::SubCommand cdc::mod_password::kPasswordSubs[]
static
Initial value:
= {
{"LIST", "", "List password entries (sorted by title)", cmd_password_list},
{"GET", "<slot>", "Show one entry by slot", cmd_password_get},
{"ADD", "<slot|x> <title> <user|x> <pw|x> <url|x> <totp|-> [notes]", "Add entry; 'x' for fields skips them", cmd_password_add},
{"EDIT", "<slot> <field> <value>", "Edit one field of an existing entry", cmd_password_edit},
{"DEL", "<slot>", "Delete entry by slot", cmd_password_del},
{nullptr, nullptr, nullptr, nullptr},
}
static void cmd_password_add(const char *args)
static void cmd_password_list(const char *args)
Serial command handler listing all password entries.
static void cmd_password_get(const char *args)
Serial command handler printing one password entry by index.
static void cmd_password_edit(const char *args)
Serial command handler editing one field of a password entry. Usage: PASSWORD_EDIT <index> <field> <n...
static void cmd_password_del(const char *args)
Serial command handler deleting one password entry by index.

Definition at line 396 of file PasswordModule.cpp.

Referenced by cmd_password(), and registerCommands().

◆ kSchemaVer

int cdc::mod_password::kSchemaVer = 1
staticconstexpr

Schema version written to and expected from the password backup section.

Definition at line 926 of file PasswordModule.cpp.

Referenced by cdc::mod_password::PasswordModule::exportBackup(), and cdc::mod_password::PasswordModule::importBackup().

◆ kStrings

ui::I18nEntry cdc::mod_password::kStrings[]
constexpr
Initial value:
= {
{"mod_password.title", "Passwords"},
{"mod_password.new_entry", "New Entry"},
{"mod_password.field_title", "Title"},
{"mod_password.username", "Username"},
{"mod_password.password", "Password"},
{"mod_password.url", "URL"},
{"mod_password.totp_slot", "TOTP Slot (optional)"},
{"mod_password.notes", "Notes"},
{"mod_password.view", "View"},
{"mod_password.edit", "Edit"},
{"mod_password.delete", "Delete"},
{"mod_password.actions", "Actions"},
{"mod_password.saved", "Saved"},
{"mod_password.deleted", "Deleted"},
{"mod_password.invalid_input", "Invalid input"},
{"mod_password.slot_error", "Slot map error"},
{"mod_password.details", "Details"},
{"mod_password.hint_list", "[Y] View [3] Menu [N] Back"},
{"mod_password.confirm_delete", "Delete entry?"},
{"mod_password.hint_type", "[Y] Type [2/8] Scroll [N] Back"},
{"mod_password.no_keyboard", "No keyboard connected"},
}

Definition at line 35 of file PasswordModule.cpp.

Referenced by registerStrings().

◆ NOTES_INPUT_MAX

uint16_t cdc::mod_password::NOTES_INPUT_MAX
staticconstexpr
Initial value:
=
? static_cast<uint16_t>(PasswordStore::NOTES_LEN)
: static_cast<uint16_t>(ui::T9InputView::MAX_TEXT_LEN)
static constexpr size_t NOTES_LEN
static constexpr uint16_t MAX_TEXT_LEN
Definition T9InputView.h:22

Definition at line 444 of file PasswordModule.cpp.

Referenced by onWizardTotp().

◆ PASSWORD_FIXED_PAYLOAD

size_t cdc::mod_password::PASSWORD_FIXED_PAYLOAD
constexpr
Initial value:
=
constexpr uint8_t PASSWORD_URL_LEN
constexpr uint8_t PASSWORD_USERNAME_LEN
constexpr uint8_t PASSWORD_PASSWORD_LEN
constexpr uint8_t PASSWORD_TITLE_LEN

Definition at line 18 of file PasswordStore.h.

◆ PASSWORD_NOTES_LEN

size_t cdc::mod_password::PASSWORD_NOTES_LEN = PASSWORD_PAYLOAD_MAX - PASSWORD_FIXED_PAYLOAD
constexpr

Definition at line 20 of file PasswordStore.h.

◆ PASSWORD_PASSWORD_LEN

uint8_t cdc::mod_password::PASSWORD_PASSWORD_LEN = 64
constexpr

Definition at line 13 of file PasswordStore.h.

◆ PASSWORD_PAYLOAD_MAX

size_t cdc::mod_password::PASSWORD_PAYLOAD_MAX
constexpr
Initial value:
=
cdc::hal::ISecureElement::RMEM_SLOT_SIZE - sizeof(cdc::hal::ISecureElement::RMemHeader)
static constexpr uint16_t RMEM_SLOT_SIZE

Definition at line 16 of file PasswordStore.h.

◆ PASSWORD_TITLE_LEN

uint8_t cdc::mod_password::PASSWORD_TITLE_LEN = 24
constexpr

Definition at line 11 of file PasswordStore.h.

◆ PASSWORD_URL_LEN

uint8_t cdc::mod_password::PASSWORD_URL_LEN = 96
constexpr

Definition at line 14 of file PasswordStore.h.

◆ PASSWORD_USERNAME_LEN

uint8_t cdc::mod_password::PASSWORD_USERNAME_LEN = 64
constexpr

Definition at line 12 of file PasswordStore.h.

◆ s_activeSlot

uint16_t cdc::mod_password::s_activeSlot = 0
static

Definition at line 434 of file PasswordModule.cpp.

Referenced by onListMenu(), onListSelect(), onMenuDelete(), onMenuEdit(), and onMenuView().

◆ s_capacity

uint16_t cdc::mod_password::s_capacity = 0
static

Definition at line 432 of file PasswordModule.cpp.

Referenced by ensureListBuffers(), freeListBuffers(), and rebuildList().

◆ s_commandsRegistered

bool cdc::mod_password::s_commandsRegistered = false
static

Definition at line 66 of file PasswordModule.cpp.

Referenced by registerCommands().

◆ s_entries

PasswordStore::EntryIndex* cdc::mod_password::s_entries = nullptr
static

◆ s_entryCount

uint16_t cdc::mod_password::s_entryCount = 0
static

Definition at line 431 of file PasswordModule.cpp.

Referenced by freeListBuffers(), onListMenu(), onListSelect(), and rebuildList().

◆ s_infoView

ui::InfoView cdc::mod_password::s_infoView
static

Definition at line 426 of file PasswordModule.cpp.

Referenced by showDetails().

◆ s_listItems

ui::ListItem* cdc::mod_password::s_listItems = nullptr
static

Definition at line 429 of file PasswordModule.cpp.

Referenced by ensureListBuffers(), freeListBuffers(), and rebuildList().

◆ s_listView

ui::ListView cdc::mod_password::s_listView
static

Password module UI state and reusable view instances.

Definition at line 424 of file PasswordModule.cpp.

Referenced by cdc::mod_password::PasswordModule::getMenuItems(), onMenuDeleteConfirm(), rebuildList(), and wizardFinish().

◆ s_passwordToType

char cdc::mod_password::s_passwordToType[PasswordStore::PASSWORD_LEN+1] = {}
static

Shared output buffer used for keyboard typing callback payload.

Definition at line 523 of file PasswordModule.cpp.

Referenced by onTypePassword(), and showDetails().

◆ s_t9Input

ui::T9InputView cdc::mod_password::s_t9Input
static

Definition at line 425 of file PasswordModule.cpp.

Referenced by onWizardUsername(), and pushT9WizardStep().

◆ s_viewsInitialized

bool cdc::mod_password::s_viewsInitialized = false
static

Definition at line 427 of file PasswordModule.cpp.

Referenced by cdc::mod_password::PasswordModule::getMenuItems().

◆ s_wizard