<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-proto/src/crypto/cell.rs, branch arti-v1.6.0</title>
<subtitle>mirror of https://gitlab.torproject.org/tpo/core/arti
</subtitle>
<id>http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v1.6.0</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v1.6.0'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2025-09-16T12:36:12Z</updated>
<entry>
<title>proto: Consider the channel queue with "Replace" padding to hop 1.</title>
<updated>2025-09-16T12:36:12Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2025-09-15T15:52:48Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=e6abd7361dc69871d23c319506f43e4cc5e612b7'/>
<id>urn:sha1:e6abd7361dc69871d23c319506f43e4cc5e612b7</id>
<content type='text'>
When we want to send Replace padding (that is, padding that should
only be sent if nothing else is queued) to hop 1, we can allow it to
be replaced by cells from _any_ circuit being sent over the same
channel.  (Nobody but hop 1 can tell the difference.)

Closes #2169
</content>
</entry>
<entry>
<title>proto: derive Ord for HopNum.</title>
<updated>2025-09-10T14:40:15Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2025-09-10T14:35:18Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=8f2062e3f60a580272f4144a1e9a73b98aadf487'/>
<id>urn:sha1:8f2062e3f60a580272f4144a1e9a73b98aadf487</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Switch Cargo.toml files to edition 2024.</title>
<updated>2025-08-07T15:28:36Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2025-08-06T01:19:58Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=77b0de43b8c67cdb81befe0680a3df43b6ad37bc'/>
<id>urn:sha1:77b0de43b8c67cdb81befe0680a3df43b6ad37bc</id>
<content type='text'>
First, run

```
git grep -l "^edition =" |
    xargs perl -i -pe 's/^edition *=.*/edition = "2024"/;'
```

Second, manually verify that all Cargo.toml files have changed,
and nothing else has changed.

Third, run cargo fmt again.
</content>
</entry>
<entry>
<title>proto: Construct CGO instances if that is what is selected.</title>
<updated>2025-07-23T14:58:47Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2025-06-11T12:02:39Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=ca2eae597953483df799ca32452cf384d14c0236'/>
<id>urn:sha1:ca2eae597953483df799ca32452cf384d14c0236</id>
<content type='text'>
</content>
</entry>
<entry>
<title>proto: remove bench pub wrappers</title>
<updated>2025-05-22T09:05:31Z</updated>
<author>
<name>Lionel Goffaux</name>
<email>lionel.goffaux@unamur.be</email>
</author>
<published>2025-05-22T09:05:31Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=e5653df87971650d356dc9fa7e0e3570df44d504'/>
<id>urn:sha1:e5653df87971650d356dc9fa7e0e3570df44d504</id>
<content type='text'>
</content>
</entry>
<entry>
<title>proto: extend benchmarks</title>
<updated>2025-05-08T09:34:11Z</updated>
<author>
<name>Lionel Goffaux</name>
<email>lionel.goffaux@unamur.be</email>
</author>
<published>2025-05-08T09:34:11Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=d11b1556751c9e10850c9cad7c1f52aaeb2debec'/>
<id>urn:sha1:d11b1556751c9e10850c9cad7c1f52aaeb2debec</id>
<content type='text'>
</content>
</entry>
<entry>
<title>proto: Apply type-specific wrappers for tor1 crypto</title>
<updated>2025-05-06T22:34:17Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2025-04-30T11:59:47Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=efcca717bd3b90fa29bb0421eeb936f247671549'/>
<id>urn:sha1:efcca717bd3b90fa29bb0421eeb936f247671549</id>
<content type='text'>
Now instead of using CryptState for everything, we have specific
types for each role and direction of crypto.

This turned up a harmless-so-far bug in our onion service code: as
an onion service, we were using _client_ crypto layers to respond to
a client request.  That's not correct, and wouldn't have worked
with CGO.  Instead, we need to use relay crypto layers, wrapped
as client layers.

Closes #1975.
</content>
</entry>
<entry>
<title>proto, cell: Remove RelayCellFormatTrait.</title>
<updated>2025-05-06T22:34:17Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2025-04-30T00:59:07Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=297aa8027f7528605fe5bf2097f3474d9ba3eef9'/>
<id>urn:sha1:297aa8027f7528605fe5bf2097f3474d9ba3eef9</id>
<content type='text'>
The purpose of the trait was to parameterize the tor1 cell crypto
on the different possible relay cell layouts.

It made sense to have this trait when we thought we would implement
the new cell layout for prop340 (packed-and-fragmented) well before
we implemented CGO.

But it now appears all but certain that CGO will land long before
we make any more headway on prop340.  Therefore,
it doesn't make sense to carry the ability to customize `tor1`
for other relay cell layouts.

Removing this trait saves a fair bit of complexity.
</content>
</entry>
<entry>
<title>Emit SendmeTag directly from cell crypto.</title>
<updated>2025-05-06T22:34:17Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2025-04-30T00:26:15Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=a50692cd37f5e35182b823c67defc5e6cd8810be'/>
<id>urn:sha1:a50692cd37f5e35182b823c67defc5e6cd8810be</id>
<content type='text'>
This changes the code to copy a SendmeTag rather than returning a
slice. This isn't actually a big change: sending a slice already
required 16 bytes (on 64-bit platforms), so sending a SendmeTag
around isn't a big deal.

We rely extensively on the compiler's ability to optimize away
all the checking in code like this:

```
 let slice: &amp;[u8];
 let a: [u8;N] = slice[0..N].try_into().expect("Nope");
```

I've spot-checked it somewhat with "cargo-show-asm", but
it could use more thorough checking.

Closes #1956.
</content>
</entry>
<entry>
<title>proto: Split out CGO BlkCipher trait for Encryption/Decryption</title>
<updated>2025-05-06T22:34:17Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2025-04-29T21:19:51Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=de696fdaf992f2ab92b886b2d42b7eae86b58836'/>
<id>urn:sha1:de696fdaf992f2ab92b886b2d42b7eae86b58836</id>
<content type='text'>
This lets us use `Aes128Dec` and `Aes128Enc` in place of plain old
`Aes128`, which can be less space-efficient depending on the
back-end.
</content>
</entry>
</feed>
