| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
| |
See discussion at
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3613#note_3332767
|
| |
|
|
|
|
|
|
|
|
| |
This reverts commit 84b31824f317458a2aad6fb021b623935870f5bd.
Reverted, as this is a public API that might actually need to become
`async` at some point.
See discussion at
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3613#note_3332767
|
| | |
|
| | |
|
| |
|
|
|
| |
The `ArtiPath` is included in the `KeyPathError::Arti` outer error type,
so there is no need to include it in `ArtiPathError` too.
|
| | |
|
| |
|
|
|
| |
This makes the error handling around `KeyPath`s a bit more sensible,
IMO, and it will make it easier to extend it for `CTorPath` errors.
|
| |
|
|
|
|
|
|
|
| |
- Shortened the TODO added in cad6f9054a5ff4d16e953fd4617d3893639deeef in the
style of [this maintainer request] for consistency.
[this maintainer request]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2953#note_3197719
Signed-off-by: hashcatHitman <[email protected]>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The `stream` module is client-specific, for the most part, so I am
moving it under `client`. Later on, we will factor out the parts that
can be shared with the relay implementation.
Note: this is a breaking change as the deleted `stream` module was
`pub`. We could've kept the module and reexported from it the public
types from `tor_proto::client::stream`, but I think it's better to have
this `client` namespacing, because it makes the separation between the
client and relay parts clearer.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
This is only used for representing portions of `ArtiPath`s, so let's
rename it accordingly.
|
| |
|
|
|
|
|
| |
`KeyPath::matches` now returns a boolean (because we can't return a
matching "range" for `CTorPaths`, because unlike ArtiPaths, they're not
represented as `String`s, and do not have variable parts that need to be
captured).
|
| |
|
|
|
|
|
|
|
|
| |
There are three places where we query the KeyMgr for an `HsIdKeypair` but all
we really need is the public part. This commit changes those three callsites
to instead use `get::<HsIdKey>`.
This relies on the previous commit, which makes sure that a request for an
`HsIdKey` will always succeed if the keystore has a `HsIdKeypair` with the
same service nickname.
|
| |
|
|
| |
Closes #1124.
|
| |
|
|
|
| |
This alphabetises the imports, ready for us to do some more manual
tidying.
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
Part of #1115
|
| |
|
|
|
|
| |
The offending `ArtiPath` should be included in the error.
Part of #1115
|
| |
|
|
|
|
|
|
|
| |
Originally, these functions converted to and from `ArtiPathComponent`.
In !1931, we replaced `ArtiPathComponent` with `Slug` without renaming
the conversion functions. Since we're converting to and from `Slug` now,
I think it makes sense to rename them too.
Part of #1115
|
| |
|
|
| |
Part of #1271
|
| |
|
|
| |
Part of #1271
|
| |
|
|
|
| |
We're about to stop storing `KP_hs_id` in the keystore, so in
preparation, let's update the callsites that attempt to retrieve it.
|
| | |
|
| |
|
|
|
|
| |
`ArtiPathComponent`s are really just `Slugs`.
Part of #1193, #1092
|
| |
|
|
| |
Part of #1242
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, the subcredentials were computed in `IptEstablisher::launch`
and stored in `RendRequestContext`. This caused long-running services to
report errors like:
```
WARN tor_hsservice::helpers: Problem while accepting rendezvous request: error: Could not process INTRODUCE request: Introduction handshake was invalid: Circuit-extension handshake authentication failed
```
for clients using newer subcredentials than the ones the service had at
the time the IPT was established.
Fixes #1242
|
| |
|
|
|
| |
Closes #1224, by making it more clear that we aren't keeping a
circuit alive indefinitely.
|
| |
|
|
| |
We can add these accessors as needed.
|
| |
|
|
| |
When we implement this, we'll use APIs from the equix crate.
|
| |\ |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Enough of them have turned out to need to be async so far that I
don't think it's a great idea to commit to making any of them
not-async forever. Additionally, we've written the code that uses
these, and having them be async didn't seem to cause any major
trouble.
By the same "we may want to make these more complicated underneath"
argument, we should IMO leave them as fallible.
|
| | | |
|
| |/ |
|
| |
|
|
|
|
|
|
|
| |
It turns out that we can make `IncomingStream::reject()` consume
self, thus making it impossible to hit the double-close error
from outside the `tor-proto` crate.
Also, we rename `StreamTarget::close()` to `close_pending()` to
better reflect its limited applicability.
|
| | |
|
| |
|
|
| |
(We try to avoid making tons and tons of copies of a secret key.)
|
| |
|
|
| |
This will let avoid some copying inside our HSS code.
|
| |
|
|
|
|
|
| |
I think that the reason we added this was in case we needed
different behavior from DataStream; but on reflection it does seem
that we don't. Having a single type here will make things a bit
simpler.
|
| | |
|
| |
|
|
|
|
|
| |
The function never yields anything but an `Ok`, so we can
simplify its type.
(Not a stable feature, so no semver entry needed)
|
| |
|
|
|
| |
This requires yet more plumbing—this time, of HsCircPool and
NetDirProvider.
|
| |
|
|
|
|
|
|
|
| |
When we go to answer a RendRequest, we need to have a few objects
present. This commit makes sure that they're available at the
right places.
We also note a significant problem with the need for a Subcredential
here.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
IntroPointId was RelayIds but that's wrong, because there can be
different IPTs at the same relay - but also because an established IPT
might change its RelayIds.
Use IptLocalId instead, which I think is the type we decided to use
for this, and which is, conveniently, Copy.
And change the variable names to match, everywhere.
Specifically: in places where an intro point is implied (ipt_mgr.rs,
ipt_establish.rs) use the name `lid` everywhere, like in ipt_mgr.rs.
Elsewhere, use `ipt_lid`.
(We could use a longer name, but in that case it should be changed in
ipt_mgr.rs too.)
No actual functional change in this commit.
|
| |
|
|
|
|
|
| |
We need a type that holds a rend_handshake::IntroRequest object
internally, but where we don't materialize that object from the
Introduce2 message inside the MsgHandler, since that's more crypto
than we want to put in that task.
|