1 /** @file 2 The header file of CHAP configuration. 3 4 Copyright (c) 2004 - 2011, Intel Corporation. All rights reserved.<BR> 5 This program and the accompanying materials 6 are licensed and made available under the terms and conditions of the BSD License 7 which accompanies this distribution. The full text of the license may be found at 8 http://opensource.org/licenses/bsd-license.php 9 10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12 13 **/ 14 15 #ifndef _ISCSI_CHAP_H_ 16 #define _ISCSI_CHAP_H_ 17 18 #define ISCSI_AUTH_METHOD_CHAP "CHAP" 19 20 #define ISCSI_KEY_CHAP_ALGORITHM "CHAP_A" 21 #define ISCSI_KEY_CHAP_IDENTIFIER "CHAP_I" 22 #define ISCSI_KEY_CHAP_CHALLENGE "CHAP_C" 23 #define ISCSI_KEY_CHAP_NAME "CHAP_N" 24 #define ISCSI_KEY_CHAP_RESPONSE "CHAP_R" 25 26 #define ISCSI_CHAP_ALGORITHM_MD5 5 27 28 #define ISCSI_CHAP_AUTH_MAX_LEN 1024 29 /// 30 /// MD5_HASHSIZE 31 /// 32 #define ISCSI_CHAP_RSP_LEN 16 33 34 #define ISCSI_CHAP_INITIAL 0 35 #define ISCSI_CHAP_STEP_ONE 1 36 #define ISCSI_CHAP_STEP_TWO 2 37 #define ISCSI_CHAP_STEP_THREE 3 38 #define ISCSI_CHAP_STEP_FOUR 4 39 40 #pragma pack(1) 41 42 typedef struct _ISCSI_CHAP_AUTH_CONFIG_NVDATA { 43 UINT8 CHAPType; 44 CHAR8 CHAPName[ISCSI_CHAP_NAME_STORAGE]; 45 CHAR8 CHAPSecret[ISCSI_CHAP_SECRET_STORAGE]; 46 CHAR8 ReverseCHAPName[ISCSI_CHAP_NAME_STORAGE]; 47 CHAR8 ReverseCHAPSecret[ISCSI_CHAP_SECRET_STORAGE]; 48 } ISCSI_CHAP_AUTH_CONFIG_NVDATA; 49 50 #pragma pack() 51 52 /// 53 /// ISCSI CHAP Authentication Data 54 /// 55 typedef struct _ISCSI_CHAP_AUTH_DATA { 56 ISCSI_CHAP_AUTH_CONFIG_NVDATA AuthConfig; 57 UINT32 InIdentifier; 58 UINT8 InChallenge[ISCSI_CHAP_AUTH_MAX_LEN]; 59 UINT32 InChallengeLength; 60 // 61 // Calculated CHAP Response (CHAP_R) value 62 // 63 UINT8 CHAPResponse[ISCSI_CHAP_RSP_LEN]; 64 65 // 66 // Auth-data to be sent out for mutual authentication 67 // 68 UINT32 OutIdentifier; 69 UINT8 OutChallenge[ISCSI_CHAP_AUTH_MAX_LEN]; 70 UINT32 OutChallengeLength; 71 } ISCSI_CHAP_AUTH_DATA; 72 73 /** 74 This function checks the received iSCSI Login Response during the security 75 negotiation stage. 76 77 @param[in] Conn The iSCSI connection. 78 79 @retval EFI_SUCCESS The Login Response passed the CHAP validation. 80 @retval EFI_OUT_OF_RESOURCES Failed to allocate memory. 81 @retval EFI_PROTOCOL_ERROR Some kind of protocol error happend. 82 @retval Others Other errors as indicated. 83 **/ 84 EFI_STATUS 85 IScsiCHAPOnRspReceived ( 86 IN ISCSI_CONNECTION *Conn 87 ); 88 /** 89 This function fills the CHAP authentication information into the login PDU 90 during the security negotiation stage in the iSCSI connection login. 91 92 @param[in] Conn The iSCSI connection. 93 @param[in, out] Pdu The PDU to send out. 94 95 @retval EFI_SUCCESS All check passed and the phase-related CHAP 96 authentication info is filled into the iSCSI PDU. 97 @retval EFI_OUT_OF_RESOURCES Failed to allocate memory. 98 @retval EFI_PROTOCOL_ERROR Some kind of protocol error happend. 99 **/ 100 EFI_STATUS 101 IScsiCHAPToSendReq ( 102 IN ISCSI_CONNECTION *Conn, 103 IN OUT NET_BUF *Pdu 104 ); 105 106 #endif 107