<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-proto/src/channel.rs, branch arti-v2.0.0</title>
<subtitle>mirror of https://gitlab.torproject.org/tpo/core/arti
</subtitle>
<id>http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v2.0.0</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v2.0.0'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2026-01-29T16:33:21Z</updated>
<entry>
<title>proto: Move TimeoutEstimator to util</title>
<updated>2026-01-29T16:33:21Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-01-12T10:44:05Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=5c5bf40652f00fff3205fc5a2ff44ad48e96b8de'/>
<id>urn:sha1:5c5bf40652f00fff3205fc5a2ff44ad48e96b8de</id>
<content type='text'>
This will be used in the stream reactor too (and the stream reactor will
eventually replace the corresponding client impl).
</content>
</entry>
<entry>
<title>proto: Improve some comments in relay module</title>
<updated>2026-01-22T16:16:44Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2026-01-22T16:12:16Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=3c01ad27b3c6cf203beaa8780600bc0fd4f92549'/>
<id>urn:sha1:3c01ad27b3c6cf203beaa8780600bc0fd4f92549</id>
<content type='text'>
Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
<entry>
<title>proto: Remove async for VerifiableChannel::check()</title>
<updated>2026-01-22T16:16:44Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2026-01-20T18:24:04Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=e5c0aae2460463be8c53def32f5460b319f241bb'/>
<id>urn:sha1:e5c0aae2460463be8c53def32f5460b319f241bb</id>
<content type='text'>
Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
<entry>
<title>proto: Move cell sending out of check() and into finish()</title>
<updated>2026-01-22T16:16:44Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2026-01-20T18:20:20Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=78dbdd669af9974189f10877dce5bafd3d56a1d5'/>
<id>urn:sha1:78dbdd669af9974189f10877dce5bafd3d56a1d5</id>
<content type='text'>
This is so check() only authenticate a channel. The finish() function
now only sends back the missing cells and build the final Channel.

To pull this off, the AUTHENTICATE cell and our IP addresses need to be
copied into the VerifiedRelayChannel.

This allows us to remove complexity into the check() function as well
and future commit will remove the async.

Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
<entry>
<title>proto: Authenticate a relay channel</title>
<updated>2026-01-22T16:16:44Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2026-01-15T16:23:47Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=33e82e5a3a03e7d0a91d018b5e2d68edaf1c8441'/>
<id>urn:sha1:33e82e5a3a03e7d0a91d018b5e2d68edaf1c8441</id>
<content type='text'>
This commit is a bit loaded but it is coherent.

First, we set Eq and PartialEq to the channel message Authenticate so we
can compare it with the one we expected.

Second, the AuthenticationCell enum is introduced to store either an
AUTH_CHALLENGE or an AUTHENTICATE since one side of the handshake can
only have one. This allows us to store one or the other in
UnverifiedRelayChannel.

Depending on what we have, the authentication process is different as it
dictates which side we are on (initiator vs responder). Keep in mind
that the handshake code enforces receiving a AUTH_CHALLENGE along side
CERTS. And same goes for AUTHENTICATE which means that if we have an
AUTH_CHALLENGE in the UnverifiedRelayChannel, it is certain that the
other side wants to authenticate and we are the initiator.

Finally, the sending of CERTS and AUTHENTICATE by the initiator is now
in UnverifiedRelayChannel::check() done right after verifying the
channel CERTS and holding a "VerifiedChannel" object.

This means that the last piece, sending the `NETINFO` by the initiator
will be done in the check() but in a future commit. This leaves the
VerifiableChannel::finish() to send nothing and only finalize the
channel with the NETINFO (canonicity).

Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
<entry>
<title>proto: Make VerifiableChannel::check() async</title>
<updated>2026-01-22T16:16:44Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2026-01-15T16:08:38Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=4ac721aeb4133ddd97e38065f8d7141d02eb3cb2'/>
<id>urn:sha1:4ac721aeb4133ddd97e38065f8d7141d02eb3cb2</id>
<content type='text'>
Relay initiator needs to send CERTS and AUTHENTICATE in that function
after verifiying the channel.

And thus require to be async.

Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
<entry>
<title>proto: Make CERTS cell optionnable for UnverifiedChannel</title>
<updated>2026-01-22T16:16:44Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2026-01-14T15:44:26Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=0c5616e1fa0fd51b5bdbc3677ab260a1cbe2158b'/>
<id>urn:sha1:0c5616e1fa0fd51b5bdbc3677ab260a1cbe2158b</id>
<content type='text'>
This requires to make a series of cert and digest also optionnable in
the VerifiedChannel.

This change is needed because as a relay responder, you might get the
CERTS or not depending on if the other side wants to authenticate.
Client and bridges do not authenticate and thus it is expected to not
have a CERTS cell.

This leads to the UnverifiedChannel::check() function to return early
with a VerifiedChannel without any identity attached to it.

Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
<entry>
<title>proto: Fix comments documentation</title>
<updated>2026-01-13T18:46:18Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2026-01-08T20:55:48Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=5e35e3dd58945e5c84f823ec4921376bfa8b52b3'/>
<id>urn:sha1:5e35e3dd58945e5c84f823ec4921376bfa8b52b3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>proto: Seal the VerifiableChannel and FinalizableChannel traits</title>
<updated>2026-01-13T18:46:18Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2026-01-08T18:30:46Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=56ea95eaa159a24b321966482102f6508ca1b3cf'/>
<id>urn:sha1:56ea95eaa159a24b321966482102f6508ca1b3cf</id>
<content type='text'>
They are public but avoid anyone outside implementing them.

Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
<entry>
<title>proto: Improve channel trait comments</title>
<updated>2026-01-13T18:46:18Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2026-01-08T17:46:42Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=6cd2e0eee55c2d5293bac9265530ddb86bb7aab5'/>
<id>urn:sha1:6cd2e0eee55c2d5293bac9265530ddb86bb7aab5</id>
<content type='text'>
Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
</feed>
