def test_verify_challenge_tx(self): server_kp = Keypair.random() client_kp = Keypair.random() timeout = 600 network = 'Public Global Stellar Network ; September 2015' archor_name = "SDF" challenge = Builder.challenge_tx( server_secret=server_kp.seed().decode(), client_account_id=client_kp.address().decode(), archor_name=archor_name, network=network, timeout=timeout) challenge.sign() challenge_tx_server_signed = challenge.gen_xdr() transaction = Builder( client_kp.seed().decode(), network='Public Global Stellar Network ; September 2015', sequence=0, fee=100) transaction.import_from_xdr(challenge_tx_server_signed) transaction.sign() challenge_tx = transaction.gen_xdr() Builder.verify_challenge_tx( challenge_tx, server_kp.address().decode(), 'Public Global Stellar Network ; September 2015')
def _challenge_transaction(client_account): """ Generate the challenge transaction for a client account. This is used in `GET <auth>`, as per SEP 10. Returns the XDR encoding of that transaction. """ builder = Builder.challenge_tx( server_secret=settings.STELLAR_ACCOUNT_SEED, client_account_id=client_account, archor_name=ANCHOR_NAME, network=settings.STELLAR_NETWORK, ) builder.sign(secret=settings.STELLAR_ACCOUNT_SEED) envelope_xdr = builder.gen_xdr() return envelope_xdr.decode("ascii")
def test_challenge_tx(self): server_kp = Keypair.random() client_account_id = "GBDIT5GUJ7R5BXO3GJHFXJ6AZ5UQK6MNOIDMPQUSMXLIHTUNR2Q5CFNF" timeout = 600 network = 'TESTNET' archor_name = "SDF" tx = Builder.challenge_tx(server_secret=server_kp.seed().decode(), client_account_id=client_account_id, archor_name=archor_name, network=network, timeout=timeout) assert len(tx.ops) == 1 op = tx.ops[0] assert isinstance(op, ManageData) assert op.data_name == "SDF auth" assert len(op.data_value) == 64 assert op.source == client_account_id now = int(time.time()) assert now - 3 < tx.time_bounds['minTime'] < now + 3 assert tx.time_bounds['maxTime'] - tx.time_bounds['minTime'] == timeout assert tx.keypair == server_kp assert tx.sequence == -1