9 struct ed25519_cert_extension ext[n_extensions];
13 const CERTEXT_SIGNED_WITH_KEY = 4;
14 const CERTEXT_FLAG_AFFECTS_VALIDATION = 1;
16 struct ed25519_cert_extension {
20 union un[ext_type] with length ext_length {
21 CERTEXT_SIGNED_WITH_KEY : u8 signing_key[32];
22 default: u8 unparsed[];
28 const LS_LEGACY_ID = 0x02;
29 const LS_ED25519_ID = 0x03;
31 // amended from tor.trunnel
32 struct link_specifier {
35 union un[ls_type] with length ls_len {
36 LS_IPV4: u32 ipv4_addr; u16 ipv4_port;
37 LS_IPV6: u8 ipv6_addr[16]; u16 ipv6_port;
38 LS_LEGACY_ID: u8 legacy_id[20];
39 LS_ED25519_ID: u8 ed25519_id[32];
40 default: u8 unrecognized[];
44 struct link_specifier_list {
46 struct link_specifier spec[n_spec];
49 struct extend1_cell_body {
56 struct create2_cell_body {
59 u8 handshake_data[handshake_len];
62 struct extend2_cell_body {
64 struct link_specifier ls[n_spec];
65 struct create2_cell_body create2;