summaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
...
| * Fix rustdoc errors from !2140.Nick Mathewson2024-05-091-2/+2
| |
| * Merge branch 'rpc_stream_preliminaries' into 'main'Nick Mathewson2024-05-0914-51/+240
| |\ | | | | | | | | | | | | RPC: Preliminaries for RPC-stream integration See merge request tpo/core/arti!2140
| | * RPC: Un-parameterize RpcSession.Nick Mathewson2024-05-092-30/+43
| | | | | | | | | | | | | | | | | | | | | Instead, add a trait so that we can hold TorClient<R> and invoke only the methods on it that we need. This is a partial revert of 47f012829d3381fd896c6b6f20961fbfe2f40f6d.
| | * RPC: Use one cast table entry per type.Nick Mathewson2024-05-091-29/+47
| | |
| | * tor-rpcbase: Add facility to downcast to Arc<dyn Trait>.Nick Mathewson2024-05-093-9/+84
| | | | | | | | | | | | | | | Previously we could only downcast to &dyn Trait, which is not adequate.
| | * Make cast_to_trait inherent on dyn Object.Nick Mathewson2024-05-091-4/+10
| | | | | | | | | | | | | | | This makes `ObjectRefExt` less necessary, and will let us make it Arc-only.
| | * rpcserver: rename streams.rs to codecs.rs.Nick Mathewson2024-05-093-2/+2
| | | | | | | | | | | | I think I'm going to add another stream management module here.
| | * proto: Expose wait_for_connection as a part of the DataStream API.Nick Mathewson2024-05-091-1/+1
| | |
| | * rpc: Mark TorClient as exposed outside of sessionNick Mathewson2024-05-091-1/+6
| | |
| | * rpc: Teach RpcSession to expose and isolate clients.Nick Mathewson2024-05-091-1/+39
| | |
| | * Make RpcSession parameterized.Nick Mathewson2024-05-093-22/+23
| | | | | | | | | | | | | | | | | | This change allows it to hold a TorClient<R> that isn't type-erased. We'll use this for cases when we need to get the client directly and call functions on it.
| | * rpc: Add an isolated-client method on TorClient.Nick Mathewson2024-05-092-3/+27
| | |
| | * rpc::invoker_ent_list: allow trailing comma.Nick Mathewson2024-05-091-1/+1
| | |
| | * rpc: Add helper type for methods that return a single id.Nick Mathewson2024-05-092-0/+9
| | |
| * | Merge branch 'vanguard-todos' into 'main'gabi-2502024-05-097-75/+117
| |\ \ | | | | | | | | | | | | | | | | tor-guardmgr: Address some vanguard-related TODOs See merge request tpo/core/arti!2139
| | * | tor-guardmgr: Map NoSuitableRelay errors to ErrorKind::NoPath.Gabriela Moldovan2024-05-091-2/+1
| | | |
| | * | tor-circmgr: Remove TODO expressing doubt about VanguardHsPathBuilder.Gabriela Moldovan2024-05-091-2/+0
| | | | | | | | | | | | | | | | | | | | I don't think it's all wrong, this was left over from the first draft implementation.
| | * | tor-guardmgr: Add an error variant for when the vanguard mode is unsuitable.Gabriela Moldovan2024-05-092-8/+25
| | | |
| | * | tor-guardmgr: Return a BootstrapRequired error if all the sets are empty (fmt).Gabriela Moldovan2024-05-091-1/+6
| | | |
| | * | tor-guardmgr: Return a BootstrapRequired error if all the sets are empty.Gabriela Moldovan2024-05-092-14/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, `select_vanguard` returned a `NoSuitableRelay` error if it was unable to select a relay to use as a vanguard. We now distunguish the "there are no suitable relays in the vanguard sets" (`NoSuitableRelays`) error case from the "our vanguard sets are empty" (`BootstrapRequired`) one.
| | * | tor-guardmgr: Fix typo in documentation.Gabriela Moldovan2024-05-091-1/+1
| | | |
| | * | tor-guardmgr: Add a BootstrapRequired error for VanguardMgr.Gabriela Moldovan2024-05-091-0/+9
| | | |
| | * | tor-guardmgr: Move VanguardMgrError to a separate module.Gabriela Moldovan2024-05-092-40/+50
| | | | | | | | | | | | | | | | | | | | This is about to grow another variant, so I'm moving it to a dedicated `err` module.
| | * | tor-guardmgr: Remove a nonsensical TODO.Gabriela Moldovan2024-05-091-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | The `match` below it is fine, there's no need to rewrite it. (I think this TODO is actually dupe of the the TODO above it).
| | * | tor-guardmgr: Remove TODO about removing Vanguard abstraction.Gabriela Moldovan2024-05-091-3/+0
| | | | | | | | | | | | | | | | | | | | I think it's alright to keep it: it gives us the flexibility to extend it later on, if needed.
| | * | tor-guardmgr: Remove unnecessary clippy allow.Gabriela Moldovan2024-05-091-1/+0
| | | |
| | * | tor-guardmgr: Remove a TODO HS-VANGUARDS.Gabriela Moldovan2024-05-091-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | This TODO doesn't really need to be implemented: we can test the `VanguardMgr` just the same without it (`GuardMgrInner` is similar, in that it doesn't mock the rng).
| | * | tor-circmgr: Downgrade some TODO HS-VANGUARDs.Gabriela Moldovan2024-05-092-2/+2
| | | |
| | * | tor-guardmgr: Remove dead_code allow.Gabriela Moldovan2024-05-091-1/+0
| | |/
| * / tor-keymgr: Fix nightly warnings.Gabriela Moldovan2024-05-091-6/+6
| |/ | | | | | | This is a follow-up from !2131
| * Merge branch 'keymgr-ephemeral-refactor' into 'main'gabi-2502024-05-0911-616/+830
| |\ | | | | | | | | | | | | | | | | | | tor-keymgr: Refactor code shared between ArtiNativeKeystore and ArtiEphemeralKeystore Closes #1362 and #1367 See merge request tpo/core/arti!2131
| | * Revert "tor-keymgr: Fix now-failing test."Gabriela Moldovan2024-05-081-0/+16
| | | | | | | | | | | | This reverts commit 9ea35caeb1ed23fd029627d04819debc41d85c77.
| | * tor-keymgr: Validate the KeyType when inserting into the ephemeral keystore.Gabriela Moldovan2024-05-081-0/+20
| | | | | | | | | | | | Prompted by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2131#note_3028014
| | * tor-keymgr: Add function for extracting the KeyType of an ssh key.Gabriela Moldovan2024-05-082-0/+50
| | |
| | * tor-keymgr: Fix newly failing tests (fmt).Gabriela Moldovan2024-05-081-33/+62
| | |
| | * tor-keymgr: Fix newly failing tests.Gabriela Moldovan2024-05-082-59/+109
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This updates the keymgr tests to be slightly more robust. These tests attach some metadata to each key, such as the "nickname" of the key (which only exists for testing purposes), whether the key was auto-generated, and the keystore ID of the keystore from which the key was retrieved. Previously, the metadata was encoded in the key "material" itself (the test "keys" were actually just `String`s with a hacky `EncodableKey` implementation that abused the "encrypted" variant of `KeypairData`). This was only possible because we had access to the key internals (through `SshKeyData::Public`/`SshKeyData::Private`), but since the internals are inaccessible now, the tests need to be updated.
| | * tor-keymgr: Make SshKeyData an opaque type.Gabriela Moldovan2024-05-073-87/+75
| | | | | | | | | | | | | | | | | | This helps prevent external users from creating `SshKeyData` out of unsupported types of `ssh_key::public::KeyData` and `ssh_key::private::KeypairData`.
| | * tor-keymgr: Do not make SshKeyData infallibly convertible from ↵Gabriela Moldovan2024-05-072-11/+49
| | | | | | | | | | | | KeyData/KeypairData.
| | * tor-keymgr: Seal the EncodableKey trait.Gabriela Moldovan2024-05-072-1/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As explained in the docs, this trait should not be implementable outside of the `tor-keymgr` crate. The `SshKeyData::into_erased` and `UnparsedOpensshKey::parse_ssh_format_erased` impls assume the types implementing `EncodableKey` form a statically known closed set. If we later decide to make the supported key types an open set, we should make this trait implementable outside of `tor-keymgr` too. External types wanting to create custom "key types" for use in the keymgr should use the non-sealed `ToEncodableKey` trait, which specifies the `EncodableKey` type to use. This trait is mainly used to create `SshKeyData` IMO, we should make `SshKeyData` opaque, since it's not meant to be constructed through other means (`SshKeyData` is currently a public enum, so its variants and the `ssh_key` types they wrap are public). A future commit will make it opaque.
| | * tor-keymgr: Update ephemeral keystore docs.Gabriela Moldovan2024-05-071-2/+2
| | |
| | * tor-keymgr: Dedupe all the convert functions.Gabriela Moldovan2024-05-073-143/+17
| | |
| | * tor-keymgr: Make an ArtiNativeKeystore-specific function private.Gabriela Moldovan2024-05-071-20/+16
| | | | | | | | | | | | | | | | | | | | | The `ssh_algorithm()` function was only meant for use in the ArtiNativeKeystore, for extracting the `KeyType` given the `SshAlgorithm` of a key read from disk, so it really shouldn't be crate-public.
| | * tor-keymgr: Move arti-specific ssh code to arti module.Gabriela Moldovan2024-05-078-70/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | Some of the types and impls from `key_type/ssh.rs` (such as `UnparsedOpenSshKey`) have nothing to do with `KeyType`, and are only used by the `ArtiNativeKeystore`, so I'm moving them to the `arti` keystore module. The shared ssh-related stuff now lives in the top-level `ssh.rs`.
| | * tor-keymgr: Test that the ephemeral store returns the correct type.Gabriela Moldovan2024-05-071-2/+6
| | |
| | * tor-keymgr: Fix now-failing test.Gabriela Moldovan2024-05-071-16/+0
| | | | | | | | | | | | | | | | | | Inserting a key that has the wrong key type no longer fails, because we now store the `KeyData` as-is, without attempting to parse it as a specific kind of SSH key.
| | * tor-keymgr: Simplify ephemeral keystore impl.Gabriela Moldovan2024-05-071-31/+6
| | | | | | | | | | | | Closes #1362 #1367
| | * tor-keymgr: Make SshKeyData convertible to ErasedKey.Gabriela Moldovan2024-05-071-3/+151
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds an `SshKeyData::into_erased` function that returns the `SshKeyData` as a type-erased concrete key type (e.g. a type-erased `ed25519::Keypair`). This commit duplicates all of the `convert_*` functions from `key_type/ssh.rs`. A future commit will rewrite the code from `key_type/ssh.rs` to use `SshKeyData::into_erased`, and to remove the duplicate functions. Previously, `EncodableKey` returned an encoded `SshKeyData`, which doesn't implement `EncodableKey`. This was rather inconvenient for `Keystore` implementers. For instance, for the in-memory keystore we ended up working around this limitation by serializing and deserializing `EncodableKey`s to and from `String`. For the full context, see https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2076#note_3016460 Needed for #1362 #1367
| | * tor-keymgr: Add an error type for unsupported keys.Gabriela Moldovan2024-05-071-0/+6
| | |
| | * tor-keymgr: Move parse_ssh_format_erased to UnparsedOpenSshKey.Gabriela Moldovan2024-05-073-39/+37
| | | | | | | | | | | | | | | I think it makes more sense for parse_ssh_format_erased to be a function of the key than of `KeyType`.
| | * tor-keymgr: Move parse_openssh! macro to the top of the file.Gabriela Moldovan2024-05-071-58/+58
| | | | | | | | | | | | | | | | | | We're about to need it in the `UnparsedOpenSshKey` impl. This commit is just code motion and has no functional changes.