relay_crypto_st.h (999B)
1 /* Copyright (c) 2001 Matej Pfajfar. 2 * Copyright (c) 2001-2004, Roger Dingledine. 3 * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. 4 * Copyright (c) 2007-2021, The Tor Project, Inc. */ 5 /* See LICENSE for licensing information */ 6 7 /** 8 * @file relay_crypto_st.h 9 * @brief Relay-cell encryption state structure. 10 **/ 11 12 #ifndef RELAY_CRYPTO_ST_H 13 #define RELAY_CRYPTO_ST_H 14 15 #include "core/crypto/tor1_crypt_st.h" 16 #include "core/crypto/relay_crypto_cgo.h" 17 18 typedef enum relay_crypto_kind_t { 19 RCK_TOR1, 20 RCK_CGO, 21 } relay_crypto_kind_t; 22 23 typedef struct cgo_pair_t { 24 // NOTE: Using pointers here is a bit awkward; we may want to refactor 25 // eventually. 26 cgo_crypt_t *fwd; 27 cgo_crypt_t *back; 28 /* The last tag that we got when originating or recognizing a message */ 29 uint8_t last_tag[SENDME_TAG_LEN_CGO]; 30 } cgo_pair_t; 31 32 struct relay_crypto_t { 33 relay_crypto_kind_t kind; 34 union { 35 struct tor1_crypt_t tor1; 36 cgo_pair_t cgo; 37 } c; 38 }; 39 40 #endif /* !defined(RELAY_CRYPTO_ST_H) */