summaryrefslogtreecommitdiffstats
path: root/app/channel.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'app/channel.hpp')
-rw-r--r--app/channel.hpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/app/channel.hpp b/app/channel.hpp
index 1391d62..79522e4 100644
--- a/app/channel.hpp
+++ b/app/channel.hpp
@@ -1,4 +1,5 @@
#include "ipmid.hpp"
+#include "nlohmann/json.hpp"
/** @brief The set channel access IPMI command.
*
@@ -57,3 +58,66 @@ ipmi_ret_t ipmi_app_channel_info(
ipmi_data_len_t data_len,
ipmi_context_t context);
+/** @brief Implementation of get channel cipher suites command
+ *
+ * @param[in] netfn - Net Function
+ * @param[in] cmd - Command
+ * @param[in] request - Request pointer
+ * @param[in,out] response - Response pointer
+ * @param[in,out] data_len - Data Length
+ * @param[in] context - Context
+ *
+ * @return IPMI_CC_OK on success, non-zero otherwise.
+ */
+ipmi_ret_t getChannelCipherSuites(ipmi_netfn_t netfn,
+ ipmi_cmd_t cmd,
+ ipmi_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context);
+
+namespace cipher
+{
+
+static constexpr auto defaultChannelNumber = 1;
+static constexpr auto listTypeMask = 0x80;
+static constexpr auto listCipherSuite = 0x80;
+static constexpr auto listIndexMask = 0x3F;
+static constexpr auto respSize = 16;
+
+using Json = nlohmann::json;
+static constexpr auto configFile =
+ "/usr/share/ipmi-providers/cipher_list.json";
+static constexpr auto cipher = "cipher";
+static constexpr auto stdCipherSuite = 0xC0;
+static constexpr auto oemCipherSuite = 0xC1;
+static constexpr auto oem = "oemiana";
+static constexpr auto auth = "authentication";
+static constexpr auto integrity = "integrity";
+static constexpr auto integrityTag = 0x40;
+static constexpr auto conf = "confidentiality";
+static constexpr auto confTag = 0x80;
+
+} //namespace cipher
+
+/** @struct GetChannelCipherRequest
+ *
+ * IPMI payload for Get Channel Cipher Suites command request
+ */
+struct GetChannelCipherRequest
+{
+ uint8_t channelNumber; //!< Channel Number
+ uint8_t payloadType; //!< Payload type number
+ uint8_t listIndex; //!< List Index
+} __attribute__((packed));
+
+/** @struct GetChannelCipherRespHeader
+ *
+ * IPMI payload for Get Channel Cipher Suites command response header
+ */
+struct GetChannelCipherRespHeader
+{
+ uint8_t channelNumber; //!< Channel Number
+} __attribute__((packed));
+
+
OpenPOWER on IntegriCloud