1853c0dc5SEd Tanous #pragma once 2853c0dc5SEd Tanous #include <nlohmann/json.hpp> 3853c0dc5SEd Tanous 4853c0dc5SEd Tanous namespace component_integrity 5853c0dc5SEd Tanous { 6853c0dc5SEd Tanous // clang-format off 7853c0dc5SEd Tanous 8853c0dc5SEd Tanous enum class ComponentIntegrityType{ 9853c0dc5SEd Tanous Invalid, 10853c0dc5SEd Tanous SPDM, 11853c0dc5SEd Tanous TPM, 12*dd5c81e9SGunnar Mills TCM, 13*dd5c81e9SGunnar Mills TPCM, 14853c0dc5SEd Tanous OEM, 15853c0dc5SEd Tanous }; 16853c0dc5SEd Tanous 17853c0dc5SEd Tanous enum class MeasurementSpecification{ 18853c0dc5SEd Tanous Invalid, 19853c0dc5SEd Tanous DMTF, 20853c0dc5SEd Tanous }; 21853c0dc5SEd Tanous 22853c0dc5SEd Tanous enum class SPDMmeasurementSummaryType{ 23853c0dc5SEd Tanous Invalid, 24853c0dc5SEd Tanous TCB, 25853c0dc5SEd Tanous All, 26853c0dc5SEd Tanous }; 27853c0dc5SEd Tanous 28853c0dc5SEd Tanous enum class DMTFmeasurementTypes{ 29853c0dc5SEd Tanous Invalid, 30853c0dc5SEd Tanous ImmutableROM, 31853c0dc5SEd Tanous MutableFirmware, 32853c0dc5SEd Tanous HardwareConfiguration, 33853c0dc5SEd Tanous FirmwareConfiguration, 34853c0dc5SEd Tanous MutableFirmwareVersion, 35853c0dc5SEd Tanous MutableFirmwareSecurityVersionNumber, 36853c0dc5SEd Tanous MeasurementManifest, 37853c0dc5SEd Tanous }; 38853c0dc5SEd Tanous 39853c0dc5SEd Tanous enum class VerificationStatus{ 40853c0dc5SEd Tanous Invalid, 41853c0dc5SEd Tanous Success, 42853c0dc5SEd Tanous Failed, 43853c0dc5SEd Tanous }; 44853c0dc5SEd Tanous 45853c0dc5SEd Tanous enum class SecureSessionType{ 46853c0dc5SEd Tanous Invalid, 47853c0dc5SEd Tanous Plain, 48853c0dc5SEd Tanous EncryptedAuthenticated, 49853c0dc5SEd Tanous AuthenticatedOnly, 50853c0dc5SEd Tanous }; 51853c0dc5SEd Tanous 52853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(ComponentIntegrityType, { 53853c0dc5SEd Tanous {ComponentIntegrityType::Invalid, "Invalid"}, 54853c0dc5SEd Tanous {ComponentIntegrityType::SPDM, "SPDM"}, 55853c0dc5SEd Tanous {ComponentIntegrityType::TPM, "TPM"}, 56*dd5c81e9SGunnar Mills {ComponentIntegrityType::TCM, "TCM"}, 57*dd5c81e9SGunnar Mills {ComponentIntegrityType::TPCM, "TPCM"}, 58853c0dc5SEd Tanous {ComponentIntegrityType::OEM, "OEM"}, 59853c0dc5SEd Tanous }); 60853c0dc5SEd Tanous 61853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(MeasurementSpecification, { 62853c0dc5SEd Tanous {MeasurementSpecification::Invalid, "Invalid"}, 63853c0dc5SEd Tanous {MeasurementSpecification::DMTF, "DMTF"}, 64853c0dc5SEd Tanous }); 65853c0dc5SEd Tanous 66853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(SPDMmeasurementSummaryType, { 67853c0dc5SEd Tanous {SPDMmeasurementSummaryType::Invalid, "Invalid"}, 68853c0dc5SEd Tanous {SPDMmeasurementSummaryType::TCB, "TCB"}, 69853c0dc5SEd Tanous {SPDMmeasurementSummaryType::All, "All"}, 70853c0dc5SEd Tanous }); 71853c0dc5SEd Tanous 72853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(DMTFmeasurementTypes, { 73853c0dc5SEd Tanous {DMTFmeasurementTypes::Invalid, "Invalid"}, 74853c0dc5SEd Tanous {DMTFmeasurementTypes::ImmutableROM, "ImmutableROM"}, 75853c0dc5SEd Tanous {DMTFmeasurementTypes::MutableFirmware, "MutableFirmware"}, 76853c0dc5SEd Tanous {DMTFmeasurementTypes::HardwareConfiguration, "HardwareConfiguration"}, 77853c0dc5SEd Tanous {DMTFmeasurementTypes::FirmwareConfiguration, "FirmwareConfiguration"}, 78853c0dc5SEd Tanous {DMTFmeasurementTypes::MutableFirmwareVersion, "MutableFirmwareVersion"}, 79853c0dc5SEd Tanous {DMTFmeasurementTypes::MutableFirmwareSecurityVersionNumber, "MutableFirmwareSecurityVersionNumber"}, 80853c0dc5SEd Tanous {DMTFmeasurementTypes::MeasurementManifest, "MeasurementManifest"}, 81853c0dc5SEd Tanous }); 82853c0dc5SEd Tanous 83853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(VerificationStatus, { 84853c0dc5SEd Tanous {VerificationStatus::Invalid, "Invalid"}, 85853c0dc5SEd Tanous {VerificationStatus::Success, "Success"}, 86853c0dc5SEd Tanous {VerificationStatus::Failed, "Failed"}, 87853c0dc5SEd Tanous }); 88853c0dc5SEd Tanous 89853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(SecureSessionType, { 90853c0dc5SEd Tanous {SecureSessionType::Invalid, "Invalid"}, 91853c0dc5SEd Tanous {SecureSessionType::Plain, "Plain"}, 92853c0dc5SEd Tanous {SecureSessionType::EncryptedAuthenticated, "EncryptedAuthenticated"}, 93853c0dc5SEd Tanous {SecureSessionType::AuthenticatedOnly, "AuthenticatedOnly"}, 94853c0dc5SEd Tanous }); 95853c0dc5SEd Tanous 96853c0dc5SEd Tanous } 97853c0dc5SEd Tanous // clang-format on 98