CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
Loading...
Searching...
No Matches
cdc::hal::SecureElementStub Class Reference
Inheritance diagram for cdc::hal::SecureElementStub:
cdc::hal::ISecureElement cdc::core::IService

Public Member Functions

bool init () override
 Initializes stub secure element service.
bool start () override
 Starts stub service state.
void stop () override
 Stops stub service state.
core::ServiceState getState () const override
const char * getName () const override
bool sessionStart () override
void sessionEnd () override
 Ends secure-element session (stub no-op).
bool isSessionActive () const override
 Returns secure-element session state.
void sleep () override
 Requests secure element sleep (stub no-op).
SeResult eccGenerate (uint8_t, EccCurve) override
SeResult eccImport (uint8_t, const uint8_t *, EccCurve) override
SeResult eccGetPublicKey (uint8_t, uint8_t *, EccCurve *) override
SeResult eccDelete (uint8_t) override
bool eccSlotUsed (uint8_t) const override
SeResult ecdsaSign (uint8_t, const uint8_t *, size_t, uint8_t *, size_t *) override
SeResult eddsaSign (uint8_t, const uint8_t *, size_t, uint8_t *) override
SeResult rmemRead (uint16_t, uint8_t *, uint16_t, uint16_t *) override
SeResult rmemWrite (uint16_t, const uint8_t *, uint16_t) override
SeResult rmemErase (uint16_t) override
bool rmemSlotUsed (uint16_t) const override
bool getRandom (uint8_t *, uint16_t) override
bool getRandomStrict (uint8_t *, uint16_t) override
bool getChipId (uint8_t *, uint8_t) override
bool getFwVersion (uint8_t[4], uint8_t[4]) override
Public Member Functions inherited from cdc::hal::ISecureElement
virtual ~ISecureElement ()=default
struct __attribute__ ((packed)) RMemHeader
virtual SeResult rmemWriteWithHeader (uint16_t slot, uint8_t moduleId, const char *name, uint8_t flags, const uint8_t *payload, uint16_t payloadLen)=0
virtual SeResult rmemReadWithHeader (uint16_t slot, RMemHeader *headerOut, uint8_t *payloadOut, uint16_t payloadMax, uint16_t *payloadLenOut)=0
virtual uint16_t getRmemSlotSize () const =0
Public Member Functions inherited from cdc::core::IService
virtual ~IService ()=default

Additional Inherited Members

Static Public Attributes inherited from cdc::hal::ISecureElement
static constexpr uint8_t ECC_SLOT_COUNT = 32
static constexpr uint16_t RMEM_SLOT_COUNT = 512
static constexpr uint16_t RMEM_SLOT_SIZE = 444
static constexpr uint16_t RMEM_SLOT_SIZE_MAX = 475
static constexpr uint8_t RMEM_NAME_LEN = 16

Detailed Description

Stub Secure Element - returns errors for all operations

Definition at line 16 of file SecureElementStub.cpp.

Member Function Documentation

◆ eccDelete()

SeResult cdc::hal::SecureElementStub::eccDelete ( uint8_t slot)
inlineoverridevirtual

Delete key from slot

Implements cdc::hal::ISecureElement.

Definition at line 57 of file SecureElementStub.cpp.

References cdc::hal::NOT_SUPPORTED.

◆ eccGenerate()

SeResult cdc::hal::SecureElementStub::eccGenerate ( uint8_t slot,
EccCurve curve )
inlineoverridevirtual

Generate new ECC key pair

Parameters
slotSlot number (0-31)
curveCurve type

Implements cdc::hal::ISecureElement.

Definition at line 54 of file SecureElementStub.cpp.

References cdc::hal::NOT_SUPPORTED.

◆ eccGetPublicKey()

SeResult cdc::hal::SecureElementStub::eccGetPublicKey ( uint8_t slot,
uint8_t * pubKey,
EccCurve * curve )
inlineoverridevirtual

Get public key from slot

Parameters
slotSlot number
pubKeyOutput buffer (65 bytes for P256, 32 for Ed25519)
curveOutput: curve type of key

