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

Unverified Commit eb2c3e90 authored by Tom Powell's avatar Tom Powell Committed by Michael Bestas
Browse files

releasetools: support reading release keys out of some sort of command

key passphrases may live in some sort of secure storage, support running
an arbitrary command to retrieve them.

Change-Id: I49862cf60f1b73a2356e0c492e1038beef28a95f
(cherry picked from commit 9caf8603)
parent 05efc156
Loading
Loading
Loading
Loading
+16 −1
Original line number Original line Diff line number Diff line
@@ -2576,6 +2576,7 @@ class PasswordManager(object):
  def __init__(self):
  def __init__(self):
    self.editor = os.getenv("EDITOR")
    self.editor = os.getenv("EDITOR")
    self.pwfile = os.getenv("ANDROID_PW_FILE")
    self.pwfile = os.getenv("ANDROID_PW_FILE")
    self.secure_storage_cmd = os.getenv("ANDROID_SECURE_STORAGE_CMD", None)


  def GetPasswords(self, items):
  def GetPasswords(self, items):
    """Get passwords corresponding to each string in 'items',
    """Get passwords corresponding to each string in 'items',
@@ -2594,10 +2595,24 @@ class PasswordManager(object):
    while True:
    while True:
      missing = []
      missing = []
      for i in items:
      for i in items:
        if i not in current or not current[i]:
          # Attempt to load using ANDROID_SECURE_STORAGE_CMD
          if self.secure_storage_cmd:
            try:
              os.environ["TMP__KEY_FILE_NAME"] = str(i)
              ps = subprocess.Popen(self.secure_storage_cmd, shell=True, stdout=subprocess.PIPE)
              output = ps.communicate()[0]
              if ps.returncode == 0:
                current[i] = output
            except Exception as e:
              print(e)
              pass
          if i not in current or not current[i]:
          if i not in current or not current[i]:
            missing.append(i)
            missing.append(i)
      # Are all the passwords already in the file?
      # Are all the passwords already in the file?
      if not missing:
      if not missing:
        if "ANDROID_SECURE_STORAGE_CMD" in os.environ:
          del os.environ["ANDROID_SECURE_STORAGE_CMD"]
        return current
        return current


      for i in missing:
      for i in missing: