Esempio n. 1
0
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
Esempio n. 2
0
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()
Esempio n. 3
0
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