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)21 char *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)49 DestructMePlease (
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