Commit Graph

8112 Commits

Author SHA1 Message Date
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
Gabriela Moldovan 5c5a7bfb14
arti-client: Use Path::join instead of format!. 2023-08-14 16:21:55 +01:00
Emil Engler 28f0120886
doc: fix malformatted comment in SliceWriterError 2023-08-14 10:59:45 +02: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
Emil Engler 60ad15b4ff
test: add a test for missing NETINFO cells
This commit adds a unit test to the `tor_proto::handshake` module,
which tests the behavior when no NETINFO cell is present within a
channel.
2023-08-12 19:09:48 +02:00
Gabriela Moldovan d9a04ff9ad
arti-client: Make from_directories() derive the keystore_dir from state_dir.
Closes #988
2023-08-11 12:09:52 +01:00
Emil Engler 2fd4d7d3a4
tor-cert: actually use dangerously_assume_timely
This commit makes a trait function use another currently unused trait
function, thereby increasing the test coverage, as well as being
potentially more correct from a semantic point of view.
2023-08-10 16:32:52 +02:00
Emil Engler 2f90119622
test: provide a test for expired certificates
This commit implements a test for an expired Ed25519 certificate within
the `tor_cert` crate.
2023-08-10 16:27:50 +02:00
Emil Engler 3336f1c5a2
doc: note unreachable code 2023-08-10 15:32:28 +02:00
Emil Engler 2ff06b8114
test: encode unrecognized `tor_cert::CertExt`
This commit introduces a test for unrecognized `tor_cert::CertExt`
fields.
2023-08-10 15:32:26 +02:00
Emil Engler 81eb87ef3e
tor-proto: remove unused import
This commit removes an unused import within the test module of the
`tor_proto::circuit` module.
2023-08-10 13:36:27 +02: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
Ian Jackson 849c83052e tor-config: Expand NoProjectDirs error message 2023-08-08 11:12:16 +01:00