[edk2-devel] [PUBLIC edk2 PATCH v2 01/10] NetworkPkg/IScsiDxe: wrap IScsiCHAP source files to 80 characters
Maciej Rabeda
maciej.rabeda at linux.intel.com
Fri Jun 11 11:39:44 UTC 2021
I second Ray on the question!
I can only assume it is vi without syntax coloring... :)
On 11-Jun-21 13:37, Ni, Ray wrote:
> No objection on the patch. Just curious what editor you are using😊
>
>> -----Original Message-----
>> From: devel at edk2.groups.io <devel at edk2.groups.io> On Behalf Of Laszlo Ersek
>> Sent: Tuesday, June 8, 2021 8:13 PM
>> To: edk2-devel-groups-io <devel at edk2.groups.io>
>> Cc: Wu, Jiaxin <jiaxin.wu at intel.com>; Maciej Rabeda <maciej.rabeda at linux.intel.com>; Philippe Mathieu-Daudé
>> <philmd at redhat.com>; Fu, Siyuan <siyuan.fu at intel.com>
>> Subject: [edk2-devel] [PUBLIC edk2 PATCH v2 01/10] NetworkPkg/IScsiDxe: wrap IScsiCHAP source files to 80 characters
>>
>> Working with overlong lines is difficult for me; rewrap the CHAP-related
>> source files in IScsiDxe to 80 characters width. No functional changes.
>>
>> Cc: Jiaxin Wu <jiaxin.wu at intel.com>
>> Cc: Maciej Rabeda <maciej.rabeda at linux.intel.com>
>> Cc: Philippe Mathieu-Daudé <philmd at redhat.com>
>> Cc: Siyuan Fu <siyuan.fu at intel.com>
>> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3356
>> Signed-off-by: Laszlo Ersek <lersek at redhat.com>
>> Reviewed-by: Maciej Rabeda <maciej.rabeda at linux.intel.com>
>> Reviewed-by: Philippe Mathieu-Daudé <philmd at redhat.com>
>> ---
>> NetworkPkg/IScsiDxe/IScsiCHAP.h | 3 +-
>> NetworkPkg/IScsiDxe/IScsiCHAP.c | 90 +++++++++++++++-----
>> 2 files changed, 71 insertions(+), 22 deletions(-)
>>
>> diff --git a/NetworkPkg/IScsiDxe/IScsiCHAP.h b/NetworkPkg/IScsiDxe/IScsiCHAP.h
>> index 140bba0dcd76..5e59fb678bd7 100644
>> --- a/NetworkPkg/IScsiDxe/IScsiCHAP.h
>> +++ b/NetworkPkg/IScsiDxe/IScsiCHAP.h
>> @@ -72,31 +72,32 @@ typedef struct _ISCSI_CHAP_AUTH_DATA {
>>
>> @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 occurred.
>> @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.
>> + 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 occurred.
>>
>> **/
>> EFI_STATUS
>> IScsiCHAPToSendReq (
>> IN ISCSI_CONNECTION *Conn,
>> IN OUT NET_BUF *Pdu
>> );
>>
>> #endif
>> diff --git a/NetworkPkg/IScsiDxe/IScsiCHAP.c b/NetworkPkg/IScsiDxe/IScsiCHAP.c
>> index 355c6f129f68..cbbc56ae5b43 100644
>> --- a/NetworkPkg/IScsiDxe/IScsiCHAP.c
>> +++ b/NetworkPkg/IScsiDxe/IScsiCHAP.c
>> @@ -1,42 +1,45 @@
>> /** @file
>> - This file is for Challenge-Handshake Authentication Protocol (CHAP) Configuration.
>> + This file is for Challenge-Handshake Authentication Protocol (CHAP)
>> + Configuration.
>>
>> Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>
>> SPDX-License-Identifier: BSD-2-Clause-Patent
>>
>> **/
>>
>> #include "IScsiImpl.h"
>>
>> /**
>> Initiator calculates its own expected hash value.
>>
>> @param[in] ChapIdentifier iSCSI CHAP identifier sent by authenticator.
>> @param[in] ChapSecret iSCSI CHAP secret of the authenticator.
>> @param[in] SecretLength The length of iSCSI CHAP secret.
>> @param[in] ChapChallenge The challenge message sent by authenticator.
>> @param[in] ChallengeLength The length of iSCSI CHAP challenge message.
>> @param[out] ChapResponse The calculation of the expected hash value.
>>
>> - @retval EFI_SUCCESS The expected hash value was calculatedly successfully.
>> - @retval EFI_PROTOCOL_ERROR The length of the secret should be at least the
>> - length of the hash value for the hashing algorithm chosen.
>> + @retval EFI_SUCCESS The expected hash value was calculatedly
>> + successfully.
>> + @retval EFI_PROTOCOL_ERROR The length of the secret should be at least
>> + the length of the hash value for the hashing
>> + algorithm chosen.
>> @retval EFI_PROTOCOL_ERROR MD5 hash operation fail.
>> @retval EFI_OUT_OF_RESOURCES Fail to allocate resource to complete MD5.
>>
>> **/
>> EFI_STATUS
>> IScsiCHAPCalculateResponse (
>> IN UINT32 ChapIdentifier,
>> IN CHAR8 *ChapSecret,
>> IN UINT32 SecretLength,
>> IN UINT8 *ChapChallenge,
>> IN UINT32 ChallengeLength,
>> OUT UINT8 *ChapResponse
>> )
>> {
>> UINTN Md5ContextSize;
>> VOID *Md5Ctx;
>> CHAR8 IdByte[1];
>> EFI_STATUS Status;
>>
>> @@ -78,40 +81,42 @@ IScsiCHAPCalculateResponse (
>> goto Exit;
>> }
>>
>> if (Md5Final (Md5Ctx, ChapResponse)) {
>> Status = EFI_SUCCESS;
>> }
>>
>> Exit:
>> FreePool (Md5Ctx);
>> return Status;
>> }
>>
>> /**
>> The initiator checks the CHAP response replied by target against its own
>> calculation of the expected hash value.
>>
>> @param[in] AuthData iSCSI CHAP authentication data.
>> @param[in] TargetResponse The response from target.
>>
>> - @retval EFI_SUCCESS The response from target passed authentication.
>> - @retval EFI_SECURITY_VIOLATION The response from target was not expected value.
>> + @retval EFI_SUCCESS The response from target passed
>> + authentication.
>> + @retval EFI_SECURITY_VIOLATION The response from target was not expected
>> + value.
>> @retval Others Other errors as indicated.
>>
>> **/
>> EFI_STATUS
>> IScsiCHAPAuthTarget (
>> IN ISCSI_CHAP_AUTH_DATA *AuthData,
>> IN UINT8 *TargetResponse
>> )
>> {
>> EFI_STATUS Status;
>> UINT32 SecretSize;
>> UINT8 VerifyRsp[ISCSI_CHAP_RSP_LEN];
>>
>> Status = EFI_SUCCESS;
>>
>> SecretSize = (UINT32) AsciiStrLen (AuthData->AuthConfig->ReverseCHAPSecret);
>> Status = IScsiCHAPCalculateResponse (
>> AuthData->OutIdentifier,
>> AuthData->AuthConfig->ReverseCHAPSecret,
>> @@ -177,187 +182,211 @@ IScsiCHAPOnRspReceived (
>> //
>> NetbufQueCopy (&Conn->RspQue, 0, Len, Data);
>>
>> //
>> // Build the key-value list from the data segment of the Login Response.
>> //
>> KeyValueList = IScsiBuildKeyValueList ((CHAR8 *) Data, Len);
>> if (KeyValueList == NULL) {
>> Status = EFI_OUT_OF_RESOURCES;
>> goto ON_EXIT;
>> }
>>
>> Status = EFI_PROTOCOL_ERROR;
>>
>> switch (Conn->AuthStep) {
>> case ISCSI_AUTH_INITIAL:
>> //
>> // The first Login Response.
>> //
>> - Value = IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_TARGET_PORTAL_GROUP_TAG);
>> + Value = IScsiGetValueByKeyFromList (
>> + KeyValueList,
>> + ISCSI_KEY_TARGET_PORTAL_GROUP_TAG
>> + );
>> if (Value == NULL) {
>> goto ON_EXIT;
>> }
>>
>> Result = IScsiNetNtoi (Value);
>> if (Result > 0xFFFF) {
>> goto ON_EXIT;
>> }
>>
>> Session->TargetPortalGroupTag = (UINT16) Result;
>>
>> - Value = IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_AUTH_METHOD);
>> + Value = IScsiGetValueByKeyFromList (
>> + KeyValueList,
>> + ISCSI_KEY_AUTH_METHOD
>> + );
>> if (Value == NULL) {
>> goto ON_EXIT;
>> }
>> //
>> - // Initiator mandates CHAP authentication but target replies without "CHAP", or
>> - // initiator suggets "None" but target replies with some kind of auth method.
>> + // Initiator mandates CHAP authentication but target replies without
>> + // "CHAP", or initiator suggets "None" but target replies with some kind of
>> + // auth method.
>> //
>> if (Session->AuthType == ISCSI_AUTH_TYPE_NONE) {
>> if (AsciiStrCmp (Value, ISCSI_KEY_VALUE_NONE) != 0) {
>> goto ON_EXIT;
>> }
>> } else if (Session->AuthType == ISCSI_AUTH_TYPE_CHAP) {
>> if (AsciiStrCmp (Value, ISCSI_AUTH_METHOD_CHAP) != 0) {
>> goto ON_EXIT;
>> }
>> } else {
>> goto ON_EXIT;
>> }
>>
>> //
>> // Transit to CHAP step one.
>> //
>> Conn->AuthStep = ISCSI_CHAP_STEP_ONE;
>> Status = EFI_SUCCESS;
>> break;
>>
>> case ISCSI_CHAP_STEP_TWO:
>> //
>> // The Target replies with CHAP_A=<A> CHAP_I=<I> CHAP_C=<C>
>> //
>> - Value = IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_CHAP_ALGORITHM);
>> + Value = IScsiGetValueByKeyFromList (
>> + KeyValueList,
>> + ISCSI_KEY_CHAP_ALGORITHM
>> + );
>> if (Value == NULL) {
>> goto ON_EXIT;
>> }
>>
>> Algorithm = IScsiNetNtoi (Value);
>> if (Algorithm != ISCSI_CHAP_ALGORITHM_MD5) {
>> //
>> // Unsupported algorithm is chosen by target.
>> //
>> goto ON_EXIT;
>> }
>>
>> - Identifier = IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_CHAP_IDENTIFIER);
>> + Identifier = IScsiGetValueByKeyFromList (
>> + KeyValueList,
>> + ISCSI_KEY_CHAP_IDENTIFIER
>> + );
>> if (Identifier == NULL) {
>> goto ON_EXIT;
>> }
>>
>> - Challenge = IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_CHAP_CHALLENGE);
>> + Challenge = IScsiGetValueByKeyFromList (
>> + KeyValueList,
>> + ISCSI_KEY_CHAP_CHALLENGE
>> + );
>> if (Challenge == NULL) {
>> goto ON_EXIT;
>> }
>> //
>> // Process the CHAP identifier and CHAP Challenge from Target.
>> // Calculate Response value.
>> //
>> Result = IScsiNetNtoi (Identifier);
>> if (Result > 0xFF) {
>> goto ON_EXIT;
>> }
>>
>> AuthData->InIdentifier = (UINT32) Result;
>> AuthData->InChallengeLength = ISCSI_CHAP_AUTH_MAX_LEN;
>> - IScsiHexToBin ((UINT8 *) AuthData->InChallenge, &AuthData->InChallengeLength, Challenge);
>> + IScsiHexToBin (
>> + (UINT8 *) AuthData->InChallenge,
>> + &AuthData->InChallengeLength,
>> + Challenge
>> + );
>> Status = IScsiCHAPCalculateResponse (
>> AuthData->InIdentifier,
>> AuthData->AuthConfig->CHAPSecret,
>> (UINT32) AsciiStrLen (AuthData->AuthConfig->CHAPSecret),
>> AuthData->InChallenge,
>> AuthData->InChallengeLength,
>> AuthData->CHAPResponse
>> );
>>
>> //
>> // Transit to next step.
>> //
>> Conn->AuthStep = ISCSI_CHAP_STEP_THREE;
>> break;
>>
>> case ISCSI_CHAP_STEP_THREE:
>> //
>> // One way CHAP authentication and the target would like to
>> // authenticate us.
>> //
>> Status = EFI_SUCCESS;
>> break;
>>
>> case ISCSI_CHAP_STEP_FOUR:
>> ASSERT (AuthData->AuthConfig->CHAPType == ISCSI_CHAP_MUTUAL);
>> //
>> // The forth step, CHAP_N=<N> CHAP_R=<R> is received from Target.
>> //
>> Name = IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_CHAP_NAME);
>> if (Name == NULL) {
>> goto ON_EXIT;
>> }
>>
>> - Response = IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_CHAP_RESPONSE);
>> + Response = IScsiGetValueByKeyFromList (
>> + KeyValueList,
>> + ISCSI_KEY_CHAP_RESPONSE
>> + );
>> if (Response == NULL) {
>> goto ON_EXIT;
>> }
>>
>> RspLen = ISCSI_CHAP_RSP_LEN;
>> IScsiHexToBin (TargetRsp, &RspLen, Response);
>>
>> //
>> // Check the CHAP Name and Response replied by Target.
>> //
>> Status = IScsiCHAPAuthTarget (AuthData, TargetRsp);
>> break;
>>
>> default:
>> break;
>> }
>>
>> ON_EXIT:
>>
>> if (KeyValueList != NULL) {
>> IScsiFreeKeyValueList (KeyValueList);
>> }
>>
>> FreePool (Data);
>>
>> return Status;
>> }
>>
>>
>> /**
>> 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.
>> + 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 occurred.
>>
>> **/
>> EFI_STATUS
>> IScsiCHAPToSendReq (
>> IN ISCSI_CONNECTION *Conn,
>> IN OUT NET_BUF *Pdu
>> )
>> {
>> EFI_STATUS Status;
>> ISCSI_SESSION *Session;
>> ISCSI_LOGIN_REQUEST *LoginReq;
>> ISCSI_CHAP_AUTH_DATA *AuthData;
>> CHAR8 *Value;
>> CHAR8 ValueStr[256];
>> CHAR8 *Response;
>> UINT32 RspLen;
>> CHAR8 *Challenge;
>> @@ -376,95 +405,114 @@ IScsiCHAPToSendReq (
>> RspLen = 2 * ISCSI_CHAP_RSP_LEN + 3;
>> Response = AllocateZeroPool (RspLen);
>> if (Response == NULL) {
>> return EFI_OUT_OF_RESOURCES;
>> }
>>
>> ChallengeLen = 2 * ISCSI_CHAP_RSP_LEN + 3;
>> Challenge = AllocateZeroPool (ChallengeLen);
>> if (Challenge == NULL) {
>> FreePool (Response);
>> return EFI_OUT_OF_RESOURCES;
>> }
>>
>> switch (Conn->AuthStep) {
>> case ISCSI_AUTH_INITIAL:
>> //
>> // It's the initial Login Request. Fill in the key=value pairs mandatory
>> // for the initial Login Request.
>> //
>> - IScsiAddKeyValuePair (Pdu, ISCSI_KEY_INITIATOR_NAME, mPrivate->InitiatorName);
>> + IScsiAddKeyValuePair (
>> + Pdu,
>> + ISCSI_KEY_INITIATOR_NAME,
>> + mPrivate->InitiatorName
>> + );
>> IScsiAddKeyValuePair (Pdu, ISCSI_KEY_SESSION_TYPE, "Normal");
>> IScsiAddKeyValuePair (
>> Pdu,
>> ISCSI_KEY_TARGET_NAME,
>> Session->ConfigData->SessionConfigData.TargetName
>> );
>>
>> if (Session->AuthType == ISCSI_AUTH_TYPE_NONE) {
>> Value = ISCSI_KEY_VALUE_NONE;
>> ISCSI_SET_FLAG (LoginReq, ISCSI_LOGIN_REQ_PDU_FLAG_TRANSIT);
>> } else {
>> Value = ISCSI_AUTH_METHOD_CHAP;
>> }
>>
>> IScsiAddKeyValuePair (Pdu, ISCSI_KEY_AUTH_METHOD, Value);
>>
>> break;
>>
>> case ISCSI_CHAP_STEP_ONE:
>> //
>> - // First step, send the Login Request with CHAP_A=<A1,A2...> key-value pair.
>> + // First step, send the Login Request with CHAP_A=<A1,A2...> key-value
>> + // pair.
>> //
>> AsciiSPrint (ValueStr, sizeof (ValueStr), "%d", ISCSI_CHAP_ALGORITHM_MD5);
>> IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_ALGORITHM, ValueStr);
>>
>> Conn->AuthStep = ISCSI_CHAP_STEP_TWO;
>> break;
>>
>> case ISCSI_CHAP_STEP_THREE:
>> //
>> // Third step, send the Login Request with CHAP_N=<N> CHAP_R=<R> or
>> // CHAP_N=<N> CHAP_R=<R> CHAP_I=<I> CHAP_C=<C> if target authentication is
>> // required too.
>> //
>> // CHAP_N=<N>
>> //
>> - IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_NAME, (CHAR8 *) &AuthData->AuthConfig->CHAPName);
>> + IScsiAddKeyValuePair (
>> + Pdu,
>> + ISCSI_KEY_CHAP_NAME,
>> + (CHAR8 *) &AuthData->AuthConfig->CHAPName
>> + );
>> //
>> // CHAP_R=<R>
>> //
>> - IScsiBinToHex ((UINT8 *) AuthData->CHAPResponse, ISCSI_CHAP_RSP_LEN, Response, &RspLen);
>> + IScsiBinToHex (
>> + (UINT8 *) AuthData->CHAPResponse,
>> + ISCSI_CHAP_RSP_LEN,
>> + Response,
>> + &RspLen
>> + );
>> IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_RESPONSE, Response);
>>
>> if (AuthData->AuthConfig->CHAPType == ISCSI_CHAP_MUTUAL) {
>> //
>> // CHAP_I=<I>
>> //
>> IScsiGenRandom ((UINT8 *) &AuthData->OutIdentifier, 1);
>> AsciiSPrint (ValueStr, sizeof (ValueStr), "%d", AuthData->OutIdentifier);
>> IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_IDENTIFIER, ValueStr);
>> //
>> // CHAP_C=<C>
>> //
>> IScsiGenRandom ((UINT8 *) AuthData->OutChallenge, ISCSI_CHAP_RSP_LEN);
>> AuthData->OutChallengeLength = ISCSI_CHAP_RSP_LEN;
>> - IScsiBinToHex ((UINT8 *) AuthData->OutChallenge, ISCSI_CHAP_RSP_LEN, Challenge, &ChallengeLen);
>> + IScsiBinToHex (
>> + (UINT8 *) AuthData->OutChallenge,
>> + ISCSI_CHAP_RSP_LEN,
>> + Challenge,
>> + &ChallengeLen
>> + );
>> IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_CHALLENGE, Challenge);
>>
>> Conn->AuthStep = ISCSI_CHAP_STEP_FOUR;
>> }
>> //
>> // Set the stage transition flag.
>> //
>> ISCSI_SET_FLAG (LoginReq, ISCSI_LOGIN_REQ_PDU_FLAG_TRANSIT);
>> break;
>>
>> default:
>> Status = EFI_PROTOCOL_ERROR;
>> break;
>> }
>>
>> FreePool (Response);
>> FreePool (Challenge);
>>
>> return Status;
>> --
>> 2.19.1.3.g30247aa5d201
>>
>>
>>
>>
>>
>>
>
>
>
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#76388): https://edk2.groups.io/g/devel/message/76388
Mute This Topic: https://groups.io/mt/83394107/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list