Implements cdc::hal::ISecureElement.

Definition at line 56 of file SecureElementStub.cpp.

References cdc::hal::NOT_SUPPORTED.

◆ eccImport()

SeResult cdc::hal::SecureElementStub::eccImport ( uint8_t slot,
const uint8_t * privKey,
EccCurve curve )
inlineoverridevirtual

Import existing private key

Parameters
slotSlot number
privKeyPrivate key bytes (32 bytes)
curveCurve type

Implements cdc::hal::ISecureElement.

Definition at line 55 of file SecureElementStub.cpp.

References cdc::hal::NOT_SUPPORTED.

◆ eccSlotUsed()

bool cdc::hal::SecureElementStub::eccSlotUsed ( uint8_t slot) const
inlineoverridevirtual

Check if slot has a key

Implements cdc::hal::ISecureElement.

Definition at line 58 of file SecureElementStub.cpp.

◆ ecdsaSign()

SeResult cdc::hal::SecureElementStub::ecdsaSign ( uint8_t slot,
const uint8_t * msg,
size_t msgLen,
uint8_t * sig,
size_t * sigLen )
inlineoverridevirtual

ECDSA signature (P-256). Implementation hashes the message internally with SHA-256; callers MUST NOT pre-hash.

Parameters
slotKey slot
Message transfer (badge-to-badge)Message to sign (arbitrary length)
msgLenMessage length in bytes
sigOutput signature (raw R||S, 64 bytes)
sigLenOutput signature length

Implements cdc::hal::ISecureElement.

Definition at line 60 of file SecureElementStub.cpp.

References cdc::hal::NOT_SUPPORTED.

◆ eddsaSign()

SeResult cdc::hal::SecureElementStub::eddsaSign ( uint8_t slot,
const uint8_t * msg,
size_t msgLen,
uint8_t * sig )
inlineoverridevirtual

EdDSA signature (Ed25519)

Parameters
slotKey slot
Message transfer (badge-to-badge)Message to sign
msgLenMessage length
sigOutput signature (64 bytes)

Implements cdc::hal::ISecureElement.

Definition at line 63 of file SecureElementStub.cpp.

References cdc::hal::NOT_SUPPORTED.

◆ getChipId()

bool cdc::hal::SecureElementStub::getChipId ( uint8_t * serialNum,
uint8_t size )
inlineoverridevirtual

Get chip serial number

Implements cdc::hal::ISecureElement.

Definition at line 78 of file SecureElementStub.cpp.

◆ getFwVersion()

bool cdc::hal::SecureElementStub::getFwVersion ( uint8_t riscvVer[4],
uint8_t spectVer[4] )
inlineoverridevirtual

Get firmware version. Buffers receive the 4-byte version as reported by the chip: index 3 = major, 2 = minor, 1 = patch, 0 = build.

Implements cdc::hal::ISecureElement.

Definition at line 79 of file SecureElementStub.cpp.

◆ getName()

const char * cdc::hal::SecureElementStub::getName ( ) const
inlineoverridevirtual

Get service name (for logging/debugging)

Implements cdc::core::IService.

Definition at line 37 of file SecureElementStub.cpp.

◆ getRandom()

bool cdc::hal::SecureElementStub::getRandom ( uint8_t * buffer,
uint16_t size )
inlineoverridevirtual

Get random bytes from hardware TRNG, with ESP32 TRNG fallback when the secure-element session is unavailable. A WARN is logged on fallback.

Parameters
bufferOutput buffer
sizeNumber of bytes
Returns
true if the buffer was filled (from either source)

Implements cdc::hal::ISecureElement.

Definition at line 76 of file SecureElementStub.cpp.

◆ getRandomStrict()

bool cdc::hal::SecureElementStub::getRandomStrict ( uint8_t * buffer,
uint16_t size )
inlineoverridevirtual

Get random bytes from hardware TRNG without falling back. Returns false (and leaves the buffer untouched) when the TROPIC TRNG cannot be reached or returns an error. Use for keys/seeds where software RNG is unacceptable.

