1cfbc8dc8SJayanth Othayoth #include "certs_manager.hpp" 2cfbc8dc8SJayanth Othayoth 36ceec40bSMarri Devender Rao #include <phosphor-logging/elog-errors.hpp> 46ceec40bSMarri Devender Rao #include <xyz/openbmc_project/Certs/Install/error.hpp> 5cfbc8dc8SJayanth Othayoth #include <xyz/openbmc_project/Common/error.hpp> 6cfbc8dc8SJayanth Othayoth namespace phosphor 7cfbc8dc8SJayanth Othayoth { 8cfbc8dc8SJayanth Othayoth namespace certs 9cfbc8dc8SJayanth Othayoth { 10cfbc8dc8SJayanth Othayoth 11*bf7c588cSMarri Devender Rao using namespace sdbusplus::xyz::openbmc_project::Common::Error; 12*bf7c588cSMarri Devender Rao using InvalidCertificate = 13*bf7c588cSMarri Devender Rao sdbusplus::xyz::openbmc_project::Certs::Install::Error::InvalidCertificate; 146ceec40bSMarri Devender Rao using Reason = xyz::openbmc_project::Certs::Install::InvalidCertificate::REASON; 15cfbc8dc8SJayanth Othayoth 166ceec40bSMarri Devender Rao /** @brief Constructor to put object onto bus at a dbus path. 176ceec40bSMarri Devender Rao * @param[in] bus - Bus to attach to. 186ceec40bSMarri Devender Rao * @param[in] path - Path to attach at. 196ceec40bSMarri Devender Rao * @param[in] type - Type of the certificate. 206ceec40bSMarri Devender Rao * @param[in] unit - Unit consumed by this certificate. 216ceec40bSMarri Devender Rao * @param[in] installPath - Certificate installation path. 226ceec40bSMarri Devender Rao */ 236ceec40bSMarri Devender Rao Manager::Manager(sdbusplus::bus::bus& bus, const char* path, 246ceec40bSMarri Devender Rao const CertificateType& type, UnitsToRestart&& unit, 256ceec40bSMarri Devender Rao CertInstallPath&& installPath) : 266ceec40bSMarri Devender Rao Ifaces(bus, path), 276ceec40bSMarri Devender Rao bus(bus), objectPath(path), certType(type), unitToRestart(std::move(unit)), 286ceec40bSMarri Devender Rao certInstallPath(std::move(installPath)) 29cfbc8dc8SJayanth Othayoth { 30*bf7c588cSMarri Devender Rao if (fs::exists(certInstallPath)) 31*bf7c588cSMarri Devender Rao { 32*bf7c588cSMarri Devender Rao try 33*bf7c588cSMarri Devender Rao { 34*bf7c588cSMarri Devender Rao // TODO: Issue#3 At present supporting only one certificate to be 35*bf7c588cSMarri Devender Rao // uploaded this need to be revisited to support multiple 36*bf7c588cSMarri Devender Rao // certificates 37*bf7c588cSMarri Devender Rao auto certObjectPath = objectPath + '/' + '1'; 38*bf7c588cSMarri Devender Rao certificatePtr = std::make_unique<Certificate>( 39*bf7c588cSMarri Devender Rao bus, certObjectPath, certType, unitToRestart, certInstallPath, 40*bf7c588cSMarri Devender Rao certInstallPath); 41*bf7c588cSMarri Devender Rao } 42*bf7c588cSMarri Devender Rao catch (const InternalFailure& e) 43*bf7c588cSMarri Devender Rao { 44*bf7c588cSMarri Devender Rao certificatePtr.reset(nullptr); 45*bf7c588cSMarri Devender Rao report<InternalFailure>(); 46*bf7c588cSMarri Devender Rao } 47*bf7c588cSMarri Devender Rao catch (const InvalidCertificate& e) 48*bf7c588cSMarri Devender Rao { 49*bf7c588cSMarri Devender Rao certificatePtr.reset(nullptr); 50*bf7c588cSMarri Devender Rao report<InvalidCertificate>( 51*bf7c588cSMarri Devender Rao Reason("Existing certificate file is corrupted")); 52*bf7c588cSMarri Devender Rao } 53*bf7c588cSMarri Devender Rao } 54dd74bd20SJayanth Othayoth } 55589159f2SJayanth Othayoth 566ceec40bSMarri Devender Rao void Manager::install(const std::string filePath) 57cfbc8dc8SJayanth Othayoth { 58589159f2SJayanth Othayoth } 59ae70b3daSDeepak Kodihalli 60ae70b3daSDeepak Kodihalli void Manager::delete_() 61ae70b3daSDeepak Kodihalli { 626ceec40bSMarri Devender Rao // TODO: #Issue 4 when a certificate is deleted system auto generates 636ceec40bSMarri Devender Rao // certificate file. At present we are not supporting creation of 646ceec40bSMarri Devender Rao // certificate object for the auto-generated certificate file as 656ceec40bSMarri Devender Rao // deletion if only applicable for REST server and Bmcweb does not allow 666ceec40bSMarri Devender Rao // deletion of certificates 676ceec40bSMarri Devender Rao if (certificatePtr != nullptr) 68ae70b3daSDeepak Kodihalli { 696ceec40bSMarri Devender Rao certificatePtr.reset(nullptr); 70ae70b3daSDeepak Kodihalli } 71ae70b3daSDeepak Kodihalli } 72cfbc8dc8SJayanth Othayoth } // namespace certs 73cfbc8dc8SJayanth Othayoth } // namespace phosphor 74