Tor
0.4.7.0-alpha-dev
|
Shared hashing, signing, and signature-checking code for directory objects. More...
#include "core/or/or.h"
#include "feature/dirparse/parsecommon.h"
#include "feature/dirparse/sigcommon.h"
Go to the source code of this file.
Functions | |
int | router_get_hash_impl_helper (const char *s, size_t s_len, const char *start_str, const char *end_str, char end_c, int log_severity, const char **start_out, const char **end_out) |
int | router_get_hash_impl (const char *s, size_t s_len, char *digest, const char *start_str, const char *end_str, char end_c, digest_algorithm_t alg) |
STATIC int | router_compute_hash_final (char *digest, const char *start, size_t len, digest_algorithm_t alg) |
int | router_get_hashes_impl (const char *s, size_t s_len, common_digests_t *digests, const char *start_str, const char *end_str, char end_c) |
STATIC int | signed_digest_equals (const uint8_t *d1, const uint8_t *d2, size_t len) |
int | check_signature_token (const char *digest, ssize_t digest_len, directory_token_t *tok, crypto_pk_t *pkey, int flags, const char *doctype) |
Shared hashing, signing, and signature-checking code for directory objects.
Definition in file sigcommon.c.
int check_signature_token | ( | const char * | digest, |
ssize_t | digest_len, | ||
directory_token_t * | tok, | ||
crypto_pk_t * | pkey, | ||
int | flags, | ||
const char * | doctype | ||
) |
Check whether the object body of the token in tok has a good signature for digest using key pkey. If CST_NO_CHECK_OBJTYPE is set, do not check the object type of the signature object. Use doctype as the type of the document when generating log messages. Return 0 on success, negative on failure.
Definition at line 148 of file sigcommon.c.
STATIC int router_compute_hash_final | ( | char * | digest, |
const char * | start, | ||
size_t | len, | ||
digest_algorithm_t | alg | ||
) |
Compute the digest of the len-byte directory object at start, using alg. Store the result in digest, which must be long enough to hold it.
Definition at line 93 of file sigcommon.c.
Referenced by router_get_hash_impl().
int router_get_hash_impl | ( | const char * | s, |
size_t | s_len, | ||
char * | digest, | ||
const char * | start_str, | ||
const char * | end_str, | ||
char | end_c, | ||
digest_algorithm_t | alg | ||
) |
Compute the digest of the substring of s taken from the first occurrence of start_str through the first instance of c after the first subsequent occurrence of end_str; store the 20-byte or 32-byte result in digest; return 0 on success.
If no such substring exists, return -1.
Definition at line 74 of file sigcommon.c.
Referenced by router_get_extrainfo_hash(), and router_get_router_hash().
int router_get_hash_impl_helper | ( | const char * | s, |
size_t | s_len, | ||
const char * | start_str, | ||
const char * | end_str, | ||
char | end_c, | ||
int | log_severity, | ||
const char ** | start_out, | ||
const char ** | end_out | ||
) |
Helper function for router_get_hash_impl: given s, s_len, start_str, end_str, and end_c with the same semantics as in that function, set *start_out (inclusive) and *end_out (exclusive) to the boundaries of the string to be hashed.
Return 0 on success and -1 on failure.
Definition at line 27 of file sigcommon.c.
Referenced by router_get_hash_impl(), router_get_hashes_impl(), and router_get_networkstatus_v3_signed_boundaries().
int router_get_hashes_impl | ( | const char * | s, |
size_t | s_len, | ||
common_digests_t * | digests, | ||
const char * | start_str, | ||
const char * | end_str, | ||
char | end_c | ||
) |
As router_get_hash_impl, but compute all hashes.
Definition at line 112 of file sigcommon.c.
Referenced by router_get_networkstatus_v3_hashes().