IPMI_RMCP+.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. /****************************************************************
  2. ****************************************************************
  3. ** **
  4. ** (C)Copyright 2005-2006, American Megatrends Inc. **
  5. ** **
  6. ** All Rights Reserved. **
  7. ** **
  8. ** 6145-F, Northbelt Parkway, Norcross, **
  9. ** **
  10. ** Georgia - 30071, USA. Phone-(770)-246-8600. **
  11. ** **
  12. ****************************************************************
  13. ****************************************************************
  14. ****************************************************************
  15. *
  16. * rmcp.h
  17. * RMCP Packet Handler
  18. *
  19. * Author: Govind Kothandapani <govindk@ami.com>
  20. * : Bakka Ravinder Reddy <bakkar@ami.com>
  21. *
  22. *****************************************************************/
  23. #ifndef IPMI_RMCP_PLUS_H
  24. #define IPMI_RMCP_PLUS_H
  25. #include "Types.h"
  26. //#include "coreTypes.h"
  27. #pragma pack( 1 )
  28. #define MAX_PAYLOAD_ALGO_SUPPORTED 3
  29. /**** RSSP and RAKP Message Status Codes *****/
  30. #define SC_NO_ERROR 0
  31. #define SC_INSUFFICIENT_RESOURCE 1
  32. #define SC_INV_SESSION_ID 2
  33. #define SC_INV_PAYLOAD_TYPE 3
  34. #define SC_INV_AUTH_ALGORITHM 4
  35. #define SC_INV_INTEGRITY_ALGORITHM 5
  36. #define SC_NO_MATCHED_AUTH_PAYLOAD 6
  37. #define SC_NO_MATCHED_INTEGRITY_PAYLOAD 7
  38. #define SC_INACTIVE_SESSION_ID 8
  39. #define SC_INV_ROLE 9
  40. #define SC_UNAUTHORISED_ROLE 10
  41. #define SC_INSUFFICIENT_RESOURCE_AT_ROLE 11
  42. #define SC_INV_NAME_LEN 12
  43. #define SC_UNAUTHORISED_NAME 13
  44. #define SC_UNAUTHORISED_GUID 14
  45. #define SC_INV_INTEGRITY_CHECK 15
  46. #define SC_INV_CONFIDENTIALITY_ALGORTHM 16
  47. #define SC_NO_CIPHER_SUITE_MATCH 17
  48. #define SESSION_INTEGRITY_KEY_SIZE 20
  49. #define SESSION_HMAC_MD5_I_KEY_SIZE 16
  50. #define SESSION_MD5_KEY_SIZE 16
  51. #define HASH_KEY1_SIZE 20
  52. #define HASH_KEY2_SIZE 20
  53. #define SHA2_HASH_KEY_SIZE 32
  54. #define MAX_HASH_KEY_SIZE SHA2_HASH_KEY_SIZE
  55. /**** RSSP Open Session Request ****/
  56. typedef struct
  57. {
  58. INT8U PayloadType;
  59. INT16U Reserved1;
  60. INT8U PayloadLen;
  61. INT8U Algorithm;
  62. INT8U Reserved2 [3];
  63. } PACKED RSSPPayloadInfo_T;
  64. typedef struct
  65. {
  66. INT8U MsgTag;
  67. INT8U Role;
  68. INT8U Reserved [2];
  69. uint32_t RemConSessionID;
  70. RSSPPayloadInfo_T Auth;
  71. RSSPPayloadInfo_T Integrity;
  72. RSSPPayloadInfo_T Confidentiality;
  73. } PACKED RSSPOpenSessionReq_T;
  74. /**** RSSP Open Session Response ****/
  75. typedef struct
  76. {
  77. INT8U MsgTag;
  78. INT8U StatusCode;
  79. INT8U Role;
  80. INT8U Reserved;
  81. uint32_t RemConSessionID;
  82. } PACKED RSSPOpenSessionErrRes_T;
  83. typedef struct
  84. {
  85. INT8U MsgTag;
  86. INT8U StatusCode;
  87. INT8U Role;
  88. INT8U Reserved;
  89. uint32_t RemConSessionID;
  90. uint32_t MgdSysSessionID;
  91. RSSPPayloadInfo_T Auth;
  92. RSSPPayloadInfo_T Integrity;
  93. RSSPPayloadInfo_T Confidentiality;
  94. } PACKED RSSPOpenSessionRes_T;
  95. /**** RAKP Message1 ****/
  96. typedef struct
  97. {
  98. INT8U MsgTag;
  99. INT8U Reserved1 [3];
  100. uint32_t ManSysSessionID;
  101. INT8U RemConRandomNo [16];
  102. INT8U Role;
  103. INT8U Reserved2 [2];
  104. INT8U UsrNameLen;
  105. INT8U UsrName [16];
  106. } PACKED RAKPMsg1Req_T;
  107. /**** RAKP Message2 ****/
  108. typedef struct
  109. {
  110. INT8U MsgTag;
  111. INT8U StatusCode;
  112. INT8U Reserved1 [2];
  113. uint32_t RemConSessionID;
  114. } PACKED RAKPMsg2ErrRes_T;
  115. typedef struct
  116. {
  117. INT8U MsgTag;
  118. INT8U StatusCode;
  119. INT8U Reserved1 [2];
  120. uint32_t RemConSessionID;
  121. INT8U ManSysRandomNo [16];
  122. INT8U ManSysGUID [16];
  123. } PACKED RAKPMsg2Res_T;
  124. typedef struct
  125. {
  126. uint32_t RemConSessionID;
  127. uint32_t MgdSysSessionID;
  128. INT8U RemConRandNo [16];
  129. INT8U MgdSysRandNo [16];
  130. INT8U MgdSysGUID [16];
  131. INT8U Role;
  132. INT8U UsrNameLen;
  133. INT8U UsrName [16];
  134. } PACKED RAKPMsg1HMAC_T;
  135. /**** RAKP Message3 ****/
  136. typedef struct
  137. {
  138. INT8U MsgTag;
  139. INT8U StatusCode;
  140. INT8U Reserved1 [2];
  141. uint32_t ManSysSessionID;
  142. } PACKED RAKPMsg3Req_T;
  143. typedef struct
  144. {
  145. INT8U MgdSysRandNo [16];
  146. uint32_t RemConSessionID;
  147. INT8U Role;
  148. INT8U UsrNameLen;
  149. INT8U UsrName [16];
  150. } PACKED Msg3hmac_T;
  151. typedef struct
  152. {
  153. INT8U RemConRandNo [16];
  154. INT8U MgdSysRandNo [16];
  155. INT8U Role;
  156. INT8U UsrNameLen;
  157. INT8U UsrName [16];
  158. } PACKED SIKhmac_T;
  159. /**** RAKP Message4 ****/
  160. typedef struct
  161. {
  162. INT8U MsgTag;
  163. INT8U StatusCode;
  164. INT8U Reserved1 [2];
  165. uint32_t RemConSessionID;
  166. } PACKED RAKPMsg4ErrRes_T;
  167. typedef struct
  168. {
  169. INT8U MsgTag;
  170. INT8U StatusCode;
  171. INT8U Reserved1 [2];
  172. uint32_t RemConSessionID;
  173. } PACKED RAKPMsg4Res_T;
  174. typedef struct
  175. {
  176. INT8U RemConRandNo [16];
  177. uint32_t MgdSysSessionID;
  178. INT8U MgdSysGUID [16];
  179. } PACKED RAKPMsg4hmac_T;
  180. #pragma pack( )
  181. #endif /* RMCP_PLUS_H */