/** @file | |
The header file of CHAP configuration. | |
Copyright (c) 2004 - 2009, Intel Corporation. All rights reserved.<BR> | |
This program and the accompanying materials | |
are licensed and made available under the terms and conditions of the BSD License | |
which accompanies this distribution. The full text of the license may be found at | |
http://opensource.org/licenses/bsd-license.php | |
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
**/ | |
#ifndef _ISCSI_CHAP_H_ | |
#define _ISCSI_CHAP_H_ | |
#define ISCSI_CHAP_AUTH_INFO_GUID \ | |
{ \ | |
0x786ec0ac, 0x65ae, 0x4d1b, {0xb1, 0x37, 0xd, 0x11, 0xa, 0x48, 0x37, 0x97} \ | |
} | |
extern EFI_GUID mIScsiCHAPAuthInfoGuid; | |
#define ISCSI_AUTH_METHOD_CHAP "CHAP" | |
#define ISCSI_KEY_CHAP_ALGORITHM "CHAP_A" | |
#define ISCSI_KEY_CHAP_IDENTIFIER "CHAP_I" | |
#define ISCSI_KEY_CHAP_CHALLENGE "CHAP_C" | |
#define ISCSI_KEY_CHAP_NAME "CHAP_N" | |
#define ISCSI_KEY_CHAP_RESPONSE "CHAP_R" | |
#define ISCSI_CHAP_ALGORITHM_MD5 5 | |
#define ISCSI_CHAP_AUTH_MAX_LEN 1024 | |
/// | |
/// MD5_HASHSIZE | |
/// | |
#define ISCSI_CHAP_RSP_LEN 16 | |
#define ISCSI_CHAP_INITIAL 0 | |
#define ISCSI_CHAP_STEP_ONE 1 | |
#define ISCSI_CHAP_STEP_TWO 2 | |
#define ISCSI_CHAP_STEP_THREE 3 | |
#define ISCSI_CHAP_STEP_FOUR 4 | |
#pragma pack(1) | |
typedef struct _ISCSI_CHAP_AUTH_CONFIG_NVDATA { | |
UINT8 CHAPType; | |
CHAR8 CHAPName[ISCSI_CHAP_NAME_MAX_LEN]; | |
CHAR8 CHAPSecret[ISCSI_CHAP_SECRET_STORAGE]; | |
CHAR8 ReverseCHAPName[ISCSI_CHAP_NAME_MAX_LEN]; | |
CHAR8 ReverseCHAPSecret[ISCSI_CHAP_SECRET_STORAGE]; | |
} ISCSI_CHAP_AUTH_CONFIG_NVDATA; | |
#pragma pack() | |
/// | |
/// ISCSI CHAP Authentication Data | |
/// | |
typedef struct _ISCSI_CHAP_AUTH_DATA { | |
ISCSI_CHAP_AUTH_CONFIG_NVDATA AuthConfig; | |
UINT32 InIdentifier; | |
UINT8 InChallenge[ISCSI_CHAP_AUTH_MAX_LEN]; | |
UINT32 InChallengeLength; | |
// | |
// Calculated CHAP Response (CHAP_R) value | |
// | |
UINT8 CHAPResponse[ISCSI_CHAP_RSP_LEN]; | |
// | |
// Auth-data to be sent out for mutual authentication | |
// | |
UINT32 OutIdentifier; | |
UINT8 OutChallenge[ISCSI_CHAP_AUTH_MAX_LEN]; | |
UINT32 OutChallengeLength; | |
} ISCSI_CHAP_AUTH_DATA; | |
/** | |
This function checks the received iSCSI Login Response during the security | |
negotiation stage. | |
@param[in] Conn The iSCSI connection. | |
@retval EFI_SUCCESS The Login Response passed the CHAP validation. | |
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory. | |
@retval EFI_PROTOCOL_ERROR Some kind of protocol error happend. | |
@retval Others Other errors as indicated. | |
**/ | |
EFI_STATUS | |
IScsiCHAPOnRspReceived ( | |
IN ISCSI_CONNECTION *Conn | |
); | |
/** | |
This function fills the CHAP authentication information into the login PDU | |
during the security negotiation stage in the iSCSI connection login. | |
@param[in] Conn The iSCSI connection. | |
@param[in, out] Pdu The PDU to send out. | |
@retval EFI_SUCCESS All check passed and the phase-related CHAP | |
authentication info is filled into the iSCSI PDU. | |
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory. | |
@retval EFI_PROTOCOL_ERROR Some kind of protocol error happend. | |
**/ | |
EFI_STATUS | |
IScsiCHAPToSendReq ( | |
IN ISCSI_CONNECTION *Conn, | |
IN OUT NET_BUF *Pdu | |
); | |
#endif |