Data Fields
hs_ident_circuit_t Struct Reference

#include <hs_ident.h>

Data Fields

ed25519_public_key_t identity_pk
ed25519_public_key_t intro_auth_pk
curve25519_public_key_t intro_enc_pk
uint8_t rendezvous_cookie [HS_REND_COOKIE_LEN]
uint8_t rendezvous_handshake_info [CURVE25519_PUBKEY_LEN+DIGEST256_LEN]
curve25519_keypair_t rendezvous_client_kp
uint8_t rendezvous_ntor_key_seed [DIGEST256_LEN]
uint64_t num_rdv_streams

Detailed Description

Client and service side circuit identifier that is used for hidden service circuit establishment. Not all fields contain data, it depends on the circuit purpose. This is attached to an origin_circuit_t. All fields are used by both client and service.

Definition at line 42 of file hs_ident.h.

Field Documentation

◆ identity_pk

ed25519_public_key_t identity_pk

(All circuit) The public key used to uniquely identify the service. It is the one found in the onion address.

Definition at line 45 of file hs_ident.h.

Referenced by circuit_matches_with_rend_stream(), close_or_reextend_intro_circ(), close_service_rp_circuits(), get_objects_from_ident(), hs_client_reextend_intro_circuit(), hs_ident_intro_circ_is_valid(), setup_intro_circ_auth_key(), and setup_rendezvous_circ_congestion_control().

◆ intro_auth_pk

ed25519_public_key_t intro_auth_pk

(All circuit) Introduction point authentication key. It's also needed on the rendezvous circuit for the ntor handshake. It's used as the unique key of the introduction point so it should not be shared between multiple intro points.

Definition at line 51 of file hs_ident.h.

Referenced by create_intro_circuit_identifier(), find_desc_intro_point_by_ident(), get_objects_from_ident(), and hs_ident_intro_circ_is_valid().

◆ intro_enc_pk

(Only client rendezvous circuit) Introduction point encryption public key. We keep it in the rendezvous identifier for the ntor handshake.

Definition at line 55 of file hs_ident.h.

Referenced by hs_circ_is_rend_sent_in_intro1().

◆ num_rdv_streams

uint64_t num_rdv_streams

(Only rendezvous circuit) Number of streams associated with this rendezvous circuit. We track this because there is a check on a maximum value.

Definition at line 81 of file hs_ident.h.

Referenced by hs_dec_rdv_stream_counter(), and hs_inc_rdv_stream_counter().

◆ rendezvous_client_kp

curve25519_keypair_t rendezvous_client_kp

(Only client rendezvous circuit) Client ephemeral keypair needed for the e2e encryption with the service.

Definition at line 72 of file hs_ident.h.

◆ rendezvous_cookie

uint8_t rendezvous_cookie[HS_REND_COOKIE_LEN]

(Only rendezvous circuit) Rendezvous cookie sent from the client to the service with an INTRODUCE1 cell and used by the service in an RENDEZVOUS1 cell.

Definition at line 60 of file hs_ident.h.

Referenced by create_rp_circuit_identifier().

◆ rendezvous_handshake_info

uint8_t rendezvous_handshake_info[CURVE25519_PUBKEY_LEN+DIGEST256_LEN]

(Only service rendezvous circuit) The HANDSHAKE_INFO needed in the RENDEZVOUS1 cell of the service. The construction is as follows:

 SERVER_PK   [32 bytes]
 AUTH_MAC    [32 bytes]

Definition at line 68 of file hs_ident.h.

Referenced by create_rp_circuit_identifier().

◆ rendezvous_ntor_key_seed

uint8_t rendezvous_ntor_key_seed[DIGEST256_LEN]

(Only rendezvous circuit) The NTOR_KEY_SEED needed for key derivation for the e2e encryption with the client on the circuit.

Definition at line 76 of file hs_ident.h.

Referenced by create_rp_circuit_identifier().

The documentation for this struct was generated from the following file: