commit b3f2c682b721eac104455b09bd2f0d481f17d750
Author: Nick Mathewson <nickm(a)torproject.org>
Date: Fri Jun 15 11:52:32 2018 -0400
Extract crypt_path_t and relay_crypto_t into their own headers
---
src/or/circpathbias.c | 1 +
src/or/circuitstats.c | 1 +
src/or/crypt_path_st.h | 56 +++++++++++++++++++++++++++++++++++++++++
src/or/hs_circuit.c | 1 +
src/or/include.am | 2 ++
src/or/or.h | 60 ++------------------------------------------
src/or/or_circuit_st.h | 1 +
src/or/relay_crypto_st.h | 27 ++++++++++++++++++++
src/or/rendclient.c | 1 +
src/or/rendcommon.c | 1 +
src/or/rendservice.c | 1 +
src/or/router.c | 1 +
src/test/test_circuitstats.c | 1 +
src/test/test_entrynodes.c | 3 ++-
src/test/test_hs_client.c | 1 +
src/test/test_hs_service.c | 1 +
src/test/test_relaycell.c | 1 +
17 files changed, 101 insertions(+), 59 deletions(-)
diff --git a/src/or/circpathbias.c b/src/or/circpathbias.c
index f139c6d7e..d1bdaedc3 100644
--- a/src/or/circpathbias.c
+++ b/src/or/circpathbias.c
@@ -35,6 +35,7 @@
#include "networkstatus.h"
#include "relay.h"
+#include "crypt_path_st.h"
#include "origin_circuit_st.h"
static void pathbias_count_successful_close(origin_circuit_t *circ);
diff --git a/src/or/circuitstats.c b/src/or/circuitstats.c
index bff553a02..f1660090f 100644
--- a/src/or/circuitstats.c
+++ b/src/or/circuitstats.c
@@ -41,6 +41,7 @@
#include "circuitlist.h"
#include "circuituse.h"
+#include "crypt_path_st.h"
#include "origin_circuit_st.h"
#undef log
diff --git a/src/or/crypt_path_st.h b/src/or/crypt_path_st.h
new file mode 100644
index 000000000..ebad87217
--- /dev/null
+++ b/src/or/crypt_path_st.h
@@ -0,0 +1,56 @@
+/* Copyright (c) 2001 Matej Pfajfar.
+ * Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#ifndef CRYPT_PATH_ST_H
+#define CRYPT_PATH_ST_H
+
+#include "relay_crypto_st.h"
+
+/** Holds accounting information for a single step in the layered encryption
+ * performed by a circuit. Used only at the client edge of a circuit. */
+struct crypt_path_t {
+ uint32_t magic;
+
+ /** Cryptographic state used for encrypting and authenticating relay
+ * cells to and from this hop. */
+ relay_crypto_t crypto;
+
+ /** Current state of the handshake as performed with the OR at this
+ * step. */
+ onion_handshake_state_t handshake_state;
+ /** Diffie-hellman handshake state for performing an introduction
+ * operations */
+ crypto_dh_t *rend_dh_handshake_state;
+
+ /** Negotiated key material shared with the OR at this step. */
+ char rend_circ_nonce[DIGEST_LEN];/* KH in tor-spec.txt */
+
+ /** Information to extend to the OR at this step. */
+ extend_info_t *extend_info;
+
+ /** Is the circuit built to this step? Must be one of:
+ * - CPATH_STATE_CLOSED (The circuit has not been extended to this step)
+ * - CPATH_STATE_AWAITING_KEYS (We have sent an EXTEND/CREATE to this step
+ * and not received an EXTENDED/CREATED)
+ * - CPATH_STATE_OPEN (The circuit has been extended to this step) */
+ uint8_t state;
+#define CPATH_STATE_CLOSED 0
+#define CPATH_STATE_AWAITING_KEYS 1
+#define CPATH_STATE_OPEN 2
+ struct crypt_path_t *next; /**< Link to next crypt_path_t in the circuit.
+ * (The list is circular, so the last node
+ * links to the first.) */
+ struct crypt_path_t *prev; /**< Link to previous crypt_path_t in the
+ * circuit. */
+
+ int package_window; /**< How many cells are we allowed to originate ending
+ * at this step? */
+ int deliver_window; /**< How many cells are we willing to deliver originating
+ * at this step? */
+};
+
+#endif
+
diff --git a/src/or/hs_circuit.c b/src/or/hs_circuit.c
index 189ebdc1b..56ae4a152 100644
--- a/src/or/hs_circuit.c
+++ b/src/or/hs_circuit.c
@@ -33,6 +33,7 @@
#include "hs/cell_common.h"
#include "hs/cell_establish_intro.h"
+#include "crypt_path_st.h"
#include "origin_circuit_st.h"
/* A circuit is about to become an e2e rendezvous circuit. Check
diff --git a/src/or/include.am b/src/or/include.am
index 83dee5a77..0a58796e0 100644
--- a/src/or/include.am
+++ b/src/or/include.am
@@ -206,6 +206,7 @@ ORHEADERS = \
src/or/consdiffmgr.h \
src/or/control_connection_st.h \
src/or/control.h \
+ src/or/crypt_path_st.h \
src/or/cpuworker.h \
src/or/directory.h \
src/or/dirserv.h \
@@ -270,6 +271,7 @@ ORHEADERS = \
src/or/reasons.h \
src/or/relay.h \
src/or/relay_crypto.h \
+ src/or/relay_crypto_st.h \
src/or/rendcache.h \
src/or/rendclient.h \
src/or/rendcommon.h \
diff --git a/src/or/or.h b/src/or/or.h
index b9608d152..df232604e 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -2278,64 +2278,8 @@ typedef struct {
} u;
} onion_handshake_state_t;
-typedef struct relay_crypto_t {
- /* crypto environments */
- /** Encryption key and counter for cells heading towards the OR at this
- * step. */
- crypto_cipher_t *f_crypto;
- /** Encryption key and counter for cells heading back from the OR at this
- * step. */
- crypto_cipher_t *b_crypto;
-
- /** Digest state for cells heading towards the OR at this step. */
- crypto_digest_t *f_digest; /* for integrity checking */
- /** Digest state for cells heading away from the OR at this step. */
- crypto_digest_t *b_digest;
-
-} relay_crypto_t;
-
-/** Holds accounting information for a single step in the layered encryption
- * performed by a circuit. Used only at the client edge of a circuit. */
-typedef struct crypt_path_t {
- uint32_t magic;
-
- /** Cryptographic state used for encrypting and authenticating relay
- * cells to and from this hop. */
- relay_crypto_t crypto;
-
- /** Current state of the handshake as performed with the OR at this
- * step. */
- onion_handshake_state_t handshake_state;
- /** Diffie-hellman handshake state for performing an introduction
- * operations */
- crypto_dh_t *rend_dh_handshake_state;
-
- /** Negotiated key material shared with the OR at this step. */
- char rend_circ_nonce[DIGEST_LEN];/* KH in tor-spec.txt */
-
- /** Information to extend to the OR at this step. */
- extend_info_t *extend_info;
-
- /** Is the circuit built to this step? Must be one of:
- * - CPATH_STATE_CLOSED (The circuit has not been extended to this step)
- * - CPATH_STATE_AWAITING_KEYS (We have sent an EXTEND/CREATE to this step
- * and not received an EXTENDED/CREATED)
- * - CPATH_STATE_OPEN (The circuit has been extended to this step) */
- uint8_t state;
-#define CPATH_STATE_CLOSED 0
-#define CPATH_STATE_AWAITING_KEYS 1
-#define CPATH_STATE_OPEN 2
- struct crypt_path_t *next; /**< Link to next crypt_path_t in the circuit.
- * (The list is circular, so the last node
- * links to the first.) */
- struct crypt_path_t *prev; /**< Link to previous crypt_path_t in the
- * circuit. */
-
- int package_window; /**< How many cells are we allowed to originate ending
- * at this step? */
- int deliver_window; /**< How many cells are we willing to deliver originating
- * at this step? */
-} crypt_path_t;
+typedef struct relay_crypto_t relay_crypto_t;
+typedef struct crypt_path_t crypt_path_t;
/** A reference-counted pointer to a crypt_path_t, used only to share
* the final rendezvous cpath to be used on a service-side rendezvous
diff --git a/src/or/or_circuit_st.h b/src/or/or_circuit_st.h
index f76737fbd..07022272a 100644
--- a/src/or/or_circuit_st.h
+++ b/src/or/or_circuit_st.h
@@ -10,6 +10,7 @@
#include "or.h"
#include "circuit_st.h"
+#include "crypt_path_st.h"
struct onion_queue_t;
diff --git a/src/or/relay_crypto_st.h b/src/or/relay_crypto_st.h
new file mode 100644
index 000000000..4e23f4e40
--- /dev/null
+++ b/src/or/relay_crypto_st.h
@@ -0,0 +1,27 @@
+/* Copyright (c) 2001 Matej Pfajfar.
+ * Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#ifndef RELAY_CRYPTO_ST_H
+#define RELAY_CRYPTO_ST_H
+
+struct relay_crypto_t {
+ /* crypto environments */
+ /** Encryption key and counter for cells heading towards the OR at this
+ * step. */
+ crypto_cipher_t *f_crypto;
+ /** Encryption key and counter for cells heading back from the OR at this
+ * step. */
+ crypto_cipher_t *b_crypto;
+
+ /** Digest state for cells heading towards the OR at this step. */
+ crypto_digest_t *f_digest; /* for integrity checking */
+ /** Digest state for cells heading away from the OR at this step. */
+ crypto_digest_t *b_digest;
+
+};
+
+#endif
+
diff --git a/src/or/rendclient.c b/src/or/rendclient.c
index 6762bbfb0..8e621562a 100644
--- a/src/or/rendclient.c
+++ b/src/or/rendclient.c
@@ -33,6 +33,7 @@
#include "routerlist.h"
#include "routerset.h"
+#include "crypt_path_st.h"
#include "dir_connection_st.h"
#include "entry_connection_st.h"
#include "origin_circuit_st.h"
diff --git a/src/or/rendcommon.c b/src/or/rendcommon.c
index 308b91878..116ca730f 100644
--- a/src/or/rendcommon.c
+++ b/src/or/rendcommon.c
@@ -31,6 +31,7 @@
#include "routerlist.h"
#include "routerparse.h"
+#include "crypt_path_st.h"
#include "origin_circuit_st.h"
/** Return 0 if one and two are the same service ids, else -1 or 1 */
diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index d1e6f8a8e..09a52ea07 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -36,6 +36,7 @@
#include "routerparse.h"
#include "routerset.h"
+#include "crypt_path_st.h"
#include "edge_connection_st.h"
#include "origin_circuit_st.h"
diff --git a/src/or/router.c b/src/or/router.c
index 11ee2e6ab..2d0305889 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -39,6 +39,7 @@
#include "dirauth/mode.h"
+#include "crypt_path_st.h"
#include "dir_connection_st.h"
#include "dir_server_st.h"
#include "origin_circuit_st.h"
diff --git a/src/test/test_circuitstats.c b/src/test/test_circuitstats.c
index c03164954..8efde6f84 100644
--- a/src/test/test_circuitstats.c
+++ b/src/test/test_circuitstats.c
@@ -17,6 +17,7 @@
#include "circuituse.h"
#include "channel.h"
+#include "crypt_path_st.h"
#include "origin_circuit_st.h"
void test_circuitstats_timeout(void *arg);
diff --git a/src/test/test_entrynodes.c b/src/test/test_entrynodes.c
index 19a32aa8a..83a3ecbfc 100644
--- a/src/test/test_entrynodes.c
+++ b/src/test/test_entrynodes.c
@@ -30,11 +30,12 @@
#include "statefile.h"
#include "util.h"
+#include "crypt_path_st.h"
#include "dir_connection_st.h"
+#include "origin_circuit_st.h"
#include "test_helpers.h"
#include "log_test_helpers.h"
-#include "origin_circuit_st.h"
/* TODO:
* choose_random_entry() test with state set.
diff --git a/src/test/test_hs_client.c b/src/test/test_hs_client.c
index bf0d56f8a..4443bd922 100644
--- a/src/test/test_hs_client.c
+++ b/src/test/test_hs_client.c
@@ -37,6 +37,7 @@
#include "connection_edge.h"
#include "networkstatus.h"
+#include "crypt_path_st.h"
#include "dir_connection_st.h"
#include "entry_connection_st.h"
#include "origin_circuit_st.h"
diff --git a/src/test/test_hs_service.c b/src/test/test_hs_service.c
index 06df50740..947243e67 100644
--- a/src/test/test_hs_service.c
+++ b/src/test/test_hs_service.c
@@ -53,6 +53,7 @@
#include "dirauth/shared_random_state.h"
#include "voting_schedule.h"
+#include "crypt_path_st.h"
#include "origin_circuit_st.h"
/* Trunnel */
diff --git a/src/test/test_relaycell.c b/src/test/test_relaycell.c
index e6a673403..0d78f97d8 100644
--- a/src/test/test_relaycell.c
+++ b/src/test/test_relaycell.c
@@ -16,6 +16,7 @@
#include "relay.h"
#include "test.h"
+#include "crypt_path_st.h"
#include "entry_connection_st.h"
#include "origin_circuit_st.h"