CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
Loading...
Searching...
No Matches
Fido2Module.cpp File Reference
#include "mod_fido2/Fido2Module.h"
#include "cdc_core/ModuleRegistry.h"
#include "cdc_core/UsbManager.h"
#include "cdc_core/EventBus.h"
#include "cdc_log.h"
#include "mod_fido2/Fido2Ui.h"
#include "mod_fido2/fido2.h"
#include "mod_fido2/fido2_storage.h"
#include "cdc_core/pin_storage_c.h"
#include "mod_fido2/ctaphid.h"
#include "mod_fido2/u2f.h"
#include "usb_badge/usb_hid.h"
#include "serial_cmd/ICommandRegistry.h"
#include "serial_cmd/SubCommand.h"
#include "serial_cmd/Console.h"
#include <freertos/FreeRTOS.h>
#include <freertos/queue.h>
#include <esp_attr.h>
#include <string.h>
#include <stdio.h>

Go to the source code of this file.

Classes

struct  cdc::mod_fido2::FidoPacket

Namespaces

namespace  cdc
namespace  cdc::mod_fido2

Functions

static uint16_t cdc::mod_fido2::onFidoGetReport (uint8_t report_id, uint8_t report_type, uint8_t *buffer, uint16_t reqlen)
 USB HID callbacks for FIDO transport.
static void cdc::mod_fido2::onFidoSetReport (uint8_t report_id, uint8_t report_type, uint8_t const *buffer, uint16_t bufsize)
 HID SET_REPORT callback queuing incoming CTAPHID packets.
static void cdc::mod_fido2::onFidoReportComplete (uint8_t const *report, uint16_t len)
 HID transfer-complete callback (currently unused).
static int cdc::mod_fido2::attestHexNibble (char c)
 Decodes one hex nibble, or -1 for non-hex characters.
static void cdc::mod_fido2::attestFinishImport ()
 Decodes the accumulated hex paste into DER and imports it.
static bool cdc::mod_fido2::attestLineInterceptor (const char *line)
 Line interceptor accumulating the hex DER paste for ATTEST IMPORT.
static void cdc::mod_fido2::cmd_attest_export (const char *args)
 Serial command: print the attestation public key as hex.
static void cdc::mod_fido2::cmd_attest_import (const char *args)
 Serial command: begin a hex DER paste of a CA-signed certificate.
static void cdc::mod_fido2::cmd_attest_clear (const char *args)
 Serial command: drop the imported cert, revert to self-signed.
static void cdc::mod_fido2::cmd_attest (const char *args)
static void cdc::mod_fido2::registerAttestCommands ()
 Registers the ATTEST serial command group (idempotent).
bool cdc::mod_fido2::fido2_usb_available ()
 Indicates whether at least one USB HID packet is queued for FIDO2.
bool cdc::mod_fido2::fido2_usb_ready ()
 Reports whether USB HID endpoint is ready for transmission.
uint16_t cdc::mod_fido2::fido2_usb_read (uint8_t *buffer)
 Reads one queued CTAPHID packet from USB RX queue.
bool cdc::mod_fido2::fido2_usb_write (const uint8_t *buffer)
 Sends one CTAPHID packet over USB HID.
void mod_fido2_register ()
 Registers FIDO2 module initializer.

Variables

static const char * TAG = "FIDO2"
static const uint8_t cdc::mod_fido2::s_fido_report_desc []
 FIDO U2F HID report descriptor (CTAPHID standard).
static constexpr size_t cdc::mod_fido2::FIDO_QUEUE_SIZE = 8
 Queue for incoming HID reports.
static QueueHandle_t cdc::mod_fido2::s_rx_queue = nullptr
static uint8_t cdc::mod_fido2::s_hid_instance = 0
 HID interface instance index assigned at registration time.
static constexpr const char * cdc::mod_fido2::ATTEST_CMD_MODULE = "fido2"
static bool cdc::mod_fido2::s_attestCommandsRegistered = false
static char cdc::mod_fido2::s_attestHex [U2F_MAX_ATT_CERT_SIZE *2+8]
static size_t cdc::mod_fido2::s_attestHexPos = 0
static bool cdc::mod_fido2::s_attestInputMode = false
static const cdc::serial::SubCommand cdc::mod_fido2::kAttestSubs []

Function Documentation

◆ mod_fido2_register()

void mod_fido2_register ( )

Registers FIDO2 module initializer.

Definition at line 445 of file Fido2Module.cpp.

References cdc::core::ModuleRegistry::instance(), and cdc::core::ModuleRegistry::registerInitializer().

Variable Documentation

◆ TAG

const char* TAG = "FIDO2"
static

Definition at line 23 of file Fido2Module.cpp.