1d823cc0bSSampa Misra #pragma once 2d823cc0bSSampa Misra 3d823cc0bSSampa Misra #include "file_io_by_type.hpp" 4d823cc0bSSampa Misra 5d823cc0bSSampa Misra #include <tuple> 6d823cc0bSSampa Misra 7d823cc0bSSampa Misra namespace pldm 8d823cc0bSSampa Misra { 9d823cc0bSSampa Misra namespace responder 10d823cc0bSSampa Misra { 11d823cc0bSSampa Misra 12d823cc0bSSampa Misra using Fd = int; 13d823cc0bSSampa Misra using RemainingSize = uint64_t; 14d823cc0bSSampa Misra using CertDetails = std::tuple<Fd, RemainingSize>; 15d823cc0bSSampa Misra using CertType = uint16_t; 16d823cc0bSSampa Misra using CertMap = std::map<CertType, CertDetails>; 17d823cc0bSSampa Misra 18d823cc0bSSampa Misra /** @class CertHandler 19d823cc0bSSampa Misra * 20d823cc0bSSampa Misra * @brief Inherits and implements FileHandler. This class is used 21d823cc0bSSampa Misra * to read/write certificates and certificate signing requests 22d823cc0bSSampa Misra */ 23d823cc0bSSampa Misra class CertHandler : public FileHandler 24d823cc0bSSampa Misra { 25d823cc0bSSampa Misra public: 26d823cc0bSSampa Misra /** @brief CertHandler constructor 27d823cc0bSSampa Misra */ 28d823cc0bSSampa Misra CertHandler(uint32_t fileHandle, uint16_t fileType) : 29d823cc0bSSampa Misra FileHandler(fileHandle), certType(fileType) 306492f524SGeorge Liu {} 31d823cc0bSSampa Misra 32d823cc0bSSampa Misra virtual int writeFromMemory(uint32_t offset, uint32_t length, 33*69508503SSampa Misra uint64_t address, 34*69508503SSampa Misra oem_platform::Handler* /*oemPlatformHandler*/); 35d823cc0bSSampa Misra virtual int readIntoMemory(uint32_t offset, uint32_t& length, 36*69508503SSampa Misra uint64_t address, 37*69508503SSampa Misra oem_platform::Handler* /*oemPlatformHandler*/); 38*69508503SSampa Misra virtual int read(uint32_t offset, uint32_t& length, Response& response, 39*69508503SSampa Misra oem_platform::Handler* /*oemPlatformHandler*/); 40d823cc0bSSampa Misra 41*69508503SSampa Misra virtual int write(const char* buffer, uint32_t offset, uint32_t& length, 42*69508503SSampa Misra oem_platform::Handler* /*oemPlatformHandler*/); 43d823cc0bSSampa Misra 44d823cc0bSSampa Misra virtual int fileAck(uint8_t /*fileStatus*/) 45d823cc0bSSampa Misra { 46d823cc0bSSampa Misra return PLDM_ERROR_UNSUPPORTED_PLDM_CMD; 47d823cc0bSSampa Misra } 48d823cc0bSSampa Misra 49d823cc0bSSampa Misra virtual int newFileAvailable(uint64_t length); 50d823cc0bSSampa Misra 51d823cc0bSSampa Misra /** @brief CertHandler destructor 52d823cc0bSSampa Misra */ 53d823cc0bSSampa Misra ~CertHandler() 546492f524SGeorge Liu {} 55d823cc0bSSampa Misra 56d823cc0bSSampa Misra private: 57d823cc0bSSampa Misra uint16_t certType; //!< type of the certificate 58d823cc0bSSampa Misra static CertMap certMap; //!< holds the fd and remaining read/write size for 59d823cc0bSSampa Misra //!< each certificate 60d823cc0bSSampa Misra }; 61d823cc0bSSampa Misra } // namespace responder 62d823cc0bSSampa Misra } // namespace pldm 63