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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
/* cell_rendezvous.h -- generated by by Trunnel v1.5.1.
* https://gitweb.torproject.org/trunnel.git
* You probably shouldn't edit this file.
*/
#ifndef TRUNNEL_CELL_RENDEZVOUS_H
#define TRUNNEL_CELL_RENDEZVOUS_H
#include <stdint.h>
#include "trunnel.h"
#define TRUNNEL_REND_COOKIE_LEN 20
#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_TRN_CELL_RENDEZVOUS1)
struct trn_cell_rendezvous1_st {
uint8_t rendezvous_cookie[TRUNNEL_REND_COOKIE_LEN];
TRUNNEL_DYNARRAY_HEAD(, uint8_t) handshake_info;
uint8_t trunnel_error_code_;
};
#endif
typedef struct trn_cell_rendezvous1_st trn_cell_rendezvous1_t;
/** Return a newly allocated trn_cell_rendezvous1 with all elements
* set to zero.
*/
trn_cell_rendezvous1_t *trn_cell_rendezvous1_new(void);
/** Release all storage held by the trn_cell_rendezvous1 in 'victim'.
* (Do nothing if 'victim' is NULL.)
*/
void trn_cell_rendezvous1_free(trn_cell_rendezvous1_t *victim);
/** Try to parse a trn_cell_rendezvous1 from the buffer in 'input',
* using up to 'len_in' bytes from the input buffer. On success,
* return the number of bytes consumed and set *output to the newly
* allocated trn_cell_rendezvous1_t. On failure, return -2 if the
* input appears truncated, and -1 if the input is otherwise invalid.
*/
ssize_t trn_cell_rendezvous1_parse(trn_cell_rendezvous1_t **output, const uint8_t *input, const size_t len_in);
/** Return the number of bytes we expect to need to encode the
* trn_cell_rendezvous1 in 'obj'. On failure, return a negative value.
* Note that this value may be an overestimate, and can even be an
* underestimate for certain unencodeable objects.
*/
ssize_t trn_cell_rendezvous1_encoded_len(const trn_cell_rendezvous1_t *obj);
/** Try to encode the trn_cell_rendezvous1 from 'input' into the
* buffer at 'output', using up to 'avail' bytes of the output buffer.
* On success, return the number of bytes used. On failure, return -2
* if the buffer was not long enough, and -1 if the input was invalid.
*/
ssize_t trn_cell_rendezvous1_encode(uint8_t *output, size_t avail, const trn_cell_rendezvous1_t *input);
/** Check whether the internal state of the trn_cell_rendezvous1 in
* 'obj' is consistent. Return NULL if it is, and a short message if
* it is not.
*/
const char *trn_cell_rendezvous1_check(const trn_cell_rendezvous1_t *obj);
/** Clear any errors that were set on the object 'obj' by its setter
* functions. Return true iff errors were cleared.
*/
int trn_cell_rendezvous1_clear_errors(trn_cell_rendezvous1_t *obj);
/** Return the (constant) length of the array holding the
* rendezvous_cookie field of the trn_cell_rendezvous1_t in 'inp'.
*/
size_t trn_cell_rendezvous1_getlen_rendezvous_cookie(const trn_cell_rendezvous1_t *inp);
/** Return the element at position 'idx' of the fixed array field
* rendezvous_cookie of the trn_cell_rendezvous1_t in 'inp'.
*/
uint8_t trn_cell_rendezvous1_get_rendezvous_cookie(trn_cell_rendezvous1_t *inp, size_t idx);
/** As trn_cell_rendezvous1_get_rendezvous_cookie, but take and return
* a const pointer
*/
uint8_t trn_cell_rendezvous1_getconst_rendezvous_cookie(const trn_cell_rendezvous1_t *inp, size_t idx);
/** Change the element at position 'idx' of the fixed array field
* rendezvous_cookie of the trn_cell_rendezvous1_t in 'inp', so that
* it will hold the value 'elt'.
*/
int trn_cell_rendezvous1_set_rendezvous_cookie(trn_cell_rendezvous1_t *inp, size_t idx, uint8_t elt);
/** Return a pointer to the TRUNNEL_REND_COOKIE_LEN-element array
* field rendezvous_cookie of 'inp'.
*/
uint8_t * trn_cell_rendezvous1_getarray_rendezvous_cookie(trn_cell_rendezvous1_t *inp);
/** As trn_cell_rendezvous1_get_rendezvous_cookie, but take and return
* a const pointer
*/
const uint8_t * trn_cell_rendezvous1_getconstarray_rendezvous_cookie(const trn_cell_rendezvous1_t *inp);
/** Return the length of the dynamic array holding the handshake_info
* field of the trn_cell_rendezvous1_t in 'inp'.
*/
size_t trn_cell_rendezvous1_getlen_handshake_info(const trn_cell_rendezvous1_t *inp);
/** Return the element at position 'idx' of the dynamic array field
* handshake_info of the trn_cell_rendezvous1_t in 'inp'.
*/
uint8_t trn_cell_rendezvous1_get_handshake_info(trn_cell_rendezvous1_t *inp, size_t idx);
/** As trn_cell_rendezvous1_get_handshake_info, but take and return a
* const pointer
*/
uint8_t trn_cell_rendezvous1_getconst_handshake_info(const trn_cell_rendezvous1_t *inp, size_t idx);
/** Change the element at position 'idx' of the dynamic array field
* handshake_info of the trn_cell_rendezvous1_t in 'inp', so that it
* will hold the value 'elt'.
*/
int trn_cell_rendezvous1_set_handshake_info(trn_cell_rendezvous1_t *inp, size_t idx, uint8_t elt);
/** Append a new element 'elt' to the dynamic array field
* handshake_info of the trn_cell_rendezvous1_t in 'inp'.
*/
int trn_cell_rendezvous1_add_handshake_info(trn_cell_rendezvous1_t *inp, uint8_t elt);
/** Return a pointer to the variable-length array field handshake_info
* of 'inp'.
*/
uint8_t * trn_cell_rendezvous1_getarray_handshake_info(trn_cell_rendezvous1_t *inp);
/** As trn_cell_rendezvous1_get_handshake_info, but take and return a
* const pointer
*/
const uint8_t * trn_cell_rendezvous1_getconstarray_handshake_info(const trn_cell_rendezvous1_t *inp);
/** Change the length of the variable-length array field
* handshake_info of 'inp' to 'newlen'.Fill extra elements with 0.
* Return 0 on success; return -1 and set the error code on 'inp' on
* failure.
*/
int trn_cell_rendezvous1_setlen_handshake_info(trn_cell_rendezvous1_t *inp, size_t newlen);
#endif
|