Example #1
0
def create_wallet(
        server,
        wallet_path: FilePathParam(exists=False),
        seed: SecureStrOption,
        encrypt_secrets: BoolOption,
        encrypt_wallet: BoolOption,
        passphrase: SecureStrOption,
        gap_limit: IntRangeOption(minimum=0, maximum=10000, default=20),
        key_iteration_count: IntRangeOption(
            default=get_default_key_iteration_count,
            minimum=1, maximum=2**32
        )):
    if os.path.exists(wallet_path):
        raise WalletExists

    if not seed:
        logger.info("Seed not provided, generating one automatically.")
        seed = generate_seed()

    validate_seed(seed)

    wallet = Wallet(
        properties=WalletProperties(
            seed_algorithm=WalletSeedAlgorithm.NANO,
            seed=seed,
            gap_limit=gap_limit
        )
    )
    wallet.refill_accounts()

    if encrypt_secrets or encrypt_wallet:
        if not passphrase:
            raise MissingPassphrase

        wallet.change_passphrase(
            passphrase=passphrase,
            encrypt_secrets=encrypt_secrets,
            encrypt_wallet=encrypt_wallet,
            key_iteration_count=key_iteration_count)

    wallet.save(wallet_path)

    return StdioResult(
        {
            "message": "Saved wallet to {}".format(wallet_path),
            "wallet_encrypted": wallet.encryption.wallet_encrypted,
            "secrets_encrypted": wallet.encryption.secrets_encrypted
        }
    )
Example #2
0
    def create_wallet(balance=0, seed=None, confirmed=False):
        if not seed:
            seed = generate_seed()

        wallet = Wallet(
            properties=WalletProperties(
                seed=seed,
                seed_algorithm=WalletSeedAlgorithm.NANO,
                gap_limit=20
            )
        )
        wallet.refill_accounts()

        if balance > 0:
            account = wallet.accounts[0]
            block = account.receive_block(
                pocketable_block_factory(
                    account_id=account.account_id,
                    amount=balance
                )
            )

            if confirmed:
                block.sign(account.get_secret("private_key"))
                block.solve_work(difficulty=TEST_DIFFICULTY)
                block.confirmed = True
                account.update_confirmed_head()

        if is_encrypted_test:
            key_iteration_count = 200

            wallet.change_passphrase(
                passphrase="password", encrypt_wallet=True,
                encrypt_secrets=True, key_iteration_count=key_iteration_count
            )

            wallet.lock()

            assert not wallet.secrets_unlocked
            assert not wallet.secret_key
            assert wallet.encryption.secrets_encrypted

        return wallet