|
CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
|
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 |
Stub Secure Element - returns errors for all operations
Definition at line 16 of file SecureElementStub.cpp.
|
inlineoverridevirtual |
Delete key from slot
Implements cdc::hal::ISecureElement.
Definition at line 57 of file SecureElementStub.cpp.
References cdc::hal::NOT_SUPPORTED.
|
inlineoverridevirtual |
Generate new ECC key pair
| slot | Slot number (0-31) |
| curve | Curve type |
Implements cdc::hal::ISecureElement.
Definition at line 54 of file SecureElementStub.cpp.
References cdc::hal::NOT_SUPPORTED.
|
inlineoverridevirtual |
Get public key from slot
| slot | Slot number |
| pubKey | Output buffer (65 bytes for P256, 32 for Ed25519) |
| curve | Output: curve type of key |
Implements cdc::hal::ISecureElement.
Definition at line 56 of file SecureElementStub.cpp.
References cdc::hal::NOT_SUPPORTED.
|
inlineoverridevirtual |
Import existing private key
| slot | Slot number |
| privKey | Private key bytes (32 bytes) |
| curve | Curve type |
Implements cdc::hal::ISecureElement.
Definition at line 55 of file SecureElementStub.cpp.
References cdc::hal::NOT_SUPPORTED.
|
inlineoverridevirtual |
Check if slot has a key
Implements cdc::hal::ISecureElement.
Definition at line 58 of file SecureElementStub.cpp.
|
inlineoverridevirtual |
ECDSA signature (P-256). Implementation hashes the message internally with SHA-256; callers MUST NOT pre-hash.
| slot | Key slot |
| Message transfer (badge-to-badge) | Message to sign (arbitrary length) |
| msgLen | Message length in bytes |
| sig | Output signature (raw R||S, 64 bytes) |
| sigLen | Output signature length |
Implements cdc::hal::ISecureElement.
Definition at line 60 of file SecureElementStub.cpp.
References cdc::hal::NOT_SUPPORTED.
|
inlineoverridevirtual |
EdDSA signature (Ed25519)
| slot | Key slot |
| Message transfer (badge-to-badge) | Message to sign |
| msgLen | Message length |
| sig | Output signature (64 bytes) |
Implements cdc::hal::ISecureElement.
Definition at line 63 of file SecureElementStub.cpp.
References cdc::hal::NOT_SUPPORTED.
|
inlineoverridevirtual |
Get chip serial number
Implements cdc::hal::ISecureElement.
Definition at line 78 of file SecureElementStub.cpp.
|
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.
|
inlineoverridevirtual |
Get service name (for logging/debugging)
Implements cdc::core::IService.
Definition at line 37 of file SecureElementStub.cpp.
|
inlineoverridevirtual |
Get random bytes from hardware TRNG, with ESP32 TRNG fallback when the secure-element session is unavailable. A WARN is logged on fallback.
| buffer | Output buffer |
| size | Number of bytes |
Implements cdc::hal::ISecureElement.
Definition at line 76 of file SecureElementStub.cpp.
|
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.
| buffer | Output buffer |
| size | Number of bytes |
Implements cdc::hal::ISecureElement.
Definition at line 77 of file SecureElementStub.cpp.
|
inlineoverridevirtual |
Get current service state
Implements cdc::core::IService.
Definition at line 36 of file SecureElementStub.cpp.
|
inlineoverridevirtual |
Initializes stub secure element service.
Implements cdc::core::IService.
Definition at line 22 of file SecureElementStub.cpp.
References cdc::core::INITIALIZED, LOG_W, and TAG.
|
inlineoverridevirtual |
Returns secure-element session state.
Implements cdc::hal::ISecureElement.
Definition at line 48 of file SecureElementStub.cpp.
|
inlineoverridevirtual |
Erase R-Memory slot
Implements cdc::hal::ISecureElement.
Definition at line 73 of file SecureElementStub.cpp.
References cdc::hal::NOT_SUPPORTED.
|
inlineoverridevirtual |
Read from R-Memory slot
| slot | Slot number (0-511) |
| data | Output buffer |
| maxLen | Buffer size |
| actualLen | Output: actual data length |
Implements cdc::hal::ISecureElement.
Definition at line 67 of file SecureElementStub.cpp.
References cdc::hal::NOT_SUPPORTED.
|
inlineoverridevirtual |
Check if R-Memory slot has data
Implements cdc::hal::ISecureElement.
Definition at line 74 of file SecureElementStub.cpp.
|
inlineoverridevirtual |
Write to R-Memory slot
| slot | Slot number |
| data | Data to write |
| len | Data length (max 476 bytes) |
Implements cdc::hal::ISecureElement.
Definition at line 70 of file SecureElementStub.cpp.
References cdc::hal::NOT_SUPPORTED.
|
inlineoverridevirtual |
Ends secure-element session (stub no-op).
Implements cdc::hal::ISecureElement.
Definition at line 43 of file SecureElementStub.cpp.
|
inlineoverridevirtual |
Start secure session (required before operations)
Implements cdc::hal::ISecureElement.
Definition at line 39 of file SecureElementStub.cpp.
|
inlineoverridevirtual |
Requests secure element sleep (stub no-op).
Implements cdc::hal::ISecureElement.
Definition at line 52 of file SecureElementStub.cpp.
|
inlineoverridevirtual |
Starts stub service state.
Implements cdc::core::IService.
Definition at line 31 of file SecureElementStub.cpp.
References cdc::core::STARTED.
|
inlineoverridevirtual |
Stops stub service state.
Implements cdc::core::IService.
Definition at line 35 of file SecureElementStub.cpp.
References cdc::core::STOPPED.