1 #include "nlohmann/json.hpp" 2 3 #include <ipmid/api.hpp> 4 5 /** @brief The set channel access IPMI command. 6 * 7 * @param[in] netfn 8 * @param[in] cmd 9 * @param[in] request 10 * @param[in,out] response 11 * @param[out] data_len 12 * @param[in] context 13 * 14 * @return IPMI_CC_OK on success, non-zero otherwise. 15 */ 16 ipmi_ret_t ipmi_set_channel_access(ipmi_netfn_t netfn, ipmi_cmd_t cmd, 17 ipmi_request_t request, 18 ipmi_response_t response, 19 ipmi_data_len_t data_len, 20 ipmi_context_t context); 21 22 /** @brief The get channel access IPMI command. 23 * 24 * @param[in] netfn 25 * @param[in] cmd 26 * @param[in] request 27 * @param[in,out] response 28 * @param[out] data_len 29 * @param[in] context 30 * 31 * @return IPMI_CC_OK on success, non-zero otherwise. 32 */ 33 ipmi_ret_t ipmi_get_channel_access(ipmi_netfn_t netfn, ipmi_cmd_t cmd, 34 ipmi_request_t request, 35 ipmi_response_t response, 36 ipmi_data_len_t data_len, 37 ipmi_context_t context); 38 39 /** @brief The get channel info IPMI command. 40 * 41 * @param[in] netfn 42 * @param[in] cmd 43 * @param[in] request 44 * @param[in,out] response 45 * @param[out] data_len 46 * @param[in] context 47 * 48 * @return IPMI_CC_OK on success, non-zero otherwise. 49 */ 50 ipmi_ret_t ipmi_app_channel_info(ipmi_netfn_t netfn, ipmi_cmd_t cmd, 51 ipmi_request_t request, 52 ipmi_response_t response, 53 ipmi_data_len_t data_len, 54 ipmi_context_t context); 55 56 /** @brief this command is used to look up what authentication, integrity, 57 * confidentiality algorithms are supported. 58 * 59 * @ param ctx - context pointer 60 * @ param channelNumber - channel number 61 * @ param payloadType - payload type 62 * @ param listIndex - list index 63 * @ param algoSelectBit - list algorithms 64 * 65 * @returns ipmi completion code plus response data 66 * - rspChannel - channel number for authentication algorithm. 67 * - rspRecords - cipher suite records. 68 **/ 69 ipmi::RspType<uint8_t, // Channel Number 70 std::vector<uint8_t> // Cipher Records 71 > 72 getChannelCipherSuites(ipmi::Context::ptr ctx, uint4_t channelNumber, 73 uint4_t reserved1, uint8_t payloadType, 74 uint6_t listIndex, uint1_t reserved2, 75 uint1_t algoSelectBit); 76 77 namespace cipher 78 { 79 80 static constexpr auto listCipherSuite = 0x80; 81 82 using Json = nlohmann::json; 83 static constexpr auto configFile = "/usr/share/ipmi-providers/cipher_list.json"; 84 static constexpr auto cipher = "cipher"; 85 static constexpr auto stdCipherSuite = 0xC0; 86 static constexpr auto oemCipherSuite = 0xC1; 87 static constexpr auto oem = "oemiana"; 88 static constexpr auto auth = "authentication"; 89 static constexpr auto integrity = "integrity"; 90 static constexpr auto integrityTag = 0x40; 91 static constexpr auto conf = "confidentiality"; 92 static constexpr auto confTag = 0x80; 93 94 } // namespace cipher 95