<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-keymgr/src/keystore, 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-06-17T16:18:26Z</updated>
<entry>
<title>arti, keymgr: s/IDEA/TODO</title>
<updated>2026-06-17T16:18:26Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-06-17T15:46:44Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=18115a11225b9aaf3106512aa49ae84bf1c3eeb6'/>
<id>urn:sha1:18115a11225b9aaf3106512aa49ae84bf1c3eeb6</id>
<content type='text'>
It's better to use "TODO" like we do in the rest of Arti, because
otherwise this has a chance of being forgotten (because nobody really
greps for "IDEA").
</content>
</entry>
<entry>
<title>arti: subcommands: keys: Rework output of keys list</title>
<updated>2026-06-17T16:17:59Z</updated>
<author>
<name>hjrgrn</name>
<email>3874-hjrgrn@gitlab.torproject.org</email>
</author>
<published>2026-06-17T16:17:59Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=e98b4a466fd6db9afd691ee3e9a74d3b4f5f90c9'/>
<id>urn:sha1:e98b4a466fd6db9afd691ee3e9a74d3b4f5f90c9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>maint: Run maint/add_warning to deny string slices</title>
<updated>2026-06-09T15:36:01Z</updated>
<author>
<name>Clara Engler</name>
<email>cve@cve.cx</email>
</author>
<published>2026-06-09T15:36:01Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=9f5752a77fb57052c06ead0eeae606831f1e8e97'/>
<id>urn:sha1:9f5752a77fb57052c06ead0eeae606831f1e8e97</id>
<content type='text'>
This commit executes maint/add_warning with the just added change to
deny string slices except in tests.

I recommend auditing this by checking out the previous commit followed
by running the script yourself and then verifying that the diff is
identical to this commit.

This commit makes cargo clippy fail.  We will add exceptions in the next
commit.
</content>
</entry>
<entry>
<title>keymgr: Update tests to stop using RawKeystoreEntry (fmt)</title>
<updated>2026-05-18T15:07:50Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-05-18T13:44:47Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=adb4a7f37802dd7103f603183736d1554902afdb'/>
<id>urn:sha1:adb4a7f37802dd7103f603183736d1554902afdb</id>
<content type='text'>
</content>
</entry>
<entry>
<title>keymgr: Update tests to stop using RawKeystoreEntry</title>
<updated>2026-05-18T15:07:50Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-05-18T13:40:59Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=990fba43560351210275dab971285d9de038bf8a'/>
<id>urn:sha1:990fba43560351210275dab971285d9de038bf8a</id>
<content type='text'>
`RawKeystoreEntry` no longer exists, so these tests need to be updated.
</content>
</entry>
<entry>
<title>keymgr: Remove RawKeystoreEntry (fmt)</title>
<updated>2026-05-18T15:07:50Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-05-18T13:28:45Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=4673b7a95bd023ac8d84046462a3790ec3785893'/>
<id>urn:sha1:4673b7a95bd023ac8d84046462a3790ec3785893</id>
<content type='text'>
</content>
</entry>
<entry>
<title>keymgr: Remove RawKeystoreEntry</title>
<updated>2026-05-18T15:07:50Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-05-18T13:24:46Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=2cfba1e031f5721cda583d95c03223e517c11612'/>
<id>urn:sha1:2cfba1e031f5721cda583d95c03223e517c11612</id>
<content type='text'>
I think this adds unnecessary indirection, and it's a bit confusing to
have two separate keystore entry types (we have `KeystoreEntry` too).

This type exists just to server as a wrapper over the `RawEntryId` of an
unrecognized keystore entry, and the `KeystoreId` of the keystore it was
found in.

This commit folds `RawKeystoreEntry` into `UnrecognizedEntry`, which was
previously a thin wrapper over `RawKeystoreEntry`.
</content>
</entry>
<entry>
<title>tor-cert: Ed25519CertBuilder: do builder fn rename</title>
<updated>2026-04-29T16:49:21Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2026-04-28T09:58:04Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=d90b703d0c4bc4ffb9068fb5c25fc78e72743961'/>
<id>urn:sha1:d90b703d0c4bc4ffb9068fb5c25fc78e72743961</id>
<content type='text'>
Change all call sites.

This completes the rename.
</content>
</entry>
<entry>
<title>keymgr: Fix ephemeral keystore cert encoding bug (fmt)</title>
<updated>2026-04-08T09:35:02Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-04-08T09:35:02Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=91cc9a63c0e7bcdffceba4e391c8d1619806064a'/>
<id>urn:sha1:91cc9a63c0e7bcdffceba4e391c8d1619806064a</id>
<content type='text'>
</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>
</feed>
