12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #include "RMCP.h"
- #include "MD.h"
- #include <string.h>
- #include <stdint.h>
- #include "com_IPMIDefs.h"
- #include "com_IPMI_RMCP.h"
- #include "com_IPMI_AppDevice.h"
- #include "Session.h"
- void
- ComputeAuthCode ( uint8_t* pPassword, SessionHdr_T* pSessionHdr,
- IPMIMsgHdr_T* pIPMIMsg, uint8_t* pAuthCode,
- uint8_t ChannelType)
- {
- if (AUTH_TYPE_PASSWORD == pSessionHdr->AuthType)
- {
- memcpy (pAuthCode, pPassword, IPMI15_MAX_PASSWORD_LEN);
- }
- else
- {
- uint8_t AuthBuf [MAX_AUTH_PARAM_SIZE];
- uint16_t AuthBufLen = 0;
- uint8_t IPMIMsgLen = *(( uint8_t*) pIPMIMsg - 1);
-
- memcpy (AuthBuf, pPassword, IPMI15_MAX_PASSWORD_LEN);
- AuthBufLen += IPMI15_MAX_PASSWORD_LEN;
-
- memcpy ((uint8_t*)(AuthBuf + AuthBufLen), (uint8_t*)(&pSessionHdr->SessionID), sizeof (uint32_t));
- AuthBufLen += sizeof (uint32_t);
-
- memcpy (AuthBuf + AuthBufLen, pIPMIMsg, IPMIMsgLen);
- AuthBufLen += IPMIMsgLen;
- if (ChannelType == MULTI_SESSION_CHANNEL)
- {
-
- memcpy ((uint8_t*)(AuthBuf + AuthBufLen), (uint8_t*)(&pSessionHdr->SessionSeqNum), sizeof (uint32_t));
- AuthBufLen += sizeof (uint32_t);
- }
-
- memcpy (AuthBuf + AuthBufLen, pPassword, IPMI15_MAX_PASSWORD_LEN);
- AuthBufLen += IPMI15_MAX_PASSWORD_LEN;
- switch (pSessionHdr->AuthType)
- {
- case AUTH_TYPE_MD2 :
- AuthCodeCalMD2 (AuthBuf, pAuthCode, AuthBufLen);
- break;
- case AUTH_TYPE_MD5 :
- AuthCodeCalMD5 (AuthBuf, pAuthCode, AuthBufLen);
- break;
- default :
- printf ("RMCP.c : Invalid Authentication Type \r\n");
- }
- }
- }
|