Loading src/or/config.c +1 −1 Original line number Diff line number Diff line Loading @@ -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; } } Loading src/or/control.c +10 −3 Original line number Diff line number Diff line Loading @@ -469,10 +469,17 @@ int decode_hashed_password(char *buf, const char *hashed) { char decoded[64]; 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)); return 0; Loading src/or/main.c +2 −5 Original line number Diff line number Diff line Loading @@ -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 Loading Loading
src/or/config.c +1 −1 Original line number Diff line number Diff line Loading @@ -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; } } Loading
src/or/control.c +10 −3 Original line number Diff line number Diff line Loading @@ -469,10 +469,17 @@ int decode_hashed_password(char *buf, const char *hashed) { char decoded[64]; 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)); return 0; Loading
src/or/main.c +2 −5 Original line number Diff line number Diff line Loading @@ -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 Loading