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
, char *digest
);
23 #define DIROBJ_MAX_SIG_LEN 256
24 int router_append_dirobj_signature(char *buf
, size_t buf_len
,
27 crypto_pk_env_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_parse(const char *s
, tor_version_t
*out
);
48 int tor_version_as_new_as(const char *platform
, const char *cutoff
);
49 int tor_version_compare(tor_version_t
*a
, tor_version_t
*b
);
50 void sort_version_list(smartlist_t
*lst
, int remove_duplicates
);
51 void assert_addr_policy_ok(smartlist_t
*t
);
52 void dump_distinct_digest_count(int severity
);
54 int compare_routerstatus_entries(const void **_a
, const void **_b
);
55 networkstatus_v2_t
*networkstatus_v2_parse_from_string(const char *s
);
56 int networkstatus_verify_bw_weights(networkstatus_t
*ns
);
57 networkstatus_t
*networkstatus_parse_vote_from_string(const char *s
,
59 networkstatus_type_t ns_type
);
60 ns_detached_signatures_t
*networkstatus_parse_detached_signatures(
61 const char *s
, const char *eos
);
63 smartlist_t
*microdescs_parse_from_string(const char *s
, const char *eos
,
64 int allow_annotations
,
67 authority_cert_t
*authority_cert_parse_from_string(const char *s
,
68 const char **end_of_string
);
69 int rend_parse_v2_service_descriptor(rend_service_descriptor_t
**parsed_out
,
71 char **intro_points_encrypted_out
,
72 size_t *intro_points_encrypted_size_out
,
73 size_t *encoded_size_out
,
74 const char **next_out
, const char *desc
);
75 int rend_decrypt_introduction_points(char **ipos_decrypted
,
76 size_t *ipos_decrypted_size
,
77 const char *descriptor_cookie
,
78 const char *ipos_encrypted
,
79 size_t ipos_encrypted_size
);
80 int rend_parse_introduction_points(rend_service_descriptor_t
*parsed
,
81 const char *intro_points_encoded
,
82 size_t intro_points_encoded_size
);
83 int rend_parse_client_keys(strmap_t
*parsed_clients
, const char *str
);
85 void tor_gettimeofday_cache_clear(void);