NetworkPkg/TlsAuthConfigDxe: Use StrToGuid in BaseLib

Cc: Ye Ting <ting.ye@intel.com>
Cc: Fu Siyuan <siyuan.fu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Wu Jiaxin <jiaxin.wu@intel.com>
Reviewed-by: Ye Ting <ting.ye@intel.com>
This commit is contained in:
Jiaxin Wu 2017-02-28 15:00:37 +08:00
parent a11928f331
commit f1bbd4e3cc
1 changed files with 10 additions and 147 deletions

View File

@ -1,7 +1,7 @@
/** @file /** @file
The Miscellaneous Routines for TlsAuthConfigDxe driver. The Miscellaneous Routines for TlsAuthConfigDxe driver.
Copyright (c) 2016, Intel Corporation. All rights reserved.<BR> Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License are licensed and made available under the terms and conditions of the BSD License
@ -106,144 +106,6 @@ GuidToString (
); );
} }
/**
Convert a String to Guid Value.
@param[in] Str Specifies the String to be converted.
@param[in] StrLen Number of Unicode Characters of String (exclusive \0)
@param[out] Guid Return the result Guid value.
@retval EFI_SUCCESS The operation is finished successfully.
@retval EFI_NOT_FOUND Invalid string.
**/
EFI_STATUS
StringToGuid (
IN CHAR16 *Str,
IN UINTN StrLen,
OUT EFI_GUID *Guid
)
{
CHAR16 *PtrBuffer;
CHAR16 *PtrPosition;
UINT16 *Buffer;
UINTN Data;
UINTN Index;
UINT16 Digits[3];
Buffer = (CHAR16 *) AllocateZeroPool (sizeof (CHAR16) * (StrLen + 1));
if (Buffer == NULL) {
return EFI_OUT_OF_RESOURCES;
}
StrCpyS (Buffer, (StrLen + 1), Str);
//
// Data1
//
PtrBuffer = Buffer;
PtrPosition = PtrBuffer;
while (*PtrBuffer != L'\0') {
if (*PtrBuffer == L'-') {
break;
}
PtrBuffer++;
}
if (*PtrBuffer == L'\0') {
FreePool (Buffer);
return EFI_NOT_FOUND;
}
*PtrBuffer = L'\0';
Data = StrHexToUintn (PtrPosition);
Guid->Data1 = (UINT32)Data;
//
// Data2
//
PtrBuffer++;
PtrPosition = PtrBuffer;
while (*PtrBuffer != L'\0') {
if (*PtrBuffer == L'-') {
break;
}
PtrBuffer++;
}
if (*PtrBuffer == L'\0') {
FreePool (Buffer);
return EFI_NOT_FOUND;
}
*PtrBuffer = L'\0';
Data = StrHexToUintn (PtrPosition);
Guid->Data2 = (UINT16)Data;
//
// Data3
//
PtrBuffer++;
PtrPosition = PtrBuffer;
while (*PtrBuffer != L'\0') {
if (*PtrBuffer == L'-') {
break;
}
PtrBuffer++;
}
if (*PtrBuffer == L'\0') {
FreePool (Buffer);
return EFI_NOT_FOUND;
}
*PtrBuffer = L'\0';
Data = StrHexToUintn (PtrPosition);
Guid->Data3 = (UINT16)Data;
//
// Data4[0..1]
//
for ( Index = 0 ; Index < 2 ; Index++) {
PtrBuffer++;
if ((*PtrBuffer == L'\0') || ( *(PtrBuffer + 1) == L'\0')) {
FreePool (Buffer);
return EFI_NOT_FOUND;
}
Digits[0] = *PtrBuffer;
PtrBuffer++;
Digits[1] = *PtrBuffer;
Digits[2] = L'\0';
Data = StrHexToUintn (Digits);
Guid->Data4[Index] = (UINT8)Data;
}
//
// skip the '-'
//
PtrBuffer++;
if ((*PtrBuffer != L'-' ) || ( *PtrBuffer == L'\0')) {
return EFI_NOT_FOUND;
}
//
// Data4[2..7]
//
for ( ; Index < 8; Index++) {
PtrBuffer++;
if ((*PtrBuffer == L'\0') || ( *(PtrBuffer + 1) == L'\0')) {
FreePool (Buffer);
return EFI_NOT_FOUND;
}
Digits[0] = *PtrBuffer;
PtrBuffer++;
Digits[1] = *PtrBuffer;
Digits[2] = L'\0';
Data = StrHexToUintn (Digits);
Guid->Data4[Index] = (UINT8)Data;
}
FreePool (Buffer);
return EFI_SUCCESS;
}
/** /**
List all cert in specified database by GUID in the page List all cert in specified database by GUID in the page
for user to select and delete as needed. for user to select and delete as needed.
@ -1218,7 +1080,7 @@ UpdatePage(
@retval FALSE Not exit caller function. @retval FALSE Not exit caller function.
**/ **/
BOOLEAN BOOLEAN
EFIAPI EFIAPI
UpdateCAFromFile ( UpdateCAFromFile (
IN EFI_DEVICE_PATH_PROTOCOL *FilePath IN EFI_DEVICE_PATH_PROTOCOL *FilePath
) )
@ -1669,6 +1531,7 @@ TlsAuthConfigAccessCallback (
{ {
EFI_INPUT_KEY Key; EFI_INPUT_KEY Key;
EFI_STATUS Status; EFI_STATUS Status;
RETURN_STATUS RStatus;
TLS_AUTH_CONFIG_PRIVATE_DATA *Private; TLS_AUTH_CONFIG_PRIVATE_DATA *Private;
UINTN BufferSize; UINTN BufferSize;
TLS_AUTH_CONFIG_IFR_NVDATA *IfrNvData; TLS_AUTH_CONFIG_IFR_NVDATA *IfrNvData;
@ -1729,7 +1592,7 @@ TlsAuthConfigAccessCallback (
CleanUpPage (LabelId, Private); CleanUpPage (LabelId, Private);
break; break;
case KEY_TLS_AUTH_CONFIG_ENROLL_CERT_FROM_FILE: case KEY_TLS_AUTH_CONFIG_ENROLL_CERT_FROM_FILE:
ChooseFile( NULL, NULL, UpdateCAFromFile, &File); ChooseFile( NULL, NULL, UpdateCAFromFile, &File);
break; break;
case KEY_TLS_AUTH_CONFIG_VALUE_SAVE_AND_EXIT: case KEY_TLS_AUTH_CONFIG_VALUE_SAVE_AND_EXIT:
@ -1790,12 +1653,12 @@ TlsAuthConfigAccessCallback (
switch (QuestionId) { switch (QuestionId) {
case KEY_TLS_AUTH_CONFIG_CERT_GUID: case KEY_TLS_AUTH_CONFIG_CERT_GUID:
ASSERT (Private->CertGuid != NULL); ASSERT (Private->CertGuid != NULL);
Status = StringToGuid ( RStatus = StrToGuid (
IfrNvData->CertGuid, IfrNvData->CertGuid,
StrLen (IfrNvData->CertGuid), Private->CertGuid
Private->CertGuid );
); if (RETURN_ERROR (RStatus) || (IfrNvData->CertGuid[GUID_STRING_LENGTH] != L'\0')) {
if (EFI_ERROR (Status)) { Status = EFI_INVALID_PARAMETER;
break; break;
} }