Data Fields
hs_service_descriptor_t Struct Reference

#include <hs_service.h>

Data Fields

curve25519_keypair_t auth_ephemeral_kp
uint8_t descriptor_cookie [HS_DESC_DESCRIPTOR_COOKIE_LEN]
ed25519_keypair_t signing_kp
ed25519_keypair_t blinded_kp
uint64_t time_period_num
struct crypto_ope_tope_cipher
time_t next_upload_time
hs_service_intropoints_t intro_points
unsigned int missing_intro_points: 1

Detailed Description

Representation of a service descriptor.

Some elements of the descriptor are mutable whereas others are immutable:

Immutable elements are initialized once when the descriptor is built (when service descriptors gets rotated). This means that these elements are initialized once and then they don't change for the lifetime of the descriptor. See build_service_descriptor().

Mutable elements are initialized when we build the descriptor but they are also altered during the lifetime of the descriptor. They could be refreshed every time we upload the descriptor (which happens multiple times over the lifetime of the descriptor), or through periodic events. We do this for elements like the descriptor revision counter and various certificates. See refresh_service_descriptor() and update_service_descriptor_intro_points().

Definition at line 130 of file hs_service.h.

Field Documentation

◆ auth_ephemeral_kp

curve25519_keypair_t auth_ephemeral_kp

Immutable: Client authorization ephemeral keypair.

Definition at line 132 of file hs_service.h.

◆ blinded_kp

ed25519_keypair_t blinded_kp

Immutable: Blinded keypair derived from the master identity public key.

Definition at line 143 of file hs_service.h.

Referenced by build_service_desc_keys(), build_service_desc_plaintext(), and upload_descriptor_to_all().

◆ desc

Mutable: Decoded descriptor. This object is used for encoding when the service publishes the descriptor.

Definition at line 155 of file hs_service.h.

Referenced by build_desc_intro_points(), build_desc_signing_key_cert(), build_service_desc_encrypted(), build_service_desc_plaintext(), build_service_desc_superencrypted(), service_encode_descriptor(), and update_service_descriptor_intro_points().

◆ descriptor_cookie

uint8_t descriptor_cookie[HS_DESC_DESCRIPTOR_COOKIE_LEN]

Immutable: Descriptor cookie used to encrypt the descriptor, when the client authorization is enabled

Definition at line 136 of file hs_service.h.

Referenced by service_encode_descriptor().

◆ intro_points

Mutable: Introduction points assign to this descriptor which contains hs_service_intropoints_t object indexed by authentication key (the RSA key if the node is legacy).

Definition at line 163 of file hs_service.h.

Referenced by pick_needed_intro_points(), rotate_service_descriptors(), setup_intro_point_exclude_list(), should_service_upload_descriptor(), and update_service_descriptor_intro_points().

◆ missing_intro_points

unsigned int missing_intro_points

Mutable: True iff we have missing intro points for this descriptor because we couldn't pick any nodes.

Definition at line 167 of file hs_service.h.

Referenced by should_service_upload_descriptor().

◆ next_upload_time

time_t next_upload_time

Mutable: When is the next time when we should upload the descriptor.

Definition at line 158 of file hs_service.h.

Referenced by service_desc_schedule_upload().

◆ ope_cipher

struct crypto_ope_t* ope_cipher

Immutable: The OPE cipher for encrypting revision counters for this descriptor. Tied to the descriptor blinded key.

Definition at line 151 of file hs_service.h.

◆ previous_hsdirs

smartlist_t* previous_hsdirs

Mutable: List of the responsible HSDirs (their b64ed identity digest) last time we uploaded this descriptor. If the set of responsible HSDirs is different from this list, this means we received new dirinfo and we need to reupload our descriptor.

Definition at line 173 of file hs_service.h.

Referenced by service_desc_hsdirs_changed().

◆ signing_kp

ed25519_keypair_t signing_kp

Immutable: Descriptor signing keypair.

Definition at line 139 of file hs_service.h.

Referenced by build_service_desc_plaintext(), and hs_service_lookup_current_desc().

◆ time_period_num

uint64_t time_period_num

Immutable: The time period number this descriptor has been created for.

Definition at line 147 of file hs_service.h.

Referenced by build_service_desc_keys(), build_service_descriptor(), and upload_descriptor_to_all().

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