Parameters
bufferOutput buffer
sizeNumber of bytes
Returns
true only when bytes originated from the secure-element TRNG

Implements cdc::hal::ISecureElement.

Definition at line 77 of file SecureElementStub.cpp.

◆ getState()

core::ServiceState cdc::hal::SecureElementStub::getState ( ) const
inlineoverridevirtual

Get current service state

Implements cdc::core::IService.

Definition at line 36 of file SecureElementStub.cpp.

◆ init()

bool cdc::hal::SecureElementStub::init ( )
inlineoverridevirtual

Initializes stub secure element service.

Returns
Always true.

Implements cdc::core::IService.

Definition at line 22 of file SecureElementStub.cpp.

References cdc::core::INITIALIZED, LOG_W, and TAG.

◆ isSessionActive()

bool cdc::hal::SecureElementStub::isSessionActive ( ) const
inlineoverridevirtual

Returns secure-element session state.

Returns
Always false in stub.

Implements cdc::hal::ISecureElement.

Definition at line 48 of file SecureElementStub.cpp.

◆ rmemErase()

SeResult cdc::hal::SecureElementStub::rmemErase ( uint16_t slot)
inlineoverridevirtual

Erase R-Memory slot

Implements cdc::hal::ISecureElement.

Definition at line 73 of file SecureElementStub.cpp.

References cdc::hal::NOT_SUPPORTED.

◆ rmemRead()

SeResult cdc::hal::SecureElementStub::rmemRead ( uint16_t slot,
uint8_t * data,
uint16_t maxLen,
uint16_t * actualLen )
inlineoverridevirtual

Read from R-Memory slot

Parameters
slotSlot number (0-511)
dataOutput buffer
maxLenBuffer size
actualLenOutput: actual data length

Implements cdc::hal::ISecureElement.

Definition at line 67 of file SecureElementStub.cpp.

References cdc::hal::NOT_SUPPORTED.

◆ rmemSlotUsed()

bool cdc::hal::SecureElementStub::rmemSlotUsed ( uint16_t slot) const
inlineoverridevirtual

Check if R-Memory slot has data

Implements cdc::hal::ISecureElement.

Definition at line 74 of file SecureElementStub.cpp.

◆ rmemWrite()

SeResult cdc::hal::SecureElementStub::rmemWrite ( uint16_t slot,
const uint8_t * data,
uint16_t len )
inlineoverridevirtual

Write to R-Memory slot

Parameters
slotSlot number
dataData to write
lenData length (max 476 bytes)

Implements cdc::hal::ISecureElement.

Definition at line 70 of file SecureElementStub.cpp.

References cdc::hal::NOT_SUPPORTED.

◆ sessionEnd()

void cdc::hal::SecureElementStub::sessionEnd ( )
inlineoverridevirtual

Ends secure-element session (stub no-op).

Implements cdc::hal::ISecureElement.

Definition at line 43 of file SecureElementStub.cpp.

◆ sessionStart()

bool cdc::hal::SecureElementStub::sessionStart ( )
inlineoverridevirtual

Start secure session (required before operations)

Implements cdc::hal::ISecureElement.

Definition at line 39 of file SecureElementStub.cpp.

◆ sleep()

void cdc::hal::SecureElementStub::sleep ( )
inlineoverridevirtual

Requests secure element sleep (stub no-op).

Implements cdc::hal::ISecureElement.

Definition at line 52 of file SecureElementStub.cpp.

◆ start()

bool cdc::hal::SecureElementStub::start ( )
inlineoverridevirtual

Starts stub service state.

Returns
Always true.

Implements cdc::core::IService.

Definition at line 31 of file SecureElementStub.cpp.

References cdc::core::STARTED.

◆ stop()

void cdc::hal::SecureElementStub::stop ( )
inlineoverridevirtual

Stops stub service state.

Implements cdc::core::IService.

Definition at line 35 of file SecureElementStub.cpp.

References cdc::core::STOPPED.


The documentation for this class was generated from the following file: