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