| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | |
|
| | |
|
| |
|
|
|
| |
This avoids a future confusion with the new `SpawnBlocking` trait in
async_executors v0.5, and better describes what the trait provides.
|
| |
|
|
|
|
|
|
|
|
|
| |
This took some refactoring, so that I wouldn't need to define 9
different versions of the function. It also required that we change
the behavior of test_with_all_runtimes slightly, so that it asserts
on _any_ failure rather than asserting on most but returning Err()
for others. That in turn required changes to a few of its callers.
There's probably a better way to do all of this macro business, but
this is the best I could find.
|
| |
|
|
|
|
|
|
|
|
|
| |
This commit puts the native-tls crate behind a feature. The feature
is off-by-default in the tor-rtcompat crate, but can be enabled
either from arti or arti-client.
There is an included script that I used to test that tor-rtcompat
could build and run its tests with all subsets of its features.
Closes #300
|
| |
|
|
|
| |
This helps us simplify our code in a few ways, and will help even
more once native_tls is optional.
|
| |
|
|
|
| |
This should help avoid some amount of temptation towards API
proliferation.
|
| | |
|
| |
|
|
|
| |
If we implement our own clone on CompoundRuntime, we no longer need
Clone implementations on our TlsProvider implementations.
|
| | |
|
| |
|
|
|
|
|
|
|
| |
Having separate types here doesn't justify the (very limited)
benefit of distinguishing between the case where we have created an
executor that we own and the case where we have a handle to an
already-running tokio executor.
Part of #301.
|
| | |
|
| | |
|
| |
|
|
|
| |
Also, more comments on why these limitations are safe within the
context of Tor, but you wouldn't want to use them elsewhere.
|
| |
|
|
|
| |
Previously we expected the reader to automatically know why it was
called "SNI", which really isn't fair.
|
| |
|
|
|
| |
This change uses the async-native-tls crate for everything, and
deletes some duplicated code.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is based on @janimo's approach in !74, but diverges in a few
important ways.
1. It assumes that something like !251 will merge, so that we can
have separate implementations for native_tls and rustls compiled
at the same time.
2. It assumes that we can implement this for the futures::io traits
only with no real penalty.
3. It uses the `x509-signature` crate to work around the pickiness of
the `webpki` crate. If webpki eventually solves their
[bug 219](https://github.com/briansmith/webpki/issues/219), we
can remove a lot of that workaround.
Closes #86.
|
| |
|
|
|
| |
We should never use this for anything but making the testing
certificates we use for making sure our TLS implementation works.
|
| |\
| |
| |
| |
| |
| |
| | |
Refactor our Runtime implementations to allow replacement parts
Closes #255
See merge request tpo/core/arti!251
|
| | |
| |
| |
| |
| | |
This will make it easier to implement them using some other TLS
provider as well, without having to duplicate all of our code.
|
| | |
| |
| |
| |
| |
| |
| | |
We're soon going to have our different Runtime types be built as
CompoundRuntime instances. We don't want to expose that detail,
though, so we'll use this macro to make them implement the right
traits.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This type can solve two problems at once.
First, it lets users replace parts of an existing runtime
implementation without replacing the whole thing. For example, you
can use it to override your TcpProvider implementation to solve
problems like #235.
Second, we can use it internally to tor-rtcompat to define Runtimes
piece-by-piece. Mostly we'll use this to separate our Tls
implementations from our implementations of the rest of the Runtime.
|
| | |
| |
| |
| |
| |
| |
| | |
In line with the rest of the renaming.
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/256#note_2771617
|
| | |
| |
| |
| | |
Placates rustfmt
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The docs even say this is about stream.
As @nickm writes in
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/252#note_2771289
we generally call end-to-end connections that are tunneled over Tor
"Streams" to distinguish them from everything else in the Tor
protocols that could possibly be called a "Connection".
That seems to apply here too.
|
| |\ \
| | |
| | |
| | |
| | |
| | |
| | | |
Provide isolate-all-streams function
Closes #279
See merge request tpo/core/arti!252
|
| | | |
| | |
| | |
| | |
| | | |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/252#note_2771291
|
| | | |
| | |
| | |
| | |
| | | |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/252#note_2771289
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | | |
In the usual case, set_isolation_group is awkward.
This is perhaps slightly duplicative with TorClient::isolated_client().
If so then perhaps the *latter* should be abolished.
|
| | | |
| | |
| | |
| | |
| | |
| | | |
No functional change.
This will grow a new variant shortly.
|
| | | |
| | |
| | |
| | |
| | |
| | | |
This is totally not just an exercise to get combined test coverage
for tor-circmgr over 90% because I needed something to do that
wouldn't distract anybody else. :)
|
| | | |
| | |
| | |
| | |
| | |
| | | |
Since it implements a "<=" type relationship, it should be called
"at_least_as_permissive_as()." Since it's a crate-private function,
the long name isn't too bad.
|
| | | |
| | |
| | |
| | | |
This was added by mistake.
|
| |\ \ \
| |_|/
|/| |
| | |
| | |
| | |
| | | |
Provide TorClient::set_default_prefs and clone_with_prefs
Closes #290
See merge request tpo/core/arti!250
|
| | | | |
|
| | |/
| |
| |
| |
| | |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/250#note_2771239
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| | |
This may save quite a bit of copying. The callees don't need to copy
the whole struct; they copy the bits they need.
|
| | |
| |
| |
| | |
These aren't flags. Eg, there's an isolation token in there.
|
| | | |
|
| | |
| |
| |
| |
| |
| | |
As per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/249#note_2771025
It doens't really handle it.
|
| |/
|
|
|
|
|
|
|
| |
read_exact has a loop in it, which we need.
This means we end up separating the two sites that generate the "not a
relay" error, so we need to fish out the error construction.
As per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/249#note_2771023
|
| | |
|
| |
|
|
| |
Discovered by clippy
|
| | |
|
| |\ |
|
| | | |
|