| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | |
|
| | |
|
| |
|
|
| |
and `keystores`
|
| |
|
|
| |
The function now returns `Result<Vec<InvalidKeystoreEntry<'a>>>`
|
| |
|
|
|
|
|
| |
Add a check in `run_check_integrity` to verify that the `expired_entries`
collection is empty after processing all registered keystores. This should
always be true, as all expired entries are expected to be removed during
iteration. If not, it indicates a bug.
|
| |
|
|
|
| |
Replace raw tuples with named structs to reduce type complexity and improve
code clarity and maintainability.
|
| | |
|
| |
|
|
| |
`run_check_integrity`
|
| |
|
|
|
|
| |
- Fix bug where expired keys from one keystore were incorrectly
associated with all keystores
- Remove unnecessary clone
|
| |
|
|
| |
`run_check_integrity`
|
| |
|
|
|
|
| |
- Add `display_invalid_keystore_entries` helper function
`print_check_integrity_incipit`
- Add `display_invalid_keystore_entries` comment
|
| |
|
|
|
|
| |
Add initial functional implementation of `display_invalid_keystore_entries`,
which processes a list of invalid keystore entries grouped by `KeystoreId`
and displays them with associated error messages.
|
| |
|
|
|
|
|
|
|
|
| |
Create the skeletal version of the new `display_invalid_keystore_entries` function
and adapt `run_check_integrity` to use it.
The function now takes a slice of pairs, each containing a `KeystoreId` and a vector
of invalid keystore entries along with their error messages, and processes all
entries internally by iterating over each keystore, instead of being called
once per keystore.
|
| |
|
|
|
|
|
|
|
| |
Previously, the function worked with a flat `Vec<KeystoreEntryResult<KeystoreEntry>>`.
Now, it uses a structured `Vec<(KeystoreId, Vec<KeystoreEntryResult<KeystoreEntry>>)>`,
grouping entries by keystore.
This makes it easier to track which keystore each entry belongs to,
and prepares the code for upcoming improvements.
|
| | |
|
| |
|
|
|
|
| |
It's unlikely these arguments will be particularly useful, and omitting
skip_all can have security implications, so it's better to avoid it to
reflect good practice.
|
| |
|
|
|
| |
I've added these in places that are useful for the debugging that I've
been doing.
|
| | |
|
| | |
|
| | |
|
| |\
| |
| |
| |
| |
| |
| | |
Update code for Edition 2024 (second attempt)
Closes #2101
See merge request tpo/core/arti!3137
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
First, run
```
git grep -l "^edition =" |
xargs perl -i -pe 's/^edition *=.*/edition = "2024"/;'
```
Second, manually verify that all Cargo.toml files have changed,
and nothing else has changed.
Third, run cargo fmt again.
|
| |/
|
|
|
| |
* Update `display_entry` function to handle different `KeyPath` variants
* Add functions `display_arti_entry` and `display_ctor_entry`
|
| |
|
|
| |
Closes #2012.
|
| | |
|
| |
|
|
|
| |
* arti: raw: `remove-by-path` is now `remove-by-id`
* arti: raw: Adjust integration tests
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* CLI: Add `keys-raw` and subcommand `remove-by-path`
* arti: Add `arti::subcommand::raw` for the CLI `keys-raw`
* tor-keymgr: Add `ArtiNativeKeystoreError::UnexpectedRawEntry`,
`ArtiEphemeralKeystoreError::NotSupported`
* tor-keymgr: Add `tor-keymgr::raw` module
* tor-keymgr: Add `Keystore::remove_unchecked`
* tor-keymgr: Change `Keystore::list` to return `KeystoreEntry`
* tor-keymgr: Add field `KeystoreEntry::raw_id`
* doc: Update keys.md
* doc: Add raw.md
* tor-keymgr: BREAKING: `UnrecognizedEntryError::new` associated
function is now only accessible within the crate `tor-keymgr`
* tor-keymgr: BREAKING: `UnrecognizedEntryId` is renamed to
`UnrecognizedEntry`
* tor-keymgr: BREAKING: `KeyMgr::list()` and `Keystore::list()`
now return `Result<Vec<KeystoreEntryResult<KeystoreEntry>>>`
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
New cargo feature `metrics`, currently experimental.
New config option `metrics.prometheus.listen`. Uses standard `Listen`
syntax, but not every configuration is supported due to upstream
limitations.
If the config option is set, use metrics-exporter-prometheus to offer
an HTTP scrape endpoint. Or, if compiled out, fail.
Currently there are no actual metrics exported at all.
|
| |\
| |
| |
| |
| |
| |
| | |
hsc: remove onion-address flag in favour of stdin
Closes #1630
See merge request tpo/core/arti!2861
|
| | | |
|
| | |
| |
| |
| |
| | |
* Add `quite` to the common arguments
* Substitute dialoguer in favor of `read_line` in `get_onion_address`
|
| | | |
|
| | |
| |
| |
| |
| | |
* The user will be prompted interactively for the onion-address
to prevent onion-address leaking in shell history
|
| |\ \
| |/
|/|
| |
| | |
arti: hsc-key-get: Print LF after discovery key
See merge request tpo/core/arti!2856
|
| | |
| |
| |
| |
| | |
Did not print a newline after service discovery key. Looked bad.
Prints newline now. Looks better.
|
| |/ |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
Introduce ToplevelRuntime as an alias, and use it in the top-level
programs.
Now none of the principal protocol implementation code has access to
the executor's toplevel entrypoint, and can't call it by mistake.
|
| |
|
|
|
|
| |
Formerly this was a conditional method argument, which is a huge
antipattern. Now it is unconditionally present, as `Option<T>` for
a type that is uninhabited when RPC isn't supported.
|
| | |
|
| |
|
|
|
|
| |
Rather than using `arti_client::config::path_resolver()`, third-party
code can get the path resolver using `TorClientConfig`s
`AsRef<CfgPathResolver>` impl instead.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a big change across multiple crates since there isn't a good way
to break it up.
This changes the signature of `CfgPath::path` to:
```
pub fn path(&self, path_resolver: &CfgPathResolver) -> Result<PathBuf, CfgPathError> {
```
Making this change means that our global `CfgPathResolver` needs to be
stored in the 'arti-client' library instead of `tor-config-path`, and
must be passed through to anything that calls `path` to expand the
variables.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
Previously, arti's primary keystore was referred to as its "default"
keystore. However, "default" is inaccurate here: there is no way to
meaningfully override this "default" (the "default" store acts as the
main keystore). Throughout the codebase, we query all keystores for keys
(including the secondary ones), but only ever write to the
default/primary keystore. This is OK for now, because it enables us to
have one mutable keystore, and multiple secondary, read-only stores.
|
| |
|
|
| |
Prompted by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2435#note_3080452
|