Commit Graph

7913 Commits

Author SHA1 Message Date
Nick Mathewson bac156bcf5 cell: Add code to iterate over IntroEstablished extensions 2023-08-15 13:05:53 -04:00
Nick Mathewson 09d99f1053 cell, docs: Clarify what we mean by "Unrecognized". 2023-08-15 12:14:02 -04:00
Nick Mathewson a6f8b3299f hsservice: Send extensions in establish_intro msgs.
I had planned to make this code accept extensions of unknown type,
but for now I'm backing out of that plan: the set of extensions we
send influences the set that we're willing to receive.
2023-08-15 12:10:39 -04:00
Nick Mathewson 5d02136ece Merge branch 'cargo_audit_2022_0093' into 'main'
cargo_audit: Add an exception for RUSTSEC-2022-0093.

See merge request tpo/core/arti!1506
2023-08-14 19:20:43 +00:00
Nick Mathewson 118ed81d82 Merge branch 'establish_intro_v2' into 'main'
Implement circuit binding and start on intro-point establisher logic

Closes #953 and #993

See merge request tpo/core/arti!1472
2023-08-14 18:19:33 +00:00
Nick Mathewson 875de204e9 cargo_audit: Add an exception for RUSTSEC-2022-0093.
This is the API deficiency in ed25519-dalek v1 that allows you to
mismatch public and private keys, leading to a (fatal)
double-signing attack.  We have worked around this in our current
design, so it's appropriate to suppress this warning for now.
2023-08-14 14:15:15 -04:00
Nick Mathewson 603175b977 Start working on the backend for an IptEstablisher.
This should be enough now to establish real introduction points,
though there is still a lot of work to do.  Part of #976.

This has been rebased and edited to incorporate discussions from
!1465.
2023-08-14 13:57:49 -04:00
Nick Mathewson d46e638ff0 proto: Fix a type-complexity warning. 2023-08-14 13:15:40 -04:00
Nick Mathewson 65a0ac5512 proto: API to expose the `CircuitBinding` type.
Closes #993
2023-08-14 13:15:29 -04:00
Nick Mathewson 61513de6d0 proto: Take CircuitBinding one step forward into Reactor::add_hop. 2023-08-14 13:15:29 -04:00
Nick Mathewson 0ffa6eddf5 proto: Add (not-yet-exposed) code to remember and use KH values
These values are computed as part of the circuit extension
handshake, and are used as MAC keys to bind `ESTABLISH_INTRO`
messages to a particular circuit so that they can't be replayed.

Part of #993.
2023-08-14 13:15:29 -04:00
Nick Mathewson 926cc65a9e cell: make establish_intro accept impl<Into<HsMacKey>>
This allows us to allow passing in opaque HsMacKey objects,
rather than untyped byte slices.

Additionally, we now check both MAC and signature unconditionally,
to avoid the large timing side-channel.  The small timing
side-channel of combining booleans with `&` is considered safe.

Part of #993.
2023-08-14 13:15:00 -04:00
Nick Mathewson 0759fdf681 hscrypto: Expose hs_mac as a SimpleMac. 2023-08-14 13:15:00 -04:00
Nick Mathewson e7f803529f llcrypto: New SimpleMac trait
This will be useful in preference to the regular Mac trait for the
places where we need to pass a Mac key around, but we don't need to
support incremental operation.

Part of arti#993, where we want to expose a MAC object without
exposing sensitive data.
2023-08-14 13:15:00 -04:00
Nick Mathewson 4047236bd9 Wrap a long line in hscrypto/Cargo.toml. 2023-08-14 13:15:00 -04:00
Nick Mathewson fe5a8a0106 Merge branch 'readme_timeline' into 'main'
README: Note more details about upcoming milestones

See merge request tpo/core/arti!1471
2023-08-13 16:01:29 +00:00
gabi-250 3fdadcc750 Merge branch 'nogit' into 'main'
CI: Remove unneeded install of git in maint-checks

See merge request tpo/core/arti!1492
2023-08-09 16:46:54 +00:00
Ian Jackson 879a3e8acf CI: Remove unneeded install of git in maint-checks
This was added in 9357a8fd6b "ci: add shebang to the GitLab CI" as
part of !990 to the `maint-checks` job; but the actual additional
check was added to the `doc-features` job (by mistake, fixed in
!1490); and, that shebang check script doesn't need git anyway.
2023-08-09 17:16:58 +01:00
Ian Jackson 72eff516ac Merge branch 'shebang-ci' into 'main'
ci: move shebang check into proper CI test

See merge request tpo/core/arti!1490
2023-08-09 15:50:00 +00:00
Emil Engler 01e619d872
ci: move shebang check into proper CI test
Currently, the shebang check CI is not executed, as it would need to
fail then.

See !1489
2023-08-09 16:56:36 +02:00
gabi-250 af755b5b49 Merge branch 'relative-shebang-nodep' into 'main'
maint: use relative shebang in `maint/bump_nodep`

See merge request tpo/core/arti!1489
2023-08-09 13:24:26 +00:00
Ian Jackson 0001f520ca Merge branch 'chutney' into 'main'
Disable chutney test again

Closes #810

See merge request tpo/core/arti!1488
2023-08-09 13:20:39 +00:00
Ian Jackson bde9a25f06 Merge branch 'tor-proto-incoming-discard' into 'main'
tor-proto: Implement IncomingStream::discard()

See merge request tpo/core/arti!1484
2023-08-09 12:58:41 +00:00
Emil Engler e8cdc4c3d2
maint: use relative shebang in `maint/bump_nodep` 2023-08-09 14:33:01 +02:00
Ian Jackson 96e56ab73d Disable chutney test again 2023-08-09 13:32:07 +01:00
Gabriela Moldovan 6073a4f767
tor-proto: Make update_state() and discard() return Result<(), Bug>.
These functions only ever return `Bug` errors.
2023-08-09 13:07:35 +01:00
Ian Jackson 1a1abac2c8 Merge branch 'key-uses' into 'main'
key-management.md: Use scenarios

