From df0a34f5004a909c57906739e6e27c0b72a12998 Mon Sep 17 00:00:00 2001
From: juga0 <juga@riseup.net>
Date: Sat, 5 Jan 2019 17:43:31 +0000
Subject: [PATCH] Stop including tests network as binary blob

To easy diffs and avoid security issues.

Fixes bug #28590. Bugfix v0.4.0.
---
 tests/integration/net.tar                     | Bin 215040 -> 0 bytes
 tests/integration/net/auth1/fingerprint       |   1 +
 .../net/auth1/keys/authority_certificate      |  46 ++++++
 .../net/auth1/keys/authority_identity_key     |  41 ++++++
 .../net/auth1/keys/authority_signing_key      |  27 ++++
 .../auth1/keys/ed25519_master_id_public_key   | Bin 0 -> 64 bytes
 .../auth1/keys/ed25519_master_id_secret_key   | Bin 0 -> 96 bytes
 .../net/auth1/keys/ed25519_signing_cert       | Bin 0 -> 172 bytes
 .../net/auth1/keys/ed25519_signing_secret_key | Bin 0 -> 96 bytes
 .../integration/net/auth1/keys/secret_id_key  |  15 ++
 .../net/auth1/keys/secret_onion_key           |  15 ++
 .../net/auth1/keys/secret_onion_key_ntor      | Bin 0 -> 96 bytes
 tests/integration/net/auth1/torrc             |  34 +++++
 tests/integration/net/auth2/fingerprint       |   1 +
 .../net/auth2/keys/authority_certificate      |  46 ++++++
 .../net/auth2/keys/authority_identity_key     |  41 ++++++
 .../net/auth2/keys/authority_signing_key      |  27 ++++
 .../auth2/keys/ed25519_master_id_public_key   | Bin 0 -> 64 bytes
 .../auth2/keys/ed25519_master_id_secret_key   | Bin 0 -> 96 bytes
 .../net/auth2/keys/ed25519_signing_cert       | Bin 0 -> 172 bytes
 .../net/auth2/keys/ed25519_signing_secret_key | Bin 0 -> 96 bytes
 .../integration/net/auth2/keys/secret_id_key  |  15 ++
 .../net/auth2/keys/secret_onion_key           |  15 ++
 .../net/auth2/keys/secret_onion_key_ntor      | Bin 0 -> 96 bytes
 tests/integration/net/auth2/torrc             |  34 +++++
 tests/integration/net/auth3/fingerprint       |   1 +
 .../net/auth3/keys/authority_certificate      |  46 ++++++
 .../net/auth3/keys/authority_identity_key     |  41 ++++++
 .../net/auth3/keys/authority_signing_key      |  27 ++++
 .../auth3/keys/ed25519_master_id_public_key   | Bin 0 -> 64 bytes
 .../auth3/keys/ed25519_master_id_secret_key   | Bin 0 -> 96 bytes
 .../net/auth3/keys/ed25519_signing_cert       | Bin 0 -> 172 bytes
 .../net/auth3/keys/ed25519_signing_secret_key | Bin 0 -> 96 bytes
 .../integration/net/auth3/keys/secret_id_key  |  15 ++
 .../net/auth3/keys/secret_onion_key           |  15 ++
 .../net/auth3/keys/secret_onion_key_ntor      | Bin 0 -> 96 bytes
 tests/integration/net/auth3/torrc             |  34 +++++
 tests/integration/net/exit1/fingerprint       |   1 +
 .../exit1/keys/ed25519_master_id_public_key   | Bin 0 -> 64 bytes
 .../exit1/keys/ed25519_master_id_secret_key   | Bin 0 -> 96 bytes
 .../net/exit1/keys/ed25519_signing_cert       | Bin 0 -> 172 bytes
 .../net/exit1/keys/ed25519_signing_secret_key | Bin 0 -> 96 bytes
 .../integration/net/exit1/keys/secret_id_key  |  15 ++
 .../net/exit1/keys/secret_onion_key           |  15 ++
 .../net/exit1/keys/secret_onion_key_ntor      | Bin 0 -> 96 bytes
 tests/integration/net/exit1/torrc             |  27 ++++
 tests/integration/net/exit2/fingerprint       |   1 +
 .../exit2/keys/ed25519_master_id_public_key   | Bin 0 -> 64 bytes
 .../exit2/keys/ed25519_master_id_secret_key   | Bin 0 -> 96 bytes
 .../net/exit2/keys/ed25519_signing_cert       | Bin 0 -> 172 bytes
 .../net/exit2/keys/ed25519_signing_secret_key | Bin 0 -> 96 bytes
 .../integration/net/exit2/keys/secret_id_key  |  15 ++
 .../net/exit2/keys/secret_onion_key           |  15 ++
 .../net/exit2/keys/secret_onion_key_ntor      | Bin 0 -> 96 bytes
 tests/integration/net/exit2/torrc             |  27 ++++
 tests/integration/net/exit3/fingerprint       |   1 +
 .../exit3/keys/ed25519_master_id_public_key   | Bin 0 -> 64 bytes
 .../exit3/keys/ed25519_master_id_secret_key   | Bin 0 -> 96 bytes
 .../net/exit3/keys/ed25519_signing_cert       | Bin 0 -> 172 bytes
 .../net/exit3/keys/ed25519_signing_secret_key | Bin 0 -> 96 bytes
 .../integration/net/exit3/keys/secret_id_key  |  15 ++
 .../net/exit3/keys/secret_onion_key           |  15 ++
 .../net/exit3/keys/secret_onion_key_ntor      | Bin 0 -> 96 bytes
 tests/integration/net/exit3/torrc             |  27 ++++
 tests/integration/net/relay1/fingerprint      |   1 +
 .../relay1/keys/ed25519_master_id_public_key  | Bin 0 -> 64 bytes
 .../relay1/keys/ed25519_master_id_secret_key  | Bin 0 -> 96 bytes
 .../net/relay1/keys/ed25519_signing_cert      | Bin 0 -> 172 bytes
 .../relay1/keys/ed25519_signing_secret_key    | Bin 0 -> 96 bytes
 .../integration/net/relay1/keys/secret_id_key |  15 ++
 .../net/relay1/keys/secret_onion_key          |  15 ++
 .../net/relay1/keys/secret_onion_key_ntor     | Bin 0 -> 96 bytes
 tests/integration/net/relay1/torrc            |  24 ++++
 .../net/relay1mbyteMAB/fingerprint            |   1 +
 .../keys/ed25519_master_id_public_key         | Bin 0 -> 64 bytes
 .../keys/ed25519_master_id_secret_key         | Bin 0 -> 96 bytes
 .../relay1mbyteMAB/keys/ed25519_signing_cert  | Bin 0 -> 172 bytes
 .../keys/ed25519_signing_secret_key           | Bin 0 -> 96 bytes
 .../net/relay1mbyteMAB/keys/secret_id_key     |  15 ++
 .../net/relay1mbyteMAB/keys/secret_onion_key  |  15 ++
 .../relay1mbyteMAB/keys/secret_onion_key_ntor | Bin 0 -> 96 bytes
 tests/integration/net/relay1mbyteMAB/torrc    |  25 ++++
 .../net/relay1mbyteRBR/fingerprint            |   1 +
 .../keys/ed25519_master_id_public_key         | Bin 0 -> 64 bytes
 .../keys/ed25519_master_id_secret_key         | Bin 0 -> 96 bytes
 .../relay1mbyteRBR/keys/ed25519_signing_cert  | Bin 0 -> 172 bytes
 .../keys/ed25519_signing_secret_key           | Bin 0 -> 96 bytes
 .../net/relay1mbyteRBR/keys/secret_id_key     |  15 ++
 .../net/relay1mbyteRBR/keys/secret_onion_key  |  15 ++
 .../relay1mbyteRBR/keys/secret_onion_key_ntor | Bin 0 -> 96 bytes
 tests/integration/net/relay1mbyteRBR/torrc    |  25 ++++
 tests/integration/net/relay2/fingerprint      |   1 +
 .../relay2/keys/ed25519_master_id_public_key  | Bin 0 -> 64 bytes
 .../relay2/keys/ed25519_master_id_secret_key  | Bin 0 -> 96 bytes
 .../net/relay2/keys/ed25519_signing_cert      | Bin 0 -> 172 bytes
 .../relay2/keys/ed25519_signing_secret_key    | Bin 0 -> 96 bytes
 .../integration/net/relay2/keys/secret_id_key |  15 ++
 .../net/relay2/keys/secret_onion_key          |  15 ++
 .../net/relay2/keys/secret_onion_key_ntor     | Bin 0 -> 96 bytes
 tests/integration/net/relay2/torrc            |  24 ++++
 tests/integration/net/relay3/fingerprint      |   1 +
 .../relay3/keys/ed25519_master_id_public_key  | Bin 0 -> 64 bytes
 .../relay3/keys/ed25519_master_id_secret_key  | Bin 0 -> 96 bytes
 .../net/relay3/keys/ed25519_signing_cert      | Bin 0 -> 172 bytes
 .../relay3/keys/ed25519_signing_secret_key    | Bin 0 -> 96 bytes
 .../integration/net/relay3/keys/secret_id_key |  15 ++
 .../net/relay3/keys/secret_onion_key          |  15 ++
 .../net/relay3/keys/secret_onion_key_ntor     | Bin 0 -> 96 bytes
 tests/integration/net/relay3/torrc            |  24 ++++
 tests/integration/net/relay4/fingerprint      |   1 +
 .../relay4/keys/ed25519_master_id_public_key  | Bin 0 -> 64 bytes
 .../relay4/keys/ed25519_master_id_secret_key  | Bin 0 -> 96 bytes
 .../net/relay4/keys/ed25519_signing_cert      | Bin 0 -> 172 bytes
 .../relay4/keys/ed25519_signing_secret_key    | Bin 0 -> 96 bytes
 .../integration/net/relay4/keys/secret_id_key |  15 ++
 .../net/relay4/keys/secret_onion_key          |  15 ++
 .../net/relay4/keys/secret_onion_key_ntor     | Bin 0 -> 96 bytes
 tests/integration/net/relay4/torrc            |  24 ++++
 tests/integration/net/relay5/fingerprint      |   1 +
 .../relay5/keys/ed25519_master_id_public_key  | Bin 0 -> 64 bytes
 .../relay5/keys/ed25519_master_id_secret_key  | Bin 0 -> 96 bytes
 .../net/relay5/keys/ed25519_signing_cert      | Bin 0 -> 172 bytes
 .../relay5/keys/ed25519_signing_secret_key    | Bin 0 -> 96 bytes
 .../integration/net/relay5/keys/secret_id_key |  15 ++
 .../net/relay5/keys/secret_onion_key          |  15 ++
 .../net/relay5/keys/secret_onion_key_ntor     | Bin 0 -> 96 bytes
 tests/integration/net/relay5/torrc            |  24 ++++
 tests/integration/net/relay6/fingerprint      |   1 +
 .../relay6/keys/ed25519_master_id_public_key  | Bin 0 -> 64 bytes
 .../relay6/keys/ed25519_master_id_secret_key  | Bin 0 -> 96 bytes
 .../net/relay6/keys/ed25519_signing_cert      | Bin 0 -> 172 bytes
 .../relay6/keys/ed25519_signing_secret_key    | Bin 0 -> 96 bytes
 .../integration/net/relay6/keys/secret_id_key |  15 ++
 .../net/relay6/keys/secret_onion_key          |  15 ++
 .../net/relay6/keys/secret_onion_key_ntor     | Bin 0 -> 96 bytes
 tests/integration/net/relay6/torrc            |  24 ++++
 tests/integration/net/relay7/fingerprint      |   1 +
 .../relay7/keys/ed25519_master_id_public_key  | Bin 0 -> 64 bytes
 .../relay7/keys/ed25519_master_id_secret_key  | Bin 0 -> 96 bytes
 .../net/relay7/keys/ed25519_signing_cert      | Bin 0 -> 172 bytes
 .../relay7/keys/ed25519_signing_secret_key    | Bin 0 -> 96 bytes
 .../integration/net/relay7/keys/secret_id_key |  15 ++
 .../net/relay7/keys/secret_onion_key          |  15 ++
 .../net/relay7/keys/secret_onion_key_ntor     | Bin 0 -> 96 bytes
 tests/integration/net/relay7/torrc            |  24 ++++
 tests/integration/net/start.sh                |  15 ++
 tests/integration/net/stop.sh                 |   4 +
 tests/integration/net/wait.py                 | 136 ++++++++++++++++++
 tox.ini                                       |   5 +-
 149 files changed, 1366 insertions(+), 2 deletions(-)
 delete mode 100644 tests/integration/net.tar
 create mode 100644 tests/integration/net/auth1/fingerprint
 create mode 100644 tests/integration/net/auth1/keys/authority_certificate
 create mode 100644 tests/integration/net/auth1/keys/authority_identity_key
 create mode 100644 tests/integration/net/auth1/keys/authority_signing_key
 create mode 100644 tests/integration/net/auth1/keys/ed25519_master_id_public_key
 create mode 100644 tests/integration/net/auth1/keys/ed25519_master_id_secret_key
 create mode 100644 tests/integration/net/auth1/keys/ed25519_signing_cert
 create mode 100644 tests/integration/net/auth1/keys/ed25519_signing_secret_key
 create mode 100644 tests/integration/net/auth1/keys/secret_id_key
 create mode 100644 tests/integration/net/auth1/keys/secret_onion_key
 create mode 100644 tests/integration/net/auth1/keys/secret_onion_key_ntor
 create mode 100644 tests/integration/net/auth1/torrc
 create mode 100644 tests/integration/net/auth2/fingerprint
 create mode 100644 tests/integration/net/auth2/keys/authority_certificate
 create mode 100644 tests/integration/net/auth2/keys/authority_identity_key
 create mode 100644 tests/integration/net/auth2/keys/authority_signing_key
 create mode 100644 tests/integration/net/auth2/keys/ed25519_master_id_public_key
 create mode 100644 tests/integration/net/auth2/keys/ed25519_master_id_secret_key
 create mode 100644 tests/integration/net/auth2/keys/ed25519_signing_cert
 create mode 100644 tests/integration/net/auth2/keys/ed25519_signing_secret_key
 create mode 100644 tests/integration/net/auth2/keys/secret_id_key
 create mode 100644 tests/integration/net/auth2/keys/secret_onion_key
 create mode 100644 tests/integration/net/auth2/keys/secret_onion_key_ntor
 create mode 100644 tests/integration/net/auth2/torrc
 create mode 100644 tests/integration/net/auth3/fingerprint
 create mode 100644 tests/integration/net/auth3/keys/authority_certificate
 create mode 100644 tests/integration/net/auth3/keys/authority_identity_key
 create mode 100644 tests/integration/net/auth3/keys/authority_signing_key
 create mode 100644 tests/integration/net/auth3/keys/ed25519_master_id_public_key
 create mode 100644 tests/integration/net/auth3/keys/ed25519_master_id_secret_key
 create mode 100644 tests/integration/net/auth3/keys/ed25519_signing_cert
 create mode 100644 tests/integration/net/auth3/keys/ed25519_signing_secret_key
 create mode 100644 tests/integration/net/auth3/keys/secret_id_key
 create mode 100644 tests/integration/net/auth3/keys/secret_onion_key
 create mode 100644 tests/integration/net/auth3/keys/secret_onion_key_ntor
 create mode 100644 tests/integration/net/auth3/torrc
 create mode 100644 tests/integration/net/exit1/fingerprint
 create mode 100644 tests/integration/net/exit1/keys/ed25519_master_id_public_key
 create mode 100644 tests/integration/net/exit1/keys/ed25519_master_id_secret_key
 create mode 100644 tests/integration/net/exit1/keys/ed25519_signing_cert
 create mode 100644 tests/integration/net/exit1/keys/ed25519_signing_secret_key
 create mode 100644 tests/integration/net/exit1/keys/secret_id_key
 create mode 100644 tests/integration/net/exit1/keys/secret_onion_key
 create mode 100644 tests/integration/net/exit1/keys/secret_onion_key_ntor
 create mode 100644 tests/integration/net/exit1/torrc
 create mode 100644 tests/integration/net/exit2/fingerprint
 create mode 100644 tests/integration/net/exit2/keys/ed25519_master_id_public_key
 create mode 100644 tests/integration/net/exit2/keys/ed25519_master_id_secret_key
 create mode 100644 tests/integration/net/exit2/keys/ed25519_signing_cert
 create mode 100644 tests/integration/net/exit2/keys/ed25519_signing_secret_key
 create mode 100644 tests/integration/net/exit2/keys/secret_id_key
 create mode 100644 tests/integration/net/exit2/keys/secret_onion_key
 create mode 100644 tests/integration/net/exit2/keys/secret_onion_key_ntor
 create mode 100644 tests/integration/net/exit2/torrc
 create mode 100644 tests/integration/net/exit3/fingerprint
 create mode 100644 tests/integration/net/exit3/keys/ed25519_master_id_public_key
 create mode 100644 tests/integration/net/exit3/keys/ed25519_master_id_secret_key
 create mode 100644 tests/integration/net/exit3/keys/ed25519_signing_cert
 create mode 100644 tests/integration/net/exit3/keys/ed25519_signing_secret_key
 create mode 100644 tests/integration/net/exit3/keys/secret_id_key
 create mode 100644 tests/integration/net/exit3/keys/secret_onion_key
 create mode 100644 tests/integration/net/exit3/keys/secret_onion_key_ntor
 create mode 100644 tests/integration/net/exit3/torrc
 create mode 100644 tests/integration/net/relay1/fingerprint
 create mode 100644 tests/integration/net/relay1/keys/ed25519_master_id_public_key
 create mode 100644 tests/integration/net/relay1/keys/ed25519_master_id_secret_key
 create mode 100644 tests/integration/net/relay1/keys/ed25519_signing_cert
 create mode 100644 tests/integration/net/relay1/keys/ed25519_signing_secret_key
 create mode 100644 tests/integration/net/relay1/keys/secret_id_key
 create mode 100644 tests/integration/net/relay1/keys/secret_onion_key
 create mode 100644 tests/integration/net/relay1/keys/secret_onion_key_ntor
 create mode 100644 tests/integration/net/relay1/torrc
 create mode 100644 tests/integration/net/relay1mbyteMAB/fingerprint
 create mode 100644 tests/integration/net/relay1mbyteMAB/keys/ed25519_master_id_public_key
 create mode 100644 tests/integration/net/relay1mbyteMAB/keys/ed25519_master_id_secret_key
 create mode 100644 tests/integration/net/relay1mbyteMAB/keys/ed25519_signing_cert
 create mode 100644 tests/integration/net/relay1mbyteMAB/keys/ed25519_signing_secret_key
 create mode 100644 tests/integration/net/relay1mbyteMAB/keys/secret_id_key
 create mode 100644 tests/integration/net/relay1mbyteMAB/keys/secret_onion_key
 create mode 100644 tests/integration/net/relay1mbyteMAB/keys/secret_onion_key_ntor
 create mode 100644 tests/integration/net/relay1mbyteMAB/torrc
 create mode 100644 tests/integration/net/relay1mbyteRBR/fingerprint
 create mode 100644 tests/integration/net/relay1mbyteRBR/keys/ed25519_master_id_public_key
 create mode 100644 tests/integration/net/relay1mbyteRBR/keys/ed25519_master_id_secret_key
 create mode 100644 tests/integration/net/relay1mbyteRBR/keys/ed25519_signing_cert
 create mode 100644 tests/integration/net/relay1mbyteRBR/keys/ed25519_signing_secret_key
 create mode 100644 tests/integration/net/relay1mbyteRBR/keys/secret_id_key
 create mode 100644 tests/integration/net/relay1mbyteRBR/keys/secret_onion_key
 create mode 100644 tests/integration/net/relay1mbyteRBR/keys/secret_onion_key_ntor
 create mode 100644 tests/integration/net/relay1mbyteRBR/torrc
 create mode 100644 tests/integration/net/relay2/fingerprint
 create mode 100644 tests/integration/net/relay2/keys/ed25519_master_id_public_key
 create mode 100644 tests/integration/net/relay2/keys/ed25519_master_id_secret_key
 create mode 100644 tests/integration/net/relay2/keys/ed25519_signing_cert
 create mode 100644 tests/integration/net/relay2/keys/ed25519_signing_secret_key
 create mode 100644 tests/integration/net/relay2/keys/secret_id_key
 create mode 100644 tests/integration/net/relay2/keys/secret_onion_key
 create mode 100644 tests/integration/net/relay2/keys/secret_onion_key_ntor
 create mode 100644 tests/integration/net/relay2/torrc
 create mode 100644 tests/integration/net/relay3/fingerprint
 create mode 100644 tests/integration/net/relay3/keys/ed25519_master_id_public_key
 create mode 100644 tests/integration/net/relay3/keys/ed25519_master_id_secret_key
 create mode 100644 tests/integration/net/relay3/keys/ed25519_signing_cert
 create mode 100644 tests/integration/net/relay3/keys/ed25519_signing_secret_key
 create mode 100644 tests/integration/net/relay3/keys/secret_id_key
 create mode 100644 tests/integration/net/relay3/keys/secret_onion_key
 create mode 100644 tests/integration/net/relay3/keys/secret_onion_key_ntor
 create mode 100644 tests/integration/net/relay3/torrc
 create mode 100644 tests/integration/net/relay4/fingerprint
 create mode 100644 tests/integration/net/relay4/keys/ed25519_master_id_public_key
 create mode 100644 tests/integration/net/relay4/keys/ed25519_master_id_secret_key
 create mode 100644 tests/integration/net/relay4/keys/ed25519_signing_cert
 create mode 100644 tests/integration/net/relay4/keys/ed25519_signing_secret_key
 create mode 100644 tests/integration/net/relay4/keys/secret_id_key
 create mode 100644 tests/integration/net/relay4/keys/secret_onion_key
 create mode 100644 tests/integration/net/relay4/keys/secret_onion_key_ntor
 create mode 100644 tests/integration/net/relay4/torrc
 create mode 100644 tests/integration/net/relay5/fingerprint
 create mode 100644 tests/integration/net/relay5/keys/ed25519_master_id_public_key
 create mode 100644 tests/integration/net/relay5/keys/ed25519_master_id_secret_key
 create mode 100644 tests/integration/net/relay5/keys/ed25519_signing_cert
 create mode 100644 tests/integration/net/relay5/keys/ed25519_signing_secret_key
 create mode 100644 tests/integration/net/relay5/keys/secret_id_key
 create mode 100644 tests/integration/net/relay5/keys/secret_onion_key
 create mode 100644 tests/integration/net/relay5/keys/secret_onion_key_ntor
 create mode 100644 tests/integration/net/relay5/torrc
 create mode 100644 tests/integration/net/relay6/fingerprint
 create mode 100644 tests/integration/net/relay6/keys/ed25519_master_id_public_key
 create mode 100644 tests/integration/net/relay6/keys/ed25519_master_id_secret_key
 create mode 100644 tests/integration/net/relay6/keys/ed25519_signing_cert
 create mode 100644 tests/integration/net/relay6/keys/ed25519_signing_secret_key
 create mode 100644 tests/integration/net/relay6/keys/secret_id_key
 create mode 100644 tests/integration/net/relay6/keys/secret_onion_key
 create mode 100644 tests/integration/net/relay6/keys/secret_onion_key_ntor
 create mode 100644 tests/integration/net/relay6/torrc
 create mode 100644 tests/integration/net/relay7/fingerprint
 create mode 100644 tests/integration/net/relay7/keys/ed25519_master_id_public_key
 create mode 100644 tests/integration/net/relay7/keys/ed25519_master_id_secret_key
 create mode 100644 tests/integration/net/relay7/keys/ed25519_signing_cert
 create mode 100644 tests/integration/net/relay7/keys/ed25519_signing_secret_key
 create mode 100644 tests/integration/net/relay7/keys/secret_id_key
 create mode 100644 tests/integration/net/relay7/keys/secret_onion_key
 create mode 100644 tests/integration/net/relay7/keys/secret_onion_key_ntor
 create mode 100644 tests/integration/net/relay7/torrc
 create mode 100755 tests/integration/net/start.sh
 create mode 100755 tests/integration/net/stop.sh
 create mode 100755 tests/integration/net/wait.py

