aboutsummaryrefslogtreecommitdiff
path: root/src/trunnel/hs/cell_rendezvous.trunnel
blob: 2128b4d1266948b26c21d7b83df3b3c1646faa7f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/*
 * This contains the definition of the RENDEZVOUS1/2 cell for onion service
 * version 3 and onward. The following format is specified in proposal 224
 * section 4.2.
 */

/* Rendezvous cookie length. */
const TRUNNEL_REND_COOKIE_LEN = 20;
/* The HANDSHAKE_INFO field layout is as follow:
 *    SERVER_PK   [PK_PUBKEY_LEN bytes]
 *    AUTH        [MAC_LEN bytes]
 * This means, the size is 32 bytes + 32 bytes. */
const TRUNNEL_HANDSHAKE_INFO_LEN = 64;

/* RENDEZVOUS1 payload. See details in section 4.2. */
struct trn_cell_rendezvous1 {
  /* The RENDEZVOUS_COOKIE field. */
  u8 rendezvous_cookie[TRUNNEL_REND_COOKIE_LEN];
  
  /* The HANDSHAKE_INFO field which has a variable length depending on the
   * handshake type used. */
  u8 handshake_info[];
};

/* RENDEZVOUS2 payload. See details in section 4.2. */
struct trn_cell_rendezvous2 {
  /* The HANDSHAKE_INFO field. */
  u8 handshake_info[TRUNNEL_HANDSHAKE_INFO_LEN];
};