<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-key-forge/src/certs.rs, branch main</title>
<subtitle>mirror of https://gitlab.torproject.org/tpo/core/arti
</subtitle>
<id>http://git.dilluti0n.com/mirrors/arti.git/atom?h=main</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2026-07-23T10:13:34Z</updated>
<entry>
<title>tor-checkable: TimeBound: Make wrapped type an associated type</title>
<updated>2026-07-23T10:13:34Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2026-07-20T12:00:15Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=b16e7a5ac48daa3e2f94660bdf7c39f54e7c702c'/>
<id>urn:sha1:b16e7a5ac48daa3e2f94660bdf7c39f54e7c702c</id>
<content type='text'>
It wouldn't make much sense for one concrete type to be unwrappable
variously as different inner types.
</content>
</entry>
<entry>
<title>tor-checkable: TimeBound: Make is_valid_at a provided method</title>
<updated>2026-07-23T10:13:34Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2026-07-16T15:30:15Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=9313f79335c2ba15e7e60bc6d97086c4c56ff30a'/>
<id>urn:sha1:9313f79335c2ba15e7e60bc6d97086c4c56ff30a</id>
<content type='text'>
Now that we have `bounds()`, we can centralise this implementation and
delete the implementations.

I don't think it's necessary to provide an engineered safeguard
against downstreams overriding this method.  Any existing implementors
of this trait will break because they must provide `.bounds()` now,
which is an opportunity to notice that the `is_valid_at` can be
deleted.  But, if it is not deleted, nothing goes wrong.
</content>
</entry>
<entry>
<title>tor-checkable: TimeBound: remove Error associated type</title>
<updated>2026-07-23T10:13:34Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2026-07-16T15:19:05Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=726f97b2a2099eea34d804e0132cf742964af8b7'/>
<id>urn:sha1:726f97b2a2099eea34d804e0132cf742964af8b7</id>
<content type='text'>
This was always TimeValidityError.  And we want to rely on that so we
can do the validity checking more centrally.
</content>
</entry>
<entry>
<title>tor-checkable: TimeBound: Add bounds accessor</title>
<updated>2026-07-23T10:13:34Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2026-07-20T18:25:52Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=845f56aeedabfd44ec4573f872aeefa77cf72556'/>
<id>urn:sha1:845f56aeedabfd44ec4573f872aeefa77cf72556</id>
<content type='text'>
This makes a `TimeBound` much more convenient to work with, will allow
more centralisation.

This replaces temporary `bound` inherent method on `TimeRangeBound`.
</content>
</entry>
<entry>
<title>Use new TimeBound name throughout the tree</title>
<updated>2026-07-16T15:47:50Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2026-07-16T14:32:14Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=5f57903ab4a8c280acf8a5bec274c50d5f544fd6'/>
<id>urn:sha1:5f57903ab4a8c280acf8a5bec274c50d5f544fd6</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>
<entry>
<title>tor-key-forge: Add wrappers for various cert types.</title>
<updated>2025-01-13T19:28:23Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2024-12-12T13:58:37Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=e3bcf444252c248a47482f703918ce35d5a663ec'/>
<id>urn:sha1:e3bcf444252c248a47482f703918ce35d5a663ec</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tor-key-forge: Implement KeystoreItem::item_type.</title>
<updated>2024-12-04T16:42:06Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2024-11-25T12:20:58Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=9fec1799d9ac41ac7dffa085d71a82c96cb5b076'/>
<id>urn:sha1:9fec1799d9ac41ac7dffa085d71a82c96cb5b076</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tor-key-forge: Implement EncodableItem for Tor ed25519 certs.</title>
<updated>2024-12-04T16:42:06Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2024-11-21T18:58:36Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=e97f7955c20d5f291ea2dc5f61b19365c06c712d'/>
<id>urn:sha1:e97f7955c20d5f291ea2dc5f61b19365c06c712d</id>
<content type='text'>
This will enable us to store `tor_cert::EncodedEd25519Cert`s in the
keystore.
</content>
</entry>
<entry>
<title>tor-key-forge: Add an encodable cert type.</title>
<updated>2024-12-04T16:40:45Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2024-11-21T18:49:16Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=5640d4f6d9f64b934a389c40fca0bdbc2a23b140'/>
<id>urn:sha1:5640d4f6d9f64b934a389c40fca0bdbc2a23b140</id>
<content type='text'>
</content>
</entry>
</feed>
