summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | miri: Fix update runesIan Jackson2024-10-081-2/+2
| | | | |
* | | | | Merge branch 'fix-clippy' into 'main'gabi-2502024-10-091-1/+1
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | tor-keymgr: Fix indentation in doc comment. See merge request tpo/core/arti!2516
| * | | | | tor-keymgr: Fix indentation in doc comment.Gabriela Moldovan2024-10-091-1/+1
| | |_|/ / | |/| | | | | | | | | | | | | | | | | | Addresses the `doc_lazy_continuation` lint, fixing the `rust-latest` job that's currently failing on main.
* | | | | Merge branch 'fix-cargo-warning' into 'main'Jim Newsome2024-10-093-3/+3
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | Fix Cargo.toml typo with `no_default_features = true` Closes #1666 See merge request tpo/core/arti!2498
| * | | | fix Cargo.toml typo with `no_default_features = true`Steven Engler2024-10-033-3/+3
| | | | |
* | | | | Merge branch 'rpc-feature-check' into 'main'gabi-2502024-10-095-4/+49
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | arti-rpcserver: minimal handling for request.meta.require See merge request tpo/core/arti!2511
| * | | | | arti-rpcserver: minimal handling for request.meta.requireNick Mathewson2024-10-072-2/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We have defined a forward-compatibility mechanism for the RPC system, where a request may list one or more required "features", and if any feature is absent, the request will fail. Since no "features" are currently implemented, this code does the bare minimum to implement this mechanism, by rejecting every request with a nonempty "require" field.
| * | | | | arti-rpcserver: Correctly handle rpc.meta without `updates`Nick Mathewson2024-10-071-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `update` field in request.meta is optional, so we should allow it to default to `false` when it is absent.
| * | | | | tor-{error,rpcbase}: Add new RPC error codes from spec.Nick Mathewson2024-10-072-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These, like the other RPC-only error kinds, probably don't belong in `tor-error`. But for now, that's where they all are, and moving them is out of scope for this branch. See #1668.
| * | | | | rpc spec: correct the name of a field.Nick Mathewson2024-10-071-2/+1
| | | | | |
* | | | | | Merge branch 'secondary-keystores' into 'main'gabi-2502024-10-0848-405/+2307
|\ \ \ \ \ \ | | |_|_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | tor-keymgr: Support reading C Tor keys. Closes #858 See merge request tpo/core/arti!2481
| * | | | | arti-client: Fix a broken doc comment.Gabriela Moldovan2024-10-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This broke because `tor_keymgr::config::arti` was moved to `tor_keymgr::config`.
| * | | | | tor-keymgr: Move C Tor keystore configs under ctor key (fmt).Gabriela Moldovan2024-10-081-5/+10
| | | | | |
| * | | | | tor-keymgr: Move C Tor keystore configs under ctor key.Gabriela Moldovan2024-10-083-39/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This way we have a more intuitive layout, where all C Tor keystore configuration is under the `ctor` key. Prompted by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2481#note_3090486
| * | | | | arti: Add a ctor-keystore feature.Gabriela Moldovan2024-10-081-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | This enables us to build `arti` with C Tor keystore support.
| * | | | | editorconfig: Ignore the new keymgr test files.Gabriela Moldovan2024-10-081-1/+1
| | | | | |
| * | | | | tor-keymgr: Add tests for CTorServiceKeystore.Gabriela Moldovan2024-10-084-1/+149
| | | | | |
| * | | | | tor-keymgr: Add tests for CTorClientKeystore.Gabriela Moldovan2024-10-087-2/+183
| | | | | |
| * | | | | tor-keymgr: Move assert_found helper to test_utils.Gabriela Moldovan2024-10-082-14/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This moves `assert_found` out of the `keystore::arti::test` so we can reuse it for testing other keystore implementations too.
| * | | | | tor-keymgr: Add tests for the keystore config.Gabriela Moldovan2024-10-082-0/+165
| | | | | |
| * | | | | tor-config: Expose assert_config_error test helper.Gabriela Moldovan2024-10-085-15/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This moves the `assert_config_error` helper from the restricted discovery config tests to a `testing` module in `tor-config` (I am about to reuse it for the C Tor keystore config tests too).
| * | | | | tor-keymgr: Validate keystore ID uniqueness in ArtiKeystoreConfigBuilder.Gabriela Moldovan2024-10-081-1/+23
| | | | | |
| * | | | | arti-client, tor-keymgr: Remove a couple of now-addressed TODOs.Gabriela Moldovan2024-10-082-6/+0
| | | | | |
| * | | | | tor-key-forge: Remove now-outdated TODO.Gabriela Moldovan2024-10-081-3/+0
| | | | | |
| * | | | | tor-key-forge: Remove unused function.Gabriela Moldovan2024-10-081-8/+0
| | | | | |
| * | | | | arti-client: Use the configured C Tor client keystores.Gabriela Moldovan2024-10-083-3/+14
| | | | | |
| * | | | | tor-keymgr: Add configuration for C Tor client keystores.Gabriela Moldovan2024-10-083-4/+107
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is intentionally partially mis-indented to make this more reviewable (in case the reviewer isn't using `ignore-all-space`).
| * | | | | arti-client: Use the configured C Tor keystores, if any.Gabriela Moldovan2024-10-084-12/+28
| | | | | |
| * | | | | tor-keymgr: Export the CTor{Client,Service}Keystores.Gabriela Moldovan2024-10-080-0/+0
| | | | | |
| * | | | | tor-keymgr: Derive Getters for CTorKeystoreConfig.Gabriela Moldovan2024-10-081-1/+1
| | | | | |
| * | | | | tor-keymgr: Derive Getters for the ArtiKeystoreConfig.Gabriela Moldovan2024-10-081-1/+2
| | | | | |
| * | | | | arti-client: Refactor KeyMgr building logic.Gabriela Moldovan2024-10-081-15/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This deduplicates the keymgr building logic in preparation for supporting C Tor keystores (building the keymgr in a central place makes things a bit easier, because regardless of the `kind` of the primary keystore, we will need to extend the `KeyMgrBuilder` with the configured secondary `ctor` keystores, if any).
| * | | | | tor-keymgr: Add a keystore for C Tor client keys.Gabriela Moldovan2024-10-085-1/+333
| | | | | |
| * | | | | tor-keymgr: Add a keystore for C Tor service keys.Gabriela Moldovan2024-10-086-0/+480
| | | | | |
| * | | | | tor-keymgr: Rename Filesystem variant to Io for clarity (fmt).Gabriela Moldovan2024-10-082-44/+57
| | | | | |
| * | | | | tor-keymgr: Rename Filesystem variant to Io for clarity.Gabriela Moldovan2024-10-082-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `FilesystemError::Filesystem` variant was actually just for IO errors.
| * | | | | tor-keymgr: Refactor common fs errors into a separate error enum.Gabriela Moldovan2024-10-083-76/+96
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will be reused by other on-disk key stores (such as the C Tor ones we're about to add). I recommend reviewing this commit using `git diff --color-moved=zebra --ignore-space-change`
| * | | | | tor-keymgr: Add RelKeyPath::from_parts constructor.Gabriela Moldovan2024-10-081-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | This will be used to create relative paths representing C Tor keys.
| * | | | | tor-keymgr: Rename RelKeyPath::new to RelKeyPath::arti.Gabriela Moldovan2024-10-082-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | We're about to add a separate constructor for CTor paths.
| * | | | | tor-keymgr: Move the checked_op utils out of the arti module.Gabriela Moldovan2024-10-083-10/+16
| | | | | | | | | | | | | | | | | | | | | | | | We are about to use this for the ctor keystore implementation too.
| * | | | | tor-hsclient: Implement ctor_path for client keys.Gabriela Moldovan2024-10-081-1/+8
| | | | | |
| * | | | | tor-hsservice: Implement ctor_path() for service keys.Gabriela Moldovan2024-10-081-0/+20
| | | | | |
| * | | | | tor-hsservice: Remove now-unused import from internal prelude.Gabriela Moldovan2024-10-081-1/+1
| | | | | |
| * | | | | tor-keymgr: Rename KeyPathRange to ArtiPathRange (fmt).Gabriela Moldovan2024-10-083-6/+6
| | | | | |
| * | | | | tor-keymgr: Rename KeyPathRange to ArtiPathRange.Gabriela Moldovan2024-10-086-10/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is only used for representing portions of `ArtiPath`s, so let's rename it accordingly.
| * | | | | tor-keymgr: Implement KeyPath::matches for CTorPaths.Gabriela Moldovan2024-10-084-22/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `KeyPath::matches` now returns a boolean (because we can't return a matching "range" for `CTorPaths`, because unlike ArtiPaths, they're not represented as `String`s, and do not have variable parts that need to be captured).
| * | | | | tor-keymgr: Reimagine CTorPath as an enum.Gabriela Moldovan2024-10-084-14/+82
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | C Tor's client restricted discovery keys don't have the service hsid encoded in the filename (the hsid of the service each key is associated with is encoded in contents of the key file). This means that given a key specifier like `HsClientDescEncKeypairSpecifier` (which is a wrapper over an HsId), we can't actually compute the relative path of the key in its `KeySpecifier::ctor_path()` implementation. To do so we would need to access the keystore to figure out which path contains the requested HsId, which we can't (and shouldn't!) do from within the `KeySpecifier` impl. This suggests the String newtype (representing a relative path) we previously had is not a good abstraction for `CTorPath`s. Moreover, `CTorPath` are static (they don't have dynamic components like `ArtiPath`), so it makes more sense to model `CTorPath` as an enum. The new `CTorPath::ClientHsDescEncKey(HsId)` variant will be used to instruct the C Tor client keystore to find the file that contains the specified `HsId`, while the `Service` variant will be used for hidden service keys.
| * | | | | arti: Remove extraneous whitespace from example config.Gabriela Moldovan2024-10-081-1/+1
| | | | | |
| * | | | | tor-keymgr: Add configuration for C Tor service keystores.Gabriela Moldovan2024-10-085-4/+246
| | | | | |
| * | | | | tor-keymgr: Return an error if the keystore IDs are not unique.Gabriela Moldovan2024-10-081-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `KeyMgrBuilder` now returns an error if the configured keystores don't have pairwise unique IDs. This is needed because some keymgr operations take a `KeystoreSelector` specifying the ID of the keystore the operation should be performed on, and assume that the keystore ID uniquely identifies a single keystore.