Ian Jackson
b982ee678d
Tidy up an unused import warning
...
Now
cargo +stable clippy --locked --offline --workspace --all-targets
is clean.
2023-03-28 15:49:45 +01:00
Ian Jackson
5ff24c9f84
Pass HS identity to hsclient connection function
...
Obviously it will need this!
2023-03-28 15:49:45 +01:00
Ian Jackson
df8e4dd497
Pass HsCircPool to hsclient connect function, not CircMgr (fmt)
2023-03-28 15:49:45 +01:00
Ian Jackson
9b6be7eaa7
Pass HsCircPool to hsclient connect function, not CircMgr
...
We separated this out in the circmgr API. This is what the HS client
needs. It doesn't want to participate in the general circuit pool.
2023-03-28 15:49:45 +01:00
Ian Jackson
00e522a91a
Add some missing imports
...
Now
nailing-cargo +stable clippy -p tor-hsclient --all-features --all-targets
actually works.
squash! Add some missing imports
2023-03-28 15:49:45 +01:00
Gabriela Moldovan
1d4069cc7f
Use the type system to enforce use of blinded keys.
...
Hidden services use blinded singing keys derived from the identity key
to sign descriptor signing keys.
Before this patch, the hidden descriptor builder represented its blinded
signing keys (`blinded_id`) as plain `ed25519::Keypair`s. This was not
ideal, as there was nothing preventing the caller from accidentally
initializing `blinded_id` with an unblinded keypair.
This introduces a new `HsBlindKeypair` type to represent blinded
keypairs.
Signed-off-by: Gabriela Moldovan <gabi@torproject.org>
2023-03-27 11:45:51 +01:00
Nick Mathewson
4af2c2ec33
tor_client: Add some example code for BridgeConfig.
...
Closes #791
2023-03-24 16:25:10 -04:00
Nick Mathewson
455a7a7109
arti-client: Make TransportConfigListBuilder public.
...
Without this there's no convenient way to add a transport without
messing with serde/toml.
Found while working on #791
2023-03-24 16:25:10 -04:00
Gabriela Moldovan
71686a9c49
Use transparent structs instead of builders.
...
The consensus seems to be the builders don't add much value, see [this comment].
[this comment]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1070#note_2889488
Signed-off-by: Gabriela Moldovan <gabi@torproject.org>
2023-03-24 18:58:34 +00:00
Gabriela Moldovan
6da39c0093
Refactor the inner doc tests to be more DRY.
...
Signed-off-by: Gabriela Moldovan <gabi@torproject.org>
2023-03-24 18:58:34 +00:00
Gabriela Moldovan
2fda37f5ea
Remove `NetdocText` and replace its uses with `String`.
...
`NetdocText` is a wrapper around a `String` and a type marker. The type
annotation proved of limited use, and made the netdoc builder API
somewhat awkward to use.
Signed-off-by: Gabriela Moldovan <gabi@torproject.org>
2023-03-24 18:58:34 +00:00
Gabriela Moldovan
8d0d52f193
Remove some unnecessary visibility restrictions.
...
Signed-off-by: Gabriela Moldovan <gabi@torproject.org>
2023-03-24 18:58:34 +00:00
Gabriela Moldovan
c166c878fe
Create a new `IntroPointDesc` type.
...
Unlike `hsdesc::IntroPointDesc`, `hsdesc::build::IntroPointDesc`
represents link specifiers as `LinkSpec`s rather than
`UnparsedLinkSpec`s.
Since this is a general-purpose representation of an introduction point
and not merely an intermediate representation for decoding/encoding, it
will probably need to be factored out of `tor-netdoc` at some point.
Signed-off-by: Gabriela Moldovan <gabi@torproject.org>
2023-03-24 18:58:33 +00:00
Gabriela Moldovan
1e3214a8bd
Use the less ambiguous inner/middle/outer terminology.
2023-03-24 18:57:53 +00:00
Gabi Moldovan
a1074c0027
Add builder for encoding hidden service descriptors.
...
This introduces the `NetdocBuilder` trait described in
`netdoc-builder.md` and a new `tor-netdoc::doc::hsdesc::build` module,
which exports the `HsDescBuilder`. Hidden services will use
`HsDescBuilder` to build and encode hidden service descriptors.
There are several TODOs in the code that I'm planning to address
separately.
Partially addresses #745 .
Signed-off-by: Gabriela Moldovan <gabi@torproject.org>
2023-03-24 18:57:49 +00:00
Gabriela Moldovan
89ca965d2a
Define constants for `AuthClient` field lengths.
...
These are used in multiple places (and will also be used by the HS
descriptor encoder later on), so let's make them named constants.
Signed-off-by: Gabriela Moldovan <gabi@torproject.org>
2023-03-24 18:54:35 +00:00
Gabriela Moldovan
1394a81142
Implement `ItemArgument` for `String`.
...
This makes some code a bit more concise, as it allows us to make
`Strings` into `ItemArgument`s without calling `.as_str()`.
Signed-off-by: Gabriela Moldovan <gabi@torproject.org>
2023-03-24 18:54:35 +00:00
Ian Jackson
ba88761520
Merge branch 'openssl_update' into 'main'
...
Update required openssl version
See merge request tpo/core/arti!1077
2023-03-24 12:32:00 +00:00
Nick Mathewson
3459d39906
Update required openssl version
...
cargo-audit is complaining about 0.10.45.
2023-03-24 08:02:59 -04:00
Dimitris Apostolou
629fa80674
Fix typos
2023-03-24 09:56:08 +02:00
Alexander Færøy
f923e403f0
Merge branch 'paths' into 'main'
...
Do minimal $ and ~ handling even without expand-paths and fix build
Closes #790
See merge request tpo/core/arti!1069
2023-03-23 17:31:04 +00:00
Alexander Færøy
6fae5cc7e9
Merge branch 'upgrade_dirs' into 'main'
...
Bump to the lastest versions of dirs and directories.
See merge request tpo/core/arti!1072
2023-03-23 16:00:50 +00:00
Nick Mathewson
a7b238483e
Add an experimental circuit accessor to DataStream.
...
Closes #784 .
2023-03-23 09:18:42 -04:00
Ian Jackson
b6f5c066b4
Apply deferred rustfmt churn
2023-03-23 11:50:18 +00:00
Ian Jackson
9d7983a6ea
arti-client: Include redacted HsId in ObtainHsCircuit error
...
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1071/diffs?commit_id=580fe1118dbbbfa086d11b28e3e26d7c91afe21c#fbd7ab2d6d0a5b515697d4f9f99a42ebd508aa4b_153_165
2023-03-23 11:50:18 +00:00
Ian Jackson
1f2728caab
safelog: impl From<T> for Redacted<T>
...
I think this is uncontroversial; we already have it for Sensitive.
2023-03-23 11:50:18 +00:00
Ian Jackson
58311571d9
arti-client: Fix wording of docs for TorClient::isolation
2023-03-23 11:50:18 +00:00
Nick Mathewson
8a11e0f6ad
arti-client: Strengthen an HS todo
2023-03-23 11:50:18 +00:00
Ian Jackson
b834535347
tor-proto: Feature-conditionalise some enum variants
...
This avoids some dead code warnings when building without send-control-msg.
2023-03-23 11:50:18 +00:00
Ian Jackson
93809cc594
tor-proto: Split off send-control-msg feature
2023-03-23 11:50:18 +00:00
Ian Jackson
14e5219f55
arti: Provide onion-service-client feature
...
Here I use the name I propose in !1039 .
2023-03-23 11:50:18 +00:00
Ian Jackson
cb93d1bee7
arti-client: Call tor-hsclient to create HS connections
...
Obviously this still doesn't work because the actual impl in hsclient
is just a todo!().
2023-03-23 11:50:18 +00:00
Ian Jackson
3d33ad7fdf
arti-client: Create an HsClientConnector
2023-03-23 11:50:18 +00:00
Ian Jackson
a2aa701eb6
arti-client: Move client stream creation out of match, in connect
...
We want this part for HS too.
2023-03-23 11:50:14 +00:00
Ian Jackson
ca73dcfb31
arti-client: Break out TorClient::isolation(prefs)
...
We're going to want to reuse this.
Also: rename StreamPrefs::isolation and update the docs, to better
reflect its rather limited functionality. The new
TorClient::isolation is the only call site.
2023-03-23 11:50:14 +00:00
Ian Jackson
c36177733d
tor-hsclient: Have the public API take StreamIsolation
2023-03-23 11:50:14 +00:00
Ian Jackson
adc180294a
tor-hsclient: impl HasKind for errors
2023-03-23 11:50:14 +00:00
Ian Jackson
2edd71a4f0
tor-hsclient: Swap errors so Bug comes last
...
This seems more consistent with the way it's done elsewhere.
2023-03-23 11:50:14 +00:00
Ian Jackson
a2f4260666
tor-hsclient: Document clone-nature of HsClientConnector
2023-03-23 11:50:14 +00:00
Nick Mathewson
19cdb239bf
Bump to the lastest versions of dirs and directories.
2023-03-22 15:15:42 -04:00
Nick Mathewson
dffaf60e4a
hspool: simplify loop and add a maximum
2023-03-22 12:35:41 -04:00
Nick Mathewson
bd80125d73
hspool: Clarify/document more TODO HS items.
2023-03-22 12:35:41 -04:00
Nick Mathewson
19a229155c
circmgr: Make a separate SupportedCircUsage for HS stuff
...
This uncovered a bug: NoUsage wasn't correct for Hs circuits because
of its behavior with channel_usage().
2023-03-22 12:35:41 -04:00
Nick Mathewson
0521aa855e
tor-proto: document deep-copy in ClientCirc::path()
2023-03-22 12:35:41 -04:00
Nick Mathewson
35967ca38d
circmgr: Declare builder() unconditionally.
...
(Still, only expose it when experimental-api is enabled.)
2023-03-22 12:35:41 -04:00
Nick Mathewson
5b3c6b6bb3
hspool: Tweak comments and add more TODOs.
2023-03-22 12:35:41 -04:00
Nick Mathewson
fcb4df8b5b
circmgr: hspool now launches circuits in the background.
...
The prediction and scheduling logic here is quite primitive;
we should probably refactor it considerably. This should be good
enough for now, though.
2023-03-22 12:35:41 -04:00
Nick Mathewson
a14214fae6
circmgr: Add an actual pool to HsCircPool.
...
We now have support for a pool of pre-build circuits that we can use
for HS-related purposes, and we take circuits from this pool as
needed.
Nothing populates or cleans the circuit pool yet.
2023-03-22 12:35:41 -04:00
Nick Mathewson
adafae8b3f
circmgr: Begin an HS circuit pool structure
...
This is now enough to launch circuits on demand. It still needs to
pre-build the first three hops, and to retry on failure.
2023-03-22 11:52:17 -04:00
Nick Mathewson
bb47d42315
proto: Stabilize ClientCirc::n_hops.
2023-03-22 11:52:17 -04:00