class KeyringProxy(object): def __init__(self, path, keyring_encrypted=False, enable_prompt=True, random_on_empty=True): self.keyring_encrypted = keyring_encrypted if self.keyring_encrypted and not path.endswith(".crypt"): path = "%s.crypt" % (path) self.path = path if keyring_encrypted: self.ring = FixedCryptedFileKeyring() else: self.ring = UncryptedFileKeyring() self.ring.file_path = path self.enable_prompt = enable_prompt self.random_on_empty = random_on_empty def read(self, name, prompt): pw_val = self.ring.get_password(name, PW_USER) if pw_val: return (True, pw_val) pw_val = '' if self.enable_prompt and prompt: pw_val = InputPassword().get_password(name, prompt) if self.random_on_empty and len(pw_val) == 0: pw_val = RandomPassword().get_password(name, RAND_PW_LEN) return (False, pw_val) def save(self, name, password): self.ring.set_password(name, PW_USER, password) def __str__(self): prefix = 'encrypted' if not self.keyring_encrypted: prefix = "un" + prefix return '%s keyring @ %s' % (prefix, self.path)
def __init__(self, path, keyring_encrypted=False, enable_prompt=True, random_on_empty=True): self.keyring_encrypted = keyring_encrypted if self.keyring_encrypted and not path.endswith(".crypt"): path = "%s.crypt" % (path) self.path = path if keyring_encrypted: self.ring = FixedCryptedFileKeyring() else: self.ring = UncryptedFileKeyring() self.ring.file_path = path self.enable_prompt = enable_prompt self.random_on_empty = random_on_empty