Merge remote-tracking branch 'public/bug24104_029_squashed' into maint-0.2.9
[tor.git] / src / trunnel / ed25519_cert.trunnel
blobc46f1b6c6b0fc6b7921e42ef10815b5d0178fc4c
2 struct ed25519_cert {
3   u8 version IN [1];
4   u8 cert_type;
5   u32 exp_field;
6   u8 cert_key_type;
7   u8 certified_key[32];
8   u8 n_extensions;
9   struct ed25519_cert_extension ext[n_extensions];
10   u8 signature[64];
13 const CERTEXT_SIGNED_WITH_KEY = 4;
14 const CERTEXT_FLAG_AFFECTS_VALIDATION = 1;
16 struct ed25519_cert_extension {
17   u16 ext_length;
18   u8 ext_type;
19   u8 ext_flags;
20   union un[ext_type] with length ext_length {
21     CERTEXT_SIGNED_WITH_KEY : u8 signing_key[32];
22     default: u8 unparsed[];
23   };
27 struct cert_revocation {
28   u8 prefix[8];
29   u8 version IN [1];
30   u8 keytype;
31   u8 identity_key[32];
32   u8 revoked_key[32];
33   u64 published;
34   u8 n_extensions;
35   struct cert_extension ext[n_extensions];
36   u8 signature[64];
39 struct crosscert_ed_rsa {
40   u8 ed_key[32];
41   u32 expiration_date;
42   u8 signature[128];
45 struct auth02_cell {
46   u8 type[8];
47   u8 cid[32];
48   u8 sid[32];
49   u8 cid_ed[32];
50   u8 sid_ed[32];
51   u8 slog[32];
52   u8 clog[32];
53   u8 scert[32];
54   u8 tlssecrets[32];
55   u8 rand[24];
56   u8 sig[64];
59 const LS_IPV4 = 0x00;
60 const LS_IPV6 = 0x01;
61 const LS_LEGACY_ID = 0x02;
62 const LS_ED25519_ID = 0x03;
64 // amended from tor.trunnel
65 struct link_specifier {
66   u8 ls_type;
67   u8 ls_len;
68   union un[ls_type] with length ls_len {
69     LS_IPV4: u32 ipv4_addr; u16 ipv4_port;
70     LS_IPV6: u8 ipv6_addr[16]; u16 ipv6_port;
71     LS_LEGACY_ID: u8 legacy_id[20];
72     LS_ED25519_ID: u8 ed25519_id[32];
73     default: u8 unrecognized[];
74   };