143 uint8_t* sig,
size_t* sigLen) = 0;
165 uint16_t* actualLen) = 0;
201 const uint8_t* payload, uint16_t payloadLen) = 0;
207 uint8_t* payloadOut, uint16_t payloadMax,
208 uint16_t* payloadLenOut) = 0;
219 virtual bool getRandom(uint8_t* buffer, uint16_t size) = 0;
236 virtual bool getChipId(uint8_t* serialNum, uint8_t size) = 0;
242 virtual bool getFwVersion(uint8_t riscvVer[4], uint8_t spectVer[4]) = 0;
char name[cdc::hal::ISecureElement::RMEM_NAME_LEN]
virtual SeResult eccGenerate(uint8_t slot, EccCurve curve)=0
virtual void sessionEnd()=0
virtual bool rmemSlotUsed(uint16_t slot) const =0
virtual bool getRandom(uint8_t *buffer, uint16_t size)=0
virtual SeResult rmemWriteWithHeader(uint16_t slot, uint8_t moduleId, const char *name, uint8_t flags, const uint8_t *payload, uint16_t payloadLen)=0
static constexpr uint16_t RMEM_SLOT_SIZE_MAX
struct __attribute__((packed)) RMemHeader
virtual SeResult ecdsaSign(uint8_t slot, const uint8_t *msg, size_t msgLen, uint8_t *sig, size_t *sigLen)=0
virtual bool getRandomStrict(uint8_t *buffer, uint16_t size)=0
virtual bool eccSlotUsed(uint8_t slot) const =0
static constexpr uint16_t RMEM_SLOT_COUNT
virtual SeResult eccGetPublicKey(uint8_t slot, uint8_t *pubKey, EccCurve *curve=nullptr)=0
virtual SeResult eccImport(uint8_t slot, const uint8_t *privKey, EccCurve curve)=0
virtual bool getFwVersion(uint8_t riscvVer[4], uint8_t spectVer[4])=0
virtual bool getChipId(uint8_t *serialNum, uint8_t size)=0
virtual bool sessionStart()=0
virtual SeResult eccDelete(uint8_t slot)=0
virtual uint16_t getRmemSlotSize() const =0
static constexpr uint8_t RMEM_NAME_LEN
static constexpr uint16_t RMEM_SLOT_SIZE
virtual SeResult rmemWrite(uint16_t slot, const uint8_t *data, uint16_t len)=0
static constexpr uint8_t ECC_SLOT_COUNT
virtual SeResult eddsaSign(uint8_t slot, const uint8_t *msg, size_t msgLen, uint8_t *sig)=0
virtual SeResult rmemErase(uint16_t slot)=0
virtual bool isSessionActive() const =0
virtual ~ISecureElement()=default
virtual SeResult rmemRead(uint16_t slot, uint8_t *data, uint16_t maxLen, uint16_t *actualLen)=0
virtual SeResult rmemReadWithHeader(uint16_t slot, RMemHeader *headerOut, uint8_t *payloadOut, uint16_t payloadMax, uint16_t *payloadLenOut)=0
uint8_t curveByte(EccCurve c)
Maps an EccCurve to the module-level curve byte.
EccCurve curveFromByte(uint8_t b)
Maps a curve byte to its EccCurve enum.
ISecureElement * getSecureElementInstance()
Returns singleton secure-element stub instance.