diff --git a/tests/integration/net.tar b/tests/integration/net.tar
deleted file mode 100644
index 28706902751a74ecf627fe07c60615e2843295cc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 215040
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
Y(&h8FWgtU33^L5XFayI3Tu=sn2NgtF1poj5

diff --git a/tests/integration/net/auth1/fingerprint b/tests/integration/net/auth1/fingerprint
new file mode 100644
index 00000000..35f96707
--- /dev/null
+++ b/tests/integration/net/auth1/fingerprint
@@ -0,0 +1 @@
+auth1 AA45C13025C037F056E734169891878ED0880231
diff --git a/tests/integration/net/auth1/keys/authority_certificate b/tests/integration/net/auth1/keys/authority_certificate
new file mode 100644
index 00000000..7797dc06
--- /dev/null
+++ b/tests/integration/net/auth1/keys/authority_certificate
@@ -0,0 +1,46 @@
+dir-key-certificate-version 3
+dir-address 127.10.0.1:2003
+fingerprint D7DBC517EFD2BA1A5012CF1BD0BB38F17C8160BD
+dir-key-published 2018-06-01 15:55:49
+dir-key-expires 2020-06-01 15:55:49
+dir-identity-key
+-----BEGIN RSA PUBLIC KEY-----
+MIIBigKCAYEAsIDnUuNB5InQb7ipbXwLpIEtkFowYfkjqFlUVCh9LkMoOzlPcQOd
+opYDjCD9DLuzMG+d37Q+50V08z2NHOzlRre8RwXvAyPoDoWtPLvvrHetBScZjYYP
+Y1FqUsooD1O9hANN/sTcVYxVIALLYHnxoQMcZciYh4cGriKqxQb3jaRaxVVmH/K4
+PCQ8h+Tlak9t3IXwb9hE4EuwMQVid99Q5ke24Az6hcmAaMia5MILyxybycomHgNK
+fj7Awym1oRvZV1ZH8SVmP3si9Y8NFT1+l+HhwmCX7001uwjIhRiScOAvLU6NJQJN
+Y8KAWzMwsfFu347lIwU7+tJnF4GjDGvUMYS0Jl/FGPOsgTxfpFfOa+l3DzZ3PUK/
+4looiS3K+8snObiw18iq0U/J1FfRPQ3te2nsDS+NFFWrTyCjz7LfjnaeIRHu2FFu
+782s9SDYIzi43HmWEm4klQB/4H1l4Na/evbl5b+ky99Ar2TI8x4ZBu40wC1gbuG5
+w81nbF51eGYPAgMBAAE=
+-----END RSA PUBLIC KEY-----
+dir-signing-key
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAs3yPEimVwdNSu+48MPBbqAscL7ETps2gMF/7NFtGK++4GU5TQ4iV
+zfjqzhV4n0CcCuQ+UGB6kzr7ZCsd84KI2fVbIZaxtD++Zb+jc8bRTp+Lz27J5FDd
+LTKCZ32EiBoTiVME7zfVHHdxS2aa2L2/KqWO5BDDjB7kn0UoN6yE4aWvE1y3iXQl
+uZCWXryc6ZfF46355aBqGKb1Ru0fJSrsE/spdiymMfGpOedsa0jgZf3GohkRukUl
+lCblFgpSjJalw6V2uWi7g7qC3w8K10YGgBvNNNPuLrwcbrE9IaO2DFRFZokZM2l4
+y91DQfYkQrDGG/hAkX1oN565/eeH6FhltQIDAQAB
+-----END RSA PUBLIC KEY-----
+dir-key-crosscert
+-----BEGIN ID SIGNATURE-----
+Ow60/hsr5EQMOtKZEbr/MncxzQxbDbSy+pTJrFCYXamwKgmN5CX0ZaPnWbVJsmSe
+fLV8izHtx75x80oFXt2cqbY792uLWp9O/8S2YhvGSOgRPJ0edUZtbfkxgA0ConYa
+FkikHND/pulK2XgaX1oC7ZLqchA6fTLuca9xFA34n/1/yEr5PyLwEicF8GrR8/ir
+LnRRv6aiQSf6ZJetctep31Bzrs9WYggXK2JCst49hqkJbiiGVrpmzlRpo9MajP0z
+IwpDAlzKnuKFRMftBinh42+kgIKyQBgYwyJAzh31wuFY3b8zaImi4dKwzHdzksuz
+Uh6XrheAfVDXOEeNxCbFgQ==
+-----END ID SIGNATURE-----
+dir-key-certification
+-----BEGIN SIGNATURE-----
+kW6UWcYhRQn60GuUrRtbsJm8CaL42o2ywX121y4tSmGsTdmG/rs0Ve52fJvi2qOW
+p93hecTEVLbsF7LFAM8454sW9BsfTQTZ0IDzg8F4wJ187m7EJMhTyO2twwXO+7x/
+fKV/4viHzLLSqLfW8txWeozazwC4B7VyH8WHxKK5/VhpQXgMlVaaTtzfEd67+AuJ
+qnCNTxKeWXNGTblRXglL/K7MpP1MrQq0T8W4eEFYGhYT9aMM2wvKeC9YAl1xePdP
+/yLH0Jj9iB+FjrSXUDHGyi0QRgSJMiAW2uZkTtODxUyt4i1yx55KKlK6jIgXu972
+O/O+5h6YTqfcvqFZDWaATZsbtX4HKNmF1cLfvX3XFpB3O+YgRaz9bh9yly334UPk
+J2gYduqikYu6yYwIdrsPeT7aLjGh829P+BYUgVkbiDnIF/N9n8oQNivyX1qL2sm5
+O/JHog7BT6uuud3M6MuLvfZWqY5BtiYexVQhXBge6mcrjl64IK3T8unDluY4vhah
+-----END SIGNATURE-----
diff --git a/tests/integration/net/auth1/keys/authority_identity_key b/tests/integration/net/auth1/keys/authority_identity_key
new file mode 100644
index 00000000..1ccdcf5d
--- /dev/null
+++ b/tests/integration/net/auth1/keys/authority_identity_key
@@ -0,0 +1,41 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+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
+UN35Z33vkMLm8ia2zHY=
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/tests/integration/net/auth1/keys/authority_signing_key b/tests/integration/net/auth1/keys/authority_signing_key
new file mode 100644
index 00000000..5ae436e7
--- /dev/null
+++ b/tests/integration/net/auth1/keys/authority_signing_key
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEAs3yPEimVwdNSu+48MPBbqAscL7ETps2gMF/7NFtGK++4GU5T
+Q4iVzfjqzhV4n0CcCuQ+UGB6kzr7ZCsd84KI2fVbIZaxtD++Zb+jc8bRTp+Lz27J
+5FDdLTKCZ32EiBoTiVME7zfVHHdxS2aa2L2/KqWO5BDDjB7kn0UoN6yE4aWvE1y3
+iXQluZCWXryc6ZfF46355aBqGKb1Ru0fJSrsE/spdiymMfGpOedsa0jgZf3GohkR
+ukUllCblFgpSjJalw6V2uWi7g7qC3w8K10YGgBvNNNPuLrwcbrE9IaO2DFRFZokZ
+M2l4y91DQfYkQrDGG/hAkX1oN565/eeH6FhltQIDAQABAoIBAQCIU8mPsApRiCNF
+HvSU71uOzbGA/+y/O1u6oox4/gLUiGW6wuU3XFz8b15ZXbGatEZRd39lKYKwpZIg
+SSect78eXd/0KTOchvYk7mRGIfME1uYojivGwSzdkYm+9XVesv+3xFjxIeU6k/Z3
+oN1oVucGi213CMyedzCLUMn1T5I2mI3pb/xtKnsXRNE5Hik5ve6f1Gni+oXkjbOX
+vlcnXjoslmTo1KBcTTUVsNiUqW9SC0NSZeb9rqty/kRZWMJoUeXOuPn/hUn1qpz8
+PIMgmEvafMDdC1Gk05tt23C2TYWwAhMQHl5WOzzJ5KcPzSaoNNAaMmqYpuh2RM+y
+T+6gy0RZAoGBAOAMsvT7fEgyfbBtnUHFl73ykNzHcg0hoU1xXFL7iIRgUok9QjVN
+M1J9hIYTEvq2NFXlPaDyz8+MzIKhsDADaJzrRglohvB5sm40gGdAlaJ1O3T1WPta
+f+RoZxdKt2YEWStgh24+6dA4DajZvA8d/jt4NlYv4eszZidEiqzGIK2XAoGBAM0V
+Axy+YNGoxSgW38IJ+K9nb0mTX7g2vm/Xh9BCARuK4iVajWQFeYflkgxClGbrIdaz
+iDZJY36wkGXkU5Lr+314oTXfppdruM5EShP5dHl2qCBoel53wrkksIno/mpayB7Q
+ypiSTbdiB/v5gseCq4ZwHEgG3AZykcKmRkDoGAiTAoGBAJGxkFngg5QLSVKGJUHU
+9PTvHKaFB7RkTxkmA0xvBvpWDLXz4O76UcptltT86FWiUGwe0zGrU9l6jK7R59mB
+DfEkyXlqwHz2FkK1313FUMjBBTXsKb3hvtLP1WH/Ez3CzB15+veE79SX7sIDPNhz
+v5P6exMWtgmVdfNJDgiGGk/nAoGATQLQ8mBDNzfrIUzFpbXc3vE2hyiCT0ivZoxH
+AdtnUxJqLaC9a4vqwS9iEpyF4cf2Iwuz4L7aT965uqltAMUA4XMFBpf/lOjssvhN
+4QZRyLLYG6NgIE1Un/W5HXCS6RlCAOBi07xM1spHOUXO6GCXTJqY5Cs/QGSRe8i4
+pPMC42UCgYBrIGQdyUSJCJ1JXG7IDI8VzYrsFsHRbniUnUBvq64GInLdwou8+xDP
+fWVfdqQXlLHyzU45fIGt0Y/v/awsZ9WP0T0hL4x1rovDJqJoRKMgmf6i3vp6y+sy
+QbnhMPGps/VA0rPAb7HQF3a1xo2q3hGjc1bv5riigttHDAdddWCP4w==
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/auth1/keys/ed25519_master_id_public_key b/tests/integration/net/auth1/keys/ed25519_master_id_public_key
new file mode 100644
index 0000000000000000000000000000000000000000..6384d542b698fe186ea2666ffc9f47c43f65ca1b
GIT binary patch
literal 64
zcmV-G0Kfk|Js@RdGBq_ZId(BEaCKsAX=6Gdba`-PFd#iW0002MxFtwTJ^V4>q}t`K
WsMSR&#w}H!o^3B<87s(s8c(FZ%osEP

literal 0
HcmV?d00001

diff --git a/tests/integration/net/auth1/keys/ed25519_master_id_secret_key b/tests/integration/net/auth1/keys/ed25519_master_id_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..5e6f84f2bb1aba10852975369ea863c71c5a92f2
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PFd#iW0000`KD?mxH9t43<w3Ev
zfiRVZC{kmCZe)psQMDrR;hTBe-)4tE5-hY~wK`F;hs{7=R&XmhrbYJQig6>@2A~<Y
Cx+g;b

literal 0
HcmV?d00001

diff --git a/tests/integration/net/auth1/keys/ed25519_signing_cert b/tests/integration/net/auth1/keys/ed25519_signing_cert
new file mode 100644
index 0000000000000000000000000000000000000000..2c9595e1c3c574d9b2088870fc332ff56b6f9fa2
GIT binary patch
literal 172
zcmV;d08{@xJs@RdGBq_ZId(BEV`Xx5Iv{j;aAh<gJv{&b000011ONtnr~#N^sP%5h
z`vIhbRd0Y=<_e$~kS(@Hv^BQEN^8=b$XfvbAOrxwxFtwTJ^V4>q}t`KsMSR&#w}H!
zo^3B<87s(s8c(GB(D3mYXLcKC#)I{)(#R}>Rs<Zw^5i1mdxg@myzBA?aZ-2vZ2|=f
atNhrlhngE?XQ#dhb*L0OG9O@Xs~`)n0ZEqt

literal 0
HcmV?d00001

diff --git a/tests/integration/net/auth1/keys/ed25519_signing_secret_key b/tests/integration/net/auth1/keys/ed25519_signing_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..b8539f1441bf65600fa3c4b224dbc11c766a4e47
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PG$1`a0002!Q=lNyyJ8=kY|Dc;
z5u4h6S|5-F@NP76iX@nn3=dYWCy@4Z<2j+TpZ7#`3!-8T^+ES}B@jiCDUuo(>M6U8
C?IpPY

literal 0
HcmV?d00001

diff --git a/tests/integration/net/auth1/keys/secret_id_key b/tests/integration/net/auth1/keys/secret_id_key
new file mode 100644
index 00000000..56dee403
--- /dev/null
+++ b/tests/integration/net/auth1/keys/secret_id_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXgIBAAKBgQCp1JWcEUli3Js4KtJxpBzJChh8JB+0eY1ijUKXVvKSxFhhM/oC
+Ga3OUDnBaxQNSPxvva2I1U42y9WX4H1ps99OMZYXKrDZE5AmWdAXSgbLOKb0oi9C
+wEhzRdcpGFo/WUzIUB1pXp6p2mrsUGO9IFKbXpbR7N3iPgaUM586redRsQIDAQAB
+AoGBAI1ECZaiQnr7qhmUdSyWKGOKBEfu/Hhwy4x4mDWu22P98s4YIBPzLEH7Na+P
+1EQgu+puypSRadfmwartzyRHvKzA0QU3M6j7IW4wKg+hX82gXg6BXkcwhlyyhrs8
+MMfTQgqdJsD1fyDr+HdIpNosDQY+3UwxTEF685uncBzOsEGpAkEA3TCQOe0DbTMT
+vU87a+jdB1TzkcqR193Slq+QUPTbHlPp4ZRqiHrHfEFYUTAfMrLgiQ9wjO6+8LiF
+wAyal/ItgwJBAMSO0u5IBvuV3EVJjMLCrBmKgyDYNgcJbFtS2TRJrOf3Lcx1fNIZ
+5gQkZa3nMveJTz0pyIZy7u95D1kimG1uMbsCQB/iSzf+YVsRXMwSKsegVpQi+8VN
+RP6v/BY6knwI/7j8cZ9RzJWF1VGk/b0eSbD+Nf2r2xaFp8J9ZtJLPtGeWE8CQQDB
+9ephpoP1edFuMgEMI4wufAefvpu53+ukRqH9vgI4uSrhisJMla/sQHpx3CboLAAc
+bAHr4rizaTPjEod13PqHAkEApA1cDrg+iaoOPC1oepafihiI76shg0h4C0Y+vUKM
+e4NQO585teKCQYOgv0nacERL+EcANGW6hd0eaRDCPtFxwg==
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/auth1/keys/secret_onion_key b/tests/integration/net/auth1/keys/secret_onion_key
new file mode 100644
index 00000000..6921a65c
--- /dev/null
+++ b/tests/integration/net/auth1/keys/secret_onion_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXAIBAAKBgQDPNpJm5eyFijX8GxH4tpX2YKhTxVTwZezI7n0jDpQ5zmndLV22
+zHB2OY1UFS+5LtjzPEm2w71maa2z6mPS21qDPx90Ez4GAE3fkUPnqCLmgAQUxNdG
+7MeFQtlo7M7QuMTUrWZYbgQVTGDWn/HLRxik0kgpddj42VCI516Aaj6eNwIDAQAB
+AoGAKHVDSIwEDl7aA4tVivY7eYuN0i1pVDbScLj//eRO1KqUyPaeoZ5xJuQ9z/kD
+BGk9OuC+k8zMIj7oB4TwUK87kKKihgIkQacuBa17ERc+xVusgpEJlYKNHXCe3vFm
+qPhHfl1h08K7sXDE7bB81vwCabSHqCFO4Yy4KuM/XHRqZ+ECQQDzcL6qNzsJpQRh
+wUtXDpQ2oDxExUohZNQ45fkGIJy1zRnxKR9Drr1ikM58xdelte/bFEjfImvj624M
+YFGIrtQVAkEA2edafRFHu9kDm7Bp2s4gn0ysdJ+pKmcX1haoJzqFBKOR/CzgFhkU
+w1ptBUWR+6A2OigFOIsesS3lQBl6ROVAGwJADXrnw+stBLqzhGo8rsRq5p921uQJ
+19GKguARKwqxQsvprNX3GjtZ11RnardV2qI5dusnodt5F/TYciz/Ns9fhQJBANlp
+YTq6PBVsEJKNcQCUe64VhVgTWWjqVbkRABOr6r5XKbgvWiISQkor9ey1nlMuZgye
+k574B9aGUV8kTH9jMRMCQBUieqme0Q/iISEY52o1TwJfs993FQIFiVg8yiS1ekN9
+HD1qnkmmusdGmEGbYYGpLjpf8nFw+5IVtCOsj+5WOjE=
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/auth1/keys/secret_onion_key_ntor b/tests/integration/net/auth1/keys/secret_onion_key_ntor
new file mode 100644
index 0000000000000000000000000000000000000000..5004432e9ec75229ea2360f1ad43f97117b772bb
GIT binary patch
literal 96
zcmcDuRY*26H8r#>Gqh63&&$luQ?RvVK!5|6oEv_u7U^((D=itK^7MU6On2u|*?^_O
tUqX&cukea}A^Bb9{psA!$we$O2KL9)SobsUQplQXC0;)B=6%cfFaX`nBU%6e

literal 0
HcmV?d00001

diff --git a/tests/integration/net/auth1/torrc b/tests/integration/net/auth1/torrc
new file mode 100644
index 00000000..59d7fcd1
--- /dev/null
+++ b/tests/integration/net/auth1/torrc
@@ -0,0 +1,34 @@
+
+		DataDirectory auth1
+		PidFile auth1/tor.pid
+		Log notice file auth1/notice.log
+		ShutdownWaitLength 2
+		ExitRelay 0
+		AuthoritativeDirectory 1
+		V3AuthoritativeDirectory 1
+		Address 127.10.0.1
+		SocksPort 127.10.0.1:2000
+		ControlPort 127.10.0.1:2001
+		CookieAuthentication 1
+		ORPort 127.10.0.1:2002
+		DirPort 127.10.0.1:2003
+		Nickname auth1
+		ContactInfo pastly@torproject.org
+	
+
+		TestingV3AuthInitialVotingInterval 5
+		V3AuthVotingInterval 10
+		TestingV3AuthInitialVoteDelay 2
+		V3AuthVoteDelay 2
+		TestingV3AuthInitialDistDelay 2
+		V3AuthDistDelay 2
+	
+DirAuthority auth1 orport=2002 no-v2 v3ident=D7DBC517EFD2BA1A5012CF1BD0BB38F17C8160BD 127.10.0.1:2003 AA45C13025C037F056E734169891878ED0880231
+DirAuthority auth2 orport=2002 no-v2 v3ident=4EE103A081F400E6622F5461D51782B876BB5C24 127.10.0.2:2003 E7B3C9A0040D628DAC88B0251AE6334D28E8F531
+DirAuthority auth3 orport=2002 no-v2 v3ident=8B85069C7FC0593801E6491A34100264FCE28980 127.10.0.3:2003 35E3B8BB71C81355649AEC5862ECB7ED7EFDBC5C
+
+		TestingTorNetwork 1
+		NumCPUs 1
+		LogTimeGranularity 1
+		SafeLogging 0
+	
diff --git a/tests/integration/net/auth2/fingerprint b/tests/integration/net/auth2/fingerprint
new file mode 100644
index 00000000..7230e47a
--- /dev/null
+++ b/tests/integration/net/auth2/fingerprint
@@ -0,0 +1 @@
+auth2 E7B3C9A0040D628DAC88B0251AE6334D28E8F531
diff --git a/tests/integration/net/auth2/keys/authority_certificate b/tests/integration/net/auth2/keys/authority_certificate
new file mode 100644
index 00000000..6bbf2ebd
--- /dev/null
+++ b/tests/integration/net/auth2/keys/authority_certificate
@@ -0,0 +1,46 @@
+dir-key-certificate-version 3
+dir-address 127.10.0.2:2003
+fingerprint 4EE103A081F400E6622F5461D51782B876BB5C24
+dir-key-published 2018-06-01 15:55:49
+dir-key-expires 2020-06-01 15:55:49
+dir-identity-key
+-----BEGIN RSA PUBLIC KEY-----
+MIIBigKCAYEAskiPcxMAOY6BdDha1zEhsvxdNxWk+Fuhx8OEpk+Yn8UhT+8vOPci
+KWRtrFQte6U2JKxvXkPqoS+r6j063cUW1S+No5LuLm3VZ/lbJPJr8T/4MFodBqJ/
+3JgUycQBiBepCJTH/IsgFjJKwjvVYQPmlRgnI0Eaxeelb/TslRan7C3oSmAQ7fMY
+c7UgQWtZQGCtIh3ZjrL2NBneZVebVgYst+kv0GdTFBQ4Yf74CXo5k0Wk8KF7YCwR
+BEtGcIHh98jFahS2n0PI5gjBTJDPuuLVBpjqQ+WlfYy2njQagevNZZuTWorewomY
+kIcaWLCy69Semjz3CWeOgxXCm7bMQesQbqpKubTRG3CmjO7F2ycA1jP45tHEI95B
+wy55S+MQFhWHwj+VdVSenIuVKDqbz0yg02MPwKysYI+6DnY5SDTAAjZ50d/5kcmi
+QTnnIBdI26/KUDbZsYFb7BHuayKwSR2CcOfrjhXAhpAe200B49Q5S4jtrSIBUo3a
+L7orVFAuYRsbAgMBAAE=
+-----END RSA PUBLIC KEY-----
+dir-signing-key
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEArguSeQ8/hHeR2YXkwxeNJQXcU4ZyxVA/m1RF9eNznpzM22gP/y36
+FV2jgoFzGFcndSG3bD0x7SOvcLzilVAkurQm77+uuX2sBLZJSwwTHunRgCWxuRM6
+amPOfS9/K9G3h4CVSAVOteA43NPU2idMwu8QmfGOkdEfxTk8gtSqqRZiGIRPw8SH
+LPp4lpu3P9e9MWUfTBh2Rrok5ELCbPTL3YquHmvMApeoXCi4HZLEMKWQRHqeOrfq
+0eFIat26oFeRCBGFyMCKly9KkmsaOgeANmWS44lyIbYViWi6Wd8DBZyJeET2avCS
+PTHuTveorCxEIKhn5i+S6x8YBgW9L+psbwIDAQAB
+-----END RSA PUBLIC KEY-----
+dir-key-crosscert
+-----BEGIN ID SIGNATURE-----
+YDO98bj/jDxsj1qKmbnprUVsd66tEfCO/4cFR+8djEYlap6uhw1RsaOBIEAEyi6o
+B9ZSStq/9WQDb8IQz7MTl0zPtUUnYGcJqmZirKr/bi8xQIbwDTFh5JfEcVGYiHC+
+tapqxXLOWyiOZKJLnLPLnHTzrT+HOncpJAi66vq2KGFWJ6c6QotLSiMgku1JoXif
+YP2PCLxLSRR928gFoHy0/WcEEMC/vE40gSrIMQ86SCB4B7MNQ+ENRMMldqw4pJaA
+6eGZCyIqININZXshqOXnt5whrAaD9+gFTrbmpX+4fdBmQNfk2ZXnnGC/mw4rCegw
+8ivl3kDb++7cv1BBGgUXrA==
+-----END ID SIGNATURE-----
+dir-key-certification
+-----BEGIN SIGNATURE-----
+jz0lA4wDbYQ2S8MILRZH869pjWIzH9SrioswiE4mvWbXmttiN865etqS8zWpJYru
+Ck2IHEZVGxnZ5CKT/oMjQ72bNCzjHvDBPn4JnlBvnCRL7ph8PZLKtFeryc/3ZU1m
+x5uGUjqtusMeoJnzC8aLR4fWZcjcAWjDyyFhFLoV76O/kQWJr7lBJRV8xAMjIRzu
+XIo+nzXbHegi6d8RnptfKgqd+uw12jY1pb016Goixgs8dzMDDtbkxOD3Z/8wzUX2
+pP1+FaBZH+ydklA4FoXwNjND6g1nXDME6l+fAklBLjxOjrmAD/UiWe7G5cF3ktD8
+js8aJjuTiIUax3hj7yQzA4i/8MGG6DVIDKoWbsNADPH61JI+lGtuHSeQ8Glz+zJj
+rK6Extqacd7YxwDLqvwPbWsoLlHZtAuXEyOE4Q7j8Eb4x9iblPsATMtcKC0wJtqa
+Zgbpntd5mUr8CK7P0/idGM+s2MS7lQW33IAAUBsPUi+UbO1LpPk7hg8v1THy8wjk
+-----END SIGNATURE-----
diff --git a/tests/integration/net/auth2/keys/authority_identity_key b/tests/integration/net/auth2/keys/authority_identity_key
new file mode 100644
index 00000000..42ce330a
--- /dev/null
+++ b/tests/integration/net/auth2/keys/authority_identity_key
@@ -0,0 +1,41 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIHKjAcBgoqhkiG9w0BDAEDMA4ECK/876b9iEnbAgIIAASCBwgLrqEn6TVshper
+GwXVwEtW1V+jthX+WBPb1tx4NR282uptjqKKmtiCBbI4y4l4/WIvj19AVWGCVpUC
+amCKThKMzjjFkXefFqHw/3TD1HFBSs/o0oM+LjmgquMEbBUTdAGCbDskWnZ+bO98
+rUXVO/lffMZRzMbO1GHncOzu+6Bqzj4/WGRsHDeB2qacxIovbYF3pq2NeQ14H7N7
+vf37Rb2DUae7tHGQnRS9YtBL4I+wsnnbf91AGVRKyQz5tfesJPvI+rt49dp3dKHy
+i5v7DGS5McYfyAfN/6/cRIATnMEoy8BI40pvVqzmj+FybcKm78swh8Io08ExM7go
+lLCRBPBHYy1j4eB1DxLj5O0dPWbs1EQ53VpNGIMEqxj5mx8pL3/eujiDLajeOUTc
+TY072lsJ843pzRJCnLrt/p6LSUxwjhJu5p5XIEuH1BmhG4ITqkrz6EeZyUpHSHCl
+Wwkr/70Isqns8OYHFsa9dVKThCET9Z99+R4qnYTGgL7njAjFSb0qGpfCIs76CmZs
+ZezbhMrVZfJdHn9yDpWC6hV00nWQr0JzG2l+GvXsv0r+Uj8l+hQaaaubQTPzWbRN
+XNwbqem0xDlLsVUx8y1cmhZKpQmCx1jZPgfHEX5lbpTccQMSwrDY4J0BI1qzFDBz
+McEpNVnphXWHEMt3OmgqT3s9MXDPEDrmO+LYGRXYlfqyjwufVrcDjDjiYBgV+oGU
+gTKW7d/heFf97jSQrHyD3IXDpJzbclE7hdgmHcICedSyYqgKW/xakiP/Nf5a1rS3
++W7Xzay6uVGgxTpfh6vSBxfWBvjp7ru2CAJtR+DO1zPvsVahIJ3Z88tCqxyeeNwc
+HLcW1z69SBIeyBWeE1lxLiRphjdgBxQG8QKe4yWEb5vipvCaqh5bCpKsIsVqR3RY
+1uzfsU3MzRzoBPuRwe030+kjqhHbh7L7ZMT+Q7dZ/u4i4jhZy7vs5G4/0T00Sh4V
+UgxIRl2rIFa3a4zW10qtFWYc/uHhe4g5fiKI/jdkqaZovQS7qDC1++lAFrFTroGw
+yL0FaqaO4alQoz38h+HnQ7bLBETxp3XH+eHxuZSQPj2esJAPgiZiCYkG3Fmso9Ev
+aLeC/J5VuRh+nUbghmi6IKpB9V1e15cFT57TcqNunKACCEquFZhfVJFq8Xe/pdmw
+KcMKdr5tYfdVOjntY/q9wrCx0JrwVVX2bnm9cUH4CNsEC5ymHGnlNyID36Mk688Z
+JA+0WVNaoCTZOIsAmXZCcFkMKh81YH8quYuzcanuirIa7tqaO1D2msRyvrqN4c49
+UJllWefIwbfkHHJbmwMTwyIOwpFWC/AdF0yVOJsbaUl9Tya6gC12sA1jTrBwmdVS
+MCJ9pbzbxhBhUKMvLkn4BKxsNyd1Is5q/5nWlhi40ZSno5QFVKuzv+iBF5cr//Mi
+yCzTdSLEoNQwXbRED9TyCdz6//PolAmoRVvbQqUOMM6qylk9sCHZX4+luIjP0Wor
+y+ifh7zFHqEy9VChThhOMr0nRy+5mKC/qNDRAkpXJWWlFH/wA7MpoiGQUlVM2iGs
+nyo2q1KXNOAT0B5XpB9mjQrEnLOQ6FVS6HBGz9f0K+qJt8R3Oo3vzNv5VsXcT0M6
+FTi7/oDJPPnRMjlrBglpaMTY9k16eFPtPxIqH8UT5TSj7fjUXlbu/lMzhZiWEX5S
+tzPXaDPYXnpU/nAR2YxjS9PzEfp48aHEcZGS7uF5FU75VP0RWAxBy8rlb9Ag5/vz
+Z4gPhCLg/xLweSMDs/KH0AEHBCmrBQh45EqAJoZp2ABjMJSbByExCZ/SOsG66XQJ
+eJqHFadtL9jS2D2P7M6XZ9ZpaxghfHTQ0aj9uPw43iWe8O4yfEoNUr9MJ3SI3TyN
+eVD05fkb90PriRO3c/fqrpc/DS+DVOrkgCffC8gBKJlcc01KzP6VjQc5LlkkUXhk
+zTcdUHl/Hj5EiQ0Q166T8P9TbAMouTmbPzqsExjOl8grWTHFKTM4mQlqSY2RgvMk
+J8nE6xh2lGiHtWOepO2IxE156NNQIvyII2RLDW4rla4Lwv6x2KQ1OLMUHXnaLzYO
+MCzR8KD8qn7fIvXyDmcwCsG3pTx8f2SUIRM3CoM9OAqna0f8tFmV/0KMdfNoc0f3
+vORE/ypUQ0HdvFq4FYZcpPUDkhV/5dHrF8DQw5IukA/YpQLvjBcf5cPV+nKvDpsN
+t6tjcdl5qTL0L7hWgiOCcUaynrY2yY+igrLNzwRRYCoM4DuDHEY65PXqR77pI9mL
+lJEkBMgDtFpZPF8rflqA7tVJmCMitiUkzcSqNOalCK8MLkyntWf4+ryr422ntu5N
+ERaLlwfwlZY5eqTFJT0uUu4Ck2yViz+QvFa7xddASlOr5qUrfvERrKGupj3Ukmbo
+tKmy7xJz3KeNCK8abnE=
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/tests/integration/net/auth2/keys/authority_signing_key b/tests/integration/net/auth2/keys/authority_signing_key
new file mode 100644
index 00000000..1a799014
--- /dev/null
+++ b/tests/integration/net/auth2/keys/authority_signing_key
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpQIBAAKCAQEArguSeQ8/hHeR2YXkwxeNJQXcU4ZyxVA/m1RF9eNznpzM22gP
+/y36FV2jgoFzGFcndSG3bD0x7SOvcLzilVAkurQm77+uuX2sBLZJSwwTHunRgCWx
+uRM6amPOfS9/K9G3h4CVSAVOteA43NPU2idMwu8QmfGOkdEfxTk8gtSqqRZiGIRP
+w8SHLPp4lpu3P9e9MWUfTBh2Rrok5ELCbPTL3YquHmvMApeoXCi4HZLEMKWQRHqe
+Orfq0eFIat26oFeRCBGFyMCKly9KkmsaOgeANmWS44lyIbYViWi6Wd8DBZyJeET2
+avCSPTHuTveorCxEIKhn5i+S6x8YBgW9L+psbwIDAQABAoIBAD71+LrKhVPKXXyv
+Lx5UOr8V66pbjNFMQnZSeiyFZ6INXx5P+tl5LGrmQOxJH/XCMYfx9oS1boY2zpSd
+/+m74E2aNiusz+xSRhQ+TS1U5OXd9+e/uxcUmaE7Ecu/juWvLBFctqQjJ2IsBuX7
+y5hPdzldekf2Vnjxieiy1+0MOeCImynlBJcp1m3LjwMkXcB5GGcmGknsQMAT+MtX
+eIPw8xD3il5ZfsDuHVnUWTPryPamQQls73aKV6oaiZreZ/VqYxIi/aS+gWlhUBZM
+CpLIVxWhpoiM8eMY3nCDTT3t7kVOoFNuCnOZpwTuO/mhsvMiD/M/tHBKem3Xf3Im
+ifVufgECgYEA5GlLOU0oZwrpZGYoDsEUQBPSJyVVRjnBUGXkaNYuDR9ABuyD7EhY
+KK2mqovZl0irNq/suROJnKVG/l06al1gdPZsPh+WrZ06dh2lvCyF8xYQpQK7grgK
+L83CGQW2x2ydm2PyhA75Mel3kkORpkqKu3368w00nO19aR4JXU4iD8ECgYEAwxE5
+XP6CaLMrw03qYkFxdRRCvvb25y6RVQp7KSI6YZmuAJUTko9kXDi0YeCf8Q8IN862
+fHX8smsfBZ8m+dYCYKcGa+biLyEPHjuKOlh0yhekZqmyZT2V8G4ECTFPXN0ktJyR
+W34sY1KXaET0n6KUwj1aOn64amPjy+ndZ5ILiC8CgYEA4/46SRs8bgaVS1MxPvD5
+jrB6P/ri8LMrxF3ArejElPKRjZe+YzcfUJNtXqUz7+9of7EBQQhAf2z2vWY/rfZB
+Ft720tfjJq9fsJENYxSqLCflO2DL3MJp4KeozCNI/Czt8TLF2426rliVsxjhJLUZ
+X+dze/K9hrsESM3jmRAprcECgYEAvScwlsp9LoW/RA2D4G9RU5Sn/IGCfj6b0vjs
+4MA+GHJrVkk4x3+gdATQdbDZp2lKMMOUFTBcL67MUCk6JD2v5IVSJsOmRMkr3cci
+jN1FssomMx8OzDlh8djctQVJzeTrOPAxy6SX6mAmTYfAJiQDWC8iFWLX9OKT/CH0
+/f+SiyUCgYEAx4HyM/v1i+U5j/2Yc9m4ex3P2fvOHsxQvebdrmCc8Gqp8T/552ht
+NWQ1tFP9c/QLQIV8y6e7tg7kLuLz9LT+pKEYptseF1JnzatZ9kV23U6R3ys/xkqR
+Sh8q+OTI41kWtB0mbg62oAlBR57vdmf9YvuqjsheS3Otj1ppKvfxP/M=
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/auth2/keys/ed25519_master_id_public_key b/tests/integration/net/auth2/keys/ed25519_master_id_public_key
new file mode 100644
index 0000000000000000000000000000000000000000..254563150779b6c75bfd3ade25c2c5b023f3dec0
GIT binary patch
literal 64
zcmV-G0Kfk|Js@RdGBq_ZId(BEaCKsAX=6Gdba`-PFd#iW0002E{QPB;X4q#dYp`0l
WlleS<ySM{Ut)?joKFt=|bt%);dl^Uo

literal 0
HcmV?d00001

diff --git a/tests/integration/net/auth2/keys/ed25519_master_id_secret_key b/tests/integration/net/auth2/keys/ed25519_master_id_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..db1357de8e20da3883e01bd8d88988e57190d8f3
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PFd#iW0002UJMBWDy)H8=QIR^I
zQ$_4RP8~xRPKMqMq?<$8DDgmw7E16Shz`@JR7BrnteM+&)Wub{L={pp!g&DY$rQ_B
CN+v)6

literal 0
HcmV?d00001

diff --git a/tests/integration/net/auth2/keys/ed25519_signing_cert b/tests/integration/net/auth2/keys/ed25519_signing_cert
new file mode 100644
index 0000000000000000000000000000000000000000..d84689f671297edb0772dfa1cb85381320d4ce23
GIT binary patch
literal 172
zcmV;d08{@xJs@RdGBq_ZId(BEV`Xx5Iv{j;aAh<gJv{&b000011ONtnr~%MNu7{4S
znwmq}eO7GB04tp)<Dpg2;J{Ej))@v&NVWk0AOrxo{QPB;X4q#dYp`0llleS<ySM{U
zt)?joKFt=|bt%)LbVxa7G`5Kr%vU2HN%w#*J0WUu1`NWzo!@agpGbEqk0#r0QmNWp
a0(LUDfa!>edi&yC3;vLtmEd`+^Th<Y!AML1

literal 0
HcmV?d00001

diff --git a/tests/integration/net/auth2/keys/ed25519_signing_secret_key b/tests/integration/net/auth2/keys/ed25519_signing_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..4934e5e89d4068003fd6ab4f3deb362191952d8e
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PG$1`a0000uEIOccFYI6!h@V%_
zg%yu8w9zasnODgbQ0!_iR&ryaY9pk*E5j-<Z0`e@equ>=aFMsKDv)#ZlpbeUQF*OJ
CG9@Jd

literal 0
HcmV?d00001

diff --git a/tests/integration/net/auth2/keys/secret_id_key b/tests/integration/net/auth2/keys/secret_id_key
new file mode 100644
index 00000000..df0b0af6
--- /dev/null
+++ b/tests/integration/net/auth2/keys/secret_id_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICWwIBAAKBgQDFphY1WTrmNRGgRjGHP4AwDUYQ+xY85SsKKcC7kJwsgiVppPJq
+SS9FCS2YJNMcs/u14IhNKIRtP8VLI/rurk9h2Qnbbb4r4FSf0DBmDW8Qhzag+UUu
+aV29EWB/To6JO4cxm6hzpzz+Bl3AJsZN+Luzgmk6ZfAy7dA2jrvAml8s1QIDAQAB
+AoGAASMQc6Qcw6BAhrSAqm+CFESvR3+6RAVpdviAhFOzoknpXy80ucnL/NCts3da
+w4qBgy1Ue2UlRd+dCe6eDetwx3O5lEhzj6WZbnz9f+KuXOKP16nisbQSFH+UTFnn
+0PMHYJIFbrPzqptEV9hlKcNljpTTua6Dl1N+bijENZVTds0CQQDuHCBKYJgOk1ma
+rmZEYt3VMLiUfpAwtVdmHXYV0xPWpkWYqHbZrit6kLi1fwvqc6I4C2pebFhFF71B
+m0ckFdGfAkEA1H+4ZrJkLV9uqk/Vj9bZHNF3212lK+cpdx0Og/4agdsVKbQfLF+W
+1dnazZ9tIm93kMdl75Ave2PUKOMfdu71CwJASV2PMXubvnn2VOvBhPa1hTey18Y7
+ZVaqrEMNnGHiLfQjY4scu6unp+cpknqn0EB6zivuRVO6yucqoClY/Sxf3wJAI0Y8
+Vxff10RTO4RbIDB7A/Sln82QwJPz5yj0ouaIgevbPHwA/L21bTRnxOBlHmVAhNEE
+09qsdyAgNNVXAMgz9wJAWB8pJffmHKXsmWaIU2Sxlc5JKZx23kMW9PkppW/EyGTR
+txQaVsLG8xy0ZaSp3VuvbYCbQ0LQ/IGQtqTtsQNn2g==
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/auth2/keys/secret_onion_key b/tests/integration/net/auth2/keys/secret_onion_key
new file mode 100644
index 00000000..2954adbe
--- /dev/null
+++ b/tests/integration/net/auth2/keys/secret_onion_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXAIBAAKBgQC/EEbOor8Vf3UACJcpmDdvrSil/hosbD1xRQ0lRbquChuOPIT6
+IfYq3/6rncrIqvQGF8nOMIYZK61WST97VvgnPYPIVwwlcURa/SO7+PHFNhd4iDl3
+5lqTvQm1zuvX6HONwFJJqxPiQUsPHm2K0aQcMKlAojzD2pFZDu4+8+DTvwIDAQAB
+AoGABoxCQPam4c+6bMPemlhTHgqrJ/UrZHZZLLaXGr3nBevmwdslG4VqcFG44pzH
+xFTHhCXwjpZvIhGzIQ/lkw6J9o8l9BD6+69tySp89OiCVHZTXRjNfHIzchprUR8/
+gVBPEgKapI/5Tm/1Dy2DYcoTA5e5mPf4N9bcoumGWtSZdJECQQDguVJL20iTBu9h
+I20PRrydSQXQ7KVc4nZk5KrndsI4243KclVef2LtAebedSHI8tdpnScAB4vFYH/y
+VneaXC6LAkEA2aesMSQFZe/Yix49a7FORzdgO3Nu9CrNHhSug/61gfUzD49Z5j2Y
+8d0zz4WY97tWPwwFZPqnqRVKY8zaY75qHQJAY7e4XfLDJILKTCdlKIcyAPU7QHcR
+9cKD2MdjUuxuyL4cD/5mBVWvdw4F/SaqxDmF/tZ+TNQMYJwuikF2Nye6ewJBAJ+i
+pd1o4Pix4C2w4TWSVqpPCCqycEdu+QA+BP1UnEWT1H5uEm6W8Q07wxtKjjXsVcZq
+B67XVI7jyarG/co4R1UCQDOcvt35RjAPGFPpRfBfKqCrc1kBiFLrawcgPKB28BIW
+TW3iKZgDyGHROyluwoOGRZIKUGhzCxsd/whQ6SXWqas=
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/auth2/keys/secret_onion_key_ntor b/tests/integration/net/auth2/keys/secret_onion_key_ntor
new file mode 100644
index 0000000000000000000000000000000000000000..8f942877b37167434c7820e84182c0f406d633c4
GIT binary patch
literal 96
zcmcDuRY*26H8r#>Gqh63&&$luQ?RvVK!6kXTrzCWa&`07DqE#q(3m@6vgvwh+vNMR
tRdyW}pYWhMz@jiL;_}G@MTsgKZra_86jD<--EiraZD457t7{({BLSz3Bz*t?

literal 0
HcmV?d00001

diff --git a/tests/integration/net/auth2/torrc b/tests/integration/net/auth2/torrc
new file mode 100644
index 00000000..2a7c7991
--- /dev/null
+++ b/tests/integration/net/auth2/torrc
@@ -0,0 +1,34 @@
+
+		DataDirectory auth2
+		PidFile auth2/tor.pid
+		Log notice file auth2/notice.log
+		ShutdownWaitLength 2
+		ExitRelay 0
+		AuthoritativeDirectory 1
+		V3AuthoritativeDirectory 1
+		Address 127.10.0.2
+		SocksPort 127.10.0.2:2000
+		ControlPort 127.10.0.2:2001
+		CookieAuthentication 1
+		ORPort 127.10.0.2:2002
+		DirPort 127.10.0.2:2003
+		Nickname auth2
+		ContactInfo pastly@torproject.org
+	
+
+		TestingV3AuthInitialVotingInterval 5
+		V3AuthVotingInterval 10
+		TestingV3AuthInitialVoteDelay 2
+		V3AuthVoteDelay 2
+		TestingV3AuthInitialDistDelay 2
+		V3AuthDistDelay 2
+	
+DirAuthority auth1 orport=2002 no-v2 v3ident=D7DBC517EFD2BA1A5012CF1BD0BB38F17C8160BD 127.10.0.1:2003 AA45C13025C037F056E734169891878ED0880231
+DirAuthority auth2 orport=2002 no-v2 v3ident=4EE103A081F400E6622F5461D51782B876BB5C24 127.10.0.2:2003 E7B3C9A0040D628DAC88B0251AE6334D28E8F531
+DirAuthority auth3 orport=2002 no-v2 v3ident=8B85069C7FC0593801E6491A34100264FCE28980 127.10.0.3:2003 35E3B8BB71C81355649AEC5862ECB7ED7EFDBC5C
+
+		TestingTorNetwork 1
+		NumCPUs 1
+		LogTimeGranularity 1
+		SafeLogging 0
+	
diff --git a/tests/integration/net/auth3/fingerprint b/tests/integration/net/auth3/fingerprint
new file mode 100644
index 00000000..4c01635a
--- /dev/null
+++ b/tests/integration/net/auth3/fingerprint
@@ -0,0 +1 @@
+auth3 35E3B8BB71C81355649AEC5862ECB7ED7EFDBC5C
diff --git a/tests/integration/net/auth3/keys/authority_certificate b/tests/integration/net/auth3/keys/authority_certificate
new file mode 100644
index 00000000..ee7ee3fa
--- /dev/null
+++ b/tests/integration/net/auth3/keys/authority_certificate
@@ -0,0 +1,46 @@
+dir-key-certificate-version 3
+dir-address 127.10.0.3:2003
+fingerprint 8B85069C7FC0593801E6491A34100264FCE28980
+dir-key-published 2018-06-01 15:55:49
+dir-key-expires 2020-06-01 15:55:49
+dir-identity-key
+-----BEGIN RSA PUBLIC KEY-----
+MIIBigKCAYEAzt9HthC1wszRQ6CO3yzceu2ARDOR2FrHRohIbRDvNxMamz+T/CUb
+63lcgY/ZAkun2DprrVGn69WvyhjpX6zwpLYVxA7pgzmTCAUuBhl/c9ZyWhe4yZqt
+qc3eg0yDac1U+oTe8MAEqAZvLmB6uymc1xnoGAoPYmkk+V0rzaDib5sKNGklsLn9
+KerD8/h+OaTygj9O6L0aNoaxcCY42+3w43tn70rk85SBhN+EVnpvGewHCxyiP6ev
+0jvRFg6GU6RrMFaN/YokYobnbHDIvaBWaYjRe9fWPBUpVWLdNvUDTOWZqeTlkVvk
+K09OJ32mbKUPdKRIIDV/OGnK4WR3tQX4oW9vVUHjKAHajv/iGYuDEoui4G9Ovw4j
+o0fosxETFvH9B/Qg7UT7rxOkVwX4P87sIV0Z1TwH4S7mIhTwhICD/MLm0m58j8MM
+Qd5Rt+4QFEVYY8vswV7XiN3xHwsiMcR7MhhPLcaTG57rc1pAVVRJLAGf7NNptIED
+dV9ha3ZFOClRAgMBAAE=
+-----END RSA PUBLIC KEY-----
+dir-signing-key
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAsFTr1o5iNvK0yqQRfNcUBk81BLNKI1Uv9uCy6mDdneYwKZqVeB5w
+5NQe8qFSGWzLWWfi7ZdQaOPHRUJWqdtkuR6AFEh9Ws+wSU17Jd1uMKfVFQL0+4q9
+tt52yoCE2tJ2GFwcouirUGXCXFQbfCrmUWxajSgGpDGNvjf24td8kq/O53cl4gOp
+d1Ubl2BsLxALUswRsurJqLt1r+WNKEV9gBXWavyWxZcOwBWUhExdWWVSlM2O2hYs
+Dq/VV8MJHugHHAju0d7JYhCy8L4K/AsZJ9KDgAyXw7L7ur7vqIzX/EjqtOjPk+rK
+dpe9d3SbxdHRN0hmwqx7n4zGDt0AD4sQ1QIDAQAB
+-----END RSA PUBLIC KEY-----
+dir-key-crosscert
+-----BEGIN ID SIGNATURE-----
+dE7ZA/wt346dO3uGUMM3CGQjm4YbPO7OWqmTAk0ohIDgUWT3At2fsitT+4ayZLGB
+EFL4yeeeaT3wYNb2kCW/JLI9x1bFXs+wO4CPLe70ynbk2uB9KIrOy4hH9EW7PpR5
+Ow1N/AzUm0CQQvLstLNbUEBl7rfS9edU4Mg1GZUQTM+CPWxUIlaTtAT858Nbor1q
+vJE7B5nVmozpla//0rE9Vr8Yu7JGOnCYdO002uo92AkwuHiDfBUVmzhJqaV75hHC
+3zrJIDdHtYpI9ctuUNanWjVksuCkN1SUWmFYJPDWSChXxll8EZTVtk3Z4G7Ddgcl
+4WZ8tb5PbzFypt2DSbeqKQ==
+-----END ID SIGNATURE-----
+dir-key-certification
+-----BEGIN SIGNATURE-----
+ZQ5ZVR5cgYuDbg182OQRIri7Md/L+DIeCEf0ZuApMFytgTZOEExsmccJlIibrfzB
+hFAvBuxN+WDATEawg4FltyXrgB8M3FDrYufBQua7v9ghtapxsxL4O+G02Rq6RTZ1
+NIV3eE034UOmZ33Jd6k1EcZykeu/wF3ThTtg1pM75g56zDXk9xn+MyRb1ja7Oor4
+mzTBncgjo7YBnmNN/eIpph445NiduC3BdrLEsrCJA5F1iCO6ubeKx9GLAMIGb+W/
+qIXiuUiCmgp+iPQoF1rYRRaUgfo9zysm7ikjiSe6rSifLPth06vGWvUgpG0xm2jr
+96igZ9MsfF1loaMUV7g9MhTzDFRk+Fw/KrAPkXgisje3RNtaI3UiCqbs/Pq0x7nC
+77S6B7dd9RkhtWmpGFnfqX5I/l+766xAGXMO9IPlRp0L6EcOhIA+7N93mGf9dCKv
+85741ULH0pZrdglPkXXsNGv7EO01uKuSrTkjK8Z/7hM/mxib19O3CTI3eX1WPQPr
+-----END SIGNATURE-----
diff --git a/tests/integration/net/auth3/keys/authority_identity_key b/tests/integration/net/auth3/keys/authority_identity_key
new file mode 100644
index 00000000..53825ce5
--- /dev/null
+++ b/tests/integration/net/auth3/keys/authority_identity_key
@@ -0,0 +1,41 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+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
+T5zlwSssCEGZ7wceiVs=
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/tests/integration/net/auth3/keys/authority_signing_key b/tests/integration/net/auth3/keys/authority_signing_key
new file mode 100644
index 00000000..f396e33f
--- /dev/null
+++ b/tests/integration/net/auth3/keys/authority_signing_key
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEAsFTr1o5iNvK0yqQRfNcUBk81BLNKI1Uv9uCy6mDdneYwKZqV
+eB5w5NQe8qFSGWzLWWfi7ZdQaOPHRUJWqdtkuR6AFEh9Ws+wSU17Jd1uMKfVFQL0
++4q9tt52yoCE2tJ2GFwcouirUGXCXFQbfCrmUWxajSgGpDGNvjf24td8kq/O53cl
+4gOpd1Ubl2BsLxALUswRsurJqLt1r+WNKEV9gBXWavyWxZcOwBWUhExdWWVSlM2O
+2hYsDq/VV8MJHugHHAju0d7JYhCy8L4K/AsZJ9KDgAyXw7L7ur7vqIzX/EjqtOjP
+k+rKdpe9d3SbxdHRN0hmwqx7n4zGDt0AD4sQ1QIDAQABAoIBAEZq43PfkKFY85Ip
+S0KLsdeDMi0aXHUXw/vXaBvpaxdvobQ7o41AutznSSSj/+FfbSXbMuinENmSfTXP
+dESI9QRohcWT3VuyrTfY1WEduK99lr65W5RIp9KrrMzZ3jR07+xyfI0iVafZu3Cb
+tg40I55IozDT1zMjBvP77YBRhdId8dGkftSQ8+bDtcV14lLSpwSDQefSa0LNqSWm
+Zr/mCV5S2bL4wJq7hBFS3VYfrGPt1B+r+pGFbBBstj5Q78YmzEUPZ0fN2hgym09l
+8HdHed1oDm9K/66fPs+VgXkkrM3CCR/Hel9D91l9hVvXia9qAA7c0G1twbIg7g/a
+yKeIQgECgYEA1u58v3a2fUIiq/hjJdMIK1ebCxI6ndhkWZn5wfGShv0sjDb7mNyN
+wb8+m59an+YhfjinazHl4TVcAdD2lDMWbZGEcaSsXbPhDcEYFhVbag/IcuFlBOA7
+ZJwwPZMirT920X5xAdJcAeAhRnBjQAmJc8L4oIDlKCGOJnBW0FKpR2ECgYEA0gZM
+IRPvikTZ454Xw947WLFCuek5ZOzupPRRAh+vd+WVmX5HnjazKFWOuFO9F119RAKg
+0NonAQomGexgkQW75oC9QdSa6DKeumlswY5hQ8NkNlfmsZYgP18mplvv/0i+8BLl
+kdPihrmM0Sj7KLnIHau+i+YB3euZcT9cq0Y+YfUCgYAiS1FaV33MxLW1jN99FIwU
+JllVzeXOc82nQltIp9wCb/kgslE41dBEnthFioqyQs0LT8ze3MpaQeJZY9dEVFZ6
+yyI/48+g7+e0AyBtvaClbrlEI1S0D3dKmWVVHdoFnL+/s5YifUczAWktzRb5C8yD
+zRNQwOBPo/MDjR89BEOAYQKBgEieLMxzHCvuynfNPeJXgKWWBMBLR7EByzH119yo
+H/+Qvj0oUJL/zspvar2JFqRxitJtJjWQeFP/slTcSjdaiDGW6dlNLZKDjiZeNWBn
+XnITqR6xHe7hPZ0rxS1YNI9ME9jmb8IQRQ7YMTxQsybNtcesjmHI0XRt9cwWYHBI
+BWHRAoGBAIbUvxX966e7uW5JjBoo+cDPODUHQ2bQ0EHFjhmFJXBpsSVS4tsfV47Q
+ZLrm4va08QfetX28yRFchn12LUtkKWrHwJYpaYvd0vJK7VL9IajemExWAoCVtkAO
+Zxy1hi+uDPnxbkYFBBLh8Ew4BBnLVP1Kxj+2Y8Fqw1GsDEprA4QT
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/auth3/keys/ed25519_master_id_public_key b/tests/integration/net/auth3/keys/ed25519_master_id_public_key
new file mode 100644
index 0000000000000000000000000000000000000000..391c8b614a429590bb64a4d9a00ccb22516fee68
GIT binary patch
literal 64
zcmcDuRY*-SGBq`{EHl(CC{4=AOtw-esVqn}P_VUSU|?9E9~c$rqj=R)()-lL#JR0Z
UTs>VO=T;b8RxbR%Nz*160E+w;h5!Hn

literal 0
HcmV?d00001

diff --git a/tests/integration/net/auth3/keys/ed25519_master_id_secret_key b/tests/integration/net/auth3/keys/ed25519_master_id_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..637ec08c6ad6f9589c4edf9ffa3f8649eae0e7e0
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PFd#iW0000;v-)392UG@r|MNso
z59M}T!g)Vh@vco_kv4o)!@+X|SNko8*gxDah`#nV0QG&A3^~|9%vk(NbDC$ppT9M(
C)hJm2

literal 0
HcmV?d00001

diff --git a/tests/integration/net/auth3/keys/ed25519_signing_cert b/tests/integration/net/auth3/keys/ed25519_signing_cert
new file mode 100644
index 0000000000000000000000000000000000000000..279699b6cc91e532498803e8b82c83cfa1be3e23
GIT binary patch
literal 172
zcmV;d08{@xJs@RdGBq_ZId(BEV`Xx5Iv{j;aAh<gJv{&b000011ONtnr~wtp1Jg7u
zz+*4+w(5Gsp8j7nvm*>C<%;pvoX$S5=6C@BAOrxfZ&6xNOd-`d8B5BsVV#8n3XF<W
z&ZsccBXR$-DLhjwTg;I6KR$g%u9ssgGDcp0j}<_xTjkal(*4U9_^cbb?L(0tNzu0d
a=gi=bs5~y0oFau#boPT<s)sXA8!!ygyGQQ;

literal 0
HcmV?d00001

diff --git a/tests/integration/net/auth3/keys/ed25519_signing_secret_key b/tests/integration/net/auth3/keys/ed25519_signing_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..bd83e4c1f4ca77efafed66a3eb39a139d8f7e31e
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PG$1`a00000_UP<<Sf|oSuleUa
zb)U&zy*$4XtY}~_Augd|`e{zRTGIxr{Jva#Z1FR+Ks|BZPs`YWEQbgR*}9>95^?b-
C9x5IH

literal 0
HcmV?d00001

diff --git a/tests/integration/net/auth3/keys/secret_id_key b/tests/integration/net/auth3/keys/secret_id_key
new file mode 100644
index 00000000..d9720609
--- /dev/null
+++ b/tests/integration/net/auth3/keys/secret_id_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICWwIBAAKBgQCd8vrObZhXfmw1GbShdxi2OCkYH/NC9CapI1rNjVzrVkqE6EC9
+HNsQmdgRD7NFleFukJof4xnJcm33D1TuPDV1CIHKnGhtIVIxv+UlPQ0aViGwqANK
+0dqKvWV2VOrXhKM0w1SrEqkDOrmrzeHC9RQjeB/cB+rw8A9RgeFkLjOZvwIDAQAB
+AoGAdOhv83LzG2+bsAICzLBWPil7YTvk1l3Yb8CXaSWE7TvFlHJD2LYO/06fuqEg
+VBUH8spdCdUSNSTZd9CFUICIH5oqBhNlnh2QBs0b6BtP+GnSC+k0VPPtijMJBcAo
+DqawDrzhedMMNpfpADBxsYLwXM3LIAvcmvmgglVuobyhVuECQQDKYWAbEaumGasZ
+ssK+zJfYCzKYDJP7KLQ2V5pxcWPhxTMgUW0sgQ9YSBmT8of6bizms9015oehuLmb
+X/IdvrBFAkEAx8wEbmeoJ1xjym2iRTZrrzKaCXXpRNVFNC5CLld9/JdYDkrKRvn8
+2wlEPRdOzEfw4Mun5SOuaHmda8R5VHpMMwJAdJtwpYgj77uAc3klbowxvWCOUT+G
+EEPeuiT1rwGXfGGEWM2x6t+d+M7qNe2bXbcXlgHypnjik1L9VsIMngjeRQJANltV
+IUxmPT8vjxVAvp/NsD6OFeDUc/up9kZXjxASoLP0Kv9CBQliN51PyWcb8wvnhuEh
+bn/EpXvgzj8H22nibQJAQ3ZAHYTwp7ikpRmsi0pwD8ATZPL9hb00qUlZtC0w1UFV
+DWSKVtbALl2AwY1Z6L4SDsFJSEh3+ys3lNVY5CRZIA==
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/auth3/keys/secret_onion_key b/tests/integration/net/auth3/keys/secret_onion_key
new file mode 100644
index 00000000..90aa50a8
--- /dev/null
+++ b/tests/integration/net/auth3/keys/secret_onion_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICWwIBAAKBgQC3Atj3fFj1uwoUa8LtmxSLXHsoTuOPZ5z/Jxtk1XMotvY6IJHG
+xPRxUPOdFvehBk6+MhvhPRZgelN8RmUdE50Hf+++o87RwSo0DkjeQAn10yxh9nO4
+MvYyijDsseQWDS7AGaxirWOasMpyNYu3LxstvotSKnznqWnI4jYE4JH67wIDAQAB
+AoGAEYXZRmEGl4iwH2JuCJgXsHxLYoGjMkDmfFu/OLljTFuwWcJyksia6xqoKLth
+PG7BLV7Y4okZ0mUEB1sqJU2SdFLNJMfcX8XDDcYxJWdw9MmIfkqs9oimR4r6b5lk
+a367jDBG926sdzPpZk5zJGlMt1cuy/qPu6xL0Fxq1W7xfyECQQDqBKQ7dqT9f1cu
+1MP5EggkhLR+5McMSc5gPyVX3NnqJDO7GGjpNJDVCxkLMBymi7VUYxMkN3ywsBpu
+Y4ez+ce/AkEAyDOoLSRWSjjvq5Av9QilVFw17OufshVvacrVwoyFz0iafgaq1tUB
+RpHZ2EGfKo8zEHB9oguO9AOJpO8DFBQY0QI/V8Fl1Oao+GbISsd+tegNJaSeCve/
+rNwAiBcl6czn6uWogICm1szfgwSmX4urMskxNnPwuaQVHizrvHmWaedBAkEAi4ZE
+zMEoSi4ICn9AjPrrjjF9e5JzB3+c2BP+icm5b87frLkk0vg8HVyEgAyrytNl+S0M
+waRginr0sLfKY3HmIQJAd7bHercNGGAziFZI6xx9oZbFpyx1DleaH0VSJtTwN0Uh
+OTfmDEvp7mpzYwAIqbrSpUvqqA/Ygtov+7tEgPk7RA==
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/auth3/keys/secret_onion_key_ntor b/tests/integration/net/auth3/keys/secret_onion_key_ntor
new file mode 100644
index 0000000000000000000000000000000000000000..52971359cde2a143a4e5a63ffc10d6e4b8150ff5
GIT binary patch
literal 96
zcmcDuRY*26H8r#>Gqh63&&$luQ?RvVK!Ac?Mv1Av7TsCU`0&lNu7&C6`aTry2%CBC
v*ovs|m$T0oE&A%W)92lLmZPh0vPQoD{3-s^nfQ$xAGCY=ub%0!PEZ;E(kv^I

literal 0
HcmV?d00001

diff --git a/tests/integration/net/auth3/torrc b/tests/integration/net/auth3/torrc
new file mode 100644
index 00000000..b44e74f8
--- /dev/null
+++ b/tests/integration/net/auth3/torrc
@@ -0,0 +1,34 @@
+
+		DataDirectory auth3
+		PidFile auth3/tor.pid
+		Log notice file auth3/notice.log
+		ShutdownWaitLength 2
+		ExitRelay 0
+		AuthoritativeDirectory 1
+		V3AuthoritativeDirectory 1
+		Address 127.10.0.3
+		SocksPort 127.10.0.3:2000
+		ControlPort 127.10.0.3:2001
+		CookieAuthentication 1
+		ORPort 127.10.0.3:2002
+		DirPort 127.10.0.3:2003
+		Nickname auth3
+		ContactInfo pastly@torproject.org
+	
+
+		TestingV3AuthInitialVotingInterval 5
+		V3AuthVotingInterval 10
+		TestingV3AuthInitialVoteDelay 2
+		V3AuthVoteDelay 2
+		TestingV3AuthInitialDistDelay 2
+		V3AuthDistDelay 2
+	
+DirAuthority auth1 orport=2002 no-v2 v3ident=D7DBC517EFD2BA1A5012CF1BD0BB38F17C8160BD 127.10.0.1:2003 AA45C13025C037F056E734169891878ED0880231
+DirAuthority auth2 orport=2002 no-v2 v3ident=4EE103A081F400E6622F5461D51782B876BB5C24 127.10.0.2:2003 E7B3C9A0040D628DAC88B0251AE6334D28E8F531
+DirAuthority auth3 orport=2002 no-v2 v3ident=8B85069C7FC0593801E6491A34100264FCE28980 127.10.0.3:2003 35E3B8BB71C81355649AEC5862ECB7ED7EFDBC5C
+
+		TestingTorNetwork 1
+		NumCPUs 1
+		LogTimeGranularity 1
+		SafeLogging 0
+	
diff --git a/tests/integration/net/exit1/fingerprint b/tests/integration/net/exit1/fingerprint
new file mode 100644
index 00000000..e7a1987f
--- /dev/null
+++ b/tests/integration/net/exit1/fingerprint
@@ -0,0 +1 @@
+exit1 270A861ABED22EC2B625198BCCD7B2B9DBFFC93C
diff --git a/tests/integration/net/exit1/keys/ed25519_master_id_public_key b/tests/integration/net/exit1/keys/ed25519_master_id_public_key
new file mode 100644
index 0000000000000000000000000000000000000000..ce17e1db459ce592a5dccaff3841697ca3f05df8
GIT binary patch
literal 64
zcmcDuRY*-SGBq`{EHl(CC{4=AOtw-esVqn}P_VUSU|`^$Yn9+0wZY)RD)qbvxl?rx
U`W;-=6Q9qR<h^ly{08M)0F(h2aR2}S

literal 0
HcmV?d00001

diff --git a/tests/integration/net/exit1/keys/ed25519_master_id_secret_key b/tests/integration/net/exit1/keys/ed25519_master_id_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..561738278c09e35dc3dcdd73cb01858787bb41d0
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PFd#iW0001ZMWycCUxvA->Z%)g
z_%*!}V3S|edv!|}Yx*oC9Ii^{@HG0AM3O~wV1B4i6&As38F4D@d_=F!`6lG<RX}Cx
CNGO^B

literal 0
HcmV?d00001

diff --git a/tests/integration/net/exit1/keys/ed25519_signing_cert b/tests/integration/net/exit1/keys/ed25519_signing_cert
new file mode 100644
index 0000000000000000000000000000000000000000..23251eb2bccfe8317abb39902238068c4c772dff
GIT binary patch
literal 172
zcmV;d08{@xJs@RdGBq_ZId(BEV`Xx5Iv{j;aAh<gJv{&b000011ONtnr~yYbzAi1d
z5NfbtV;O+UbzD0pcN{n{yWcNr1R8~myk-FaAOrvlojPDgTCgzCswZyXZIvv+PQj{-
zUvB|oOR=wCup`<ZR1TS1o*Z^?4(217cX7~#NEFbTD@D1nS?9x&(z*fCDBO6DPT#t4
aFHJPSr+CUQf@djfX@%A@UTRkXr|ANI?m_DS

literal 0
HcmV?d00001

diff --git a/tests/integration/net/exit1/keys/ed25519_signing_secret_key b/tests/integration/net/exit1/keys/ed25519_signing_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..d0b9d813676e5807026d027451086a884ae85341
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PG$1`a0001x1Ricsh&FrD_+DAN
z7O``w{|ozwF?0N-y5Yp7FichHxMka*-u}9lle6VnZ6fbJD>uN`RkEgMbkKMk*_me<
C#4E=D

literal 0
HcmV?d00001

diff --git a/tests/integration/net/exit1/keys/secret_id_key b/tests/integration/net/exit1/keys/secret_id_key
new file mode 100644
index 00000000..453a4345
--- /dev/null
+++ b/tests/integration/net/exit1/keys/secret_id_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICWwIBAAKBgQDUhrtgD+6NyBn7JEvPsWHNjGNLzeoA/Wwah6j+BMnWZDyU8LDE
+yf/jmvmZa074MHNXR3ZSVblTq3JeWZ87JdV+2A+uiwtVPi6qOQAADEvxDBiCTnze
+mWqCwuR1BudeKdqdkArZMw5352xo6m1p3XJQSyWde2qYRFBEX/EEGsEEGQIDAQAB
+AoGAEGb9myJfpO2mo61fdH4aMET/fOA9iSoF595EeqZf9X3y9wPEgMueRjC1xtNz
+WtBSdo/7X8th7EU1JHcCRQxcd7OstR7fiy81n0UMC6GrHASpVYYJXC4M4MGt2yzM
+Wzadp2Qa4a1Wwpud0bXH0CB699MmEcdpNgw4RGUxKeHuEWkCQQDvpU/93Up2APZX
+7whjUT4IfHUOUVaRUCJnMUJxajtM3AvtYgDEmHXSAbs0Wtl0v4qh5xfvKJ2YgfI6
+M/eBhR0fAkEA4weiSvHPUwT8Uq0f3Hc5DHLx2a9Q/qKvytCcbtgjOA3Anclzf4vG
+PXsCjwYETDLOqg8zyKOwgF04dqPkDYt/xwJADKX6AdkjK/VDC0MXez53erUu7HGI
+kyTam/2ylw/XT2gxzPamOboeRdZHjizZW1scswzia4IGR11cbov9nT1sWwJAfAtP
+wWMdxF6U/xdYsTzzDro/KpF/z6FUK5yP3IB7vcTF2XCYirf0OONdIohHENsxz/k+
+cgH+DiThFPG3SS9PQQJAJZ2IBMIyO31Q+e2GW0NKxFyCsqHAcqBUMU9XDH2POm+K
+3CDVyHvc/GsZhWYayQzD65VUERjAbxyALDotSIODGQ==
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/exit1/keys/secret_onion_key b/tests/integration/net/exit1/keys/secret_onion_key
new file mode 100644
index 00000000..d2987ef9
--- /dev/null
+++ b/tests/integration/net/exit1/keys/secret_onion_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQDHYG2e/zXbe3IVjx/kJ5cqVmc4p11otnJUMdmGA2hP+Oi7QbEJ
+2EMHO9mLKsWyX42ekPCjXLeYF4NG7QGEhKbs9yzneIIS37uucMGgfwv5QLX5KDWJ
+5tPLOtZmIjm4kJsodj6+OFv95Um3+QNbCoBTMAL4UfhXSyvSP8NY03obBQIDAQAB
+AoGBAKYzlC4+wT69oVSngwZGmpUIgfOQUSXBMX1OMO6uWH6SGDBBiruSNA4LrkV8
+2mDflsbgPDlySPnYX+74E5PMoPjgAcZq/+dvwTfCeZZhbACqYttdLwdTZxZWKAOi
+K8ffrD81pjIJKB8tpP7swUC6zrI70VuxJKfsU7KfBJDSElcBAkEA6tQJDjaCpFvx
+TRQjHI7vanUVJ65TigPGwZqb+iQgXYDymc3p8BnHtd0bTuYnl35x421dFTCfF6V7
+/4ceOlmDvQJBANlaJpfZl0f3c6WtTF/3Mwr7P/7UfWOuHvPTCsY1QvmdfuosV3P1
+Zhq2NyQYttw8j7cbLPA6zNojacTeZjO/ROkCQBUmuhYUpNnHCkoGCU+WNExjdV9Y
+nV+uDWX81hXG0T960N83o92jhNCFtOL7ag+ELR/uBtdUxM+tcSjH89oPnAUCQQCX
+j1BoBJeD3F4tAhnGtTZHiwmF5aAF2Q3GUbwqmEs6igNMwVy+BDmNmM/8gKtKCYTh
+VrbQUQA1gAop+DbmEJK5AkA+13WiKrj/JM1/CiEWwcX0VxOL/1FsaKgKJVnFEi5+
+kVmt9mFD09UXukpxJOIVLUNGCBBIdnm+7s3WZNRDg/b9
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/exit1/keys/secret_onion_key_ntor b/tests/integration/net/exit1/keys/secret_onion_key_ntor
new file mode 100644
index 0000000000000000000000000000000000000000..07ebd85bd0f9dbd5afe0cb5530c7672ecb603c7d
GIT binary patch
literal 96
zcmcDuRY*26H8r#>Gqh63&&$luQ?RvVK!6{spOzb|UzB~pd^4!|v$ejO=cT(>jAiS&
t+qg7a<}Hs=;`;M$TX0%X{R4?gHe(K+#APq`rw8ui{3mGmxAf5qZUDT6BXIx#

literal 0
HcmV?d00001

diff --git a/tests/integration/net/exit1/torrc b/tests/integration/net/exit1/torrc
new file mode 100644
index 00000000..2b5ec458
--- /dev/null
+++ b/tests/integration/net/exit1/torrc
@@ -0,0 +1,27 @@
+
+		DataDirectory exit1
+		PidFile exit1/tor.pid
+		Log notice file exit1/notice.log
+		ShutdownWaitLength 2
+		ExitRelay 1
+		IPv6Exit 1
+		ExitPolicy accept *:*
+		ExitPolicy reject *:*
+		Address 127.10.0.11
+		SocksPort 127.10.0.11:2000
+		ControlPort 127.10.0.11:2001
+		CookieAuthentication 1
+		ORPort 127.10.0.11:2002
+		DirPort 127.10.0.11:2003
+		Nickname exit1
+		ContactInfo pastly@torproject.org
+	
+DirAuthority auth1 orport=2002 no-v2 v3ident=D7DBC517EFD2BA1A5012CF1BD0BB38F17C8160BD 127.10.0.1:2003 AA45C13025C037F056E734169891878ED0880231
+DirAuthority auth2 orport=2002 no-v2 v3ident=4EE103A081F400E6622F5461D51782B876BB5C24 127.10.0.2:2003 E7B3C9A0040D628DAC88B0251AE6334D28E8F531
+DirAuthority auth3 orport=2002 no-v2 v3ident=8B85069C7FC0593801E6491A34100264FCE28980 127.10.0.3:2003 35E3B8BB71C81355649AEC5862ECB7ED7EFDBC5C
+
+		TestingTorNetwork 1
+		NumCPUs 1
+		LogTimeGranularity 1
+		SafeLogging 0
+	
diff --git a/tests/integration/net/exit2/fingerprint b/tests/integration/net/exit2/fingerprint
new file mode 100644
index 00000000..82a21ce0
--- /dev/null
+++ b/tests/integration/net/exit2/fingerprint
@@ -0,0 +1 @@
+exit2 C0606B414423F9A2BBA2679B440056E3B07FEC85
diff --git a/tests/integration/net/exit2/keys/ed25519_master_id_public_key b/tests/integration/net/exit2/keys/ed25519_master_id_public_key
new file mode 100644
index 0000000000000000000000000000000000000000..b0b6473b55d4a38a30ca0c8aabcb6764bc65ced6
GIT binary patch
literal 64
zcmcDuRY*-SGBq`{EHl(CC{4=AOtw-esVqn}P_VUSU|{Il(fsKUmv>&6<hf<KuLW*(
U3STu>{~VyVs!&?#Qrxa@0IrJ|JOBUy

literal 0
HcmV?d00001

diff --git a/tests/integration/net/exit2/keys/ed25519_master_id_secret_key b/tests/integration/net/exit2/keys/ed25519_master_id_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..5dc1f0d0ac49819bad43ed6ee8f46ff5dd71c047
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PFd#iW0001>JdB{+(%OX68UtoE
za>DmK#Q471Cb2#7mjtjWsM1Jj8qpkB6l|ASS2n8U)x*23D2_5SX;5}EsEH%~eNFiT
C87U+H

literal 0
HcmV?d00001

diff --git a/tests/integration/net/exit2/keys/ed25519_signing_cert b/tests/integration/net/exit2/keys/ed25519_signing_cert
new file mode 100644
index 0000000000000000000000000000000000000000..018238ccc33c92e5a882b63fd1b61cd202fd795d
GIT binary patch
literal 172
zcmV;d08{@xJs@RdGBq_ZId(BEV`Xx5Iv{j;aAh<gJv{&b000011ONtnr~xbV3@--b
z|1QieY?OJ;X`7u1;~z9#_I|J|>9@Ajq>ljrAOrx4xP$V-3QKNQ8P29H>k!(B6V*2-
z^H46TaT_AiUb^-MI=pw`Af!5P^+-uu6)}~bZY(ldxMduP)C}NA_D`;^v+<mFqJ*nA
aNlD8hLu9l<ZK>`61&EB_PmnZah=~ZKbw+Uj

literal 0
HcmV?d00001

diff --git a/tests/integration/net/exit2/keys/ed25519_signing_secret_key b/tests/integration/net/exit2/keys/ed25519_signing_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..d407ec222a622c47e42f4028d8d5822fa2e32520
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PG$1`a00008+n#|Us#)9l0v4^%
zGvQBni`!ki@^Wg`-SRPSmri1mQz{%Hv`{x&#kU=Rh+{o%!I%?P{ckXpQg)a&Xb$Jp
Czb9t^

literal 0
HcmV?d00001

diff --git a/tests/integration/net/exit2/keys/secret_id_key b/tests/integration/net/exit2/keys/secret_id_key
new file mode 100644
index 00000000..2b0eb1e1
--- /dev/null
+++ b/tests/integration/net/exit2/keys/secret_id_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQDPSSR++AXcN9GK8J65iaQmPPEJVp895tsGD2nC9IC2ye5MwRBr
+W68grl7Jq0lK2hBNP49V+JpGn9/zvouxZ/BC0iXPPOYn9UfN80a0BIlb6L5h9C5+
+YSJ18J4sTk4Nl/j2Cm5NYDHt67YQ02aBWta7hE2hsL4okytCpu4b8WjRIwIDAQAB
+AoGBAJILx8IJwB9D2Mia9kplVxl18KISvQnhQMpJS8wHdzTSm6rKkGYD6CUPlkti
++rXZZIj40mXRTematTDIPSZWxCkbcKG6E3pAlJgmwONry7R28uB+PX8G258+7SCB
+yeWMtha0OajMslHj+8nV5pW9b9qyJ00vCPZIFdSMXi598MLhAkEA8UCJMa1zAfyW
+JB5q+3gUaIE4sJgn+Nyh10RLyEtZo3OaRjjHgV3doDI+YG4GEAyEkLWra/kaXVUi
+V3H+l48C8wJBANv1DR+4+VH4wZQsVksNkDP1//iA0yjFtW/dducehYDLe9qmUWpc
+vV6r8ibyfvZVO5016YmWkmHKJbtGdC6xpRECQECFCOvvPj2+xoycUfI02Ahm3rlj
+x/TnVKUUj8veUvfCt/SlxL1VVCs+pK33Xsm1/1IQM+spcKKbXRbT1snDpn8CQQCU
+mpG8Tec7x1lZdz7xw/8Z6+h9BuQilriHFFPBv/AoXNGXnmhA+NkD/h1CzPCUEm+N
+PiBC0ZSiNsWZKfdSmLhRAkBIwXvHkNJWMLMqr+U7C1AcFyFTojpmzQ9zhmKsnIYk
+FnGysw3OT0vx/qqJzML+ZbTAG7BkFwOJSWM+EbHO3f+6
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/exit2/keys/secret_onion_key b/tests/integration/net/exit2/keys/secret_onion_key
new file mode 100644
index 00000000..b8869a18
--- /dev/null
+++ b/tests/integration/net/exit2/keys/secret_onion_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXgIBAAKBgQDRGbi8jXaEdXAKgS63kx7qlPJpW1GVL2HHVJ/xIBrsDPJ+STKV
+E31isk48cg/FhcW91myJVa+uPg5CyRnA2upEz5kCf8W7KPyifV7faVelBYO/rKgz
+dUqXRjcMC1sF3RpNLgRFbB9JEMoLEGqF+T1JVHyvsHaXhCGkosvRtm9azQIDAQAB
+AoGBAKzVT+c6Ho5Z66QjJxRBnLpVJxGCk6p2IaH7BsDtwpL+GKndotup4mfj7dr0
+hKjFa68AP3I8yxuA25TEWG8aA6whJQ9WJJ3dqteqMI6Vv6BNLoso35aXpo+raYh+
+FeeB93gZ+Ree9gnhfLyI1ukUFcO0pq8Gc7VWI/+Kh0EcqOlBAkEA+nkTtEKzPik0
+bKhu26JgBe0eRoZ7MEfBoTQx6Aqi/3mITsU183An3CzeT7YmOY8cdxyXUUpdxG9d
+Lv2TwyOJiQJBANW27mlFVHwARad+t9PbmJXsbn6lXbAVj8cM8m5BPxdwiVtvtdv+
+t/27/MJGtL5Quh5rmXev452uyv1TEZzcKiUCQQDJN4V91eu7L0z/UZylc1+iwygE
+TjsewTars4u4NvtVM6Qua7340IwlFCKQdOtmaDLc+aoSUyTbDwAUJQCUzrLJAkEA
+h/TkHpw4btpNdYyrrV9Z5qaOdIsG2uocmWinIXToiiTRfRXH/7g/nG9nEMCiYyBA
+BvI0o2uFxd5YzGd4IO3+8QJAFDg7lcMO8IHcajS/n1OG2J1ORt+hRJ6Hsq76H69E
+LIgcBsN/hjV6jVrMsjvO8r5cTw+aAVWB5Hb8sgpqpUSulQ==
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/exit2/keys/secret_onion_key_ntor b/tests/integration/net/exit2/keys/secret_onion_key_ntor
new file mode 100644
index 0000000000000000000000000000000000000000..8b8a6ccc49ca50a5ef60dc8e1b7bcfb7d9145a5c
GIT binary patch
literal 96
zcmcDuRY*26H8r#>Gqh63&&$luQ?RvVK!A?lrxMTZUK7ZmyV*-r_w%|FCnvwY-{rUL
v+p!f%KQ>=>dK%AG#2BErQZM~-yXTYhUQg@(?Y!Vp_s3z{{-tLg%(4RjhrlXx

literal 0
HcmV?d00001

diff --git a/tests/integration/net/exit2/torrc b/tests/integration/net/exit2/torrc
new file mode 100644
index 00000000..b93c8d10
--- /dev/null
+++ b/tests/integration/net/exit2/torrc
@@ -0,0 +1,27 @@
+
+		DataDirectory exit2
+		PidFile exit2/tor.pid
+		Log notice file exit2/notice.log
+		ShutdownWaitLength 2
+		ExitRelay 1
+		IPv6Exit 1
+		ExitPolicy accept *:*
+		ExitPolicy reject *:*
+		Address 127.10.0.12
+		SocksPort 127.10.0.12:2000
+		ControlPort 127.10.0.12:2001
+		CookieAuthentication 1
+		ORPort 127.10.0.12:2002
+		DirPort 127.10.0.12:2003
+		Nickname exit2
+		ContactInfo pastly@torproject.org
+	
+DirAuthority auth1 orport=2002 no-v2 v3ident=D7DBC517EFD2BA1A5012CF1BD0BB38F17C8160BD 127.10.0.1:2003 AA45C13025C037F056E734169891878ED0880231
+DirAuthority auth2 orport=2002 no-v2 v3ident=4EE103A081F400E6622F5461D51782B876BB5C24 127.10.0.2:2003 E7B3C9A0040D628DAC88B0251AE6334D28E8F531
+DirAuthority auth3 orport=2002 no-v2 v3ident=8B85069C7FC0593801E6491A34100264FCE28980 127.10.0.3:2003 35E3B8BB71C81355649AEC5862ECB7ED7EFDBC5C
+
+		TestingTorNetwork 1
+		NumCPUs 1
+		LogTimeGranularity 1
+		SafeLogging 0
+	
diff --git a/tests/integration/net/exit3/fingerprint b/tests/integration/net/exit3/fingerprint
new file mode 100644
index 00000000..05796b56
--- /dev/null
+++ b/tests/integration/net/exit3/fingerprint
@@ -0,0 +1 @@
+exit3 FC264325EA99D597FF94DA88379DABB64304DD9D
diff --git a/tests/integration/net/exit3/keys/ed25519_master_id_public_key b/tests/integration/net/exit3/keys/ed25519_master_id_public_key
new file mode 100644
index 0000000000000000000000000000000000000000..3e07d44a7fb5d5d306be733259811d62fe9b9a9d
GIT binary patch
literal 64
zcmcDuRY*-SGBq`{EHl(CC{4=AOtw-esVqn}P_VUSU|@*S{=4J(vZ)7)U3(K!Klm-(
UVwW-Vmr1VVp9bxefVrMG0nFtYZU6uP

literal 0
HcmV?d00001

diff --git a/tests/integration/net/exit3/keys/ed25519_master_id_secret_key b/tests/integration/net/exit3/keys/ed25519_master_id_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..dad17ded4eed9c903597cc167452c0962d514a7d
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PFd#iW0000eupPXCu|tds@Jj|d
zPk2j&ARp<hrqG+7JuSRm4LeuJfb<Xji#OaOgU!C+)zFK$XQ$P9P&ZwfBWz^u@c|o(
C_9w#t

literal 0
HcmV?d00001

diff --git a/tests/integration/net/exit3/keys/ed25519_signing_cert b/tests/integration/net/exit3/keys/ed25519_signing_cert
new file mode 100644
index 0000000000000000000000000000000000000000..61bc40af23d853dd901f30121b1a67c72026d82a
GIT binary patch
literal 172
zcmV;d08{@xJs@RdGBq_ZId(BEV`Xx5Iv{j;aAh<gJv{&b000011ONtnr~yFIwogqA
zajVl6ghm$mK{`>Cg@5;xi9Ulib(rg<_>uttAOrwfEB(0Vrj@~SMU7x(@J^+)K4_Wx
zG;JCDfGcEBok`j5`J7}|A3YA^?v>MWO$>lT2;;r%)vE&qoZbS|8AL{U`Z+oO;@H5n
aAQSm`hjRbl<FMBdSerH|rQVxLw0{awWlK{4

literal 0
HcmV?d00001

diff --git a/tests/integration/net/exit3/keys/ed25519_signing_secret_key b/tests/integration/net/exit3/keys/ed25519_signing_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..68d8da0e714a09085d8a172fe1480d76bb90ce78
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PG$1`a0000;um9;|W?+cekKe!B
z&m_hbMpO@igIf<@SVfWJ)Y@Z+6M}~T%uk#@Hp%(yo8@Iy+U-A-7Rn<NNEKr=%<<#|
CCMkjd

literal 0
HcmV?d00001

diff --git a/tests/integration/net/exit3/keys/secret_id_key b/tests/integration/net/exit3/keys/secret_id_key
new file mode 100644
index 00000000..b7e583ea
--- /dev/null
+++ b/tests/integration/net/exit3/keys/secret_id_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXAIBAAKBgQCskSKJ8IEBm3uhXifX8y6rak0vK53tT/CAU9FruMjBgd/aTS+m
+927TYngFTyWXYL3mo7xD5Cs8Gpsoe932iq/KAPp+/HCb71OHFwN5/hgtG/Yfpj/c
+xtlId4V+3KEnnr6opO6B3j7JNwTJJeRmpgeQyfS6Unh0vL+PycSgcPCsywIDAQAB
+AoGBAJwQAYFoLPNMLwmnwjbNaaaCU11Wf9OvmNwlcV6PVZeTIeQmK/M/EE5BXjPG
++UMmrXcZGtj3T5ZipXF+XCVsFT8IGjX2xVHCa6Uf4lL4jEJb4pVIMEQEEd989g3T
+RTS2ou9HRl9URrMUdakeysKqFu+tPh4f+Jjyi0bZ4HfkyxoxAkEA5GRnvu28R1ac
+J3KF+kE1MdJhHnqET4MQOyhW/485aa2/Ym6uFaQhiXatNwQUHsF+j+p+jYXEHy8S
+fBtqgPeyuQJBAMFtN5DgagsF8VN5SdXk+e1BC6yCJkUugpEyXHH4ArCmrtPXMxg2
+fBvMJzjGh6kgLvMAYkecrz7jkKLGiQxMaaMCQGx5v8iwM4eSfFJEE5w70l8ac+Q8
+/pChSFlAnKl+xh8KVecTeH1w2jjm8/g4aLH+5vTFxFvFV9QT0Gy/vMMKYokCQGAz
+hMZehv9ShlMg6NMkHhWdG0RCOux/lFrItGfOlO/tBti/mF77gkCFCiDXxNMd+ZvM
+XhUF3bcmkWIT4kemnYcCQD2TT1a9CA6yRK76+P6ODnqCG+d+swJrDMAXG6mfEmPn
+cBmcurapsowrmj8oKHdW8o45k9gKiWPIvG9Fmbwg1Fg=
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/exit3/keys/secret_onion_key b/tests/integration/net/exit3/keys/secret_onion_key
new file mode 100644
index 00000000..d64d5acd
--- /dev/null
+++ b/tests/integration/net/exit3/keys/secret_onion_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXgIBAAKBgQC7cz4JfpL3t7AQWDadHv25xsNBt9QCVMLNpTPdi4FMxd4ZIGac
+qZnjHVNEb89vNReK59Mufai4XnWMg+/pBMAhwNtQcn3dvVqbil+q/ixR2fhWmR4i
+Ams7VfubqHhMsgxGa+o0o608MhmrV+eHLBJlMC8OiGuRzHAXRmYt0Jy7CQIDAQAB
+AoGBAJbOFyniR/C9OgtcPMvZY/0y+GGFuC4L7REvCHQDSQnv4kfKtmLxW5nJPPVB
+EtyAFSmuakrr03JIpD9g4gFQzhS3JcbvCXa81Qg2PUFo30Cuqr5W+6nAYJB9Z6n1
+dYECnIXuAYzcmJSAKiYWRFcG/MqpHOxsAJ2P8xzO6BRyiZURAkEA8+Uj7WSxL2+R
+dEfJIFjbnBqbUUWQF9fjkHzsCqpsDMHAOywnFc1lOtmyOZ5+3OePKpmk8a1oXQt3
+6HrSjCKIVQJBAMTA7ezcW0uyWkRKO/tVdQm1IrxP33Oi99bHfturUwh1rljA1fHe
+aqc4aD8K31fB4373IRfvRDW2c5I8lJoIq+UCQB6TY2Wnce8YdYu2VCiR+zYev8n4
+ho/2qLi8cHsF0nXm9Ep2xo+dKEuwbv96Nz1KalBU4rDJpIPFpEqo2yxmR+ECQQDB
+NszvO34UGfN2+Idqy4MBo3WXA8Dlp/ZGXuZ/BgGmXxp1Yfk3ajnGOSh2MFEftvGX
+L0y6WmbbcG6R/xfXJAjZAkEAv/3H2vrkiE4jhDvj7p+A4ohL2vZ2gpwtkzUFmK6W
+Ha9KAR+ITrWi31ENnQ38Nc/dy4Piub23r0RS9AZnjjmRmQ==
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/exit3/keys/secret_onion_key_ntor b/tests/integration/net/exit3/keys/secret_onion_key_ntor
new file mode 100644
index 0000000000000000000000000000000000000000..8a5417ece4b598cbbe46e8871f918cfbcf53825c
GIT binary patch
literal 96
zcmcDuRY*26H8r#>Gqh63&&$luQ?RvVK!AwS`Px4l|FXW45PtWCUH^ctMD>g3?{4oE
uI3*@F#k)P}K(_lS0WP_j@$33eJU$-c5NL5ezTe>xU*Y~)C!ZahX9WQ5k|n$V

literal 0
HcmV?d00001

diff --git a/tests/integration/net/exit3/torrc b/tests/integration/net/exit3/torrc
new file mode 100644
index 00000000..542b4cc2
--- /dev/null
+++ b/tests/integration/net/exit3/torrc
@@ -0,0 +1,27 @@
+
+		DataDirectory exit3
+		PidFile exit3/tor.pid
+		Log notice file exit3/notice.log
+		ShutdownWaitLength 2
+		ExitRelay 1
+		IPv6Exit 1
+		ExitPolicy accept *:*
+		ExitPolicy reject *:*
+		Address 127.10.0.13
+		SocksPort 127.10.0.13:2000
+		ControlPort 127.10.0.13:2001
+		CookieAuthentication 1
+		ORPort 127.10.0.13:2002
+		DirPort 127.10.0.13:2003
+		Nickname exit3
+		ContactInfo pastly@torproject.org
+	
+DirAuthority auth1 orport=2002 no-v2 v3ident=D7DBC517EFD2BA1A5012CF1BD0BB38F17C8160BD 127.10.0.1:2003 AA45C13025C037F056E734169891878ED0880231
+DirAuthority auth2 orport=2002 no-v2 v3ident=4EE103A081F400E6622F5461D51782B876BB5C24 127.10.0.2:2003 E7B3C9A0040D628DAC88B0251AE6334D28E8F531
+DirAuthority auth3 orport=2002 no-v2 v3ident=8B85069C7FC0593801E6491A34100264FCE28980 127.10.0.3:2003 35E3B8BB71C81355649AEC5862ECB7ED7EFDBC5C
+
+		TestingTorNetwork 1
+		NumCPUs 1
+		LogTimeGranularity 1
+		SafeLogging 0
+	
diff --git a/tests/integration/net/relay1/fingerprint b/tests/integration/net/relay1/fingerprint
new file mode 100644
index 00000000..01a92666
--- /dev/null
+++ b/tests/integration/net/relay1/fingerprint
@@ -0,0 +1 @@
+relay1 2ABFBACE61167A1019A56CB35B2E3362B97D8570
diff --git a/tests/integration/net/relay1/keys/ed25519_master_id_public_key b/tests/integration/net/relay1/keys/ed25519_master_id_public_key
new file mode 100644
index 0000000000000000000000000000000000000000..ae389f0a6761e83cd02ad96c54d60af4466c3710
GIT binary patch
literal 64
zcmcDuRY*-SGBq`{EHl(CC{4=AOtw-esVqn}P_VUSU|=}&Ec~}l^Bd>V=x=6+INt4f
U_EO~WH0?(>6*Ik}9ry|w0p5%mr2qf`

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay1/keys/ed25519_master_id_secret_key b/tests/integration/net/relay1/keys/ed25519_master_id_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..4aa803943ac422c1825cc05e1b5fc74975855c5c
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PFd#iW0000eNAj041W)`IuCRO$
zh5l;Y4lbALN-}(UaMe*e!7NCH*^Yr-hJo1pkfW7ibW7{W!^w=JTrSa|9a5*be6M@C
CN-2*3

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay1/keys/ed25519_signing_cert b/tests/integration/net/relay1/keys/ed25519_signing_cert
new file mode 100644
index 0000000000000000000000000000000000000000..1c4b1d3f029e0669abea93871589df78235df436
GIT binary patch
literal 172
zcmV;d08{@xJs@RdGBq_ZId(BEV`Xx5Iv{j;aAh<gJv{&b000011ONtnr~$Ynp()l@
zdGGsnP9TtK;Icmj^Yi;IqlC55ojBj5hmZjPAOrx+=2!bHgX}|fTlO}>2=2V*=@jFZ
zE8^K9X-Zo_4se0j!otL#9oXN9)nc{-Itxx*fL3%P4@cvtYQQidg;kjI*$L%>FY5EL
ajfz10*$1>oBTKYJVs=VoK#$S2+RO%K!%T?)

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay1/keys/ed25519_signing_secret_key b/tests/integration/net/relay1/keys/ed25519_signing_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..6c9d0b9b221ac21e12415106e365f7f126244b48
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PG$1`a0002^I+APmuak))eSzHv
z|0);hB(Vrt?1`!=yizZ6feJ`Im(mPLykA%AIH^rAm4V}Zp(hba#<|QwGpqun=Sfqp
CP$sbe

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay1/keys/secret_id_key b/tests/integration/net/relay1/keys/secret_id_key
new file mode 100644
index 00000000..f8f6cffc
--- /dev/null
+++ b/tests/integration/net/relay1/keys/secret_id_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXgIBAAKBgQDS3gAMLc0Qf2ICiU8e8jcZORk6Erv5rK8J0HpoGwZd7DsPYv6O
+M1G8MVuwHQ8wiFz2ntk6n59YuH262xeMYgLmr0oBvpp2VrSgvRHhyecGR2Og9031
+5YlP2xkb9kFVTbV6395abIl+LGN8F3u7egeQtbUwB5TnXN9Xcm+rk4e4VwIDAQAB
+AoGAI8NJCMe/zrt7+Ogmxh3YYGvBroq83MR/z09PY1aqBsXo4lwsxhtIEn3gigbz
+q4yFD8KzHvExik+H62f7H3EEAqLN84wvCjy4vxl1/0ilgo5MYUkAemnhNtVuUHyu
+YniSVHCR2To2xYhhg8dg5EGfCik5p7Lin868kEj0mCjj6DECQQD7EDvsnM/WVzzA
+YiI+eZVv9X2JS4p9Kr2QOQKPvT7kbaA/2ScxOPeWw/4bTxrifRjOzmabDCqrzwgy
+RxLznlx5AkEA1wNuqhAcwL1MuFNTsbv/gXn8hR2uB+Wu88+t6RZEi5RvWDkeaM16
+1ax6fJXA5Nov2hmY1k/4bZ4d4Zebg/jnTwJBALRfWW4IyxkG29KrrkaMO1yQVnyJ
+FRoP1tkC3GBAairax8KXVJz8fISIkssz7fDCR0xs5TKHbzC4MP9OKMN2BqECQQCm
+Lpvwy0U93tGWQakVXQWNMBhxVlA1AFvpS2HSHojaDN7GJFeRjwdacNW2xxPwjYag
+nloXgnWzW5siykfDh7RXAkEA3D0LTZ6YHAQIuWayxvjoj+f3am5GduHPUu3RJfpY
+faEgP/WrvaRT0pw6rJmcumsG4h0Cp0W48FQFMQ8JSB+c0g==
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/relay1/keys/secret_onion_key b/tests/integration/net/relay1/keys/secret_onion_key
new file mode 100644
index 00000000..10a1ab26
--- /dev/null
+++ b/tests/integration/net/relay1/keys/secret_onion_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXAIBAAKBgQC+l6cIfMBVPArIvlMSwV/9i4ZcsjCbegOysvQ4b9eXenwwluE0
+zgkqp4RyPjAZwcGIPzLduWzygFZVwchupF9Yzmg+67DyVs2rNHba7/dALC52+p9r
+n+Xi/ge1gxDQr8biucE+fccRfwWX24nQGAOTqqF5tuj09ohH/KGNajvvKwIDAQAB
+AoGBAKKygLMdE25vT+FnnzDOhGvDFFLDBf1jHg8I9rPKvaagt60ez2atT2PrFoQT
+lCoYnWX6VSizZk5owcp5HulcRcrmp9YXRPpEIBepJWPOFLd1/TwjmqlhHnTOtDTi
+cbep2HpT8k09Sm4xII7BoML1gktBc5oqDo59P6RsWxzB14uhAkEA6vvBHaAH6HBK
+BZU08jsywMYqCKXZSRGiAMdYumPLqvalNB9WXwubkG3ICo7iBMVTKjPiCk+aeXYP
+jOO/HbExkQJBAM+jgkebWm99IgecUsohJ6scOH8D0Ahjr76BnMZy/xTNEq9SH+lc
+NxfHCADUCC34UIvIF55a/9vVVtyfgOpv9vsCQA5RInYEnxa5aLkoWx57Ht+B82Ot
+fyylh2JWwwAwPmN/PZeMZT3LPkIxfiOuivTRdPy4RohsSzQlTlM+ORG9DxECQAgE
+BemBw9H+AKxOipunAAMJCd1NZmCMiKJQGp9GnTZOXGRMRVMa7j2Kv3JYvSAZL/LV
+fKPuW2Y/LCVEOxPR0rUCQEXgCY7yWfkwmC10zoe0IWHiV9jOSEGdFEWUElo1zHUH
+qWpoxcdU01k4+sYNDTNE87pnxvbFxBluLGyNQozf0vs=
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/relay1/keys/secret_onion_key_ntor b/tests/integration/net/relay1/keys/secret_onion_key_ntor
new file mode 100644
index 0000000000000000000000000000000000000000..7532786eb7831b3e63c2cc9eb9e1e5711bcb9716
GIT binary patch
literal 96
zcmcDuRY*26H8r#>Gqh63&&$luQ?RvVKmdWe0s5|N#zj?9X;J5=+|d+XvUBz<p;w33
t-;4Tur*d<~JlSULudbaR%lSU$^;dT8*_u<`+Ft41(Xq7p&(`vEX#mjMCL90&

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay1/torrc b/tests/integration/net/relay1/torrc
new file mode 100644
index 00000000..168a0669
--- /dev/null
+++ b/tests/integration/net/relay1/torrc
@@ -0,0 +1,24 @@
+
+		DataDirectory relay1
+		PidFile relay1/tor.pid
+		Log notice file relay1/notice.log
+		ShutdownWaitLength 2
+		ExitRelay 0
+		Address 127.10.0.4
+		SocksPort 127.10.0.4:2000
+		ControlPort 127.10.0.4:2001
+		CookieAuthentication 1
+		ORPort 127.10.0.4:2002
+		DirPort 127.10.0.4:2003
+		Nickname relay1
+		ContactInfo pastly@torproject.org
+	
+DirAuthority auth1 orport=2002 no-v2 v3ident=D7DBC517EFD2BA1A5012CF1BD0BB38F17C8160BD 127.10.0.1:2003 AA45C13025C037F056E734169891878ED0880231
+DirAuthority auth2 orport=2002 no-v2 v3ident=4EE103A081F400E6622F5461D51782B876BB5C24 127.10.0.2:2003 E7B3C9A0040D628DAC88B0251AE6334D28E8F531
+DirAuthority auth3 orport=2002 no-v2 v3ident=8B85069C7FC0593801E6491A34100264FCE28980 127.10.0.3:2003 35E3B8BB71C81355649AEC5862ECB7ED7EFDBC5C
+
+		TestingTorNetwork 1
+		NumCPUs 1
+		LogTimeGranularity 1
+		SafeLogging 0
+	
diff --git a/tests/integration/net/relay1mbyteMAB/fingerprint b/tests/integration/net/relay1mbyteMAB/fingerprint
new file mode 100644
index 00000000..dbc1462b
--- /dev/null
+++ b/tests/integration/net/relay1mbyteMAB/fingerprint
@@ -0,0 +1 @@
+relay1mbyteMAB 117A456C911114076BEB4E757AC48B16CC0CCC5F
diff --git a/tests/integration/net/relay1mbyteMAB/keys/ed25519_master_id_public_key b/tests/integration/net/relay1mbyteMAB/keys/ed25519_master_id_public_key
new file mode 100644
index 0000000000000000000000000000000000000000..204fb629636b729ac7793ce2ee426c9c2b63d0e4
GIT binary patch
literal 64
zcmV-G0Kfk|Js@RdGBq_ZId(BEaCKsAX=6Gdba`-PFd#iW0002l_2L(V{r7mjy<8b&
WL^yqip7`GmP8`A+=A6EDS~a@fY#H<b

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay1mbyteMAB/keys/ed25519_master_id_secret_key b/tests/integration/net/relay1mbyteMAB/keys/ed25519_master_id_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..9054bb45b6b54385459987b5fdacbbe7eea69236
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PFd#iW0000em+=odkuMBYYT7pA
zNL4|=?&9v-hs`qt-OL8u%y>)RXrhm^cqPYWx@9jo#-4!Ym`$6+-x|UG{0)ZHn11N&
C=_{T9

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay1mbyteMAB/keys/ed25519_signing_cert b/tests/integration/net/relay1mbyteMAB/keys/ed25519_signing_cert
new file mode 100644
index 0000000000000000000000000000000000000000..768021c7010722c8c4a011a5112fd45d8b2fce54
GIT binary patch
literal 172
zcmV;d08{@xJs@RdGBq_ZId(BEV`Xx5Iv{j;aAh<gJv{&b000011ONtpFaft(HueT|
zUgbsgztIGPt&lgt!%h<+rwvNOb`dh9-pBy}AOrx}_2L(V{r7mjy<8b&L^yqip7`Gm
zP8`A+=A6EDS~a>8(s~CBb**~phJzZ%3`{Wy#V2CtBgZ6F8@DJuF~B~KpYL*ZGW-fK
aTFV-Z&~YT1(t8WzrliXD1~)7HO3ndh<3;)a

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay1mbyteMAB/keys/ed25519_signing_secret_key b/tests/integration/net/relay1mbyteMAB/keys/ed25519_signing_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..0c23b54392dabcdd15bb548560dfa1d98dbcdc59
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PG$1`a00013_*DNH*yM-^OmPQp
z%xM!*MtcFCn}dDUi(Zf^ut9yK_}YJw;JgN77t0yr0~~8N%H$Fc-X$a-`|`@Lx0UXu
CJSai{

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay1mbyteMAB/keys/secret_id_key b/tests/integration/net/relay1mbyteMAB/keys/secret_id_key
new file mode 100644
index 00000000..41b43acc
--- /dev/null
+++ b/tests/integration/net/relay1mbyteMAB/keys/secret_id_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQC7CSfsxnVxSgYTlL9ItQvjEnwehGUVu8zr8TZ3T6DV+UJedFCP
+LWhfqJvo3ourzskXrPYUWSt7U4k/fC0113+t+QHe4lmRlvxfqMC0WxHuXbXI2fgF
+X5YByYH9GmEnSDuqpxjpmYc/LJp2NVHB/w8KwaOkYCJdFLjGzPKCcgLj8QIDAQAB
+AoGBAKS3J4YKMRuYSUmtUdhCOTm86bomdq9xOMMBJypj4g0O+zgbz2aIYsb7wnKO
+qwqfjdFf7Ud2UCjIJLLYNSiZpEKbFSUl1eA0VqlGSa1RmiB8CytS2tMW9yFph58k
+YcMoRu/a5uYJL0viKYI7kHjctKgN7708TfDsVQW8Q6htRCaRAkEA8dMa6X2/8sOS
+Gke23dMiRfL/v6TSkeaUgWNL+6pgLinDbNkooMMxE0Li/vpkwHrse8+JVVHh36RC
+LSOl+twxOwJBAMX/30ykFQQWUrBLKgrvjU/TyQXb3+MN+PrLo2xQTT2LdBLQYf+J
+kpKIJqli7h7rh6qxZ+aNpDwP171y5q5F7MMCQQCOHNOp9/5/ujL4QsDSp6tylBV8
+GG6u02TejO4wXbXcKyrvosbfgxYqDZq84YWoIBUtxY8dlts4xJ0nTdXTEOfVAkBJ
+nT46Um713A7WOLvi4PmbClSc9wigdFtzcy7JYHm3PhfjvtIQned+z1wAciWyHUON
+dPP6RgMfyYwehY+6j4jdAkAAgGtpdYmYybJKRj9JO2JKHHV8fPKZwDVtU4nR5yw7
+il8Ir9dtwMWy+Mevk8aH8OZzeHrvzCCnvdAvCxgRfRfO
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/relay1mbyteMAB/keys/secret_onion_key b/tests/integration/net/relay1mbyteMAB/keys/secret_onion_key
new file mode 100644
index 00000000..c41070d0
--- /dev/null
+++ b/tests/integration/net/relay1mbyteMAB/keys/secret_onion_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXgIBAAKBgQDBs+qzCuXuOvN4dddarTnh1+NIpEpeSWqpSmU0V7e/dCgJ03TS
+GWuUY+rEFOnzOrfvYy0ow7+eS2vCmvDLmLSp8zhJxaxGOitGn1iYtUgh9VLHWu1v
+a/dWvTqkmV3OxgSmKdAGuWEfXbuL57/uGRxWOQxtHcSkySbFCTbqJXYzEwIDAQAB
+AoGAGgn/oPX0FuRh2m2s94mV4GBPM3KydJ5V8lAH7tNj5h7NSxTb/WphZd9Qre9J
+y+K22z1v0q0N00+8OrrtZ9EtZ/cFpCtRtHzaCnXKmsZ+HhOCREF1VbjNt6VOrRfZ
+EEcJcIiXw0fXqU5/cQDN1tPZtOgBiDfFPVCsT6LlByJOPBECQQD4/xdtVK3FgRPd
+GTAwraxwzY0aayCAjCUS4aCTCfv+fzjvH9pGZ7kwROGAgxPHvXs+qzP6O71d6zdM
+WueOhQDNAkEAxyauZPT6ifpcJF/SBjvUfVy6Sf5oxvA1PSOJnh8M80pkvk/SQ9Cg
+Z6x+zy6u6hVRIsHr3XaCAmcSya8HFXqDXwJBAIMJ7JBTMihw571CFkRoAgpTguDW
+ZAKCvrgTGeiIJqAm4BWoU70dtS4b8fkqAmzp4UR34SDd86jLswxyAs7UXDkCQQCu
+b9c5XstEqCKlSbjw9N7+n4Yc4dZsymIXl1UnRxNU1si/WbNW6xpVNOYuGznil6Fl
+zG4IoZDnAdmXBtQxoAoJAkEAoNdrVYjgScUvlcsGtDVQG2q3OY5wt//XbPSUvC5x
+LJWz91UWR2JWmKX29hLeHRwltdY8MknyRy7qIVfaaGU2vw==
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/relay1mbyteMAB/keys/secret_onion_key_ntor b/tests/integration/net/relay1mbyteMAB/keys/secret_onion_key_ntor
new file mode 100644
index 0000000000000000000000000000000000000000..2d321e57523faaca3738813c43a5c7151e24fb0b
GIT binary patch
literal 96
zcmcDuRY*26H8r#>Gqh63&&$luQ?RvVK!5|Y1U0G*-cG&zPssfCa*0Xn57k_qx+zH_
u>%=Tg=Jro@a`V4w@-L~s$12r0Cy3$mOa5a;z2#p&{&{-LqeOvsb_4(kStdgO

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay1mbyteMAB/torrc b/tests/integration/net/relay1mbyteMAB/torrc
new file mode 100644
index 00000000..9ce35dd7
--- /dev/null
+++ b/tests/integration/net/relay1mbyteMAB/torrc
@@ -0,0 +1,25 @@
+
+		DataDirectory relay1mbyteMAB
+		PidFile relay1mbyteMAB/tor.pid
+		Log notice file relay1mbyteMAB/notice.log
+		ShutdownWaitLength 2
+		ExitRelay 0
+		Address 127.10.0.14
+		SocksPort 127.10.0.14:2000
+		ControlPort 127.10.0.14:2001
+		CookieAuthentication 1
+		ORPort 127.10.0.14:2002
+		DirPort 127.10.0.14:2003
+		Nickname relay1mbyteMAB
+		ContactInfo pastly@torproject.org
+	
+DirAuthority auth1 orport=2002 no-v2 v3ident=D7DBC517EFD2BA1A5012CF1BD0BB38F17C8160BD 127.10.0.1:2003 AA45C13025C037F056E734169891878ED0880231
+DirAuthority auth2 orport=2002 no-v2 v3ident=4EE103A081F400E6622F5461D51782B876BB5C24 127.10.0.2:2003 E7B3C9A0040D628DAC88B0251AE6334D28E8F531
+DirAuthority auth3 orport=2002 no-v2 v3ident=8B85069C7FC0593801E6491A34100264FCE28980 127.10.0.3:2003 35E3B8BB71C81355649AEC5862ECB7ED7EFDBC5C
+
+		TestingTorNetwork 1
+		NumCPUs 1
+		LogTimeGranularity 1
+		SafeLogging 0
+	
+MaxAdvertisedBandwidth 1 MByte
diff --git a/tests/integration/net/relay1mbyteRBR/fingerprint b/tests/integration/net/relay1mbyteRBR/fingerprint
new file mode 100644
index 00000000..fd43f33f
--- /dev/null
+++ b/tests/integration/net/relay1mbyteRBR/fingerprint
@@ -0,0 +1 @@
+relay1mbyteRBR 934E06F38A391CB71DF83ECDE05DFF5CDE3AC49D
diff --git a/tests/integration/net/relay1mbyteRBR/keys/ed25519_master_id_public_key b/tests/integration/net/relay1mbyteRBR/keys/ed25519_master_id_public_key
new file mode 100644
index 0000000000000000000000000000000000000000..689bdb0e530327a6d6001b4c6d52f308ae744d76
GIT binary patch
literal 64
zcmcDuRY*-SGBq`{EHl(CC{4=AOtw-esVqn}P_VUSU|^_}WuMzwyyPL<Vd>W1nQW@_
UR_;!pdQESB`OQS}Rz9OD0F|N^zyJUM

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay1mbyteRBR/keys/ed25519_master_id_secret_key b/tests/integration/net/relay1mbyteRBR/keys/ed25519_master_id_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..1235af2faeec829c82066e908818faf9f09eefe3
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PFd#iW0000e4$jM&{7ipd&$d6D
zsi0~Je=_G2TeI=aP@s5*xOQ#4)sa4nj-g~$$i7Tv+_GWRKg8C+rJ6qx*FCOqf{8H`
C87j8`

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay1mbyteRBR/keys/ed25519_signing_cert b/tests/integration/net/relay1mbyteRBR/keys/ed25519_signing_cert
new file mode 100644
index 0000000000000000000000000000000000000000..3dae7a8fbd372dd431d24d04c80d5c1627d32e09
GIT binary patch
literal 172
zcmV;d08{@xJs@RdGBq_ZId(BEV`Xx5Iv{j;aAh<gJv{&b000011ONtpV*xi*(vS6K
zMUNLa=7Yig6Z1>(eb=oJ)AQ=T^2)<NMj-(JAOrw;9S5C>bEM%0!yAQ-nFb}Esk>*D
z)-IoS*<lxj4l;TwLqYAa5;diXl2KkmIERJ>9bbX1!0Q+^WS;fwUShr(`+;u3w2$d@
a5|D){b_HCc>XhX+F;A07&sP~h1YipJltvr?

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay1mbyteRBR/keys/ed25519_signing_secret_key b/tests/integration/net/relay1mbyteRBR/keys/ed25519_signing_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..7f61973387d6f204f212f13bad0ad666b9396a2d
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PG$1`a0002!VY!aylshg<17X9C
zD0mnY@P^8`3Xg1B0S|xv-<4H3@+GVLtm7h<`lna;^dI(X^WDth(p7_K*@GKq^Bd{w
C1S_5Z

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay1mbyteRBR/keys/secret_id_key b/tests/integration/net/relay1mbyteRBR/keys/secret_id_key
new file mode 100644
index 00000000..8f3fb363
--- /dev/null
+++ b/tests/integration/net/relay1mbyteRBR/keys/secret_id_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICWwIBAAKBgQCk3FyIv7JJ33Il3PJmnEu1h5k+7LnF79Bw1isjJln1zRtKMDFt
+09NzAiM0gGaMwOhqIgi9/MlSUFIEfWi/6SFfidbDtWb5ltEYZZQJ55FTElItLPyP
+z7DJpU6TTGB/jbeGt3nMQcxAUWJkBfA31N/azi39D+2tfKaeiIWxc9IUewIDAQAB
+AoGATMd8KQvuQs1X4h5mnjdIY0DFtDKXyoGHuCVmbbZcy0c84G5VduriXXuvXbI3
+EHJ/S36SR7lFIZrat9CYSliO+6pZsDV89VukFdO7wh/+Ox0Hz4Pu+ZvbOzvXX1PY
+VCNVy8uQaXzXmi0qJ6ga/rJf8ZbwlTY2BpFQWKtDQZdxB7ECQQDRFzzb6akAxC1N
+b8JPrSS1Z5yomdNk0TN0dVNfUqptbHne/SEIndMgQN2YaucNDHxtXsEOPtwOhKCT
+RTvtP8flAkEAydjaHBenCdFjmxsfL1kO+8hSljaSY8D69vh1MUesEHVUdmt7jkEB
+I5uSUacCZbRegURr+c4dAZNSlw/fRJ/k3wJANV2/+8UUjIyFn4kRyDJB90b9tg6k
+5Mt8XZIAeIjp1MnmBSMIRmG53DaSGG/Yjv0L2QJhNdiXY+E39r6p//DSfQJAQfo+
+IRyiHxVwh4yv/twPh8GNLUidRToZTo0cUYVp+t8/Qo4TjwY0hx0dEM+UewYgNgTV
+fowe8xrizjoD8vyI5QJAGvWUZ7KdNjoogB7ZRV5S7BaKwOK4DxrQRkonqqhCzmgd
+5Fi6B/I6oTCb4t7dEyGAf1808MveFlPDILy9oo8XIA==
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/relay1mbyteRBR/keys/secret_onion_key b/tests/integration/net/relay1mbyteRBR/keys/secret_onion_key
new file mode 100644
index 00000000..bb1d9267
--- /dev/null
+++ b/tests/integration/net/relay1mbyteRBR/keys/secret_onion_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQCmT+ACA5QDRPqy/1O/h/dEDbQPGrZO7NADg66Nv3SoQg9fJcM/
+WTdqCgZEKrop/YJS2qv+3DTMca7ceAyADZUnyHh6G4rBSIeHjpn/3OWvrNYuch7U
+wWm+ZP2EH9465uEBMIU5xFKbV3DTwXYb+ckF7aYp/kR7YUnOFduE2s95PwIDAQAB
+AoGAJi/g95VqvvVvuvn1eNz3YaDj3zP6+FRXzvbFdbaoSpogfXBmTH1nw+lZVv2Y
+kVusOOoM5BAb73WK+QR3mk+EF6d4XAuAR0BBfs6oDySHoIkGGUvt/78/y4PjQJiq
+QlbXyuM/IeIcoueGXzjrFbJS6giUoRuSfMuZu/+44JHuVMECQQDbdwc/zfkkV9To
+wqTEemCEzU6SbxWjVOcmzFBVhu7J/LlMtrFJ4U6Q+POOGkEaMcRawtoc4+wSPpUf
+j+WOmQDrAkEAwf+enb1HhRNE80zYf9/b3tZXvc9lEUvG/BHS0nVS5iTl2QVLE7bC
+s4dpiQ+p7Bn41o0iJejJl1Y4HufbipBz/QJAMYYxr5dGYoojdIb/8YqAH1fJJEhH
+BL2TD/FJK5OwbQpHsmUDqt1aAmL7axTHniae3bBc0eopCpDuy9mH/t7OEwJBALcU
+3wNscweSpNqb5iHgCOcnD40RIgeNpQ+UXorBsGeD4OrLxQuoydyV6bIw9yLba+xH
+Kzftlfpdov7/vz/ojZ0CQQDTzLKgAQ7C8HaLNPuX+w8SVlu7+Hf/rdlaTmppAAFa
+CbZIc6BnSeDJeoI5aPyy3w/2ZwFMYbVDnCSbgO3jO33N
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/relay1mbyteRBR/keys/secret_onion_key_ntor b/tests/integration/net/relay1mbyteRBR/keys/secret_onion_key_ntor
new file mode 100644
index 0000000000000000000000000000000000000000..3b8b3d19aaee6f6d4375f1ae8fcf94f49a4203ed
GIT binary patch
literal 96
zcmcDuRY*26H8r#>Gqh63&&$luQ?RvVK!6iTk`||U`#;ZARF(O5QR)9#c3BtM<uaZX
tD_N&hojMqz*PEtU;W;&Ys>hDYAtEQ_PUSLIXz(k1^O_s&%R28V8vt%lAh7@d

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay1mbyteRBR/torrc b/tests/integration/net/relay1mbyteRBR/torrc
new file mode 100644
index 00000000..32bc762b
--- /dev/null
+++ b/tests/integration/net/relay1mbyteRBR/torrc
@@ -0,0 +1,25 @@
+
+		DataDirectory relay1mbyteRBR
+		PidFile relay1mbyteRBR/tor.pid
+		Log notice file relay1mbyteRBR/notice.log
+		ShutdownWaitLength 2
+		ExitRelay 0
+		Address 127.10.0.15
+		SocksPort 127.10.0.15:2000
+		ControlPort 127.10.0.15:2001
+		CookieAuthentication 1
+		ORPort 127.10.0.15:2002
+		DirPort 127.10.0.15:2003
+		Nickname relay1mbyteRBR
+		ContactInfo pastly@torproject.org
+	
+DirAuthority auth1 orport=2002 no-v2 v3ident=D7DBC517EFD2BA1A5012CF1BD0BB38F17C8160BD 127.10.0.1:2003 AA45C13025C037F056E734169891878ED0880231
+DirAuthority auth2 orport=2002 no-v2 v3ident=4EE103A081F400E6622F5461D51782B876BB5C24 127.10.0.2:2003 E7B3C9A0040D628DAC88B0251AE6334D28E8F531
+DirAuthority auth3 orport=2002 no-v2 v3ident=8B85069C7FC0593801E6491A34100264FCE28980 127.10.0.3:2003 35E3B8BB71C81355649AEC5862ECB7ED7EFDBC5C
+
+		TestingTorNetwork 1
+		NumCPUs 1
+		LogTimeGranularity 1
+		SafeLogging 0
+	
+RelayBandwidthRate 1 MByte
diff --git a/tests/integration/net/relay2/fingerprint b/tests/integration/net/relay2/fingerprint
new file mode 100644
index 00000000..f7999268
--- /dev/null
+++ b/tests/integration/net/relay2/fingerprint
@@ -0,0 +1 @@
+relay2 8E687E91DCAB967F6E4EE8E46E66F6AD05C7C625
diff --git a/tests/integration/net/relay2/keys/ed25519_master_id_public_key b/tests/integration/net/relay2/keys/ed25519_master_id_public_key
new file mode 100644
index 0000000000000000000000000000000000000000..0932a166b252e0d8c80ff7b3ae65363511e934d9
GIT binary patch
literal 64
zcmV-G0Kfk|Js@RdGBq_ZId(BEaCKsAX=6Gdba`-PFd#iW0000#DX!I>US$=akWMzo
WFv4I`)hOFo?~TSOobBj|v^h+vCm8Sm

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay2/keys/ed25519_master_id_secret_key b/tests/integration/net/relay2/keys/ed25519_master_id_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..2de3459100e24fd33c379e50c6864e9bd15f9626
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PFd#iW0000u1tBW<?uHuhyjDV(
zni>0iBO&3(_xOxkmqW}y!ESQqDqV4kpWANhmd2<H&96bGb>4k5l;yi4A)12@kKWhu
C7b=|q

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay2/keys/ed25519_signing_cert b/tests/integration/net/relay2/keys/ed25519_signing_cert
new file mode 100644
index 0000000000000000000000000000000000000000..fac1d53699c372cabae4e96a195a3cfa765ddf7a
GIT binary patch
literal 172
zcmV;d08{@xJs@RdGBq_ZId(BEV`Xx5Iv{j;aAh<gJv{&b000011ONtnr~xI+&Z8_h
zSRIDOM9_RPGko4<ZW=P{(}`|{+yQf$%q0N;AOrwEDX!I>US$=akWMzoFv4I`)hOFo
z?~TSOobBj|v^h-Uyj?ZQjS|~nxtlHzBPgd-xe!>`tat}|fGN2rtw}UGt49(a1cDkg
aY5+o}hwbPsL&n>X-E#>H^^HYGk~9hVVM9Ow

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay2/keys/ed25519_signing_secret_key b/tests/integration/net/relay2/keys/ed25519_signing_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..1b1533086c2397b402fc2849cd74c21f0f820546
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PG$1`a0001peB+b-QR6R%RK|es
zvs3XvKHHNP$`b{rOFu@UAKyqxE(2o9wixSv&)=6s{aS7J^4bFtd?c@brS7;r&KF4f
Ct|?Xk

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay2/keys/secret_id_key b/tests/integration/net/relay2/keys/secret_id_key
new file mode 100644
index 00000000..fba3d495
--- /dev/null
+++ b/tests/integration/net/relay2/keys/secret_id_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXAIBAAKBgQDxUgdr63thXzLDAycLvU4Ly4CAOH9r13DlTaWH3ggHFGkBD85K
+kFYlhWnuq29aq6U+Yk4A5mw9KmW0ekE2pEACUsvcHXTS5EDqEkDXc1l6QX0l69RM
+YfkfVwKy6WLxr7Y0RPNqckpwP8e+g2mgsYs+bYmUjsvcIVsV9AjMCNU9cQIDAQAB
+AoGAOIHOvxSK9YgHKObqE7OmPNjQJDYWkDgIdYkzA5eYJaA/3kHHOmqF4Y9V+M8n
+6gFbVjpKradHHSN6YUJnVtYrLmuvlDg22zwJYJK7seZIjn/kF2QSMX6zuVj3m4iK
+WvAlbVUGwmv1WGMzZjps3rLuQbF7p81MGMwGEJ8bgy00s6kCQQD7mZ9Jeoayhwz3
+P14IJ/0PPaxUbzoKKBysvJ1NUerVznAjcQXpjRDdiDDfTioYpkG79Ad6kXfnSqHD
+de9upU7LAkEA9Ypi3bxAEXyH7Q81qEZUDSM6VL2xaAtUU/qsi3QGk29ddo1P1i5N
+l4AWmiWFNsF6R3cJAmnd1ezgmjN4VQ9BMwJAE0G2x1DxbkiX3XSkJcupurjlr7Cz
+qINZbn8hKwHSD3s1agEEitOZLtt1oiHBZxGShmgvClqH6tPzfZpRMQ7F8QJAHqHV
+E7SYiZXvnzN2jje35Kuwa0H/D+vZ6WAshnlDGMGb915Jx36fT3c7Wp+zrtEUYDYJ
+ebObaUTUAGjLalEs4QJBAMah3/xBAplHAbVQnXXQHpn+0qsY0ktLyOjRIft8jfrY
+/qPQm5C6A5S+KIjmv2AGp0TD6Fas0Bx8MONCv5oVRSE=
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/relay2/keys/secret_onion_key b/tests/integration/net/relay2/keys/secret_onion_key
new file mode 100644
index 00000000..ab4954d2
--- /dev/null
+++ b/tests/integration/net/relay2/keys/secret_onion_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXgIBAAKBgQD6gT1tnd4Sei+DNvTlGy+oH9CQMnKCNvTm2ebPjN3FgOta8bTD
+nvw+OPDfyzZbTyx309fRabg1GgrtSNq748sB2JotNRXq5yZpASrEq90gayGtPinY
+unyypb7LzUenXH75tpypbdTrJi4+vkvn8sP1bbMG/lEPlEOE/UjRFWXNsQIDAQAB
+AoGAfVai/LDLh2U5Vqbtu6BxpOZePXfwUXTb7pHCacCqygJqQDPF5UcsIJnu85rC
+1Mb1kfMd/fqun2srYnRcdTxRutpR+21v+RKTF+GGo0rgQ3Ub6FU6CWg4cgC26iDR
+r63QKLpwqYEkhurWFBtKOZfrIdzcsXrQ/08D2Wp/hcGM0+0CQQD+In/pTZTu2/Jk
+pRXOkD2G02goqtoTw80UaVpnyN/NUWZklJAwbQ/Hg1CHRSv7JHwCB0cQCdtWZZxa
+fWEvjLkLAkEA/FfrgcPVwjvYU7m54Es8hXSVUM+Y5n27wIcgyINbvY2Q/UCNNPVP
+1QOsYh5T9gZPYTyDPCpBMYPP9oiDajIhswJBAJPdlvc0QNfJ+fs9YrbRjjsIfq5K
+2qBtaMHbmtKQOkfIeP9EwbCrhGbdrNlIEhMKY2z6twpJ8ekPLi4ojYeRJYkCQQCk
+SuXVZdiNjoMo99oSM0njJeV1aMQHBUOxdQkeI5AeWMZWbKnDGhhw+uRIObC2lKMo
+Dsru6B/sCgLjYzwUbzFLAkEA2k3qUR7Tz3puN+pOKGBW9M+wn2m+HnOxiZohbyyj
+5T9GeTo0Sb6gK5FBrWA109yhKJwC7LCm0pZbyE1NUCVahQ==
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/relay2/keys/secret_onion_key_ntor b/tests/integration/net/relay2/keys/secret_onion_key_ntor
new file mode 100644
index 0000000000000000000000000000000000000000..5a6c64d3a87cf07d8974e9812a3ae043c85ab4f0
GIT binary patch
literal 96
zcmcDuRY*26H8r#>Gqh63&&$luQ?RvVK!6*ZY44@jPR|d0qqN=g;zPM*d){~6Y~W7~
ux~}yhe)gl}hX(Iz?kxSVbyJ#&rlD{Zmvr*n;*!n&9xryzI@GpKAPWF7V<xiz

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay2/torrc b/tests/integration/net/relay2/torrc
new file mode 100644
index 00000000..9ed9774e
--- /dev/null
+++ b/tests/integration/net/relay2/torrc
@@ -0,0 +1,24 @@
+
+		DataDirectory relay2
+		PidFile relay2/tor.pid
+		Log notice file relay2/notice.log
+		ShutdownWaitLength 2
+		ExitRelay 0
+		Address 127.10.0.5
+		SocksPort 127.10.0.5:2000
+		ControlPort 127.10.0.5:2001
+		CookieAuthentication 1
+		ORPort 127.10.0.5:2002
+		DirPort 127.10.0.5:2003
+		Nickname relay2
+		ContactInfo pastly@torproject.org
+	
+DirAuthority auth1 orport=2002 no-v2 v3ident=D7DBC517EFD2BA1A5012CF1BD0BB38F17C8160BD 127.10.0.1:2003 AA45C13025C037F056E734169891878ED0880231
+DirAuthority auth2 orport=2002 no-v2 v3ident=4EE103A081F400E6622F5461D51782B876BB5C24 127.10.0.2:2003 E7B3C9A0040D628DAC88B0251AE6334D28E8F531
+DirAuthority auth3 orport=2002 no-v2 v3ident=8B85069C7FC0593801E6491A34100264FCE28980 127.10.0.3:2003 35E3B8BB71C81355649AEC5862ECB7ED7EFDBC5C
+
+		TestingTorNetwork 1
+		NumCPUs 1
+		LogTimeGranularity 1
+		SafeLogging 0
+	
diff --git a/tests/integration/net/relay3/fingerprint b/tests/integration/net/relay3/fingerprint
new file mode 100644
index 00000000..5de40605
--- /dev/null
+++ b/tests/integration/net/relay3/fingerprint
@@ -0,0 +1 @@
+relay3 693F73187624BE760AAD2A12C5ED89DB1DE044F5
diff --git a/tests/integration/net/relay3/keys/ed25519_master_id_public_key b/tests/integration/net/relay3/keys/ed25519_master_id_public_key
new file mode 100644
index 0000000000000000000000000000000000000000..b5323a83980a73f94f81ba8ca4fad8ac5289494d
GIT binary patch
literal 64
zcmV-G0Kfk|Js@RdGBq_ZId(BEaCKsAX=6Gdba`-PFd#iW0002|`qOTgr`#IKHVBPI
W5E}P#P_}y0+_G2PrnUMz+gd)@{u+}2

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay3/keys/ed25519_master_id_secret_key b/tests/integration/net/relay3/keys/ed25519_master_id_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..ee4d449b5584056d2dafc474729360f3582a2736
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PFd#iW0002^D(YBKaZ!eM=5x?Y
z%mPa+vtjzzy{BAw%ZW*j!HIoM+6IH<9V7tx*S&LWQ48@JGZz;QX2F95M9;N8-10Tx
Cz9+Q+

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay3/keys/ed25519_signing_cert b/tests/integration/net/relay3/keys/ed25519_signing_cert
new file mode 100644
index 0000000000000000000000000000000000000000..4ad6d28582034dff2e6fd5e43e53505108a2b3e7
GIT binary patch
literal 172
zcmV;d08{@xJs@RdGBq_ZId(BEV`Xx5Iv{j;aAh<gJv{&b000011ONtnr~yN{PyOel
zsd$qb^N<c7cB$sN4_+kn;u;w_$QS%8nZW@7AOryX`qOTgr`#IKHVBPI5E}P#P_}y0
z+_G2PrnUMz+gd&t;Epn9m5~7Pmi9e|YIS~?6(!l`)>K?srXl)v-kQ$EE#bj*jT$!K
a>sP9(Ph#`uO}+H2kGt)%(;x-Shfoa&m`+dt

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay3/keys/ed25519_signing_secret_key b/tests/integration/net/relay3/keys/ed25519_signing_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..e48d8281cdf0a751af4a2da6d26f728880e95b73
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PG$1`a0001(tlyQ+d=ZS(r5;>N
z2(LWAwyZ`OPX}pq@28>6&ir<uXUw9>C4CYxuGe}VlZ9RqWts7<OYR<lHZW$2?R<vp
CGAQ-{

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay3/keys/secret_id_key b/tests/integration/net/relay3/keys/secret_id_key
new file mode 100644
index 00000000..0231906e
--- /dev/null
+++ b/tests/integration/net/relay3/keys/secret_id_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXgIBAAKBgQDaG0RNhIhKg/eqOrvQvYbpSGTLkEGCJ944su9uFA6Dp+e9gn+l
+KaMmB0AEJg4reTGxogE2Ot0h8Kv33R9yZB4J44Toykpg/DjziSl0FwI47fTzo5aU
+CkwsSMH+qk+hGsbQaYymEmped4jHwNa1iLdhPltnp2pqDcDqolQbEQxecQIDAQAB
+AoGBAJhfPjuNoI22Xlrtx3KQReVKLyjLsghVA/nGgGD94Bn4Pnz142kmipUxsXZ0
+g6e5do8rp/8T5pMkiW+TarnG2fgxo7W3tjaXylLBoKL+/jOfpgOF2vpse9II+Ov2
+rT6X0JO63QJcTD4E6+9LS0gYVCho0/AlE4p0y/FrI3gnBwpVAkEA/WmjQd+mk21l
+BKJ9E/1z4QN8TfeC5kvrEbOk6bYoR6VWCKVhwASkJI0O4EzDMEQSNp3JBaGooApe
+SILbf1EgUwJBANxVWNOGogUVxfNbVQQB142dCSnISOrYR37MhiOD0hzYoBKtHwUu
+265lg9HKjuIV8LFrY0eaYi8A/BUVYgU4PasCQQCOf/nLEC4GlyyIF6tIM20XKjOb
+UESupiBQuvlQZxttdn7Tq9Q0+ycmWp/z55aXLKAlUEL7RLWjEVGFavhtNrx7AkEA
+lkbTxbnO6b72+0twycHj3d+cb1X+fcazxMUEPFbdSPVrADH5tVRHW0Q7yyvnlkY2
+mxvOY/jlPH/kbxDdgQfh7wJAH9Pa+pvJn6NxjscbVR0Y0h17/nYm9uQedRd9ukyV
+8XbjKgmnKnzIlQ6ySpqRMDRIcqE/AgQ1n5nFQKZ1QS9u/Q==
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/relay3/keys/secret_onion_key b/tests/integration/net/relay3/keys/secret_onion_key
new file mode 100644
index 00000000..b0fcdaa2
--- /dev/null
+++ b/tests/integration/net/relay3/keys/secret_onion_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQDDnoSWxs6xwfjKvNT2w5COtXqI+t6ZE5s7W5aI/M4dJ8cjWj2l
+3ajC0gXT5OCesoHXs7gdsRtHT9OaYzf+8NDNK7oHpXOJCn3mpOlh0iihCFICwuNX
+/LBr89Hje0NogMIJjb7+52FQzMWsk/PpKidSTNLTAyVEG6u0r1AAiJz7twIDAQAB
+AoGBAJ98Ao9GwMdt5F+t+lbA9H9U9/Try0W0FXAcaKuAqK5eet2YugAbqnZDcprh
+1DuuP2vTyzzx4tKOA2+wirugLCpctNz2SysegQt6NXUWbnZTlBaTBEgrTKV6pTjC
+d8z9S9MdUOQj6LJXRLsL/9z/2uzHAeiaw1ruMlBWg9L3oFVhAkEA6tjZtHmKfW6c
+YwTI2DkUMluzBVY/k2kft93rflzPq2xdfbNAOeJbd8h/26d7AjISZYmMsRfBrmr4
+55OIpfIj8QJBANU9JNKm+Yu2bWKswlqXX6KaXzX3BhAXOUOrFmFQBpccpR1eyL/1
+EggW5bNr6J3LNVgLYPJqUSayM5mbAkSroicCQGkdwuQq+rgGCG2xuIw/kDCyJsEe
+x7oddZsA8+VNeY6LJJWc5ASEstg8oC4bGs3yx5U3KggiUAjXzK0qtiFA7qECQQDS
+N1T11mZstYtgm69+X3yIcGcsbDot4rcxXpjRlnLoxfSA39BIbPE5yFjqaJcJ+Cq+
+gXkxgl4+J6923rl9uTZBAkBZUdXXduTh3emRMr3Q+FUD5z0x85qNJb9wNg75gVo9
+stZN4CYEVN5rHPkJsZC8YL+ydxKI8N1Yx49h/n6UGcwg
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/relay3/keys/secret_onion_key_ntor b/tests/integration/net/relay3/keys/secret_onion_key_ntor
new file mode 100644
index 0000000000000000000000000000000000000000..e721c1862878cae18b004b80c46aa599e8783e09
GIT binary patch
literal 96
zcmcDuRY*26H8r#>Gqh63&&$luQ?RvVK!5=0v#D;fn%VPB@5Ee-&$O=)zjEI3lJNoI
t3@iOL3o4xV#Qt!Y$;f|X#iL4_W+xlrLzRx|8`m`6QCRd$qw{UJBLH=fBCY@c

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay3/torrc b/tests/integration/net/relay3/torrc
new file mode 100644
index 00000000..5606b0d7
--- /dev/null
+++ b/tests/integration/net/relay3/torrc
@@ -0,0 +1,24 @@
+
+		DataDirectory relay3
+		PidFile relay3/tor.pid
+		Log notice file relay3/notice.log
+		ShutdownWaitLength 2
+		ExitRelay 0
+		Address 127.10.0.6
+		SocksPort 127.10.0.6:2000
+		ControlPort 127.10.0.6:2001
+		CookieAuthentication 1
+		ORPort 127.10.0.6:2002
+		DirPort 127.10.0.6:2003
+		Nickname relay3
+		ContactInfo pastly@torproject.org
+	
+DirAuthority auth1 orport=2002 no-v2 v3ident=D7DBC517EFD2BA1A5012CF1BD0BB38F17C8160BD 127.10.0.1:2003 AA45C13025C037F056E734169891878ED0880231
+DirAuthority auth2 orport=2002 no-v2 v3ident=4EE103A081F400E6622F5461D51782B876BB5C24 127.10.0.2:2003 E7B3C9A0040D628DAC88B0251AE6334D28E8F531
+DirAuthority auth3 orport=2002 no-v2 v3ident=8B85069C7FC0593801E6491A34100264FCE28980 127.10.0.3:2003 35E3B8BB71C81355649AEC5862ECB7ED7EFDBC5C
+
+		TestingTorNetwork 1
+		NumCPUs 1
+		LogTimeGranularity 1
+		SafeLogging 0
+	
diff --git a/tests/integration/net/relay4/fingerprint b/tests/integration/net/relay4/fingerprint
new file mode 100644
index 00000000..9a077bf2
--- /dev/null
+++ b/tests/integration/net/relay4/fingerprint
@@ -0,0 +1 @@
+relay4 4D664E247E530CA5CD5176B8C1A6DABC9531F0B0
diff --git a/tests/integration/net/relay4/keys/ed25519_master_id_public_key b/tests/integration/net/relay4/keys/ed25519_master_id_public_key
new file mode 100644
index 0000000000000000000000000000000000000000..518a497d2f1af73a4e8838eafa315b469a3f4f02
GIT binary patch
literal 64
zcmcDuRY*-SGBq`{EHl(CC{4=AOtw-esVqn}P_VUSU|=xi)~sRLf6QltNNJ_s5z8q%
Uwy~w0I-aDqyW>{DT-k5k0EM9!g#Z8m

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay4/keys/ed25519_master_id_secret_key b/tests/integration/net/relay4/keys/ed25519_master_id_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..2c151897a3efb8e11ee33101a93b4b44ba1bf2b6
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PFd#iW0002Ma<HS()e^z6HCU9d
z@ObZTjLlyp+?iC#Hs6%`R?tgz2DE5a`-Z2Jf1TAtGy{&-9L&Qyk%^W{>I?tz-5XI}
CP%HHS

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay4/keys/ed25519_signing_cert b/tests/integration/net/relay4/keys/ed25519_signing_cert
new file mode 100644
index 0000000000000000000000000000000000000000..753bcc5394f97e4fbb8b3056db772e72a0dc18d2
GIT binary patch
literal 172
zcmV;d08{@xJs@RdGBq_ZId(BEV`Xx5Iv{j;aAh<gJv{&b000011ONtnr~yvKLYZ5;
z;N6=FnB!RkiK5rF?G;gry9K@_fDhQA<um~RAOrw43n_d8zs5|k6m@wn#5t6>wgzO%
z$6_YCh}v+S9rlZ!x=IfdOX0S-{j+ICsl7pdxwEU73*j&knel6p1JJ~Y^Z=Cr3CQaR
amKSVn1i-yvg}Em%x^(p1t#n`eDuoN)4@iUn

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay4/keys/ed25519_signing_secret_key b/tests/integration/net/relay4/keys/ed25519_signing_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..b05a3e7acc7abdfad7cc7549fb2c558d41c1fc5c
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PG$1`a0001J@cBQ|qDkP9tIsmU
z9v%*b|9bvt3KjzcGi$*=D+h44m%R1W%YSivXuj2!_$%9<J+sX4jG7s&nUnr&zm}Z&
CNGnAE

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay4/keys/secret_id_key b/tests/integration/net/relay4/keys/secret_id_key
new file mode 100644
index 00000000..7d27444e
--- /dev/null
+++ b/tests/integration/net/relay4/keys/secret_id_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXAIBAAKBgQDEAaKU5cOPUZf0Vk3XUxQf7JQ29u6I0U4/pHP2sKTl5q2Bkx2o
+pBdEZ0HA6V43oZEAC6gswC+cAkq3YYUkUlt4Es1yWsZzYECYPsXbLEJOL4qRwKC0
+IRjpnPSha+K9VX3DZ9m+V6X5dlNA+u1k9ksBFZzFEfDhqGXcrW/VYddTEwIDAQAB
+AoGAGaelIhwYxq+FViPduGtVXQBYPgGAI0RSG55o10czrivNVgJthV9E9F0XjCp/
+fISXOAxOjNzy3lamdO48wQ5OjmQiaH7kUH2m/v/xn0i4WCVe8OarYDV9f5+Iy4GS
+jADSQu/AWBxVqGYXbVSeBFw++yjx6I5innASZ6liVU4/YxECQQDrFIBXy4DSHVW6
+UlByGmaLoz5dA9YU4/kBrTDDncZvyJke4yk/We5AKTecAnodzhgvc/KlchsKo447
+eNBS6g/dAkEA1XL5BBcUKQrUAfSrTm5Pcgg0mhlovFqCgwiO2SblAodkXFLNxyD8
+twjtYEAP9qZZxT1ej7xKBxUZ3eFVJEY3rwJAX1/Q9k21NQn7xv0wcCqv4gVX/urY
+h186nmiCuUqgwKd1ICfviylUVSmjyyLiIoeEHnR/RIp32CglQ5Gvi4Q07QJANPlQ
+1fQIW9tFHKslbNSxwOJKc8hElyJ7a5vPIBOoGIWTodonGfmU3rRHfXDIxXUpqGr/
+sfqQAMv63HdVEyieHwJBAIk46ICdBT3Sc/sN9JSB/WWczUNa/uaLElFIMjtd9OJz
+QokMFlWLk9gRnm4wx5UaFu3B7TwAfKjBA3DJPIFjbEg=
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/relay4/keys/secret_onion_key b/tests/integration/net/relay4/keys/secret_onion_key
new file mode 100644
index 00000000..e64cf659
--- /dev/null
+++ b/tests/integration/net/relay4/keys/secret_onion_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQDc/Y7E5UsEz+t7YRL9r2OWVuTvZgc33mfLbKsGRo9oqbBD2XZb
+1fwHMI6cTRDzlUiQjpAvdtiZEvIWkK27o0U2tjxMyLgB5zQSggTeoK/A5003xmwS
+jxpgR5k0xAVfxDkuPF74DaTdK4VuHX+pQwxoLPjNmGRZu9gMX7dpYJGaCQIDAQAB
+AoGAFK/ryITKdAXevmsE8xiTEwTJY5vCezlnsARZMjoyvJJ9/KwDx28Nq8Kg5wLT
+3mmQJHAkET1n41SBsxkSGmmbVeowUuTzvak5R/kh2ghLZmpM/hU6A09OLnh8Zcoq
+Ce1i4G80dsvPLoAhhIP+tQ00Upi6rF+NB3RUcSoUZ1GGewECQQD+vfqv5n9GsGJu
+NgyWxdolRwl1xDcr3DjuGpsBwu3jAvO8S4RfW5Q6yCOvnodqbk0g/rYZCrRgNv6B
+T4WW33zpAkEA3hTprrhH9Y7c1YP+49cCxQ2iWdTxPWALyAl1jrDvq9mkXDxts8uW
+f9LA6i1d8BhATrrpYP9OFxMeCZIErB6AIQJASlS++GKmksbXAdetlrUGsUfoH7/w
+ZVDuH7QNtNbfORVcb34NkxGS0BAkMZNtagXjZZRNKENyXHzPiIXesiZmOQJBALj5
+3EZeUfmTfBcP8W9e+HyfRZnjRuhjJo0Aa/1lHMwb5M26u3klWv6u0WZ8USEZYf7x
+qk/Tdvy7PKqmB+RBJ2ECQQCFVN54qO+U2UtNbDUlD2ULX7iBuekAs8HCsUV6KHi3
+99VjxHPqdf2aY9TUAHelBDUzYGkAZYY5omdmdaU21OXn
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/relay4/keys/secret_onion_key_ntor b/tests/integration/net/relay4/keys/secret_onion_key_ntor
new file mode 100644
index 0000000000000000000000000000000000000000..9dc76893596956ff65d346098dd135a196898fe7
GIT binary patch
literal 96
zcmcDuRY*26H8r#>Gqh63&&$luQ?RvVK!65e0W-@fo7va!z2Xtm3S@b4&HwejV|Owu
u_62^Izo=IBf7SKv@-Z$CQy#qv;y)`T_oim@lcHMXNZW*?J$rBeR|WvDrzMd9

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay4/torrc b/tests/integration/net/relay4/torrc
new file mode 100644
index 00000000..c71bee58
--- /dev/null
+++ b/tests/integration/net/relay4/torrc
@@ -0,0 +1,24 @@
+
+		DataDirectory relay4
+		PidFile relay4/tor.pid
+		Log notice file relay4/notice.log
+		ShutdownWaitLength 2
+		ExitRelay 0
+		Address 127.10.0.7
+		SocksPort 127.10.0.7:2000
+		ControlPort 127.10.0.7:2001
+		CookieAuthentication 1
+		ORPort 127.10.0.7:2002
+		DirPort 127.10.0.7:2003
+		Nickname relay4
+		ContactInfo pastly@torproject.org
+	
+DirAuthority auth1 orport=2002 no-v2 v3ident=D7DBC517EFD2BA1A5012CF1BD0BB38F17C8160BD 127.10.0.1:2003 AA45C13025C037F056E734169891878ED0880231
+DirAuthority auth2 orport=2002 no-v2 v3ident=4EE103A081F400E6622F5461D51782B876BB5C24 127.10.0.2:2003 E7B3C9A0040D628DAC88B0251AE6334D28E8F531
+DirAuthority auth3 orport=2002 no-v2 v3ident=8B85069C7FC0593801E6491A34100264FCE28980 127.10.0.3:2003 35E3B8BB71C81355649AEC5862ECB7ED7EFDBC5C
+
+		TestingTorNetwork 1
+		NumCPUs 1
+		LogTimeGranularity 1
+		SafeLogging 0
+	
diff --git a/tests/integration/net/relay5/fingerprint b/tests/integration/net/relay5/fingerprint
new file mode 100644
index 00000000..96a995b4
--- /dev/null
+++ b/tests/integration/net/relay5/fingerprint
@@ -0,0 +1 @@
+relay5 32B7178F7201F76411A99D3552F340D3597D5629
diff --git a/tests/integration/net/relay5/keys/ed25519_master_id_public_key b/tests/integration/net/relay5/keys/ed25519_master_id_public_key
new file mode 100644
index 0000000000000000000000000000000000000000..24e888bbbacb3d3575b46fea5525446ec412df04
GIT binary patch
literal 64
zcmcDuRY*-SGBq`{EHl(CC{4=AOtw-esVqn}P_VUSU|@LiejV4u40da|)3yK7EfY@b
U*8DlH79P3MW?CKJHXluK0IzfxBLDyZ

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay5/keys/ed25519_master_id_secret_key b/tests/integration/net/relay5/keys/ed25519_master_id_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..11b922563eab0e00a4d8ebfe05bc62c4fa205bfb
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PFd#iW0002cN6?rr9Tpb@VNWrp
zoVJZYhywRIVprHYyt2LzsD4qL0Kwt0Mw)3lmin1y*e-&w;~XON9k(=W&@lR6zrY}D
Ct0z7H

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay5/keys/ed25519_signing_cert b/tests/integration/net/relay5/keys/ed25519_signing_cert
new file mode 100644
index 0000000000000000000000000000000000000000..4a340209cb58d0f9c35b42af5eb0ca876c240613
GIT binary patch
literal 172
zcmV;d08{@xJs@RdGBq_ZId(BEV`Xx5Iv{j;aAh<gJv{&b000011ONtnr~xJ%7hL*j
zj0q1+)t*`-T`K|0P~c~t(k-X5Gl%4o;%or`AOry9@2(1wXa_qU%YFW5Ibh2zeEi2I
zS6Qh%mVOSlOeq)F<qHz}E48i!nbLXy0;p{X;3I%PVs_>A6C6q5y#=1@cRK4Q9CB4B
aWkoO*t!H0&0(Q7n?GYJDPlgx4VQvCBd_a!?

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay5/keys/ed25519_signing_secret_key b/tests/integration/net/relay5/keys/ed25519_signing_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..213799fce7266f1b98fe2496e3da4277dc7d2728
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PG$1`a0000O=Kne@W`PjZU)8>?
zSmif6>#6Q!<KGP)tV&DXpxIBL>hD6S;-<L!ic1Iq@*r`&q7g4CoW+F86#Awd9mX&y
CqAEZD

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay5/keys/secret_id_key b/tests/integration/net/relay5/keys/secret_id_key
new file mode 100644
index 00000000..db919651
--- /dev/null
+++ b/tests/integration/net/relay5/keys/secret_id_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXAIBAAKBgQDGsbYyn7+9tDq8dNb77bHzrNZIlVyb9731qDhPg1UyzNOXVQ4k
+fd731TAWExXhjYJaxg2GzCIaOr5Y60pYiuHiBc5b8CFx8p46llVqMSVkLdRVLeDw
+XcEeY7GAUoFZqDCPlG/y8LIzur6fWHSrwgpBd3slf8F5cwmC2Htk0nsdtwIDAQAB
+AoGBALFkkiVKaLamxVXh/tp3kcvbQIkXCNKa8fb0FCoxOAydwD85CeJcmoerxz2+
+FmgEniAK+KKjd8LxNWZP01WP0TAVe2ub0XP1N5NUaV0NPvNwAPR4mRNscEgvprC3
+jHdfN+0EH5j6Wqdgr/VEEIDq6nxX4jtJNSgVrFZOm/G++VkRAkEA8lNdIzOyOK2C
+m6XpsfAuiU/cRK/wjyGLjQQ8qXxArWMYlmy9YLdrdRVIFPK6MWQu/Vzny91hiSIU
+e68djyrgCQJBANHoDEQ3Exx38AfTZPlUZuz06f7WdTOTHVHcxgLJOQIEHW9j1Or2
+5xOkZ+KZ7cUVkv1PzZXJkKUcNbQLK8Tt/78CQHK9BDGhzbZGebwnH/MvzWkY1ivz
+voyXDpOTuQFrIti2PjMjg7vivU+v5vR8RasTS6iNr/d4eDFNYLN7pBxg6bkCQEg7
+Kb1vlkv9mcOXou+Jc8Gmpb7j3YDZ5wT8i8b5p3xiHh7uo54XSH0h3f3EKmXffq1c
+gMpCilvG0VQbY/xoSdECQAlywnXV372n7j4n+rV1WQ0+QZmkxrUu0JnjJX8N4WKa
+KpBB8hMhcu2BczYp3sA4KSz0R241F3VD5rheZqHnTK0=
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/relay5/keys/secret_onion_key b/tests/integration/net/relay5/keys/secret_onion_key
new file mode 100644
index 00000000..aa7f8828
--- /dev/null
+++ b/tests/integration/net/relay5/keys/secret_onion_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXAIBAAKBgQDxY2DbqbMW/2I8GRO4U9Fzt/FO4XoTaV74ZyDfpI/VAJrgl4lr
+h2lDlt9oM/MR9Wp3xtsdx/9OA0lwfO7qugNTB91jUkNmoOhN7sNCM1H/iskw+ka0
+KHI+wLSFJwec9GIiox8K8sOLzwlrpYHxruXR6551bayVW8OsNwKOg9gF/QIDAQAB
+AoGATZVrZC6+6P1cTYSh2fTWtSLB5GCEJAkSBTTgVAFIWWXAYb9S48S6CIdNduh7
+j6IZfjXj50aIwEI+MHF3OOpgdoeaYTm4UlhG/mIw2WiGRTsXnLMOHMKnCWBwKXQ8
+xgXmVMy7o4mzylctIrGlKO32eMY0ONSTEQNXZTBZ124mYOECQQD7Jw0kySDTyHda
+rYWLEBYnEytz/PpJHMOWpqr+l3RHcjjFEBIjM7DLPGVVjNiiiHSdhCM9SHgrDlZa
+6bx2bz9vAkEA9gwUynsyDorOAg78CGtbnYClbm7ehJMTCj308HTlQ68gkbrFBVY/
+ajATpba+ZPI8MN+0YQ3/8bMwn+zHdGZbUwJBAKywD0OJ375/CkIZKceSigjYD3qz
+KUz4MCv38X8YmGU/znUBNddqhVdY8bw/Gf23oadk4e4TVD0WoJ3mNSWiHJUCQGqw
+vms2lHQd2EqoOL1l4Coh2JpUVQTjyYPNbeK+rZN14weOF1TDG2huRHa9ET4wk80V
+k9/p9CvYaaNPRwXARKUCQDUBe+5cxrMzq1ednHAtiQIASKs1h5GZlCJB778hMod3
+OggdXyCTDBGDXLBd+SXBbKrTMivKe0BIlqIpONugTjU=
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/relay5/keys/secret_onion_key_ntor b/tests/integration/net/relay5/keys/secret_onion_key_ntor
new file mode 100644
index 0000000000000000000000000000000000000000..4c66dcfa5b232e4cad1ff3ae3d35589ba068d53c
GIT binary patch
literal 96
zcmcDuRY*26H8r#>Gqh63&&$luQ?RvVKmd&y?*$d6GWsij5uQ_ixW#Tk@%;7MgY(a)
tE_In<B7D`Q)%Sitn7GP;Ni!Bi`zcwoC?8w(yrH6cc~;884BgTb#sG#BB4z*p

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay5/torrc b/tests/integration/net/relay5/torrc
new file mode 100644
index 00000000..9c56b023
--- /dev/null
+++ b/tests/integration/net/relay5/torrc
@@ -0,0 +1,24 @@
+
+		DataDirectory relay5
+		PidFile relay5/tor.pid
+		Log notice file relay5/notice.log
+		ShutdownWaitLength 2
+		ExitRelay 0
+		Address 127.10.0.8
+		SocksPort 127.10.0.8:2000
+		ControlPort 127.10.0.8:2001
+		CookieAuthentication 1
+		ORPort 127.10.0.8:2002
+		DirPort 127.10.0.8:2003
+		Nickname relay5
+		ContactInfo pastly@torproject.org
+	
+DirAuthority auth1 orport=2002 no-v2 v3ident=D7DBC517EFD2BA1A5012CF1BD0BB38F17C8160BD 127.10.0.1:2003 AA45C13025C037F056E734169891878ED0880231
+DirAuthority auth2 orport=2002 no-v2 v3ident=4EE103A081F400E6622F5461D51782B876BB5C24 127.10.0.2:2003 E7B3C9A0040D628DAC88B0251AE6334D28E8F531
+DirAuthority auth3 orport=2002 no-v2 v3ident=8B85069C7FC0593801E6491A34100264FCE28980 127.10.0.3:2003 35E3B8BB71C81355649AEC5862ECB7ED7EFDBC5C
+
+		TestingTorNetwork 1
+		NumCPUs 1
+		LogTimeGranularity 1
+		SafeLogging 0
+	
diff --git a/tests/integration/net/relay6/fingerprint b/tests/integration/net/relay6/fingerprint
new file mode 100644
index 00000000..c016a8b9
--- /dev/null
+++ b/tests/integration/net/relay6/fingerprint
@@ -0,0 +1 @@
+relay6 C7C5094677013F5BC124183C71A482D0156CDCFE
diff --git a/tests/integration/net/relay6/keys/ed25519_master_id_public_key b/tests/integration/net/relay6/keys/ed25519_master_id_public_key
new file mode 100644
index 0000000000000000000000000000000000000000..d7a56072a9e4a4521970193c07ff3ce7492159ee
GIT binary patch
literal 64
zcmcDuRY*-SGBq`{EHl(CC{4=AOtw-esVqn}P_VUSU|?t}aY?)>V(vXdx#sAnhPr6Z
U9Y(@dg2vac2^wwB+?M?e0EovHj{pDw

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay6/keys/ed25519_master_id_secret_key b/tests/integration/net/relay6/keys/ed25519_master_id_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..49b828b7f428c2b5a165bd53de3eff3662a4fbe6
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PFd#iW0000`_#tu5nsWk4{GN<t
zEvCs@=cJOqO5vE-_*;MOMqh8Hbmd41K9z~M%4}-<98aN7rgz_beD|DKuzlnl-JD!1
C@GGzY

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay6/keys/ed25519_signing_cert b/tests/integration/net/relay6/keys/ed25519_signing_cert
new file mode 100644
index 0000000000000000000000000000000000000000..392322556986be5596985f4de2e26653935cc192
GIT binary patch
literal 172
zcmV;d08{@xJs@RdGBq_ZId(BEV`Xx5Iv{j;aAh<gJv{&b000011ONtnr~xwaxsk!`
z72eiZOL31B%<4mC@C6bmI(WM-f4Q3TOO62mAOrw{bVOm<6gNwlBYeg3fPPyExH1zu
z5i{4;5i+-Fwrl1R`6CVKcPE^LS(o5pa_^LFO1^4)n`~b<4L)VS)Ck@;OhWfFh&rJj
a_>;@}D%h1ZJaXSHzxZ)%S;c;_vmpalghrtN

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay6/keys/ed25519_signing_secret_key b/tests/integration/net/relay6/keys/ed25519_signing_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..d713c3789dd7e941d3c14a0dd92f5c0bd02acaed
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PG$1`a0002^>5QCKup96~$nR~;
z34R8k46~hX*}7;{A+7)7ew|K7O2)iCJql<sP0S|vCZgI2UR6~Bfts@l7%e19C$G@+
C944j!

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay6/keys/secret_id_key b/tests/integration/net/relay6/keys/secret_id_key
new file mode 100644
index 00000000..2c2493fb
--- /dev/null
+++ b/tests/integration/net/relay6/keys/secret_id_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXAIBAAKBgQDM4WCrKcd06PX34O6NScFAoUhvLw36vE4kvDPcbjaCUtg4f/YM
+uxNqRYiRyF6CrnK8QQ0+BILSY3fvleayq+oMIOOp0/6iXZN2DJuyUT5zfwRgaxfn
+REAnn4b3lOV5ROE9OeAj5QSlf786Dz6r1bSr5anDO1lmp7zlrJaRX/uo9QIDAQAB
+AoGBAL8mc8OeKjqYc4x+rvLhYk2DbIpXc4qBD8NUWGqL5Y1378XfFVhRXk7jawTg
+1dTFH8UmSE2ZddkG9spwqBoBLU3R3bc+zORHUKxmzKTSzQxv7IqWjFk8R1wLztPD
+McjRxjtbDlt5reRzAayTNo9Jr/2KXu+uVDAzZGs3WXBfrqYBAkEA7lZrcH8EUyW+
+uNfuo83r2/tgv6a59/Z68VAPrzF2vS4gPYV/a5ICMC/m+xn7V65Fi/sNpkZvTvVy
+19Z9FzzPdQJBANwQOwH+BQ88NXF6XzOYxJNNJhdfgnq4g4HTrmRUZ6rikurfDzQQ
+KQ/NoBpn+iHgkkbBmp5QmO/ZAm8cDAXtw4ECQDN5Qpb3N63ldv1g1U9XR9sovUpm
+7b8Z4o9/ZQPHQQe2kIv46v4GeKaDkfUlNV1IbAjBXb9Ncviwle77ieSc44kCQA3O
+tuUZGxgpnvDPzMlf/HWBkbJFu9oXWaj7ryV8ZkTCkpVKCZoqqWjkbfc6LueRP5xQ
+6XKle/MQmqZ+DAMTOAECQDKLWLO/6vng8CrJsDv5e/3kjFAFSIN5fl25TVZn5Yje
+ImUI3OIWKth4bSogQvVj1M9zU+0D0U4z1/03wMZnEWo=
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/relay6/keys/secret_onion_key b/tests/integration/net/relay6/keys/secret_onion_key
new file mode 100644
index 00000000..b00908bf
--- /dev/null
+++ b/tests/integration/net/relay6/keys/secret_onion_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQDWLnWvQkwURtn3LBgL63OPC2ZQ4kTpMqtRxcHgxz37rFPmweUX
+aVipkt2v2YDKlbLYO2gaEYexegta3obDO5g8+w6DTZ2DzZScPyh4LbA3O48VS31T
+/MN/CYYQtBpIJvKZuV61TJZf/Eb34KkIsvngyPWvvIlj/L+2S5veTh45yQIDAQAB
+AoGAT0Y49tqCEEs9J9hhOiA20G42u59UREAl2wloPktgrMNW9qUzpxut3m3mscy+
+d706ygALAwMUB2OVylds59wp91IwntCPtxc7kGe6nBXPipxUOxpnS74PaSjVo3P0
+1Z/tq+5Nx/DQzGyEJdyeGWLZDILjZCdA1CWBYHflC4nqFMUCQQD/jVKHwSq1/Tg2
+GdaI0WpYGeuDDGHOrOaJQnPER45bzeYDzolyCdTVRgnFgnaaAMuEPNmK6gOtXg0E
+RibDUgrbAkEA1o6Sj6bNbPaplLP01YQbvHlhT0KKQSLQhGnw3R55SBMMFfaaPRda
+bvEd4oqRCD2oLQ0bcKuX1wLz+XxUBYplKwJBAL/gJWJmqCIC4YzFc65Axn8l3w4D
+YwCiE2pl6bQrIflOLHEZR1vHg/UqZDXXEiPpiuVcJt7FfENUhaN65Kns1NcCQE+c
+66k+Ha+2/0ncVJb9xET1TTRZ3m84+eKIZQXHjv09hBiKPsU4aygLdClhfVtvdX3y
+BSKTqW3w/JKwnYTIy60CQQCryzKc4d+/OFjBQev5Qy8KkeINTwCEcS9/PqBN546W
+9US8JP4WbYFaJZLnSUHod+CBj7axtEru+mFK3sY8D9Wd
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/relay6/keys/secret_onion_key_ntor b/tests/integration/net/relay6/keys/secret_onion_key_ntor
new file mode 100644
index 0000000000000000000000000000000000000000..f3df10dcc822aa9e7acb9ab40241d5d796db49b4
GIT binary patch
literal 96
zcmcDuRY*26H8r#>Gqh63&&$luQ?RvVK!6K9vwuBkzF_UWBa+i|7XPATdslyM&KWBm
ucRtd)*l!jqzUSGM-4iGI<ajHp{6BhLW(xng)obI64L_`!UGPX@B?kcLeI+OW

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay6/torrc b/tests/integration/net/relay6/torrc
new file mode 100644
index 00000000..d2a3dad9
--- /dev/null
+++ b/tests/integration/net/relay6/torrc
@@ -0,0 +1,24 @@
+
+		DataDirectory relay6
+		PidFile relay6/tor.pid
+		Log notice file relay6/notice.log
+		ShutdownWaitLength 2
+		ExitRelay 0
+		Address 127.10.0.9
+		SocksPort 127.10.0.9:2000
+		ControlPort 127.10.0.9:2001
+		CookieAuthentication 1
+		ORPort 127.10.0.9:2002
+		DirPort 127.10.0.9:2003
+		Nickname relay6
+		ContactInfo pastly@torproject.org
+	
+DirAuthority auth1 orport=2002 no-v2 v3ident=D7DBC517EFD2BA1A5012CF1BD0BB38F17C8160BD 127.10.0.1:2003 AA45C13025C037F056E734169891878ED0880231
+DirAuthority auth2 orport=2002 no-v2 v3ident=4EE103A081F400E6622F5461D51782B876BB5C24 127.10.0.2:2003 E7B3C9A0040D628DAC88B0251AE6334D28E8F531
+DirAuthority auth3 orport=2002 no-v2 v3ident=8B85069C7FC0593801E6491A34100264FCE28980 127.10.0.3:2003 35E3B8BB71C81355649AEC5862ECB7ED7EFDBC5C
+
+		TestingTorNetwork 1
+		NumCPUs 1
+		LogTimeGranularity 1
+		SafeLogging 0
+	
diff --git a/tests/integration/net/relay7/fingerprint b/tests/integration/net/relay7/fingerprint
new file mode 100644
index 00000000..f88bb90c
--- /dev/null
+++ b/tests/integration/net/relay7/fingerprint
@@ -0,0 +1 @@
+relay7 E894C65997F8EC96558B554176EEEA39C6A43EF6
diff --git a/tests/integration/net/relay7/keys/ed25519_master_id_public_key b/tests/integration/net/relay7/keys/ed25519_master_id_public_key
new file mode 100644
index 0000000000000000000000000000000000000000..a3cada5969134365edfeda07e727643ef9b178cd
GIT binary patch
literal 64
zcmcDuRY*-SGBq`{EHl(CC{4=AOtw-esVqn}P_VUSU|=Y+yZYlBzuK1uv(pEy%z`?!
UukT2_F19OZ&abA&i>&xq0m3^N$p8QV

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay7/keys/ed25519_master_id_secret_key b/tests/integration/net/relay7/keys/ed25519_master_id_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..caf0bd2e391d9bf5025ac85222c11750b0e05d4f
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PFd#iW0000;y7}T(qXyWkk)fMc
zd#G@yB^#i@+lyQFw_ErpgC%rWpRme+{y_mTUXHK}JBLg7f7vLL+cF@5QYK4T^^Lg`
Cgefur

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay7/keys/ed25519_signing_cert b/tests/integration/net/relay7/keys/ed25519_signing_cert
new file mode 100644
index 0000000000000000000000000000000000000000..ae1edc82aeaed52b47c7afe5a005f4c956101b5b
GIT binary patch
literal 172
zcmV;d08{@xJs@RdGBq_ZId(BEV`Xx5Iv{j;aAh<gJv{&b000011ONtnr~y$afq(~q
zn&+2A`;aWM1791#p?j@8lh>Cn2w^UhxA_48AOrw%KGpd44<_`0Hp{^}Hd2Ty*SKNV
z7P?ZL`hw%4It~S_%7_J3;OFjihl5G;bwIRi#lv6t<5Lg!d~gKORA?_zk%oRh2NC22
a(sli0*RR^Hr%LG;dQ8~XGHuXI9=8te)JdoS

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay7/keys/ed25519_signing_secret_key b/tests/integration/net/relay7/keys/ed25519_signing_secret_key
new file mode 100644
index 0000000000000000000000000000000000000000..ed0d5e3cd958e06a8b0da8b10e431d70dbeb3fe2
GIT binary patch
literal 96
zcmV-m0H6OoJs@RdGBq_ZId(BEb7f<4Wpp|qba`-PG$1`a0002c>yos2`<giypAAe$
z4k%tG10kdYLSrm}`A2l~i0ViB<P0@;q{U!<A{rmLB=$fP&BbF8xmV6M*JCPwjp^)T
CvnD|R

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay7/keys/secret_id_key b/tests/integration/net/relay7/keys/secret_id_key
new file mode 100644
index 00000000..b8c17dd5
--- /dev/null
+++ b/tests/integration/net/relay7/keys/secret_id_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQC8w+hoJy7Y5LTtIKXet4k7iFLAHix9h/0U+QrUJxpLWAJ2quEb
+antK/7yFu+/XUZtK70bSpqCWOzvVvjVjzaCK0hmAbnk8Gt8CinwOJ+KQ1W6tq2D8
+j9HUf6UHRt6lqgTt3aA9LOZk8AFNihpbVy9pI5V6PX0fR1phSVXHrLsXlwIDAQAB
+AoGAMIVzIgKgaiQv1ZxExsEKx4C9NKEM8p+YEGILxIjgm2leCL7X6kIuuxKNlRrA
+Ber2Lgbff5pRQQyszr573tGmaFboyMdEE1NCYz46BLCSN7L1eQQZgkAZLM/j3OP0
+nLfa9XjL/oux/WAuRm5eL/m7/WYj0smioQe0DrET/oz+/+ECQQD2JDHgeCxWR/dq
+agZj1kxH/L4D/KNLDkzL/EnsLdoFAzfMZ+t7ioHeszDAMHvjfbieozUj/cXgXGeF
+bbR2KAh5AkEAxFNognEciwez25Nt/7IOraTQeijF7fCWynlYXHYBV4Jvh2VfGc+6
+jRnbjj4luL9ZYXWNr62RG4pLQw9wiPI8jwJBAOSqc3upqObvLLc7kHwnle46qvxh
+NAKCYm4PD03OuwB1IN1Qnb/DySrvJZcmc7HAFkeqL7AkDjSFI9cdN82dG2ECQBWS
+WJxkk09PdFq/E0oSJXy87E9P5ZekZN0wgh3+tV0JLvoAkHeElKnmWnKBr6FiHQ8R
+XJUeDCCrjGN88c+KVk8CQQCFYcWCA4Pz/g/VfEyQHDdhhizotJHACJZe9Kr+7vNJ
+9Pf/pWbjQnQMpbJl9wTev8lDxYbgKshOh8iqhq2ynCAY
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/relay7/keys/secret_onion_key b/tests/integration/net/relay7/keys/secret_onion_key
new file mode 100644
index 00000000..9c542d74
--- /dev/null
+++ b/tests/integration/net/relay7/keys/secret_onion_key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQDet1J5F17VC0u9mV5X8xkTdQeTdykQ/v3Zxt+gcQOgF9GFwgpS
+7HUnp6BSGEjZZzt9tYZR0it2WvdO4gxLXLWb2jqo6zK0RX9bpH9UF6AmwHfQz8CB
+JFRuWw6Ao27uZWpZZmx/075FqAXtEboXwpgASJFW43HVQgHuggHGFR1gxQIDAQAB
+AoGBAMduRwaxu7RwKgF8XXPJ9pFqwT72fCqA+1VQdR1ZNdLcoTzyNYZtwLairrf0
+kP9EJox5yO5pkYupBz12w2WUffWGuushqrDn+3CcRuQw+gGkZRE8lpUnQwPPynWP
+428854TfojqgEelzUa128HDJkear7Dtfsz31D+Yt4cOcGQfBAkEA8WccQMfhiSRO
+DKLazpXMq0Dufrh6cov+turi04vvoC/6lgc+Hreh62CJVVhp+UDzP0QWRU/5LrKu
+AlLMc2BFFQJBAOwu8a4oEbYBzqAB/L40s9bZJi10FK47OGOz6z2q7SU2UH32EeZR
+OTWM3aeDSpad7HkFHvVtaU+5K9cJy6ZQ+PECQGQnOUuPIf05+L+5WTpYX/+1Ar3E
+X9jiSB0vuke2SQaWoUpZWuZ3nVAATzn/Yogs8D6RSwQat/Et5I/GNliv2jkCQFXb
+et/kkQuo/IQONOKwJfAkYEyFtj7gKE+WSB3S1QKCDCC+IyOmwzVEUA9lGuhF4IDd
+67MsYuwoVFeHqBB9vwECQQCALP4WoHri8nbRVwjlHBSDjrBB5Cn5KF3CQ9Yfcr+u
+Xt0zOoEE+1CuT6HWSn4zXvjsAdj0SNWiZaNP/dvfdWB0
+-----END RSA PRIVATE KEY-----
diff --git a/tests/integration/net/relay7/keys/secret_onion_key_ntor b/tests/integration/net/relay7/keys/secret_onion_key_ntor
new file mode 100644
index 0000000000000000000000000000000000000000..8dcca5dc4fe03b2f449690b3dc7a360943433bd3
GIT binary patch
literal 96
zcmcDuRY*26H8r#>Gqh63&&$luQ?RvVKmdb`9IlF~YZfuTwR+Sy^-*_#esA7#d)B;J
uw<LY1)^|C1ZM+uxPG;uO+Y43lZbYvAd2h>{prv6y*aAAPNxLjN;0yrW$|d#y

literal 0
HcmV?d00001

diff --git a/tests/integration/net/relay7/torrc b/tests/integration/net/relay7/torrc
new file mode 100644
index 00000000..b299d7ef
--- /dev/null
+++ b/tests/integration/net/relay7/torrc
@@ -0,0 +1,24 @@
+
+		DataDirectory relay7
+		PidFile relay7/tor.pid
+		Log notice file relay7/notice.log
+		ShutdownWaitLength 2
+		ExitRelay 0
+		Address 127.10.0.10
+		SocksPort 127.10.0.10:2000
+		ControlPort 127.10.0.10:2001
+		CookieAuthentication 1
+		ORPort 127.10.0.10:2002
+		DirPort 127.10.0.10:2003
+		Nickname relay7
+		ContactInfo pastly@torproject.org
+	
+DirAuthority auth1 orport=2002 no-v2 v3ident=D7DBC517EFD2BA1A5012CF1BD0BB38F17C8160BD 127.10.0.1:2003 AA45C13025C037F056E734169891878ED0880231
+DirAuthority auth2 orport=2002 no-v2 v3ident=4EE103A081F400E6622F5461D51782B876BB5C24 127.10.0.2:2003 E7B3C9A0040D628DAC88B0251AE6334D28E8F531
+DirAuthority auth3 orport=2002 no-v2 v3ident=8B85069C7FC0593801E6491A34100264FCE28980 127.10.0.3:2003 35E3B8BB71C81355649AEC5862ECB7ED7EFDBC5C
+
+		TestingTorNetwork 1
+		NumCPUs 1
+		LogTimeGranularity 1
+		SafeLogging 0
+	
diff --git a/tests/integration/net/start.sh b/tests/integration/net/start.sh
new file mode 100755
index 00000000..f96cf9d1
--- /dev/null
+++ b/tests/integration/net/start.sh
@@ -0,0 +1,15 @@
+#!/usr/bin/env bash
+set -e
+function cleanup {
+	#kill -INT $(cat {auth,relay,exit}*/tor.pid)
+	#kill -INT $(jobs -p)
+	echo -n ''
+}
+trap cleanup EXIT
+
+
+cd $(dirname $0)
+for A in {auth,relay,exit}*
+do
+	tor -f $A/torrc --quiet &
+done
diff --git a/tests/integration/net/stop.sh b/tests/integration/net/stop.sh
new file mode 100755
index 00000000..026c8c90
--- /dev/null
+++ b/tests/integration/net/stop.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+cd $(dirname $0)
+kill -INT $(cat {auth,relay,exit}*/tor.pid)
diff --git a/tests/integration/net/wait.py b/tests/integration/net/wait.py
new file mode 100755
index 00000000..8c8512a1
--- /dev/null
+++ b/tests/integration/net/wait.py
@@ -0,0 +1,136 @@
+#!/usr/bin/env python3
+from argparse import RawTextHelpFormatter, ArgumentParser
+from stem.control import Controller
+import time
+import os
+import logging
+
+logger = logging.getLogger(__name__)
+
+
+def get_controller(addr, port):
+    cont = Controller.from_port(addr, port)
+    cont.authenticate()
+    return cont
+
+
+def get_is_bootstrapped(cont, timeout=60):
+    start_time = time.time()
+    while start_time + timeout > time.time():
+        line = cont.get_info('status/bootstrap-phase')
+        state, _, progress, *_ = line.split()
+        progress = int(progress.split('=')[1])
+        if state == 'NOTICE' and progress == 100:
+            logger.debug('Tor is bootstrapped')
+            return True
+        time.sleep(1)
+    logger.debug("Tor didn't bootstrap before timeout. Last line: %s", line)
+    return False
+
+
+def get_has_full_consensus(cont, network_size, timeout=60):
+    start_time = time.time()
+    while start_time + timeout > time.time():
+        relays = [r for r in cont.get_network_statuses()]
+        if len(relays) == network_size:
+            logger.debug('Tor has correct network size %d',
+                         network_size)
+            return True
+        elif len(relays) > network_size:
+            logger.warning('Tor has more relays than expected. %d vs %d',
+                           len(relays), network_size)
+            return True
+        time.sleep(1)
+    logger.debug('Tor didn\'t reach expected network size %d before '
+                 'timeout', network_size)
+    return False
+
+
+def is_tor_ready(addr, port, network_size):
+    name = '{}:{}'.format(addr, port)
+    with get_controller(addr, port) as cont:
+        if not get_is_bootstrapped(cont):
+            logger.warning('%s not bootstrapped, Tor not ready', name)
+            return False
+        if not get_has_full_consensus(cont, network_size):
+            logger.warning('%s doesn\'t have full consensus, Tor not ready',
+                           name)
+            return False
+    logger.info('%s is ready', name)
+    return True
+
+
+def extract_control_port_info(torrc_fname):
+    with open(torrc_fname, 'rt') as fd:
+        for line in fd:
+            if 'ControlPort' not in line:
+                continue
+            line = line.strip()
+            info = line.split()[1]
+            addr, port = info.split(':')
+            return addr, int(port)
+
+
+def main(args):
+    for datadir in args.datadir:
+        logger.info('Checking if %s is ready', datadir)
+        addr, port = extract_control_port_info(os.path.join(datadir, 'torrc'))
+        if not is_tor_ready(addr, port, network_size=args.size):
+            return 1
+    # If we got to this point, it seems like every relay is completely ready.
+    # Do one more check to make sure that's still the case.
+    for datadir in args.datadir:
+        logger.info('Verifying %s is still ready', datadir)
+        addr, port = extract_control_port_info(os.path.join(datadir, 'torrc'))
+        if not is_tor_ready(addr, port, network_size=args.size):
+            return 1
+    return 0
+
+
+if __name__ == '__main__':
+    desc = '''
+Given the data directories for a local tor network, connect to the control
+socket in each directory and verify that the tor on the other end of the socket
+is fully bootstrapped and has the right size of consensus.
+
+The "right size of consensus" is determined based on the number of data
+directories given to check. If that is not okay to assume (for example, there
+are some Tor client [non-relay] data directories given to check), then specify
+the size manually with --size.
+
+Waits up to 60 seconds for each check for each tor.
+
+- In the worst case, this script will take a long time to run (if every tor
+  suddenly passes each check after 59 seconds).
+- In the normal failure case, this script will take about 60 seconds to run
+  (the first tor is not ready and fails its checks).
+- In the normal case, it will run very quickly (every tor is bootstrapped and
+  ready).
+
+Exits with 0 if everything is good. Otherwise exits with a postive integer.
+'''
+    parser = ArgumentParser(
+            formatter_class=RawTextHelpFormatter, description=desc)
+    parser.add_argument('-s', '--size', type=int, help='If given, don\'t '
+                        'assume the network size based on the number of '
+                        'datadirs, but use this size instead.')
+    parser.add_argument('-d', '--debug', action='store_true')
+    parser.add_argument('datadir', nargs='+', type=str)
+    args = parser.parse_args()
+
+    if args.debug:
+        logger.setLevel(logging.DEBUG)
+    else:
+        logger.setLevel(logging.WARNING)
+    ch = logging.StreamHandler()
+    formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
+    ch.setFormatter(formatter)
+    logger.addHandler(ch)
+
+    if not args.size:
+        args.size = len(args.datadir)
+
+    try:
+        exit(main(args))
+    except KeyboardInterrupt:
+        pass
diff --git a/tox.ini b/tox.ini
index eb6a9583..4aca0ca0 100644
--- a/tox.ini
+++ b/tox.ini
@@ -39,12 +39,12 @@ commands =
 ignore_errors = True
 deps = .[test]
 whitelist_externals =
-    tar
+    cp
     bash
     sleep
     wget
 commands =
-    tar -C {envtmpdir} -vxf {toxinidir}/tests/integration/net.tar
+    cp -af {toxinidir}/tests/integration/net {envtmpdir}
     bash {envtmpdir}/net/start.sh
     bash -c "time python3 {envtmpdir}/net/wait.py {envtmpdir}/net/{auth,relay,exit}*"
     bash -c "python3 {toxinidir}/scripts/tools/sbws-http-server.py --port 28888 &>/dev/null &"
@@ -52,6 +52,7 @@ commands =
     wget -O/dev/null http://127.0.0.1:28888/sbws.bin
     coverage run -a --rcfile={toxinidir}/.coveragerc --source=sbws -m pytest -s {toxinidir}/tests/integration -vv
     bash {envtmpdir}/net/stop.sh
+    # no need to remove .tox/net directory.
 
 [testenv:lint]
 skip_install = True
-- 
GitLab