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