1 /** @file 2 Implement the getpass function. 3 4 Copyright (c) 2011 - 2014, Intel Corporation <BR> 5 All rights reserved. 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 #include <Library/ShellLib.h> 15 #include <Library/MemoryAllocationLib.h> 16 #include <Library/UefiLib.h> 17 #include <Library/PcdLib.h> 18 19 static CHAR8 *ReturnStringAscii = NULL; 20 getpass(const char * Prompt)21char *getpass(const char *Prompt) 22 { 23 BOOLEAN Ascii; 24 CHAR16 *ReturnString; 25 26 Ascii = FALSE; 27 28 Print(L"%a", Prompt); 29 30 ReturnString = ShellFileHandleReturnLine (gEfiShellParametersProtocol->StdIn, &Ascii); 31 if (ReturnString == NULL) { 32 return (NULL); 33 } 34 35 ReturnStringAscii = AllocateZeroPool((StrLen(ReturnString)+1)*sizeof(CHAR8)); 36 if (ReturnStringAscii == NULL) { 37 return (NULL); 38 } 39 40 UnicodeStrToAsciiStr(ReturnString, ReturnStringAscii); 41 42 FreePool(ReturnString); 43 44 return (ReturnStringAscii); 45 } 46 47 EFI_STATUS 48 EFIAPI DestructMePlease(IN EFI_HANDLE ImageHandle,IN EFI_SYSTEM_TABLE * SystemTable)49DestructMePlease ( 50 IN EFI_HANDLE ImageHandle, 51 IN EFI_SYSTEM_TABLE *SystemTable 52 ) 53 { 54 SHELL_FREE_NON_NULL(ReturnStringAscii); 55 56 return EFI_SUCCESS; 57 } 58