def get_new_passphrase(): """Ask for new passphrase""" passphrase = getpass.getpass( 'New passphrase (leave empty for no password): ').encode('utf-8') if passphrase: confirm_passphrase = getpass.getpass('Confirm passphrase: ').encode( 'utf-8') if passphrase != confirm_passphrase: print('Passphrases doesn\'t match!', file=sys.stderr) sys.exit(1) config['encrypted'] = True else: passphrase = UNENCRYPTED_PASSPHRASE config['encrypted'] = False config.save() return passphrase
def command_passwd(args): if config['mastersecret']: cryptostorage = CryptoStorage( base64.b64decode(config['mastersecret'].encode('utf-8'))) if config['encrypted']: passphrase = getpass.getpass('Current passphrase: ').encode( 'utf-8') else: passphrase = UNENCRYPTED_PASSPHRASE cryptostorage.open_storage(passphrase) new_passphrase = get_new_passphrase() cryptostorage.change_passphrase(new_passphrase) config['mastersecret'] = base64.b64encode( cryptostorage.mastersecret).decode('utf-8') config.save() else: cryptostorage = get_cryptostorage()
def get_cryptostorage(): """Open existing CryptoStorage or initialize new one""" if config['mastersecret']: cryptostorage = CryptoStorage( base64.b64decode(config['mastersecret'].encode('utf-8'))) passphrase = b'' else: cryptostorage = CryptoStorage() passphrase = get_new_passphrase() cryptostorage.init_storage(passphrase) config['mastersecret'] = base64.b64encode( cryptostorage.mastersecret).decode('utf-8') config.save() if config['encrypted']: passphrase = passphrase or getpass.getpass('Passphrase: ').encode( 'utf-8') else: passphrase = UNENCRYPTED_PASSPHRASE cryptostorage.open_storage(passphrase) return cryptostorage