diff options
author | Nick Mathewson <nickm@torproject.org> | 2005-05-23 02:31:53 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2005-05-23 02:31:53 +0000 |
commit | 11a64692c3f5cd4c944b00243619431a4e7ae7b3 (patch) | |
tree | b633e3691e407c8a57898411eb4f2b1477ef7383 /src | |
parent | eec9107093b34208e933084248c7d09f19414a5d (diff) | |
download | tor-11a64692c3f5cd4c944b00243619431a4e7ae7b3.tar.gz tor-11a64692c3f5cd4c944b00243619431a4e7ae7b3.zip |
Make hashed controller password encoding use hex not base64; this makes it possible to write a controller without base64
svn:r4279
Diffstat (limited to 'src')
-rw-r--r-- | src/or/config.c | 2 | ||||
-rw-r--r-- | src/or/control.c | 13 | ||||
-rw-r--r-- | src/or/main.c | 7 |
3 files changed, 13 insertions, 9 deletions
diff --git a/src/or/config.c b/src/or/config.c index a161c980c2..d29de30800 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -1555,7 +1555,7 @@ options_validate(or_options_t *options) if (options->HashedControlPassword) { if (decode_hashed_password(NULL, options->HashedControlPassword)<0) { - log_fn(LOG_WARN,"Bad HashedControlPassword: wrong length or bad base64"); + log_fn(LOG_WARN,"Bad HashedControlPassword: wrong length or bad encoding"); result = -1; } } diff --git a/src/or/control.c b/src/or/control.c index 42db20098d..564bb1b396 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -469,9 +469,16 @@ int decode_hashed_password(char *buf, const char *hashed) { char decoded[64]; - if (base64_decode(decoded, sizeof(decoded), hashed, strlen(hashed)) - != S2K_SPECIFIER_LEN+DIGEST_LEN) { - return -1; + if (!strcmpstart(hashed, "16:")) { + if (base16_decode(decoded, sizeof(decoded), hashed+3, strlen(hashed+3))<0 + || strlen(hashed+3) != (S2K_SPECIFIER_LEN+DIGEST_LEN)*2) { + return -1; + } + } else { + if (base64_decode(decoded, sizeof(decoded), hashed, strlen(hashed)) + != S2K_SPECIFIER_LEN+DIGEST_LEN) { + return -1; + } } if (buf) memcpy(buf, decoded, sizeof(decoded)); diff --git a/src/or/main.c b/src/or/main.c index fdaaddbb72..51f18c0e6e 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -1317,11 +1317,8 @@ static void do_hash_password(void) secret_to_key(key+S2K_SPECIFIER_LEN, DIGEST_LEN, get_options()->command_arg, strlen(get_options()->command_arg), key); - if (base64_encode(output, sizeof(output), key, sizeof(key))<0) { - log_fn(LOG_ERR, "Unable to compute base64"); - } else { - printf("%s",output); - } + base16_encode(output, sizeof(output), key, sizeof(key)); + printf("16:%s\n",output); } #ifdef MS_WINDOWS_SERVICE |