diff options
author | Nick Mathewson <nickm@torproject.org> | 2018-09-25 16:22:11 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2018-09-25 16:22:11 -0400 |
commit | efa978124f067bf75c33c4ff9bba8dbf2f54a4ef (patch) | |
tree | 877cacc564b746bafde6b9cda24d4ea78e1d1ac0 /src/feature/relay | |
parent | 5c86f3c297229515f125c0e06abdc689c90768f4 (diff) | |
download | tor-efa978124f067bf75c33c4ff9bba8dbf2f54a4ef.tar.gz tor-efa978124f067bf75c33c4ff9bba8dbf2f54a4ef.zip |
Extract nickname-checking functions from router.c
Diffstat (limited to 'src/feature/relay')
-rw-r--r-- | src/feature/relay/router.c | 49 | ||||
-rw-r--r-- | src/feature/relay/router.h | 4 |
2 files changed, 1 insertions, 52 deletions
diff --git a/src/feature/relay/router.c b/src/feature/relay/router.c index 494609b5bb..3db7bcf25b 100644 --- a/src/feature/relay/router.c +++ b/src/feature/relay/router.c @@ -3104,55 +3104,6 @@ extrainfo_dump_to_string(char **s_out, extrainfo_t *extrainfo, return result; } -/** Return true iff <b>s</b> is a valid server nickname. (That is, a string - * containing between 1 and MAX_NICKNAME_LEN characters from - * LEGAL_NICKNAME_CHARACTERS.) */ -int -is_legal_nickname(const char *s) -{ - size_t len; - tor_assert(s); - len = strlen(s); - return len > 0 && len <= MAX_NICKNAME_LEN && - strspn(s,LEGAL_NICKNAME_CHARACTERS) == len; -} - -/** Return true iff <b>s</b> is a valid server nickname or - * hex-encoded identity-key digest. */ -int -is_legal_nickname_or_hexdigest(const char *s) -{ - if (*s!='$') - return is_legal_nickname(s); - else - return is_legal_hexdigest(s); -} - -/** Return true iff <b>s</b> is a valid hex-encoded identity-key - * digest. (That is, an optional $, followed by 40 hex characters, - * followed by either nothing, or = or ~ followed by a nickname, or - * a character other than =, ~, or a hex character.) - */ -int -is_legal_hexdigest(const char *s) -{ - size_t len; - tor_assert(s); - if (s[0] == '$') s++; - len = strlen(s); - if (len > HEX_DIGEST_LEN) { - if (s[HEX_DIGEST_LEN] == '=' || - s[HEX_DIGEST_LEN] == '~') { - if (!is_legal_nickname(s+HEX_DIGEST_LEN+1)) - return 0; - } else { - return 0; - } - } - return (len >= HEX_DIGEST_LEN && - strspn(s,HEX_CHARACTERS)==HEX_DIGEST_LEN); -} - /** Forget that we have issued any router-related warnings, so that we'll * warn again if we see the same errors. */ void diff --git a/src/feature/relay/router.h b/src/feature/relay/router.h index d56ddc8a1e..54b57cf7c6 100644 --- a/src/feature/relay/router.h +++ b/src/feature/relay/router.h @@ -14,6 +14,7 @@ #include "lib/testsupport/testsupport.h" #include "feature/nodelist/describe.h" +#include "feature/nodelist/nickname.h" struct curve25519_keypair_t; struct ed25519_keypair_t; @@ -119,9 +120,6 @@ int router_has_orport(const routerinfo_t *router, int extrainfo_dump_to_string(char **s, extrainfo_t *extrainfo, crypto_pk_t *ident_key, const struct ed25519_keypair_t *signing_keypair); -int is_legal_nickname(const char *s); -int is_legal_nickname_or_hexdigest(const char *s); -int is_legal_hexdigest(const char *s); const char *routerinfo_err_to_string(int err); int routerinfo_err_is_transient(int err); |