1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3 #pragma once 4 #include <nlohmann/json.hpp> 5 6 namespace key_policy 7 { 8 // clang-format off 9 10 enum class KeyPolicyType{ 11 Invalid, 12 NVMeoF, 13 }; 14 15 enum class NVMeoFSecurityProtocolType{ 16 Invalid, 17 DHHC, 18 TLS_PSK, 19 OEM, 20 }; 21 22 enum class NVMeoFSecureHashType{ 23 Invalid, 24 SHA256, 25 SHA384, 26 SHA512, 27 }; 28 29 enum class NVMeoFSecurityTransportType{ 30 Invalid, 31 TLSv2, 32 TLSv3, 33 }; 34 35 enum class NVMeoFCipherSuiteType{ 36 Invalid, 37 TLS_AES_128_GCM_SHA256, 38 TLS_AES_256_GCM_SHA384, 39 }; 40 41 enum class NVMeoFDHGroupType{ 42 Invalid, 43 FFDHE2048, 44 FFDHE3072, 45 FFDHE4096, 46 FFDHE6144, 47 FFDHE8192, 48 }; 49 50 NLOHMANN_JSON_SERIALIZE_ENUM(KeyPolicyType, { 51 {KeyPolicyType::Invalid, "Invalid"}, 52 {KeyPolicyType::NVMeoF, "NVMeoF"}, 53 }); 54 55 NLOHMANN_JSON_SERIALIZE_ENUM(NVMeoFSecurityProtocolType, { 56 {NVMeoFSecurityProtocolType::Invalid, "Invalid"}, 57 {NVMeoFSecurityProtocolType::DHHC, "DHHC"}, 58 {NVMeoFSecurityProtocolType::TLS_PSK, "TLS_PSK"}, 59 {NVMeoFSecurityProtocolType::OEM, "OEM"}, 60 }); 61 62 NLOHMANN_JSON_SERIALIZE_ENUM(NVMeoFSecureHashType, { 63 {NVMeoFSecureHashType::Invalid, "Invalid"}, 64 {NVMeoFSecureHashType::SHA256, "SHA256"}, 65 {NVMeoFSecureHashType::SHA384, "SHA384"}, 66 {NVMeoFSecureHashType::SHA512, "SHA512"}, 67 }); 68 69 NLOHMANN_JSON_SERIALIZE_ENUM(NVMeoFSecurityTransportType, { 70 {NVMeoFSecurityTransportType::Invalid, "Invalid"}, 71 {NVMeoFSecurityTransportType::TLSv2, "TLSv2"}, 72 {NVMeoFSecurityTransportType::TLSv3, "TLSv3"}, 73 }); 74 75 NLOHMANN_JSON_SERIALIZE_ENUM(NVMeoFCipherSuiteType, { 76 {NVMeoFCipherSuiteType::Invalid, "Invalid"}, 77 {NVMeoFCipherSuiteType::TLS_AES_128_GCM_SHA256, "TLS_AES_128_GCM_SHA256"}, 78 {NVMeoFCipherSuiteType::TLS_AES_256_GCM_SHA384, "TLS_AES_256_GCM_SHA384"}, 79 }); 80 81 NLOHMANN_JSON_SERIALIZE_ENUM(NVMeoFDHGroupType, { 82 {NVMeoFDHGroupType::Invalid, "Invalid"}, 83 {NVMeoFDHGroupType::FFDHE2048, "FFDHE2048"}, 84 {NVMeoFDHGroupType::FFDHE3072, "FFDHE3072"}, 85 {NVMeoFDHGroupType::FFDHE4096, "FFDHE4096"}, 86 {NVMeoFDHGroupType::FFDHE6144, "FFDHE6144"}, 87 {NVMeoFDHGroupType::FFDHE8192, "FFDHE8192"}, 88 }); 89 90 } 91 // clang-format on 92