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----- +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 +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