See merge request tpo/core/arti!1445
2023-08-09 10:59:46 +00:00
Ian Jackson 8838c6bfd2 Merge branch 'remove-keystore-fs-perm-variant' into 'main'
tor-error: Remove KeystoreFsPermissions variant.

See merge request tpo/core/arti!1487
2023-08-09 10:57:39 +00:00
Ian Jackson 17b78f6108 Merge branch 'with_coverage-no-list' into 'main'
maint: provide no list of grcov formats

See merge request tpo/core/arti!1482
2023-08-09 10:37:43 +00:00
Ian Jackson 65409b02d7 Merge branch 'bridge-disabled' into 'main'
arti-client config: Fix bridge handling and test it

Closes #1000

See merge request tpo/core/arti!1481
2023-08-08 17:24:14 +00:00
Ian Jackson 4b64f988aa bridge config: Fix an error message slightly 2023-08-08 18:01:31 +01:00
Ian Jackson 635edd4129 arti-client config test: partially un-degrade formatting 2023-08-08 18:01:31 +01:00
Ian Jackson 2fc249ce66 arti-client config test: degrade formatting
As demanded by rustfmt
2023-08-08 18:01:31 +01:00
Ian Jackson e142f9a560 arti-client config: Add an extra test case for bridges
This complements the new `check_bridge_pt` test.
2023-08-08 18:01:31 +01:00
Ian Jackson 9ba4b496fd bridge config: reject bridges=true when there are no bridges
This is a bugfix.  Perhaps it is a security fix?
2023-08-08 18:01:31 +01:00
Gabriela Moldovan 5d0fb5177f
tor-error: Remove KeystoreFsPermissions variant.
According to the `ErrorKind` lumping guidelines, `KeystoreFsPermissions`
should be lumped with `FsPermissions`: they represent the same type
of error, and their "location" is the same ("Host").

Prompted by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1315#note_2916455
2023-08-08 16:46:20 +01:00
gabi-250 13c0b023e5 Merge branch 'coverage-fixes' into 'main'
maint: list the HTML dependencies in coverage

See merge request tpo/core/arti!1485
2023-08-08 15:11:50 +00:00
Emil Engler ab4d0182ab
maint: remove useless optarg
The `maint/coverage` script has a useless option `c`.
This commit removes it.
2023-08-08 16:32:31 +02:00
Emil Engler 3c1e5e32c2
maint: list the HTML dependencies in coverage
Currently, the `maint/coverage` script does not inform about the
dependencies required for generating the HTML output, those are, the
Python packages `bs4` and `lxml`.

This commit fixes that, by updating the help section accordingly.
2023-08-08 16:29:53 +02:00
Gabriela Moldovan a0daa9adb6
tor-proto: Implement IncomingStream::discard(). 2023-08-08 15:25:45 +01:00
Gabriela Moldovan 4507c33479
tor-proto: Replace boolean flags with an IncomingStreamState enum.
This commit introduces an `IncomingStreamState` enum, which indicates
whether the stream was accepted, discarded, or rejected, or if it is
still pending. The `is_rejected`/`is_accepted` boolean flags are no
longer needed.

Without this change, we'd need to introduce yet another boolean flag
when we implement `discard()` (for the "discarded" state).
2023-08-08 15:25:42 +01:00
Emil Engler e584cc8c08
maint: provide no list of grcov formats
This commit removes a list we provide for the supported grcov formats.
In my opinion, this is a practice of bad software engineering, as we would then
have to maintain this list by ourselves.

Therefore, this commit removes this list from the `maint/with_coverage` script
and replaces it with a references to the accompanying grcov command.
2023-08-08 16:16:21 +02:00
gabi-250 f9f8bcf5b9 key-management.md: Fix typos 2023-08-08 13:20:11 +00:00
gabi-250 fa595875ec Merge branch 'tor-proto-incoming-todo' into 'main'
tor-proto: Replace IncomingStreamMsg with IncomingStreamRequest.

See merge request tpo/core/arti!1477
2023-08-08 13:13:31 +00:00
Ian Jackson bff3475cc1 Merge branch 'tor-proto-incoming-drop' into 'main'
tor-proto: Implement `Drop` for `IncomingStream`.

See merge request tpo/core/arti!1476
2023-08-08 13:08:37 +00:00
Gabriela Moldovan 7446ed08b6
tor-proto: Fix broken docs. 2023-08-08 13:14:39 +01:00
Gabriela Moldovan a74e4cf661
tor-proto: Make it obvious that we're discarding a Result. 2023-08-08 13:07:45 +01:00
Gabriela Moldovan 4fb5121a77
tor-proto: Make StreamTarget::close return the oneshot::Receiver instead of blocking.
Instead of having 2 version of `StreamTarget::close` (a blocking one and
a nonblocking one), we can just return the `oneshot::Receiver` for
receiving the reactor's response and let the caller of
`StreamTarget::close` decide whether to block.

This allows us to reduce some code duplication in the `IncomingStream`
implementation.
2023-08-08 13:04:01 +01:00
Gabriela Moldovan 2b2f0f6065
tor-proto: Make take_inner() use mut_inner() to check the inner value. 2023-08-08 12:47:13 +01:00
gabi-250 3aa7c19427 Merge branch 'error' into 'main'
tor-config: Expand NoProjectDirs error message

See merge request tpo/core/arti!1480
2023-08-08 11:23:25 +00:00