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')
Exemple #2
0
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