summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-07-13test: Add v3 service config and registration testDavid Goulet
This tests our hs_config.c API to properly load v3 services and register them to the global map. It does NOT test the service object validity, that will be the hs service unit test later on. At this commit, we have 100% code coverage of hs_config.c. Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-07-13hs: Add rend_service_init()David Goulet
Initialize both the global and staging service lists. Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-07-13prop224: Add a function to check for invalid optsDavid Goulet
Every hidden service option don't apply to every version so this new function makes sure we don't have for instance an option that is only for v2 in a v3 configured service. This works using an exclude lists for a specific version. Right now, there is only one option that is not allowed in v3. The rest is common. Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-07-13prop224: Load and/or generate v3 service keysDavid Goulet
Try to load or/and generate service keys for v3. This write both the public and private key file to disk along with the hostname file containing the onion address. Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-07-13prop224: Service address creation/validationDavid Goulet
This also adds unit test and a small python script generating a deterministic test vector that a unit test tries to match. Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-07-13prop224: Configure v3 service from optionsDavid Goulet
This commit adds the support in the HS subsystem for loading a service from a set of or_options_t and put them in a staging list. To achieve this, service accessors have been created and a global hash map containing service object indexed by master public key. However, this is not used for now. It's ground work for registration process. Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-07-13test: Add HS v2 service configuration unit testsDavid Goulet
Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-07-13hs: Use v3 maximum intro points value when decoding v3David Goulet
Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-07-13prop224: Add a init/free_all function for the whole subsystemDavid Goulet
Introduces hs_init() located in hs_common.c which initialize the entire HS v3 subsystem. This is done _prior_ to the options being loaded because we need to allocate global data structure before we load the configuration. The hs_free_all() is added to release everything from tor_free_all(). Note that both functions do NOT handle v2 service subsystem but does handle the common interface that both v2 and v3 needs such as the cache and circuitmap. Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-07-13prop224: Add hs_config.{c|h} with a refactoringDavid Goulet
Add the hs_config.{c|h} files contains everything that the HS subsystem needs to load and configure services. Ultimately, it should also contain client functions such as client authorization. This comes with a big refactoring of rend_config_services() which has now changed to only configure a single service and it is stripped down of the common directives which are now part of the generic handler. This is ground work for prop224 of course but only touches version 2 services and add XXX note for version 3. Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-07-13prop224: Initial import of hs_service_tDavid Goulet
This object is the foundation of proposal 224 service work. It will change and be adapted as it's being used more and more in the codebase. So, this version is just a basic skeleton one that *will* change. Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-07-07prop224: Add common intropoint objectDavid Goulet
Groundwork for more prop224 service and client code. This object contains common data that both client and service uses. Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-07-07Merge branch 'bug17750_029_squashed'Nick Mathewson
2017-07-07Comment that failure schedules always use exponential backoffteor
2017-07-07Refactor exponential backoff multipliers into macrosteor
There are only so many times you can type "4".
2017-07-07Add regression tests for 17750 and 20534teor
2017-07-07Use download_status_get_next_attempt_at() more oftenteor
This guards against future occurrences of 17750.
2017-07-07Give correct bounds in next_random_exponential_delay() commentteor
2017-07-07Make clients try fallbacks before authoritiesteor
Make clients wait for 6 seconds before trying to download their consensus from an authority. Fixes bug 17750, bugfix on 0.2.8.1-alpha.
2017-07-07Fix the expected bug warning in dir/param_voting_lookup testsNick Mathewson
2017-07-07Merge branch 'bug21495'Nick Mathewson
2017-07-07Fix a couple of clang warningsNick Mathewson
2017-07-07Merge branch 'ticket21859_032_01_squashed'Nick Mathewson
2017-07-07Fix wide linesNick Mathewson
2017-07-07Use LD_BUG, not LOG_PROTOCOL_WARN, for bad-purpose cases.Nick Mathewson
2017-07-07Hide crypto_digest_t again and use an accessor for tests.George Kadianakis
2017-07-07Explicit length checks in create_rend_cpath().George Kadianakis
Had to also edit hs_ntor_circuit_key_expansion() to make it happen.
2017-07-07Explicit length checks in circuit_init_cpath_crypto().George Kadianakis
2017-07-07Rename get_rend_cpath() to create_rend_cpath().George Kadianakis
based on Nick's review.
2017-07-07Rename rend_circuit_validate_purpose() based on Nick's review.George Kadianakis
2017-07-07Turn some warnings into bugs and non-fatal asserts.George Kadianakis
2017-07-07Improve docs based on Nick's review.George Kadianakis
2017-07-07test: Add service-side unittests for e2e rendezvous circuits.George Kadianakis
2017-07-07test: Add client-side unittests for e2e rend circuits.George Kadianakis
2017-07-07test: Move some test code to test helpers.George Kadianakis
Move code to create connection streams and rend_data structures to test_helpers so that we can use them from the e2e rendezvous circuit unittests.
2017-07-07test: Crypto groundwork for e2e circuit unittests.George Kadianakis
- Move some crypto structures so that they are visible by tests. - Introduce a func to count number of hops in cpath which will be used by the tests. - Mark a function as mockable.
2017-07-07test: Introduce hs_client_note_connection_attempt_succeeded().George Kadianakis
This commit paves the way for the e2e circuit unittests. Add a stub for the prop224 equivalent of rend_client_note_connection_attempt_ended(). That function was needed for tests, since the legacy function would get called when we attach streams and our client-side tests would crash with assert failures on rend_data. This also introduces hs_client.[ch] to the codebase.
2017-07-07prop224: Introduce e2e rendezvous circuit code.David Goulet
This commit adds most of the work of #21859. It introduces hs_circuit.c functions that can handle the setup of e2e circuits for prop224 hidden services, and also for legacy hidden service clients. Entry points are: prop224 circuits: hs_circuit_setup_e2e_rend_circ() legacy client-side circuits: hs_circuit_setup_e2e_rend_circ_legacy_client() This commit swaps the old rendclient code to use the new API. I didn't try to accomodate the legacy service-side code in this API, since that's too tangled up and it would mess up the new API considerably IMO (all this service_pending_final_cpath_ref stuff is complicated and I didn't want to change it). Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-07-07Refactor legacy code to support hs_ident along with rend_data.George Kadianakis
The legacy HS circuit code uses rend_data to match between circuits and streams. We refactor some of that code so that it understands hs_ident as well which is used for prop224.
2017-07-07Refactor circuit_init_cpath_crypto() to do prop224 rend circuits.George Kadianakis
circuit_init_cpath_crypto() is responsible for creating the cpath of legacy SHA1/AES128 circuits currently. We want to use it for prop224 circuits, so we refactor it to create circuits with SHA3-256 and AES256 as well. Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-07-07Refactor the HS ntor key expansion to fit the e2e circuit API.George Kadianakis
We want to use the circuit_init_cpath_crypto() function to setup our cpath, and that function accepts a key array as input. So let's make our HS ntor key expansion function also return a key array as output, instead of a struct. Also, we actually don't need KH from the key expansion, so the key expansion output can be one DIGEST256_LEN shorter. See here for more info: https://trac.torproject.org/projects/tor/ticket/22052#comment:3
2017-07-07prop224: Add connection and circuit identifier objectDavid Goulet
Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-07-07Avoid a scan_build warning in dirvote_get_intermediate_param_valueNick Mathewson
Fixes bug 21495.
2017-07-07Merge branch 'maint-0.3.1'Nick Mathewson
2017-07-07Merge branch 'maint-0.3.0' into maint-0.3.1Nick Mathewson
This is an "ours" commit to avoid taking the fix for 22838, which we already have here.
2017-07-07Merge branch 'maint-0.2.9' into maint-0.3.0Nick Mathewson
2017-07-07Merge branch 'maint-0.2.8' into maint-0.2.9Nick Mathewson
2017-07-07Merge branch 'bug22838_028' into maint-0.2.8Nick Mathewson
2017-07-07mingw fix: avoid "unused var" warning.Nick Mathewson
This is a backport of 19615bce64cd381a925bc3910120ac39ca918e7c to fix bug 22838.
2017-07-07Merge branch 'maint-0.3.1'Nick Mathewson