summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | | | | CI: bump chutney versionJim Newsome2026-04-081-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Mostly to get logging improvements chutney!124. Also work around a potential race condition, though I don't think we've observed it in CI chutney!125
* | | | | | | | Merge branch 'create-fast' into 'main'opara2026-04-0825-106/+1124
|\ \ \ \ \ \ \ \ | |/ / / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | Add support for handling CREATE_FAST cells and launching a circuit reactor See merge request tpo/core/arti!3846
| * | | | | | | tor-proto: replace use of `ChannelDirection` with `CircIdRange`Steven Engler2026-04-084-25/+16
| | | | | | | |
| * | | | | | | Revert "tor-proto: change `CreateResponse` to `restricted_msg!`"Steven Engler2026-04-082-29/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 9c38daf2d3548feca2ff555f5bd52165add0d20c.
| * | | | | | | tor-proto: add a `From<$ttype>` impl for `RestrictedChanMsgSet`Steven Engler2026-04-081-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is needed for the revert in the following commit.
| * | | | | | | tor-{proto,chanmgr}: change how channels accept a CREATE* handlerSteven Engler2026-04-089-103/+158
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of giving the `CreateRequestHandler` to the channel after it's constructed, we integrate it into the handshake so that we can give it to the channel constructor. The `ChannelType` is no longer part of the `Channel`. Some of the tests could be cleaned up slightly now that the channel doesn't need the `ChannelType`, but I don't want to conflict with !3853.
| * | | | | | | tor-proto: simplify error handling in `CreateRequestHandler::handle_create()`Steven Engler2026-04-081-71/+85
| | | | | | | |
| * | | | | | | tor-proto: rename `CircIdRange::is_allowed_by_peer()` to `is_allowed_for_peer()`Steven Engler2026-04-081-2/+2
| | | | | | | |
| * | | | | | | tor-proto: remove TODO about `UniqId` overflowSteven Engler2026-04-081-2/+2
| | | | | | | |
| * | | | | | | tor-proto: handle incoming RELAY_EARLY messagesSteven Engler2026-04-081-2/+10
| | | | | | | |
| * | | | | | | arti-relay: add support for a `CreateRequestHandler`Steven Engler2026-04-086-2/+203
| | | | | | | |
| * | | | | | | tor-chanmgr: add support for a `CreateRequestHandler`Steven Engler2026-04-084-4/+93
| | | | | | | |
| * | | | | | | tor-proto: add `Channel::set_create_request_handler()`Steven Engler2026-04-082-2/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We can't pass the request handler during the `Channel` constructor since it would require conditionally compiled function arguments, which aren't nice.
| * | | | | | | tor-proto: add `CreateRequestHandler`Steven Engler2026-04-084-0/+442
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | for handling CREATE* messages on channels.
| * | | | | | | tor-proto: extend `RelayHandshakeError`Steven Engler2026-04-081-1/+27
| | | | | | | |
| * | | | | | | tor-proto: add a `CreateRequest` restricted msg setSteven Engler2026-04-081-1/+11
| | | | | | | |
| * | | | | | | tor-proto: change `CreateResponse` to `restricted_msg!`Steven Engler2026-04-082-19/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This better fits with existing code that uses `restricted_msg!` and is a bit more flexible.
| * | | | | | | tor-proto: derive `strum::EnumDiscriminants` for `Algorithm`Steven Engler2026-04-083-1/+6
| | | | | | | |
| * | | | | | | tor-proto: small cleanup of legacy codeSteven Engler2026-04-081-6/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I think it was written like this because earlier versions of rust didn't allow references to temporaries like `&mut rand::rng()` and needed them to be bound to a variable. But this isn't necessary anymore and so the comment doesn't make sense.
| * | | | | | | arti-relay: use 'tor-proto/flowctl-cc' featureSteven Engler2026-04-081-1/+1
| | | | | | | |
| * | | | | | | tor-proto: change channel to use `Runtime`Steven Engler2026-04-086-26/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When used for relay channels, the channel reactor will soon need to spawn relay circuit reactors.
| * | | | | | | tor-proto: support relay circs in channel's `CircMap`Steven Engler2026-04-082-11/+87
| | | | | | | |
| * | | | | | | tor-proto: rename `CircEnt::Open` to `CircEnt::OpenOrigin`Steven Engler2026-04-082-18/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | And rename `CircMap::add_ent()` to `add_origin_ent()`.
| * | | | | | | tor-proto: add `CircIdRange::is_allowed_by_peer()`Steven Engler2026-03-311-0/+8
| | | | | | | |
| * | | | | | | tor-proto: add `CircIdRange::integer_range()`Steven Engler2026-03-311-6/+15
| | | | | | | |
* | | | | | | | Merge branch 'netdoc-fixes' into 'main'Clara Engler2026-04-083-3/+8
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | tor-netdoc: Three fixes to parsing and encoding See merge request tpo/core/arti!3862
| * | | | | | | | tor-netdoc: Constructor: Produce better error when field isn't DefaultIan Jackson2026-04-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The type error's span now points at the field type, rather than into the macro.
| * | | | | | | | tor-netdoc: encoding: Fix a Result to be $P::ResultIan Jackson2026-04-071-1/+1
| | | | | | | | |
| * | | | | | | | tor-netdoc: Fix handling of netdoc(skip) in NetdocParseableFieldsIan Jackson2026-04-071-1/+6
| | |/ / / / / / | |/| | | | | |
* | | | | | | | Merge branch 'cert-retrieval' into 'main'David Goulet2026-04-085-57/+63
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | arti-relay: Retrieve the signing key cert from the keystore See merge request tpo/core/arti!3863
| * | | | | | | | keymgr: Fix ephemeral keystore cert encoding bug (fmt)Gabriela Moldovan2026-04-081-6/+3
| | | | | | | | |
| * | | | | | | | keymgr: Fix ephemeral keystore cert encoding bugGabriela Moldovan2026-04-084-28/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes a bug that was causing the ephemeral keystore to retrieve certs in a format that couldn't be handled by the `KeyMgr`. This caused all certificate retrievals from `EphemeralKeystore` done via the `KeyMgr` to fail with an internal error. For context, the only supported cert type is `TorEd25519Cert`, which is a pre-encoded certificate (i.e. a type wrapper over a `Vec<u8>`). These certificates are stored as-is by the Arti native keystore (the bytes are written to a file on disk). When retrieving a `TorEd25519Cert`, the Arti keystore uses `parse_certificate_erased()` to parse the cert into a `ParsedEd25519Cert` before returning it as a type-erased `ErasedKey`. This works as intended with the `KeyMgr` retrieval and downcasting logic, which expects the certificate to be returned in the `ParsedCert` format specified in the `ToEncodableCert` implementation. Before this change, the ephemeral keystore, on the other hand, did not play well with the `KeyMgr` when it came to cert retrieval: it would incorrectly store the `KeystoreItem` as-is, and retrieve it as an `ErasedKey` using the `ErasedKey::into_erased()` implementation. This would then cause the `KeyMgr` to fail to downcast the `ErasedKey` to the correct type (because the returned erased item was of a different type than `ParsedCert`). This commit also removes `KeystoreItem::into_erased()`, which was a footgun (because certificates are not actually supposed to be retrieved in the format returned by `CertData::into_erased()`).
| * | | | | | | | arti-relay: Retrieve the signing key cert from the keystoreGabriela Moldovan2026-04-081-8/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The API for retrieving certs exists now, so we don't need to regenerate the cert each time. This addresses a TODO.
| * | | | | | | | arti-relay: Reuse cert_expiry calculationGabriela Moldovan2026-04-081-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For readability.
| * | | | | | | | arti-relay: Move comment closer to the durations it refers toGabriela Moldovan2026-04-081-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We forgot to move this comment when we replaced the hard-coded durations with top-level constants.
| * | | | | | | | arti-relay: Use more descriptive names for the key lifetimesGabriela Moldovan2026-04-081-20/+20
|/ / / / / / / /
* | | | | | | | Merge branch 'memquota-add-parent' into 'main'gabi-2502026-04-084-48/+165
|\ \ \ \ \ \ \ \ | |_|_|_|_|_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | memquota: Add new add_parent() API Closes #2427 See merge request tpo/core/arti!3829
| * | | | | | | memquota: Say what kind of errors add_parent() returnsGabriela Moldovan2026-04-071-2/+2
| | | | | | | |
| * | | | | | | memquota: Add dedicated variant for duplicate child errorGabriela Moldovan2026-04-073-2/+12
| | | | | | | |
| * | | | | | | memquota: Expand on the prepare_parent_aid() docsGabriela Moldovan2026-04-071-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Applies the suggestion from https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3829#note_3388033
| * | | | | | | memquota: Adjust Account::add_parent() docsGabriela Moldovan2026-04-071-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As suggested by @Diziet
| * | | | | | | proto: Link the memquota circ acc with the outbound chan accGabriela Moldovan2026-03-301-6/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Closes #2427
| * | | | | | | memquota: Make prepare_parent_aid() error message more genericGabriela Moldovan2026-03-301-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is now used by `Account::add_parent()` too.
| * | | | | | | memquota: Add new Account::add_parent() APIGabriela Moldovan2026-03-302-0/+100
| | | | | | | |
| * | | | | | | memquota: Move parent AId checks to separate function (fmt)Gabriela Moldovan2026-03-301-8/+3
| | | | | | | |
| * | | | | | | memquota: Move parent AId checks to separate functionGabriela Moldovan2026-03-301-40/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I am moving this to another function because we'll soon need to run these same checks in the new `Account::add_parent()` API I'm planning on adding for #2427.
* | | | | | | | Merge branch 'closed-stream-err' into 'main'opara2026-04-072-9/+17
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | tor-proto: Change an error from `CircuitClosed` to `NotConnected` Closes #2421 See merge request tpo/core/arti!3825
| * | | | | | | | arti: fix clippy warnings in `report_proxy_error()`Steven Engler2026-03-301-3/+5
| | | | | | | | |
| * | | | | | | | arti: use report macros in `report_proxy_error()`Steven Engler2026-03-301-5/+6
| | | | | | | | |
| * | | | | | | | arti: don't warn for `NotConnected` errorsSteven Engler2026-03-301-0/+1
| | | | | | | | |