1*853c0dc5SEd Tanous #pragma once 2*853c0dc5SEd Tanous #include <nlohmann/json.hpp> 3*853c0dc5SEd Tanous 4*853c0dc5SEd Tanous namespace component_integrity 5*853c0dc5SEd Tanous { 6*853c0dc5SEd Tanous // clang-format off 7*853c0dc5SEd Tanous 8*853c0dc5SEd Tanous enum class ComponentIntegrityType{ 9*853c0dc5SEd Tanous Invalid, 10*853c0dc5SEd Tanous SPDM, 11*853c0dc5SEd Tanous TPM, 12*853c0dc5SEd Tanous OEM, 13*853c0dc5SEd Tanous }; 14*853c0dc5SEd Tanous 15*853c0dc5SEd Tanous enum class MeasurementSpecification{ 16*853c0dc5SEd Tanous Invalid, 17*853c0dc5SEd Tanous DMTF, 18*853c0dc5SEd Tanous }; 19*853c0dc5SEd Tanous 20*853c0dc5SEd Tanous enum class SPDMmeasurementSummaryType{ 21*853c0dc5SEd Tanous Invalid, 22*853c0dc5SEd Tanous TCB, 23*853c0dc5SEd Tanous All, 24*853c0dc5SEd Tanous }; 25*853c0dc5SEd Tanous 26*853c0dc5SEd Tanous enum class DMTFmeasurementTypes{ 27*853c0dc5SEd Tanous Invalid, 28*853c0dc5SEd Tanous ImmutableROM, 29*853c0dc5SEd Tanous MutableFirmware, 30*853c0dc5SEd Tanous HardwareConfiguration, 31*853c0dc5SEd Tanous FirmwareConfiguration, 32*853c0dc5SEd Tanous MutableFirmwareVersion, 33*853c0dc5SEd Tanous MutableFirmwareSecurityVersionNumber, 34*853c0dc5SEd Tanous MeasurementManifest, 35*853c0dc5SEd Tanous }; 36*853c0dc5SEd Tanous 37*853c0dc5SEd Tanous enum class VerificationStatus{ 38*853c0dc5SEd Tanous Invalid, 39*853c0dc5SEd Tanous Success, 40*853c0dc5SEd Tanous Failed, 41*853c0dc5SEd Tanous }; 42*853c0dc5SEd Tanous 43*853c0dc5SEd Tanous enum class SecureSessionType{ 44*853c0dc5SEd Tanous Invalid, 45*853c0dc5SEd Tanous Plain, 46*853c0dc5SEd Tanous EncryptedAuthenticated, 47*853c0dc5SEd Tanous AuthenticatedOnly, 48*853c0dc5SEd Tanous }; 49*853c0dc5SEd Tanous 50*853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(ComponentIntegrityType, { 51*853c0dc5SEd Tanous {ComponentIntegrityType::Invalid, "Invalid"}, 52*853c0dc5SEd Tanous {ComponentIntegrityType::SPDM, "SPDM"}, 53*853c0dc5SEd Tanous {ComponentIntegrityType::TPM, "TPM"}, 54*853c0dc5SEd Tanous {ComponentIntegrityType::OEM, "OEM"}, 55*853c0dc5SEd Tanous }); 56*853c0dc5SEd Tanous 57*853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(MeasurementSpecification, { 58*853c0dc5SEd Tanous {MeasurementSpecification::Invalid, "Invalid"}, 59*853c0dc5SEd Tanous {MeasurementSpecification::DMTF, "DMTF"}, 60*853c0dc5SEd Tanous }); 61*853c0dc5SEd Tanous 62*853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(SPDMmeasurementSummaryType, { 63*853c0dc5SEd Tanous {SPDMmeasurementSummaryType::Invalid, "Invalid"}, 64*853c0dc5SEd Tanous {SPDMmeasurementSummaryType::TCB, "TCB"}, 65*853c0dc5SEd Tanous {SPDMmeasurementSummaryType::All, "All"}, 66*853c0dc5SEd Tanous }); 67*853c0dc5SEd Tanous 68*853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(DMTFmeasurementTypes, { 69*853c0dc5SEd Tanous {DMTFmeasurementTypes::Invalid, "Invalid"}, 70*853c0dc5SEd Tanous {DMTFmeasurementTypes::ImmutableROM, "ImmutableROM"}, 71*853c0dc5SEd Tanous {DMTFmeasurementTypes::MutableFirmware, "MutableFirmware"}, 72*853c0dc5SEd Tanous {DMTFmeasurementTypes::HardwareConfiguration, "HardwareConfiguration"}, 73*853c0dc5SEd Tanous {DMTFmeasurementTypes::FirmwareConfiguration, "FirmwareConfiguration"}, 74*853c0dc5SEd Tanous {DMTFmeasurementTypes::MutableFirmwareVersion, "MutableFirmwareVersion"}, 75*853c0dc5SEd Tanous {DMTFmeasurementTypes::MutableFirmwareSecurityVersionNumber, "MutableFirmwareSecurityVersionNumber"}, 76*853c0dc5SEd Tanous {DMTFmeasurementTypes::MeasurementManifest, "MeasurementManifest"}, 77*853c0dc5SEd Tanous }); 78*853c0dc5SEd Tanous 79*853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(VerificationStatus, { 80*853c0dc5SEd Tanous {VerificationStatus::Invalid, "Invalid"}, 81*853c0dc5SEd Tanous {VerificationStatus::Success, "Success"}, 82*853c0dc5SEd Tanous {VerificationStatus::Failed, "Failed"}, 83*853c0dc5SEd Tanous }); 84*853c0dc5SEd Tanous 85*853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(SecureSessionType, { 86*853c0dc5SEd Tanous {SecureSessionType::Invalid, "Invalid"}, 87*853c0dc5SEd Tanous {SecureSessionType::Plain, "Plain"}, 88*853c0dc5SEd Tanous {SecureSessionType::EncryptedAuthenticated, "EncryptedAuthenticated"}, 89*853c0dc5SEd Tanous {SecureSessionType::AuthenticatedOnly, "AuthenticatedOnly"}, 90*853c0dc5SEd Tanous }); 91*853c0dc5SEd Tanous 92*853c0dc5SEd Tanous } 93*853c0dc5SEd Tanous // clang-format on 94