| #pragma once | 
 | #include <cstdint> | 
 | #include <nlohmann/json.hpp> | 
 |  | 
 | namespace key | 
 | { | 
 | // clang-format off | 
 |  | 
 | enum class KeyType : std::uint8_t{ | 
 |     Invalid, | 
 |     NVMeoF, | 
 |     SSH, | 
 | }; | 
 |  | 
 | enum class NVMeoFSecurityProtocolType : std::uint8_t{ | 
 |     Invalid, | 
 |     DHHC, | 
 |     TLS_PSK, | 
 |     OEM, | 
 | }; | 
 |  | 
 | enum class NVMeoFSecureHashType : std::uint8_t{ | 
 |     Invalid, | 
 |     SHA256, | 
 |     SHA384, | 
 |     SHA512, | 
 | }; | 
 |  | 
 | NLOHMANN_JSON_SERIALIZE_ENUM(KeyType, { | 
 |     {KeyType::Invalid, "Invalid"}, | 
 |     {KeyType::NVMeoF, "NVMeoF"}, | 
 |     {KeyType::SSH, "SSH"}, | 
 | }); | 
 |  | 
 | NLOHMANN_JSON_SERIALIZE_ENUM(NVMeoFSecurityProtocolType, { | 
 |     {NVMeoFSecurityProtocolType::Invalid, "Invalid"}, | 
 |     {NVMeoFSecurityProtocolType::DHHC, "DHHC"}, | 
 |     {NVMeoFSecurityProtocolType::TLS_PSK, "TLS_PSK"}, | 
 |     {NVMeoFSecurityProtocolType::OEM, "OEM"}, | 
 | }); | 
 |  | 
 | NLOHMANN_JSON_SERIALIZE_ENUM(NVMeoFSecureHashType, { | 
 |     {NVMeoFSecureHashType::Invalid, "Invalid"}, | 
 |     {NVMeoFSecureHashType::SHA256, "SHA256"}, | 
 |     {NVMeoFSecureHashType::SHA384, "SHA384"}, | 
 |     {NVMeoFSecureHashType::SHA512, "SHA512"}, | 
 | }); | 
 |  | 
 | } // namespace key | 
 | // clang-format on |