Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2b22572f authored by adattatr's avatar adattatr Committed by Brint E. Kriebel
Browse files

If a console doesn't exist, read password from stdin.



When signapk.jar is invoked by scripts like
sign_target_files_apks.py, there is no console as signapk is
invoked using popen(). To support signing of APKs using
software keys with passwords, we need to read
the password from stdin if there is no console.

Change-Id: Icf69ba1e58bf1f91979eaf1d3b91cb202782e8fd
Signed-off-by: default avataradattatr <anisha.dattatraya.kulkarni@intel.com>
Signed-off-by: default avatarBrad Geltz <brad.geltz@intel.com>
Ticket: CYNGNOS-1725
(cherry picked from commit 30ca83f1)
parent 420da62d
Loading
Loading
Loading
Loading
+16 −5
Original line number Diff line number Diff line
@@ -167,20 +167,31 @@ class SignApk {
    }

    /**
     * Reads the password from console and returns it as a string.
     * If a console doesn't exist, reads the password from stdin
     * If a console exists, reads the password from console and returns it as a string.
     *
     * @param keyFile The file containing the private key.  Used to prompt the user.
     */
    private static String readPassword(File keyFile) {
        Console console;
        char[] pwd;
        if((console = System.console()) != null &&
           (pwd = console.readPassword("[%s]", "Enter password for " + keyFile)) != null){
        if ((console = System.console()) == null) {
            System.out.print("Enter password for " + keyFile + " (password will not be hidden): ");
            System.out.flush();
            BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
            try {
                return stdin.readLine();
            } catch (IOException ex) {
                return null;
            }
        } else {
            if ((pwd = console.readPassword("[%s]", "Enter password for " + keyFile)) != null) {
                return String.valueOf(pwd);
            } else {
                return null;
            }
        }
    }

    /**
     * Decrypt an encrypted PKCS#8 format private key.