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 } )
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