summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | | | | keymgr: Rephrase the remove_unchecked docs for clarityGabriela Moldovan2026-05-181-5/+5
| | | | | | | |
| * | | | | | | keymgr: Clarify that not all keystores support stringly-typed entry IDsGabriela Moldovan2026-05-181-0/+12
| | | | | | | |
| * | | | | | | keymgr: Remove a couple unused From<> implsGabriela Moldovan2026-05-183-20/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These are unused, and I don't think they're needed by our API users either, since `KeystoreEntryResult` is just a type alias for `Result`.
| * | | | | | | keymgr: Update tests to stop using RawKeystoreEntry (fmt)Gabriela Moldovan2026-05-181-3/+1
| | | | | | | |
| * | | | | | | keymgr: Update tests to stop using RawKeystoreEntryGabriela Moldovan2026-05-182-15/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `RawKeystoreEntry` no longer exists, so these tests need to be updated.
| * | | | | | | keymgr: Remove RawKeystoreEntry (fmt)Gabriela Moldovan2026-05-184-6/+6
| | | | | | | |
| * | | | | | | keymgr: Remove RawKeystoreEntryGabriela Moldovan2026-05-188-89/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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`.
* | | | | | | | Merge branch 'enumset-update' into 'main'Clara Engler2026-05-191-2/+2
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Update to enumset 1.1.13 See merge request tpo/core/arti!4004
| * | | | | | | | Update to enumset 1.1.13Nick Mathewson2026-05-191-2/+2
|/ / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1.1.11 and 1.1.12 were yanked, apparently for accidental semver breaks.
* | | | | | | | Merge branch 'routerdescs-certs' into 'main'Clara Engler2026-05-193-4/+508
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement Elliptic Curve Certificates for Router Descriptors See merge request tpo/core/arti!3939
| * | | | | | | | tor-netdoc: Remove round-trip Ed25519 cert verificationClara Engler2026-05-191-20/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit removes the Ed25519 round-trip verifciation in certificate creation because it reduces the code complexity and is pretty uncommon in cryptographic code.
| * | | | | | | | tor-netdoc: Add TODO for family name getterClara Engler2026-05-191-0/+3
| | | | | | | | |
| * | | | | | | | tor-netdoc: Test invalid certified key typeClara Engler2026-05-191-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit tests an invalid certified key type by adding a test that does not use CertifiedKey::Ed25519.
| * | | | | | | | tor-netdoc: Prepare tests for invalid certified key type (fmt)Clara Engler2026-05-191-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | No functional change.
| * | | | | | | | tor-netdoc: Prepare tests for invalid certified key typeClara Engler2026-05-191-8/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit adjusts the tests to make it possible to add a test for a non-matching certified key type. For this, we simply store the certified key as a CertifiedKey and not as an Ed25519Identity. Inevitably, this requires us to "force" create such an identity on the fly in order to test the mismatch, which is fine because it is an edge-case anyways.
| * | | | | | | | tor-netdoc: Fix embedded cert numberingClara Engler2026-05-191-14/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes the numbering due to a recently added additional check. Review using --word-diff=color.
| * | | | | | | | tor-netdoc: Properly verify certified key typeClara Engler2026-05-191-6/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit properly verifies the certified key type by not returning a bug but rather invalid data in the case of the certified key not being an Ed25519 key. Tests and number adjustments will follow.
| * | | | | | | | tor-netdoc: Add Ed25519FamilyCertClara Engler2026-05-193-1/+159
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit adds a new type, Ed25519FamilyCert, which works very similar to Ed25519IdentityCert, except that it supports family certificates. A notable difference is, that the identity key must be provided during verification because it does not make sense to verify these certificates without it.
| * | | | | | | | tor-netdoc: Add Ed25519IdentityCertClara Engler2026-05-193-3/+173
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit implements the Ed25519IdentityCert type using EmbeddableCert logic that was introduced recently. These certificates contain the identity key and the signing key of a relay and the type provides two methods: .verify() for verification and .new_signed() for construction. Besides, edcert::* is now made public as this is required now given that it contains public types.
| * | | | | | | | tor-netdoc: Add test framework for edcertsClara Engler2026-05-191-1/+162
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit adds the test utilities required for testing the yet-to-be-implemented Ed25519IdentityCert and Ed25519FamilyCert types, whose interface largely overlaps, making a test "framework" useful to avoid code duplication. Their interfaces consist of two functions: * `.verify(Ed25519Identity, KeyUnknownCert, Duration, SystemTime)` * Verifies a KeyUnknownCert whether it is valid, given a SystemTime plus post valid tolerance alongside a well-known identity key in the case of family certificates. * `.new_signed(&ed25519::Keypair, Ed25519Identity, SystemTime)` * Creates a new certificate from a signing keypair plus a certified key alongside a SystemTime at when this certificate will expire. The commit introduces a testing trait that will be implemented for both types once added. Then, there are two generic tests that test the generation and verification of a valid random one as well as a test that tests violation of various constraints common to these certificates. The generic trait is most notable for the .new_signed() and .verify() method which we are roughly documented. Please see the next commit for a concrete example if understanding is hard.
* | | | | | | | | Merge branch 'routerdescs2-parse2-prep' into 'main'Clara Engler2026-05-192-17/+26
|\ \ \ \ \ \ \ \ \ | |/ / / / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | Preperations for Router Descriptor Parsing See merge request tpo/core/arti!3959
| * | | | | | | | tor-netdoc: Move FromIterator doc to type docClara Engler2026-05-191-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit moves the documentation for FromIterator<RelayFamilyId> for RelayFamilyIds to the type level documentation of RelayFamilyIds. It also rephrases the comment to fit in there more nicely grammatically and contextually, as a pure motion of the comment would not have been helpful to have there in any circumstance.
| * | | | | | | | tor-netdoc: Add TODO for sort/dedup in FromIteratorClara Engler2026-05-191-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds a TODO with regard to .sort() and .dedup() in FromIterator in RelayFamilyIds and the fact that it is slightly weird. This is not a new problem with the type but stems from the fact that it tries to emulate a BTreeSet inside a Vec which is not nice.
| * | | | | | | | tor-netdoc: Derive PartialOrd, Ord on NumericBooleanClara Engler2026-05-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While already here, do this change, in case it becomes useful later on.
| * | | | | | | | tor-netdoc: Sort and dedup in RelayFamilyIds::from_iterClara Engler2026-05-191-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes working with this more comfortable as those calls are generally required anyways.
| * | | | | | | | tor-netdoc: Derive Copy on RsaIdentity wrappersClara Engler2026-05-191-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | RsaIdentity implements Copy itself so it makes sense to derive it on those wrappers too.
| * | | | | | | | tor-netdoc: Derive Eq for NumericBooleanClara Engler2026-05-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Helpful in tests instead of Deref.
| * | | | | | | | tor-netdoc: Derive Transparent on NumericBooleanClara Engler2026-05-191-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes an outstanding TODO.
| * | | | | | | | tor-netdoc: Derive Transparent on Ed25519PublicClara Engler2026-05-191-7/+2
|/ / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We will need an inverse of the existing From implementation so that derivation makes sense because we will obtain it for free then.
* | | | | | | | Merge branch 'rpc-config-preliminary' into 'main'Nick Mathewson2026-05-1810-128/+203
|\ \ \ \ \ \ \ \ | |/ / / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hopefully non-controversial parts of RPC configuration prep work Closes #2532 See merge request tpo/core/arti!3979
| * | | | | | | config-path: Convert tests to use dd(TorConfig).Nick Mathewson2026-05-183-9/+7
| | | | | | | |
| * | | | | | | config: Convert some load.rs tests to use dd(TorConfig).Nick Mathewson2026-05-181-18/+11
| | | | | | | |
| * | | | | | | config: Use derive(TorConfig) for map builder tests.Nick Mathewson2026-05-181-14/+8
| | | | | | | |
| * | | | | | | config: Implement Default for ConfigurationTree.Nick Mathewson2026-05-181-1/+1
| | | | | | | |
| * | | | | | | tor-config: remove a needless clone.Nick Mathewson2026-05-181-1/+1
| | | | | | | |
| * | | | | | | arti::reload_cfg: Extract common part of select_biased! blockNick Mathewson2026-05-181-15/+3
| | | | | | | |
| * | | | | | | arti: Reformat reload_cfg.rs and cfg.rsNick Mathewson2026-05-182-66/+84
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is _just_ the results of a rustfmt invocation on this file. Due to #2532, these modules were getting overlooked by our regular rustfmt checks. I'm planning to circle back later on and fix #2532, but for now, reformatting these files will make future edits cleaner.
| * | | | | | | config: Add a merge_from method to ConfigurationTreeNick Mathewson2026-05-182-1/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We'll use this in RPC to implement configuration changing.
| * | | | | | | tor-config: Allow inspecting parts of a ConfigurationTree.Nick Mathewson2026-05-122-3/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will be used by RPC. Probably. It might actually be a better to re-serialize the configuration after parsing it, so that our inspection functions can see default values.
* | | | | | | | Merge branch 'rd-type-changes' into 'main'Clara Engler2026-05-182-38/+42
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Uncontroversial RouterDesc type changes See merge request tpo/core/arti!3976
| * | | | | | | | tor-netdoc: Store ntor_onion_key as Curve25519PublicClara Engler2026-05-182-4/+4
| | | | | | | | |
| * | | | | | | | tor-netdoc: Use saturating SystemTime add/sub (fmt)Clara Engler2026-05-181-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | No functional change.
| * | | | | | | | tor-netdoc: Use saturating SystemTime add/subClara Engler2026-05-181-4/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit deserves no explanation, it should be the default.
| * | | | | | | | tor-netdoc: Store published in Iso8601TimeSpClara Engler2026-05-182-6/+8
| | | | | | | | |
| * | | | | | | | tor-netdoc: Add intro item to RouterDescClara Engler2026-05-182-28/+27
|/ / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit introduces `RouterDesc::router` using `RouterDescIntroItem` by moving `nickname`, `orport`, `dirport`, and `ipv4addr` into it. A notable change is that ipv4addr is no longer stored in an `Option`. I have no idea why this was the case because it has always been mandatory and never None anyways, but I suspect it was to be able to treat it as an iterator, something we can also achieve using iter::once().
* | | | | | | | Merge branch 'fs-mistrust-generic-libc-fix' into 'main'opara2026-05-141-2/+2
|\ \ \ \ \ \ \ \ | |_|_|_|/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | make fs-mistrust tests libc-generic See merge request tpo/core/arti!3996
| * | | | | | | make fs-mistrust tests libc-genericAndrew Kloet2026-05-141-2/+2
|/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The access_symlink() test fails when using musl libc, which for ELOOP uses the string: [1] > "Symbolic link loop" libc errors should be matched against the standardized error names rather than the libc error messages. This behaviour has been recognized by the maintiner of the Alpine Linux Arti port who had to delete this test to have it build against musl.[2] [1] https://git.musl-libc.org/cgit/musl/tree/src/errno/__strerror.h#n52 [2] https://gitlab.alpinelinux.org/alpine/aports/-/blob/3.23-stable/community/arti/disable-access_symlink-test.patch
* | | | | | | Merge branch 'metrics-yanked' into 'main'Nick Mathewson2026-05-131-2/+2
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Update to metrics 0.24.6 See merge request tpo/core/arti!3992
| * | | | | | | Update to metrics 0.24.6Nick Mathewson2026-05-131-2/+2
|/ / / / / / / | | | | | | | | | | | | | | | | | | | | | The previous version (0.24.5) has been yanked.
* | | | | | | Merge branch 'arc_torclient' into 'main'Nick Mathewson2026-05-1320-306/+335
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make all TorClient constructors wrap the TorClient in an Arc. Closes #2469 See merge request tpo/core/arti!3990