blob: ee34575665fea28ee7d97b82450ce4af771d1ec3 [file] [log] [blame]
#pragma once
#include "file_io_by_type.hpp"
#include <tuple>
namespace pldm
{
namespace responder
{
using Fd = int;
using RemainingSize = uint64_t;
using CertDetails = std::tuple<Fd, RemainingSize>;
using CertType = uint16_t;
using CertMap = std::map<CertType, CertDetails>;
/** @class CertHandler
*
* @brief Inherits and implements FileHandler. This class is used
* to read/write certificates and certificate signing requests
*/
class CertHandler : public FileHandler
{
public:
/** @brief CertHandler constructor
*/
CertHandler(uint32_t fileHandle, uint16_t fileType) :
FileHandler(fileHandle), certType(fileType)
{}
virtual int writeFromMemory(uint32_t offset, uint32_t length,
uint64_t address,
oem_platform::Handler* /*oemPlatformHandler*/);
virtual int readIntoMemory(uint32_t offset, uint32_t& length,
uint64_t address,
oem_platform::Handler* /*oemPlatformHandler*/);
virtual int read(uint32_t offset, uint32_t& length, Response& response,
oem_platform::Handler* /*oemPlatformHandler*/);
virtual int write(const char* buffer, uint32_t offset, uint32_t& length,
oem_platform::Handler* /*oemPlatformHandler*/);
virtual int fileAck(uint8_t /*fileStatus*/)
{
return PLDM_ERROR_UNSUPPORTED_PLDM_CMD;
}
virtual int newFileAvailable(uint64_t length);
/** @brief CertHandler destructor
*/
~CertHandler()
{}
private:
uint16_t certType; //!< type of the certificate
static CertMap certMap; //!< holds the fd and remaining read/write size for
//!< each certificate
};
} // namespace responder
} // namespace pldm