1 /* Copyright (c) 2001 Matej Pfajfar.
2 * Copyright (c) 2001-2004, Roger Dingledine.
3 * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
4 * Copyright (c) 2007-2011, The Tor Project, Inc. */
5 /* See LICENSE for licensing information */
9 * \brief Header file for routerparse.c.
12 #ifndef _TOR_ROUTERPARSE_H
13 #define _TOR_ROUTERPARSE_H
15 int router_get_router_hash(const char *s
, size_t s_len
, char *digest
);
16 int router_get_dir_hash(const char *s
, char *digest
);
17 int router_get_runningrouters_hash(const char *s
, char *digest
);
18 int router_get_networkstatus_v2_hash(const char *s
, char *digest
);
19 int router_get_networkstatus_v3_hash(const char *s
, char *digest
,
20 digest_algorithm_t algorithm
);
21 int router_get_networkstatus_v3_hashes(const char *s
, digests_t
*digests
);
22 int router_get_extrainfo_hash(const char *s
, size_t s_len
, char *digest
);
23 #define DIROBJ_MAX_SIG_LEN 256
24 int router_append_dirobj_signature(char *buf
, size_t buf_len
,
27 crypto_pk_t
*private_key
);
28 int router_parse_list_from_string(const char **s
, const char *eos
,
30 saved_location_t saved_location
,
32 int allow_annotations
,
33 const char *prepend_annotations
);
34 int router_parse_runningrouters(const char *str
);
35 int router_parse_directory(const char *str
);
37 routerinfo_t
*router_parse_entry_from_string(const char *s
, const char *end
,
39 int allow_annotations
,
40 const char *prepend_annotations
);
41 extrainfo_t
*extrainfo_parse_entry_from_string(const char *s
, const char *end
,
42 int cache_copy
, struct digest_ri_map_t
*routermap
);
43 addr_policy_t
*router_parse_addr_policy_item_from_string(const char *s
,
45 version_status_t
tor_version_is_obsolete(const char *myversion
,
46 const char *versionlist
);
47 int tor_version_supports_microdescriptors(const char *platform
);
48 int tor_version_as_new_as(const char *platform
, const char *cutoff
);
49 int tor_version_parse(const char *s
, tor_version_t
*out
);
50 int tor_version_compare(tor_version_t
*a
, tor_version_t
*b
);
51 int tor_version_same_series(tor_version_t
*a
, tor_version_t
*b
);
52 void sort_version_list(smartlist_t
*lst
, int remove_duplicates
);
53 void assert_addr_policy_ok(smartlist_t
*t
);
54 void dump_distinct_digest_count(int severity
);
56 int compare_routerstatus_entries(const void **_a
, const void **_b
);
57 networkstatus_v2_t
*networkstatus_v2_parse_from_string(const char *s
);
58 int networkstatus_verify_bw_weights(networkstatus_t
*ns
);
59 networkstatus_t
*networkstatus_parse_vote_from_string(const char *s
,
61 networkstatus_type_t ns_type
);
62 ns_detached_signatures_t
*networkstatus_parse_detached_signatures(
63 const char *s
, const char *eos
);
65 smartlist_t
*microdescs_parse_from_string(const char *s
, const char *eos
,
66 int allow_annotations
,
69 authority_cert_t
*authority_cert_parse_from_string(const char *s
,
70 const char **end_of_string
);
71 int rend_parse_v2_service_descriptor(rend_service_descriptor_t
**parsed_out
,
73 char **intro_points_encrypted_out
,
74 size_t *intro_points_encrypted_size_out
,
75 size_t *encoded_size_out
,
76 const char **next_out
, const char *desc
);
77 int rend_decrypt_introduction_points(char **ipos_decrypted
,
78 size_t *ipos_decrypted_size
,
79 const char *descriptor_cookie
,
80 const char *ipos_encrypted
,
81 size_t ipos_encrypted_size
);
82 int rend_parse_introduction_points(rend_service_descriptor_t
*parsed
,
83 const char *intro_points_encoded
,
84 size_t intro_points_encoded_size
);
85 int rend_parse_client_keys(strmap_t
*parsed_clients
, const char *str
);