12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /*
- * This contains the definition of the ESTABLISH_INTRO and INTRO_ESTABLISHED
- * cell for onion service version 3 and onward. The following format is
- * specified in proposal 224 section 3.1.
- */
- extern struct trn_cell_extension;
- const TRUNNEL_SHA3_256_LEN = 32;
- /* ESTABLISH_INTRO payload. See details in section 3.1.1 */
- struct trn_cell_establish_intro {
- /* Indicate the start of the handshake authentication data. */
- @ptr start_cell;
- /* Authentication key material. */
- u8 auth_key_type IN [0x00, 0x01, 0x02];
- u16 auth_key_len;
- u8 auth_key[auth_key_len];
- /* Extension(s). Reserved fields. */
- struct trn_cell_extension extensions;
- @ptr end_mac_fields;
- /* Handshake MAC. */
- u8 handshake_mac[TRUNNEL_SHA3_256_LEN];
- /* Signature */
- /* Indicate the end of the handshake authentication data. */
- @ptr end_sig_fields;
- u16 sig_len;
- u8 sig[sig_len];
- };
- /* INTRO_ESTABLISHED payload which is an acknowledge of the ESTABLISH_INTRO
- * cell. For legacy node, this payload is empty so the following only applies
- * to version >= 3. */
- struct trn_cell_intro_established {
- /* Extension(s). Reserved fields. */
- struct trn_cell_extension extensions;
- };
- /*
- * ESTABLISH_INTRO cell extensions.
- */
- const TRUNNEL_CELL_EXTENSION_TYPE_DOS = 0x01;
- /* DoS Parameter types. */
- const TRUNNEL_DOS_PARAM_TYPE_INTRO2_RATE_PER_SEC = 0x01;
- const TRUNNEL_DOS_PARAM_TYPE_INTRO2_BURST_PER_SEC = 0x02;
- /*
- * DoS Parameters Extension. See proposal 305 for more details.
- */
- struct trn_cell_extension_dos_param {
- u8 type;
- u64 value;
- };
- struct trn_cell_extension_dos {
- u8 n_params;
- struct trn_cell_extension_dos_param params[n_params];
- };
|