blob: f1f4cd7b5ad05f77abbd2fc4471bd71677887182 [file] [log] [blame]
Sampa Misrad823cc02020-03-24 04:53:20 -05001#pragma once
2
3#include "file_io_by_type.hpp"
4
5#include <tuple>
6
7namespace pldm
8{
9namespace responder
10{
Sampa Misrad823cc02020-03-24 04:53:20 -050011using Fd = int;
12using RemainingSize = uint64_t;
13using CertDetails = std::tuple<Fd, RemainingSize>;
14using CertType = uint16_t;
15using CertMap = std::map<CertType, CertDetails>;
16
17/** @class CertHandler
18 *
19 * @brief Inherits and implements FileHandler. This class is used
20 * to read/write certificates and certificate signing requests
21 */
22class CertHandler : public FileHandler
23{
24 public:
25 /** @brief CertHandler constructor
26 */
27 CertHandler(uint32_t fileHandle, uint16_t fileType) :
28 FileHandler(fileHandle), certType(fileType)
George Liu6492f522020-06-16 10:34:05 +080029 {}
Sampa Misrad823cc02020-03-24 04:53:20 -050030
31 virtual int writeFromMemory(uint32_t offset, uint32_t length,
Sampa Misra69508502020-09-08 00:08:21 -050032 uint64_t address,
33 oem_platform::Handler* /*oemPlatformHandler*/);
Sampa Misrad823cc02020-03-24 04:53:20 -050034 virtual int readIntoMemory(uint32_t offset, uint32_t& length,
Sampa Misra69508502020-09-08 00:08:21 -050035 uint64_t address,
36 oem_platform::Handler* /*oemPlatformHandler*/);
37 virtual int read(uint32_t offset, uint32_t& length, Response& response,
38 oem_platform::Handler* /*oemPlatformHandler*/);
Sampa Misrad823cc02020-03-24 04:53:20 -050039
Sampa Misra69508502020-09-08 00:08:21 -050040 virtual int write(const char* buffer, uint32_t offset, uint32_t& length,
41 oem_platform::Handler* /*oemPlatformHandler*/);
Sampa Misrad823cc02020-03-24 04:53:20 -050042
43 virtual int fileAck(uint8_t /*fileStatus*/)
44 {
45 return PLDM_ERROR_UNSUPPORTED_PLDM_CMD;
46 }
47
48 virtual int newFileAvailable(uint64_t length);
49
Sridevi Rameshe3b3f632022-06-14 05:28:15 -050050 virtual int fileAckWithMetaData(uint8_t /*fileStatus*/,
51 uint32_t /*metaDataValue1*/,
52 uint32_t /*metaDataValue2*/,
53 uint32_t /*metaDataValue3*/,
54 uint32_t /*metaDataValue4*/);
55
56 virtual int newFileAvailableWithMetaData(uint64_t length,
57 uint32_t metaDataValue1,
58 uint32_t /*metaDataValue2*/,
59 uint32_t /*metaDataValue3*/,
60 uint32_t /*metaDataValue4*/);
61
Sampa Misrad823cc02020-03-24 04:53:20 -050062 /** @brief CertHandler destructor
63 */
Patrick Williams6da4f912023-05-10 07:50:53 -050064 ~CertHandler() {}
Sampa Misrad823cc02020-03-24 04:53:20 -050065
66 private:
67 uint16_t certType; //!< type of the certificate
68 static CertMap certMap; //!< holds the fd and remaining read/write size for
69 //!< each certificate
Sridevi Rameshe3b3f632022-06-14 05:28:15 -050070 enum SignedCertStatus
71 {
72 PLDM_INVALID_CERT_DATA = 0X03
73 };
Sampa Misrad823cc02020-03-24 04:53:20 -050074};
75} // namespace responder
76} // namespace pldm