1 #pragma once
2 #include <sdbusplus/server/object.hpp>
3 #include <string>
4 #include <xyz/openbmc_project/Certs/CSR/server.hpp>
5 
6 namespace phosphor::certs
7 {
8 
9 enum class Status
10 {
11     SUCCESS,
12     FAILURE,
13 };
14 
15 namespace internal
16 {
17 using CSRInterface = sdbusplus::server::object_t<
18     sdbusplus::xyz::openbmc_project::Certs::server::CSR>;
19 }
20 
21 /** @class CSR
22  *  @brief To read CSR certificate
23  */
24 class CSR : public internal::CSRInterface
25 {
26   public:
27     CSR() = delete;
28     ~CSR() = default;
29     CSR(const CSR&) = delete;
30     CSR& operator=(const CSR&) = delete;
31     CSR(CSR&&) = delete;
32     CSR& operator=(CSR&&) = delete;
33 
34     /** @brief Constructor to put object onto bus at a D-Bus path.
35      *  @param[in] bus - Bus to attach to.
36      *  @param[in] path - The D-Bus object path to attach at.
37      *  @param[in] installPath - Certificate installation path.
38      *  @param[in] status - Status of Generate CSR request
39      */
40     CSR(sdbusplus::bus::bus& bus, const char* path, std::string&& installPath,
41         const Status& status);
42     /** @brief Return CSR
43      */
44     std::string csr() override;
45 
46   private:
47     /** @brief object path */
48     std::string objectPath;
49 
50     /** @brief Certificate file installation path **/
51     std::string certInstallPath;
52 
53     /** @brief Status of GenerateCSR request */
54     Status csrStatus;
55 };
56 } // namespace phosphor::certs
57