tor  master
Data Structures | Macros | Typedefs | Enumerations | Functions
hs_ident.h File Reference

Header file containing circuit and connection identifier data for the whole HS subsytem. More...

#include "crypto_ed25519.h"
#include "hs_common.h"
Include dependency graph for hs_ident.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  hs_ident_circuit_t
 
struct  hs_ident_dir_conn_t
 
struct  hs_ident_edge_conn_t
 

Macros

#define HS_REND_COOKIE_LEN   DIGEST_LEN
 
#define hs_ident_circuit_free(id)   FREE_AND_NULL(hs_ident_circuit_t, hs_ident_circuit_free_, (id))
 
#define hs_ident_dir_conn_free(id)   FREE_AND_NULL(hs_ident_dir_conn_t, hs_ident_dir_conn_free_, (id))
 
#define hs_ident_edge_conn_free(id)   FREE_AND_NULL(hs_ident_edge_conn_t, hs_ident_edge_conn_free_, (id))
 

Typedefs

typedef struct hs_ident_circuit_t hs_ident_circuit_t
 
typedef struct hs_ident_dir_conn_t hs_ident_dir_conn_t
 
typedef struct hs_ident_edge_conn_t hs_ident_edge_conn_t
 

Enumerations

enum  hs_ident_circuit_type_t { HS_IDENT_CIRCUIT_INTRO = 1, HS_IDENT_CIRCUIT_RENDEZVOUS = 2 }
 

Functions

hs_ident_circuit_ths_ident_circuit_new (const ed25519_public_key_t *identity_pk, hs_ident_circuit_type_t circuit_type)
 
void hs_ident_circuit_free_ (hs_ident_circuit_t *ident)
 
hs_ident_circuit_ths_ident_circuit_dup (const hs_ident_circuit_t *src)
 
hs_ident_dir_conn_ths_ident_dir_conn_dup (const hs_ident_dir_conn_t *src)
 
void hs_ident_dir_conn_free_ (hs_ident_dir_conn_t *ident)
 
void hs_ident_dir_conn_init (const ed25519_public_key_t *identity_pk, const ed25519_public_key_t *blinded_pk, hs_ident_dir_conn_t *ident)
 
hs_ident_edge_conn_ths_ident_edge_conn_new (const ed25519_public_key_t *identity_pk)
 
void hs_ident_edge_conn_free_ (hs_ident_edge_conn_t *ident)
 
int hs_ident_intro_circ_is_valid (const hs_ident_circuit_t *ident)
 

Detailed Description

Header file containing circuit and connection identifier data for the whole HS subsytem.

This interface is used to uniquely identify a hidden service on a circuit or connection using the service identity public key. Once the circuit or connection subsystem calls in the hidden service one, we use those identifiers to lookup the corresponding objects like service, intro point and descriptor.

Furthermore, the circuit identifier holds cryptographic material needed for the e2e encryption on the rendezvous circuit which is set once the rendezvous circuit has opened and ready to be used.