mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 21:53:48 +01:00
57 lines
2.1 KiB
C
57 lines
2.1 KiB
C
/* 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
|
|
|