- Jul 12, 2015
-
-
Nick Mathewson authored
-
Nick Mathewson authored
This is an "ours" merge to avoid bumping the version number in master.
-
Nick Mathewson authored
-
- Jul 11, 2015
-
-
Nick Mathewson authored
-
Nick Mathewson authored
-
- Jul 10, 2015
-
-
Nick Mathewson authored
Apparently its mingw headers are missing some stuff.
-
Nick Mathewson authored
-
- Jul 09, 2015
-
-
Nick Mathewson authored
-
Nick Mathewson authored
-
-
Add a new and slow unit test that checks if libscrypt_scrypt() and EBP_PBE_scrypt() yield the same keys from test vectors. squash! Assert interoperability betweeen libscrypt and OpenSSL EBP_PBE_scrypt(). squash! Assert interoperability betweeen libscrypt and OpenSSL EBP_PBE_scrypt(). squash! Assert interoperability betweeen libscrypt and OpenSSL EBP_PBE_scrypt().
-
Nick Mathewson authored
-
Nick Mathewson authored
-
Nick Mathewson authored
-
Nick Mathewson authored
-
Nick Mathewson authored
-
Signed-off-by:
David Goulet <dgoulet@ev0ke.net>
-
When cleaning up extra circuits that we've opened for performance reason, we need to count all the introduction circuit and not only the established ones else we can end up with too many introduction points. This also adds the check for expiring nodes when serving an INTRODUCE cell since it's possible old clients are still using them before we have time to close them. Signed-off-by:
David Goulet <dgoulet@ev0ke.net>
-
To upload a HS descriptor, this commits makes it that we wait for all introduction point to be fully established. Else, the HS ends up uploading a descriptor that may contain intro points that are not yet "valid" meaning not yet established or proven to work. It could also trigger three uploads for the *same* descriptor if every intro points takes more than 30 seconds to establish because of desc_is_dirty being set at each intro established. To achieve that, n_intro_points_established varialbe is added to the rend_service_t object that is incremented when we established introduction point and decremented when we remove a valid intro point from our list. The condition to upload a descriptor also changes to test if all intro points are ready by making sure we have equal or more wanted intro points that are ready. The desc_id_dirty flag is kept to be able to still use the RendInitialPostPeriod option. This partially fixes #13483. Signed-off-by:
David Goulet <dgoulet@ev0ke.net>
-
There is a case where if the introduction circuit fails but the node is still in the consensus, we clean up the intro point and choose an other one. This commit fixes that by trying to reuse the existing intro point with a maximum value of retry. A retry_nodes list is added to rend_services_introduce() and when we remove an invalid intro points that fits the use case mentionned before, we add the node to the retry list instead of removing it. Then, we retry on them before creating new ones. This means that the requirement to remove an intro point changes from "if no intro circuit" to "if no intro circuit then if no node OR we've reached our maximum circuit creation count". For now, the maximum retries is set to 3 which it completely arbitrary. It should also at some point be tied to the work done on detecting if our network is down or not. Fixes #8239 Signed-off-by:
David Goulet <dgoulet@ev0ke.net>
-
The reasoning for refactoring this function is that removing the introduction point adaptative algorithm (#4862) ended up changing quite a bit rend_services_introduce(). Also, to fix some open issues (#8239, #8864 and #13483), this work had to be done. First, this removes time_expiring variable in an intro point object and INTRO_POINT_EXPIRATION_GRACE_PERIOD trickery and use an expiring_nodes list where intro nodes that should expire are moved to that list and cleaned up only once the new descriptor is successfully uploaded. The previous scheme was adding complexity and arbitrary timing to when we expire an intro point. We keep the intro points until we are sure that the new descriptor is uploaded and thus ready to be used by clients. For this, rend_service_desc_has_uploaded() is added to notify the HS subsystem that the descriptor has been successfully uploaded. The purpose of this function is to cleanup the expiring nodes and circuits if any. Secondly, this adds the remove_invalid_intro_points() function in order to split up rend_services_introduce() a bit with an extra modification to it that fixes #8864. We do NOT close the circuit nor delete the intro point if the circuit is still alive but the node was removed from the consensus. Due to possible information leak, we let the circuit and intro point object expire instead. Finally, the whole code flow is simplified and large amount of documentation has been added to mostly explain the why of things in there. Fixes #8864 Signed-off-by:
David Goulet <dgoulet@ev0ke.net>
-
- Jul 07, 2015
-
-
teor authored
Use the sandbox in tor_open_cloexec, whether or not O_CLOEXEC is defined. Patch by "teor". Fix on 0.2.3.1-alpha.
-
- Jul 06, 2015
-
-
rl1987 authored
-
Yawning Angel authored
The runtime sanity checking is slightly different from the optimized basepoint stuff in that it uses a given implementation's self tests if available, and checks if signing/verification works with a test vector from the IETF EdDSA draft. The unit tests include a new testcase that will fuzz donna against ref0, including the blinding and curve25519 key conversion routines. If this is something that should be done at runtime (No?), the code can be stolen from there. Note: Integrating batch verification is not done yet.
-
Yawning Angel authored
Integration work scavanged from nickm's `ticket8897_9663_v2` branch, with minor modifications. Tor will still sanity check the output but now also attempts to catch extreme breakage by spot checking the optimized implementation vs known values from the NaCl documentation. Implements feature 9663.
-
Yawning Angel authored
This needs to be done to allow for the possibility of removing the ref10 code at a later date, though it is not performance critical. When integrated by kludging it into tor, it passes unit tests, and is twice as fast.
-
Yawning Angel authored
Integrating it the "wrong" way into common/crypto_ed25519.c passes `make check`, and there appear to be some known answer tests for this, so I assume I got it right. Blinding a public key goes from 139.10 usec to 70.78 usec using ed25519-donna (NB: Turboboost/phase of moon), though the code isn't critical path, so supporting it is mostly done for completeness.
-
Yawning Angel authored
Integrate ed25519-donna into the build process, and provide an interface that matches the `ref10` code. Apart from the blinding and Curve25519 key conversion, this functions as a drop-in replacement for ref10 (verified by modifying crypto_ed25519.c). Tests pass, and the benchmarks claim it is quite a bit faster, however actually using the code requires additional integration work.
-
Yawning Angel authored
This is a clean copy of ed25519-donna as of commit: 8757bd4cd209cb032853ece0ce413f122eef212c https://github.com/floodyberry/ed25519-donna
-
- Jul 03, 2015
-
-
Nick Mathewson authored
Instead of having a 30-second timer be the only way to end the test, add a 2 second shutdown timer when the test is actually about to be over.
-
- Jul 02, 2015
-
-
- Jun 29, 2015
-
-
Nick Mathewson authored
-
Nick Mathewson authored
-
Nick Mathewson authored
-
Nick Mathewson authored
This should prevent duplicated code, and lower the likelihood of accidentally making them inconsistent.
-
David Goulet authored
This is a way to specify the amount of introduction points an hidden service can have. Maximum value is 10 and the default is 3. Fixes #4862 Signed-off-by:
David Goulet <dgoulet@ev0ke.net>
-
David Goulet authored
Partially fixes #4862 Signed-off-by:
David Goulet <dgoulet@ev0ke.net>
-
- Jun 28, 2015
-
-
Nick Mathewson authored
-
Nick Mathewson authored
-
- Jun 27, 2015
-
-
Nick Mathewson authored
-