1 #pragma once
2 #include <nlohmann/json.hpp>
3 
4 namespace manager_account
5 {
6 // clang-format off
7 
8 enum class AccountTypes{
9     Invalid,
10     Redfish,
11     SNMP,
12     OEM,
13     HostConsole,
14     ManagerConsole,
15     IPMI,
16     KVMIP,
17     VirtualMedia,
18     WebUI,
19 };
20 
21 enum class SNMPAuthenticationProtocols{
22     Invalid,
23     None,
24     HMAC_MD5,
25     HMAC_SHA96,
26     HMAC128_SHA224,
27     HMAC192_SHA256,
28     HMAC256_SHA384,
29     HMAC384_SHA512,
30 };
31 
32 enum class SNMPEncryptionProtocols{
33     Invalid,
34     None,
35     CBC_DES,
36     CFB128_AES128,
37     CFB128_AES192,
38     CFB128_AES256,
39 };
40 
41 NLOHMANN_JSON_SERIALIZE_ENUM(AccountTypes, {
42     {AccountTypes::Invalid, "Invalid"},
43     {AccountTypes::Redfish, "Redfish"},
44     {AccountTypes::SNMP, "SNMP"},
45     {AccountTypes::OEM, "OEM"},
46     {AccountTypes::HostConsole, "HostConsole"},
47     {AccountTypes::ManagerConsole, "ManagerConsole"},
48     {AccountTypes::IPMI, "IPMI"},
49     {AccountTypes::KVMIP, "KVMIP"},
50     {AccountTypes::VirtualMedia, "VirtualMedia"},
51     {AccountTypes::WebUI, "WebUI"},
52 });
53 
54 NLOHMANN_JSON_SERIALIZE_ENUM(SNMPAuthenticationProtocols, {
55     {SNMPAuthenticationProtocols::Invalid, "Invalid"},
56     {SNMPAuthenticationProtocols::None, "None"},
57     {SNMPAuthenticationProtocols::HMAC_MD5, "HMAC_MD5"},
58     {SNMPAuthenticationProtocols::HMAC_SHA96, "HMAC_SHA96"},
59     {SNMPAuthenticationProtocols::HMAC128_SHA224, "HMAC128_SHA224"},
60     {SNMPAuthenticationProtocols::HMAC192_SHA256, "HMAC192_SHA256"},
61     {SNMPAuthenticationProtocols::HMAC256_SHA384, "HMAC256_SHA384"},
62     {SNMPAuthenticationProtocols::HMAC384_SHA512, "HMAC384_SHA512"},
63 });
64 
65 NLOHMANN_JSON_SERIALIZE_ENUM(SNMPEncryptionProtocols, {
66     {SNMPEncryptionProtocols::Invalid, "Invalid"},
67     {SNMPEncryptionProtocols::None, "None"},
68     {SNMPEncryptionProtocols::CBC_DES, "CBC_DES"},
69     {SNMPEncryptionProtocols::CFB128_AES128, "CFB128_AES128"},
70     {SNMPEncryptionProtocols::CFB128_AES192, "CFB128_AES192"},
71     {SNMPEncryptionProtocols::CFB128_AES256, "CFB128_AES256"},
72 });
73 
74 }
75 // clang-format on
76