Nick Mathewson
0c43801598
netdir: remove some now-needless warning suppressions.
2023-06-29 08:19:37 -04:00
Nick Mathewson
f2a6754c88
dirmgr: use voting_period.
2023-06-29 08:19:37 -04:00
Nick Mathewson
a9da1283bc
netdir: remove unnecessary wraps from srv_interval, extract_srvs
2023-06-29 08:19:37 -04:00
Nick Mathewson
4803f6447d
netdir: Move voting_period() to netdoc::Lifetime
...
I was going to add a comment about "doing this if we need the voting
period anywhere else" but it turns out that we also use it in dirmgr.
2023-06-29 08:19:37 -04:00
Nick Mathewson
6c06acc02c
arti_client: Add a warning comment to TorAddrError.
2023-06-29 08:16:51 -04:00
Nick Mathewson
800061e70e
arti_client: Move BadOnion from TorAddrError to ErrorDetail.
...
This variant can never be constructed when parsing a TorAddr, so it
doesn't make sense to have it in TorAddrError: the use can never see
it unless they enable `error_detail`.
Not a semver break because the client feature is not yet stable.
Closes #932 .
2023-06-29 08:16:51 -04:00
gabi-250
b059e02093
Merge branch 'keymgr-x25519-keys' into 'main'
...
keymgr: Add support for x25519 keys.
Closes #900
See merge request tpo/core/arti!1321
2023-06-29 11:46:03 +00:00
Gabriela Moldovan
294bb728cf
keymgr: Add a TODO about implementing and testing has_key_bundle.
2023-06-29 12:10:35 +01:00
Gabriela Moldovan
68c91223f1
keymgr: Add some basic insert and remove tests.
2023-06-29 12:10:35 +01:00
Gabriela Moldovan
4d5f414017
keymgr: Add assert_found! test helper.
2023-06-29 11:54:54 +01:00
Gabriela Moldovan
91573c6cbc
keymgr: Add some key retrieval tests for ArtiNativeKeyStore.
2023-06-29 11:54:54 +01:00
Gabriela Moldovan
fd3b42688d
keymgr: Add a gen_keys param to init_keystore.
...
This will enable future tests to optionally initialize the test key
store with some test keys.
2023-06-29 11:54:54 +01:00
Gabriela Moldovan
bc447524c2
keymgr: Add tests for ArtiNativeKeyStore::key_path.
2023-06-29 11:54:54 +01:00
Gabriela Moldovan
89d52fff3e
keymgr: Derive Debug for ArtiNativeKeyStore.
2023-06-29 11:49:31 +01:00
Gabriela Moldovan
ff02270307
keymgr: Add tests for ssh key handling.
...
Part of #895
2023-06-29 11:49:31 +01:00
Gabriela Moldovan
16a7bb4624
keymgr: Return the key, not Box<()>.
...
This fixes a bug which caused the function to always return a
type-erased `()` instead of the actual key!
2023-06-29 11:49:31 +01:00
gabi-250
d999ea07ba
Merge branch 'config-option' into 'main'
...
arti cfg tests: exception declaration improvements
See merge request tpo/core/arti!1330
2023-06-29 10:43:00 +00:00
Nick Mathewson
c1ab36dbec
Merge branch 'cleanup-todos-circmgr' into 'main'
...
Resolve a few "TODO HS" items in circmgr.
See merge request tpo/core/arti!1322
2023-06-28 20:14:24 +00:00
Nick Mathewson
48f7fbbc96
Merge branch 'lifecycle_doc_tweaks' into 'main'
...
Documentation, mostly on channel and circuit lifecycles
See merge request tpo/core/arti!1318
2023-06-28 20:06:58 +00:00
Nick Mathewson
02878518b8
circmgr: Refactor duplicate logic.
...
These two functions are only slightly different, and benefit from
taking a Fn.
2023-06-28 15:28:52 -04:00
Nick Mathewson
6affb50c1a
circmgr: Remove a "TODO HS" about path restrictions.
...
I looked through the C tor source code and couldn't find any
additional path restrictions.
2023-06-28 15:28:52 -04:00
Nick Mathewson
d32ba9ed18
circmgr: Defer two "TODO HS" in hspool
...
One of these is test-related; one is vanguards-related.
2023-06-28 15:28:52 -04:00
Nick Mathewson
4ad1a5c6ac
ChanMgr: Tweak documentation a bit.
...
Adjust formatting, add more references to lower-level APIs, and
clarify lifetimes a little more.
2023-06-28 15:26:22 -04:00
Nick Mathewson
2944d4f91f
proto: ClientCirc: remove now-obsolete note on Clone-ness
2023-06-28 15:26:22 -04:00
Nick Mathewson
644c51173a
proto: document ClientCirc lifecycle better.
2023-06-28 15:26:22 -04:00
Nick Mathewson
e8e95ec03b
proto: document channel lifecycle better.
2023-06-28 15:26:22 -04:00
Nick Mathewson
4003e032d6
Remove spurious todo-hs items in tor-cert.
...
I am not sure why we wrote these comments, but they are incorrect:
I've investigated the C code and found only 3 key types. The
"unimplemented" types that the TODO comment here complains about are
in fact certificate types.
2023-06-28 15:18:13 -04:00
Ian Jackson
47b577d7a0
tor-netdoc: Placate clippy (fmt)
2023-06-28 18:57:06 +01:00
Ian Jackson
56813d9650
tor-netdoc: Placate clippy
2023-06-28 18:56:49 +01:00
Alexander Færøy
f136e8ac41
Merge branch 'more-keymgr-todos' into 'main'
...
keymgr: Downgrade "TODO hs" to "TODO HSS".
See merge request tpo/core/arti!1334
2023-06-28 17:30:43 +00:00
Ian Jackson
8f1a71850c
tor-hsclient: Handle handshake completion error correctly
2023-06-28 17:14:45 +01:00
Ian Jackson
9216f628f1
tor-hsclient: Rename RendezvousCompletionCircuit from RendezvousCompletion
...
We need to handle errors during the handshake. That also produces a
`tor_proto::Error` but we want to print a different message for that,
so let's rename this before adding the new variant.
2023-06-28 17:14:26 +01:00
Ian Jackson
4eb3e3b6ec
tor-hsclient: Move handling of Bug to new section
...
It was wrong where ti was.
2023-06-28 17:14:26 +01:00
Ian Jackson
18478b47a7
tor-hsclient: Make RendPtIdentityForError use RelayIds
...
Since arti!1233 this is trivial.
2023-06-28 16:49:49 +01:00
Ian Jackson
4d071d1c07
tor-hsclient: Use RendPtIdentityForError in more places
...
For some reason this wasn't used in the actual errors,
although it *was* used in the types of the functions etc.
2023-06-28 16:47:55 +01:00
Gabriela Moldovan
609e6ce7c7
keymgr: Downgrade "TODO hs" to "TODO HSS".
...
These TODOs can be deferred for now: we're not declaring the keymgr APIs
stable until we add support for hidden services.
2023-06-28 16:44:06 +01:00
Ian Jackson
8908d39872
tor-netdoc: Test hsdescs inners with a variety of IPT counts (fmt)
2023-06-28 16:29:05 +01:00
Ian Jackson
de63a6092d
tor-netdoc: Test hsdescs inners with a variety of IPT counts
2023-06-28 16:28:19 +01:00
Ian Jackson
cf4adad96e
tor-netdoc: hsdesc: Disregard intro points after the MAX'th
2023-06-28 16:28:11 +01:00
Ian Jackson
0e2f804d8f
tor-netdoc: Reject hsdescs with no intro points
...
None of the existing NetdocErrorKinds seemed right.
2023-06-28 16:27:05 +01:00
Ian Jackson
c95595227a
tor-hscrypto: Provide values for NUM_INTRO_POINT
...
These are in the spec and tor-hsclient is about to want them.
2023-06-28 14:49:49 +01:00
Ian Jackson
cbb8eb4fdd
Merge branch 'reuse' into 'main'
...
tor-hsclient: Discuss intro circuit extend-and-reuse
See merge request tpo/core/arti!1298
2023-06-28 13:48:12 +00:00
Alexander Færøy
ea3f93d0e2
Merge branch 'keymgr-todos' into 'main'
...
keymgr: Remove/downgrade a few "TODO hs"
See merge request tpo/core/arti!1328
2023-06-28 13:45:19 +00:00
Ian Jackson
68aacc2140
arti cfg tests: Suppress an undesriable clippy lint
2023-06-28 14:43:48 +01:00
Ian Jackson
464c5e5efa
arti cfg tests: declare_exceptions: Annotate the types for clarity (fmt)
2023-06-28 14:25:55 +01:00
Ian Jackson
5f20b0ec29
arti cfg tests: declare_exceptions: Annotate the types for clarity
2023-06-28 14:25:55 +01:00
Ian Jackson
14b1cc0cc1
arti cfg tests: Point the reader to the types used in declarations
2023-06-28 14:25:55 +01:00
Ian Jackson
2ff494d081
arti cfg tests: Move InCode into declare_config_example
...
It's used for declarations only, and they should all be here.
2023-06-28 14:25:55 +01:00
Ian Jackson
5672b75de2
arti cfg tests: Make declare_exception take distinguished old/new types
...
As per discussion in
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1320#note_2916689
and IRC followup.
2023-06-28 14:23:13 +01:00
Ian Jackson
1be71b87d0
Merge branch 'config' into 'main'
...
tor-hsclient: Add configuration settings
See merge request tpo/core/arti!1305
2023-06-28 13:10:39 +00:00
Nick Mathewson
e06cd63ffd
Merge branch 'dirclient-semver-entry' into 'main'
...
Missing semver entry for new dirclient API from !1323
See merge request tpo/core/arti!1327
2023-06-28 12:58:19 +00:00
Ian Jackson
cf5235a713
HS timeout parameters: Restore some TODOs
...
Conceptually this is a fixup to
HS configuration: Add retry parameters to configuration
which erroneously removed these comments - they were intended to apply
to *all* these parameters, not just the max attempts.
Not marking it as fixup! because that would involve merge conflicts.
2023-06-28 13:32:54 +01:00
Ian Jackson
11bb7e8a90
HS configuration: Use configured maximum attempts - comment
...
Explain why this fallback to MAX is good.
Discussion
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1305#note_2915927
2023-06-28 13:32:54 +01:00
Ian Jackson
2bfe12983a
HS configuration: Use configured maximum attempts (fmt)
2023-06-28 13:32:54 +01:00
Ian Jackson
be33f00b31
HS configuration: Use configured maximum attempts
2023-06-28 13:32:54 +01:00
Ian Jackson
a0b6f34e42
HS configuration: Plumb configuration through (fmt)
...
Apply deferred rustfmt churn.
2023-06-28 13:32:54 +01:00
Ian Jackson
3ebc3216e3
HS configuration: Plumb configuration through (clippy)
...
Apply deferred clippy churn.
2023-06-28 13:32:54 +01:00
Ian Jackson
984652217a
HS configuration: Plumb configuration through
...
Invent a trait a la circmgr config for the hs client connector config.
Plumb a suitable value all the way through to the code that will use it.
2023-06-28 13:32:54 +01:00
Ian Jackson
cdad2db082
HS configuration: Add retry parameters to configuration
...
I think these should go in `[circuit_timing]`. That section already
has some retry parameters, so is not strictly *timing*.
This is not honoured yet.
2023-06-28 13:32:54 +01:00
Ian Jackson
cc25c82d4b
HS configuration: Add and honour `allow_onion_addrs` in configuration
...
We put this in `[address_filter]`.
The interaction with the corresponding stream preference is a bit
complicated. We must turn the stream pref into a `BoolOrAuto`.
2023-06-28 13:32:54 +01:00
Nick Mathewson
2bee27a737
Merge branch 'hsdir-identity' into 'main'
...
tor-hsclient: Completely hide hsdir identities in errors
See merge request tpo/core/arti!1326
2023-06-28 12:30:22 +00:00
Gabriela Moldovan
70f468d0f1
keymgr: Downgrade some TODOs to "TODO HSS".
...
These don't need to be blockers for the next release.
2023-06-28 13:11:53 +01:00
Gabriela Moldovan
928a9cd7ca
keymgr: Remove outdated TODOs regarding error handling.
...
These were tackled in #901 .
2023-06-28 13:07:52 +01:00
Nick Mathewson
42e4929226
Missing semver entry for new dirclient API from !1323
2023-06-28 08:06:32 -04:00
Ian Jackson
41737efced
tor-hsclient: Completely hide hsdir identities in errors
2023-06-28 13:02:44 +01:00
gabi-250
63a7b25711
art cfg tests: Fix garbled doc wording
2023-06-28 12:56:09 +01:00
gabi-250
d56f28bc6f
arti cfg tests: Fix doc comment
2023-06-28 12:56:09 +01:00
Ian Jackson
ac38c862ec
arti cfg tests: Overhaul exception handling (fmt)
2023-06-28 12:56:09 +01:00
Ian Jackson
c0c0beb8e1
arti cfg tests: Overhaul exception handling
...
This was super confusing and fragile. Amongst the problems:
* Information about exceptional config keys was spread across a
number of places, manipulated in ad-hoc ways (conditional Vec
appends, etc).
* As a consequence, each exceptional table has confusing and unclear
semantics.
* It doesn't deal well with the way that cargo sometimes enables
features for dependency crates even if arti itself wouldn't demand
them; this can lead to sub-crates supporting config keys when the
tests in arti don't expect them to, causing spurious test failures.
Fix this:
* Introduce a new, systematic, way of writing information about
configuration keys that need some kind of special handling.
* Use this new approach in *both* sets of "thorough" config tests.
* Be more relaxed about deprecated keys. We don't want to tightly
couple this to absence in the supported file, I think.
* Understand more clearly the concept of keys of which we don't know,
in the current build config, whether the code is expected to
accept them.
I have tested this locally with:
for p in '-p arti' '--workspace'; do for f in '--no-default-features --features=tokio,native-tls' '--all-features' ''; do nailing-cargo test $p $f; done; done
2023-06-28 12:56:09 +01:00
Ian Jackson
479ed9d168
arti cfg tests: Remove a comment relating to work already done
...
We *do* have a thing that works like this.
It's fragile and confusing and that's what I'm about to fix.
2023-06-28 12:56:09 +01:00
Ian Jackson
0cde6134d0
arti cfg tests: Code motion
...
Bring the exciting tests together, and move some more normal tests out
of the middle.
2023-06-28 12:56:09 +01:00
Ian Jackson
2656b8fa04
geoip: conditionalise a test
...
Without this, the build fails with
cargo test --workspace --no-default-features --features=tokio,native-tls
2023-06-28 12:56:09 +01:00
Ian Jackson
ebb3455b3e
Conditionalise an import
...
Fixes a warning with
cargo clippy --locked --offline --workspace --all-targets
2023-06-28 12:56:09 +01:00
Ian Jackson
a6aa113865
Mark a builder as non-exhaustive
...
If all the fields vanish, this generates a warning with
cargo clippy --locked --offline --workspace --all-targets
Fix that.
2023-06-28 12:56:09 +01:00
gabi-250
6b8218f960
Merge branch 'keymgr-error-kind' into 'main'
...
keymgr: Implement ErrorKind for keymgr error types
See merge request tpo/core/arti!1315
2023-06-28 11:34:23 +00:00
Alexander Færøy
26c4a274c7
Merge branch 'dirclient-todos' into 'main'
...
Resolve remaining dirclient HS todos
See merge request tpo/core/arti!1323
2023-06-28 11:33:32 +00:00
Gabriela Moldovan
dff8c0163b
keymgr: Implement HasKind for ArtiNativeKeystoreError.
2023-06-28 11:59:00 +01:00
Gabriela Moldovan
6ed8f5b9ea
tor-error: Add KeystoreAccessFailed, KeystoreFsPermissions to ErrorKind.
2023-06-28 11:59:00 +01:00
Gabriela Moldovan
ef1c969c73
keymgr: Implement HasKind for SshKeyError.
2023-06-28 11:59:00 +01:00
Gabriela Moldovan
c8a128cc59
tor-error: Add KeystoreCorrupted to ErrorKind.
2023-06-28 11:59:00 +01:00
Nick Mathewson
f778d32a0e
Merge branch 'ticket_914' into 'main'
...
Remove support for receiving unauthenticated SENDMEs.
Closes #914
See merge request tpo/core/arti!1283
2023-06-28 10:54:05 +00:00
Nick Mathewson
6f3761c24f
dirclient: use correct default max_len
...
Yes, it's 50 kilobytes, not 50 kibibytes. I double-checked this with
the C implementation and with param-spec.txt's documentation for
`HSV3MaxDescriptorSize`.
2023-06-27 16:21:29 -04:00
Nick Mathewson
4692dba5e0
hsclient: Use HsDescDownloadRequest::set_max_len.
2023-06-27 16:21:29 -04:00
Nick Mathewson
32e3cde3fd
dirclient: Correct an erroneous comment.
2023-06-27 16:21:29 -04:00
Nick Mathewson
38db06ee4b
dirclient: Make maximum hsdesc length adjustable.
2023-06-27 16:21:29 -04:00
Nick Mathewson
01ea20759b
dirclient: Explain why hardcoding "3" is ok.
2023-06-27 16:04:49 -04:00
Gabriela Moldovan
e332caf562
keymgr: Remove unneeded error variant.
...
The `Unsupported` variant is no longer needed now that we support
`KeyType::X25519StaticSecret`s.
2023-06-27 20:11:07 +01:00
Gabriela Moldovan
7732ac131b
keymgr: Add support for x25519 keys.
2023-06-27 20:11:07 +01:00
Gabriela Moldovan
257797fff6
keymgr: Return a concrete type from read_ed25519_keypair.
...
This also fixes a bug which caused the function to always return a
type-erased `()` instead of the actual key!
2023-06-27 20:11:07 +01:00
Gabriela Moldovan
b91a1c2859
keymgr: Move TODO closer to the code it refers to.
2023-06-27 20:11:07 +01:00
Gabriela Moldovan
c114c413c2
keymgr: Map KeyType::X25519StaticSecret to an SshKeyAlgorithm.
2023-06-27 20:11:07 +01:00
Gabriela Moldovan
8edbd04413
keymgr: Define an SshKeyAlgorithm enum.
...
This previously just re-exported `ssh_key::Algorithm`.
However, we will need to support x25519 keys (which aren't supported by
the `ssh_key` crate), so we define our own enum for the key algorithm.
In addition to the `Algorithm` variants from `ssh_key`, our enum also
has an `X25519` variant.
2023-06-27 20:11:07 +01:00
gabi-250
eb54691c50
Merge branch 'keymanip-ed-to-curve' into 'main'
...
llcrypto: Implement ed25519_to_curve25519_private conversion.
See merge request tpo/core/arti!1297
2023-06-27 19:10:33 +00:00
Gabriela Moldovan
aa5e9b1e95
llcrypto: Add reference to paper about keypair reuse.
2023-06-27 19:23:42 +01:00
Gabriela Moldovan
b466b24a18
llcrypto: Remove `# Availability` doc sections.
...
This removes the `# Availability` section from the
`convert_ed25519_to_curve25519_private` and
`convert_curve25519_to_ed25519_private` docs.
We don't generally have this sort of section anywhere else in the
codebase (we use unstable cargo-docs features to make sure items are
annotated correctly).
2023-06-27 19:23:42 +01:00
Gabriela Moldovan
32261d4006
llcrypto: Add cvt-x25519 feature flag for exporting key conversion functions.
...
The `convert_curve25519_to_ed25519_private` and
`convert_ed25519_to_curve25519_private` functions are now exported by
`tor-llcrypto` if the `cvt-25519` feature is enabled.
2023-06-27 19:23:42 +01:00
Gabriela Moldovan
9e80a206ca
llcrypto: Add keymgr feature to semver.md
2023-06-27 19:23:42 +01:00
Gabriela Moldovan
94f405704f
llcrypto: Add `Panics`, `Availability` docs for convert_ed25519_to_curve25519_private.
2023-06-27 19:23:42 +01:00
Gabriela Moldovan
7c44984f3d
llcrypto: Fix clippy lint.
2023-06-27 19:23:42 +01:00
Gabriela Moldovan
e06fc04b0b
llcrypto: Explain what we need the ed25519->x25519 conversion for.
2023-06-27 19:23:42 +01:00