Home | History | Annotate | Download | only in GetPass
      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 
     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
     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