aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/common/crypto.c2
-rw-r--r--src/common/crypto.h1
-rw-r--r--src/or/routerparse.c6
3 files changed, 4 insertions, 5 deletions
diff --git a/src/common/crypto.c b/src/common/crypto.c
index fb5dd06b5e..4ed8bfa7e6 100644
--- a/src/common/crypto.c
+++ b/src/common/crypto.c
@@ -1727,7 +1727,7 @@ crypto_digest_algorithm_parse_name(const char *name)
}
/** Given an algorithm, return the digest length in bytes. */
-static inline size_t
+size_t
crypto_digest_algorithm_get_length(digest_algorithm_t alg)
{
switch (alg) {
diff --git a/src/common/crypto.h b/src/common/crypto.h
index 017c849097..ff38cca0da 100644
--- a/src/common/crypto.h
+++ b/src/common/crypto.h
@@ -233,6 +233,7 @@ void crypto_digest_smartlist(char *digest_out, size_t len_out,
const struct smartlist_t *lst, const char *append,
digest_algorithm_t alg);
const char *crypto_digest_algorithm_get_name(digest_algorithm_t alg);
+size_t crypto_digest_algorithm_get_length(digest_algorithm_t alg);
int crypto_digest_algorithm_parse_name(const char *name);
crypto_digest_t *crypto_digest_new(void);
crypto_digest_t *crypto_digest256_new(digest_algorithm_t algorithm);
diff --git a/src/or/routerparse.c b/src/or/routerparse.c
index 42b05835ad..6ab042e35f 100644
--- a/src/or/routerparse.c
+++ b/src/or/routerparse.c
@@ -3531,10 +3531,8 @@ networkstatus_parse_detached_signatures(const char *s, const char *eos)
continue;
}
- expected_length =
- (alg == DIGEST_SHA1) ? HEX_DIGEST_LEN : HEX_DIGEST256_LEN;
- digest_length =
- (alg == DIGEST_SHA1) ? DIGEST_LEN : DIGEST256_LEN;
+ digest_length = crypto_digest_algorithm_get_length(alg);
+ expected_length = digest_length * 2; /* hex encoding */
if (strlen(hexdigest) != expected_length) {
log_warn(LD_DIR, "Wrong length on consensus-digest in detached "