<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-key-forge/src/traits.rs, branch arti-v2.5.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.5.0</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v2.5.0'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2026-05-12T20:55:43Z</updated>
<entry>
<title>Upgrade rand crates to 0.10.</title>
<updated>2026-05-12T20:55:43Z</updated>
<author>
<name>Wesley Aptekar-Cassels</name>
<email>me@wesleyac.com</email>
</author>
<published>2026-05-07T20:06:21Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=a18167928901d8c88cd1cdd87346de8ad1ee42a2'/>
<id>urn:sha1:a18167928901d8c88cd1cdd87346de8ad1ee42a2</id>
<content type='text'>
When the circ-padding feature is enabled, we use maybenot, which does
not yet support rand 0.10. In the meantime, enabling this feature pulls
in rand 0.9. This is not ideal, but should be okay as a temporary
situation.

This also replaces the use of ReseedingRng (which was removed in 0.10)
with the reseeding_rng crate. This is somewhat less performant, but it
should be okay.
</content>
</entry>
<entry>
<title>keymgr: Fix ephemeral keystore cert encoding bug</title>
<updated>2026-04-08T09:19:38Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-04-07T17:38:53Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=73e59eee11b80b6045aab4ed1e3a9186c00e030c'/>
<id>urn:sha1:73e59eee11b80b6045aab4ed1e3a9186c00e030c</id>
<content type='text'>
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&lt;u8&gt;`).

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()`).
</content>
</entry>
<entry>
<title>tor-llcrypto: Rename rsa::PrivateKey to rsa::KeyPair.</title>
<updated>2025-09-08T21:12:10Z</updated>
<author>
<name>Wesley Aptekar-Cassels</name>
<email>me@wesleyac.com</email>
</author>
<published>2025-09-08T21:10:33Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=e3081529a0aa68bf74554b3a176717b4ba4c8c41'/>
<id>urn:sha1:e3081529a0aa68bf74554b3a176717b4ba4c8c41</id>
<content type='text'>
As discussed with gabi on IRC today.
</content>
</entry>
<entry>
<title>tor-key-forge: Add RSA key types.</title>
<updated>2025-09-08T21:07:35Z</updated>
<author>
<name>Wesley Aptekar-Cassels</name>
<email>me@wesleyac.com</email>
</author>
<published>2025-09-08T20:08:52Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=058455138a88141670b66a253fb5b0c124c30f40'/>
<id>urn:sha1:058455138a88141670b66a253fb5b0c124c30f40</id>
<content type='text'>
Some things I'm still considering here:

* We may want to define a tor_llcrypto::pk::rsa::Signature newtype.
* We likely want to rename tor_llcrypto::pk::rsa::PrivateKey to RsaKeypair.
</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>fix `clippy::doc_overindented_list_items`</title>
<updated>2025-04-03T17:32:58Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-04-03T17:21:49Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=663339ffa8bd00ce59c2dd39c288d338505263c3'/>
<id>urn:sha1:663339ffa8bd00ce59c2dd39c288d338505263c3</id>
<content type='text'>
Example:

```text
warning: doc list item overindented
   --&gt; crates/arti-rpc-client-core/src/conn/connimpl.rs:322:9
    |
322 |     ///    indicates that no more messages will be received for this request.
    |         ^^^ help: try using `  ` (2 spaces)
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items
note: the lint level is defined here
   --&gt; crates/arti-rpc-client-core/src/lib.rs:8:9
    |
8   | #![warn(clippy::all)]
    |         ^^^^^^^^^^^
    = note: `#[warn(clippy::doc_overindented_list_items)]` implied by `#[warn(clippy::all)]`
```
</content>
</entry>
<entry>
<title>Use an EntropicRng trait to enforce key generation rules.</title>
<updated>2025-03-24T19:11:48Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2025-03-20T15:09:08Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=8a33afe155e9bd29d9302b4b44dd5843d00866db'/>
<id>urn:sha1:8a33afe155e9bd29d9302b4b44dd5843d00866db</id>
<content type='text'>
We want to require that whenever we generate a key that's persistent
(stored in KeyMgr), it's going to be made from a stronger-than-usual
Rng.  This trait helps us enforce that.

We also add a FakeEntropicRng struct to use for testing.

Note that this turned up a case that we'd missed, which required
an internal change in tor-hsservice.
</content>
</entry>
<entry>
<title>key-forge: Use CryptoRng from rand.</title>
<updated>2025-03-18T16:09:44Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2025-03-18T14:04:36Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=a71a64ff790c9a9aefdd622ac9d569eddae36ac0'/>
<id>urn:sha1:a71a64ff790c9a9aefdd622ac9d569eddae36ac0</id>
<content type='text'>
Previously we used the version signature::rand_core for some reason,
but that's now incompatible.
</content>
</entry>
<entry>
<title>tor-key-forge: Remove no longer needed ItemType impl for KeyUnknownCert.</title>
<updated>2025-01-13T19:29:19Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2024-12-12T16:43:18Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=d87d11c7a83b158bdb3ea52ff545462a5a5278c0'/>
<id>urn:sha1:d87d11c7a83b158bdb3ea52ff545462a5a5278c0</id>
<content type='text'>
No longer used, because we're now using `ParsedEd25519Cert` instead of
`KeyUnknownCert` to represent parsed but not yet validated certs.
</content>
</entry>
<entry>
<title>tor-key-forge: Implement ItemType for ParsedEd25519Cert.</title>
<updated>2025-01-13T19:28:23Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2024-12-12T13:58:43Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=beacb0a729f1c598b2386a4ddbea88dc7f8aa9d8'/>
<id>urn:sha1:beacb0a729f1c598b2386a4ddbea88dc7f8aa9d8</id>
<content type='text'>
This will enable us to retrieve it from the keystore as an `ErasedKey`
(side note, we should rename `ErasedKey` to `ErasedItem`).
</content>
</entry>
</feed>
