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 using Fd = int; 12d823cc0bSSampa Misra using RemainingSize = uint64_t; 13d823cc0bSSampa Misra using CertDetails = std::tuple<Fd, RemainingSize>; 14d823cc0bSSampa Misra using CertType = uint16_t; 15d823cc0bSSampa Misra using CertMap = std::map<CertType, CertDetails>; 16d823cc0bSSampa Misra 17d823cc0bSSampa Misra /** @class CertHandler 18d823cc0bSSampa Misra * 19d823cc0bSSampa Misra * @brief Inherits and implements FileHandler. This class is used 20d823cc0bSSampa Misra * to read/write certificates and certificate signing requests 21d823cc0bSSampa Misra */ 22d823cc0bSSampa Misra class CertHandler : public FileHandler 23d823cc0bSSampa Misra { 24d823cc0bSSampa Misra public: 25d823cc0bSSampa Misra /** @brief CertHandler constructor 26d823cc0bSSampa Misra */ CertHandler(uint32_t fileHandle,uint16_t fileType)27d823cc0bSSampa Misra CertHandler(uint32_t fileHandle, uint16_t fileType) : 28d823cc0bSSampa Misra FileHandler(fileHandle), certType(fileType) 296492f524SGeorge Liu {} 30d823cc0bSSampa Misra 31d823cc0bSSampa Misra virtual int writeFromMemory(uint32_t offset, uint32_t length, 3269508503SSampa Misra uint64_t address, 3369508503SSampa Misra oem_platform::Handler* /*oemPlatformHandler*/); 34*56c78807SKamalkumar Patel virtual int readIntoMemory(uint32_t offset, uint32_t length, 3569508503SSampa Misra uint64_t address, 3669508503SSampa Misra oem_platform::Handler* /*oemPlatformHandler*/); 3769508503SSampa Misra virtual int read(uint32_t offset, uint32_t& length, Response& response, 3869508503SSampa Misra oem_platform::Handler* /*oemPlatformHandler*/); 39d823cc0bSSampa Misra 4069508503SSampa Misra virtual int write(const char* buffer, uint32_t offset, uint32_t& length, 4169508503SSampa Misra oem_platform::Handler* /*oemPlatformHandler*/); 42d823cc0bSSampa Misra fileAck(uint8_t)43d823cc0bSSampa Misra virtual int fileAck(uint8_t /*fileStatus*/) 44d823cc0bSSampa Misra { 45d823cc0bSSampa Misra return PLDM_ERROR_UNSUPPORTED_PLDM_CMD; 46d823cc0bSSampa Misra } 47d823cc0bSSampa Misra 48d823cc0bSSampa Misra virtual int newFileAvailable(uint64_t length); 49d823cc0bSSampa Misra 50e3b3f634SSridevi Ramesh virtual int fileAckWithMetaData(uint8_t /*fileStatus*/, 51e3b3f634SSridevi Ramesh uint32_t /*metaDataValue1*/, 52e3b3f634SSridevi Ramesh uint32_t /*metaDataValue2*/, 53e3b3f634SSridevi Ramesh uint32_t /*metaDataValue3*/, 54e3b3f634SSridevi Ramesh uint32_t /*metaDataValue4*/); 55e3b3f634SSridevi Ramesh 56e3b3f634SSridevi Ramesh virtual int newFileAvailableWithMetaData(uint64_t length, 57e3b3f634SSridevi Ramesh uint32_t metaDataValue1, 58e3b3f634SSridevi Ramesh uint32_t /*metaDataValue2*/, 59e3b3f634SSridevi Ramesh uint32_t /*metaDataValue3*/, 60e3b3f634SSridevi Ramesh uint32_t /*metaDataValue4*/); 61e3b3f634SSridevi Ramesh 62d823cc0bSSampa Misra /** @brief CertHandler destructor 63d823cc0bSSampa Misra */ ~CertHandler()646da4f91bSPatrick Williams ~CertHandler() {} 65d823cc0bSSampa Misra 66d823cc0bSSampa Misra private: 67d823cc0bSSampa Misra uint16_t certType; //!< type of the certificate 68d823cc0bSSampa Misra static CertMap certMap; //!< holds the fd and remaining read/write size for 69d823cc0bSSampa Misra //!< each certificate 70e3b3f634SSridevi Ramesh enum SignedCertStatus 71e3b3f634SSridevi Ramesh { 72e3b3f634SSridevi Ramesh PLDM_INVALID_CERT_DATA = 0X03 73e3b3f634SSridevi Ramesh }; 74d823cc0bSSampa Misra }; 75d823cc0bSSampa Misra } // namespace responder 76d823cc0bSSampa Misra } // namespace pldm 77