summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * tor-keymgr: Add KeyMgr::remove_with_type.Gabriela Moldovan2023-12-051-0/+18
| | | | | | | | | | Sometimes we need to remove a key without knowing its concrete (Rust) type (only its `KeySpecifier` and `KeyType`).
| * tor-keymgr: Make DefaultKeySpecifier generate a key info extractor as well.Gabriela Moldovan2023-12-054-1/+119
| |
| * tor-keymgr: Use KeySpecifierComponent instead of Display.Gabriela Moldovan2023-12-051-1/+14
| |
| * tor-keymgr: Store an owned type instead.Gabriela Moldovan2023-12-056-43/+52
| | | | | | | | | | | | We need this because the key specifier types will soon be owned types too (they will soon grow a From<&KeyPath> impl). We _could_ make them store `Cow`s instead, but I think that's a premature optimization.
| * tor-keymgr: Add more variants to KeyPathError.Gabriela Moldovan2023-12-051-0/+13
| | | | | | | | We will need them soon.
| * tor-keymgr: Make all arguments of arti_pattern optional.Gabriela Moldovan2023-12-052-9/+13
| | | | | | | | | | We're going to need this soon (to match all hidden service keys, regardless of nickname, for example).
| * tor-keymgr: Introduce a KeySpecifierComponent trait.Gabriela Moldovan2023-12-053-2/+35
| | | | | | | | | | | | | | | | | | Now the fields of a `DefaultKeySpecifier` no longer have to implement `Display` (they need to implement `KeySpecifierComponent`). See https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1733#note_2966400 Closes #1127
| * tor-keymgr: Add a function for describing a KeyPath.Gabriela Moldovan2023-12-052-2/+24
| |
| * tor-keymgr: Add a way of registering key info extractors using inventory.Gabriela Moldovan2023-12-055-4/+37
| |
| * tor-keymgr: Add types for extracting info out of a KeyPath.Gabriela Moldovan2023-12-052-2/+28
| |
| * tor-keymgr: Change KeyDenotator error type to KeyPathError.Gabriela Moldovan2023-12-054-12/+23
|/ | | | | This is a separate class of errors that deserves its own error type. We will soon use `KeyPathError` in other contexts as well.
* Merge branch 'msrv-followup' into 'main'Nick Mathewson2023-12-0410-49/+11
|\ | | | | | | | | Followups from MSRV 1.70 upgrade See merge request tpo/core/arti!1785
| * arti: rewrite ilog10_roundup using checked_ilog10.Nick Mathewson2023-11-301-16/+4
| |
| * tor-config: use black_box in test.Nick Mathewson2023-11-301-3/+1
| |
| * guardmgr: Stop using now-needless retain_mut crate.Nick Mathewson2023-11-304-19/+4
| |
| * rtmock: Remove now-needless to_string calls.Nick Mathewson2023-11-301-4/+0
| |
| * netdoc: Remove an "unknown_lints" exception.Nick Mathewson2023-11-301-1/+0
| |
| * llcrypto: Use up-to-date name for a clippy lint.Nick Mathewson2023-11-301-2/+1
| |
| * netdoc: refactor to use a let-else.Nick Mathewson2023-11-301-4/+1
| |
* | Merge branch 'persist' into 'main'Ian Jackson2023-12-0412-144/+772
|\ \ | | | | | | | | | | | | | | | | | | HSS: Store IPTs and their keys to disk, and reload on restart Closes #967 See merge request tpo/core/arti!1782
| * | tor-hsservice: IptKeySpecifier: add a TODO HSSIan Jackson2023-12-041-0/+2
| | |
| * | tor-hsservice: ipt_set: Remove a blocking TODOIan Jackson2023-12-041-1/+0
| | | | | | | | | | | | This function became non-dead in some earlier commit.
| * | tor-hsservice tests: Add some TODOs re IPT accepting stateIan Jackson2023-12-041-0/+8
| | |
| * | tor-hsservice tests: Check that restart gives us the same IPTs (fmt)Ian Jackson2023-12-041-11/+18
| | | | | | | | | | | | Mandatory formatting degradation.
| * | tor-hsservice tests: Check that restart gives us the same IPTsIan Jackson2023-12-041-2/+24
| | | | | | | | | | | | | | | | | | Store the IptParameters in the MockEstabState, and provide a function to list what the IPTs are. Then we can check the IPTs are reloaded and restored after restart.
| * | tor-hsservice tests: Test restarting the IPT managerIan Jackson2023-12-041-0/+9
| | | | | | | | | | | | | | | This is supposed to reload the state. In the next commit we'll check at least some of the things.
| * | tor-hsservice tests: Break out shutdown_check_no_tasksIan Jackson2023-12-041-4/+7
| | | | | | | | | | | | We're going to add another call site in a moment.
| * | tor-hsservice: Use keystore to store and reuse IPT keysIan Jackson2023-12-044-9/+85
| | |
| * | tor-hsservice: ipt_mgr: Prepare for nonfatal IPT creation errorsIan Jackson2023-12-042-5/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | Previously IPT creation could only fail due to key generation failures or other kinds of internal error, which were very unlikely and treated as fatal. But with key persistence, IPT creation will be able to fail due to eg disk full.
| * | tor-hsservice: Define key specifiers for IPT keysIan Jackson2023-12-043-1/+59
| | |
| * | tor-hsservice: ipt_set: Store publication timesIan Jackson2023-12-041-16/+101
| | |
| * | tor-hsservice: ipt_mgr: Save and load IPT relays etc. (fmt)Ian Jackson2023-12-041-6/+3
| | |
| * | tor-hsservice: ipt_mgr: Save and load IPT relays etc.Ian Jackson2023-12-042-10/+155
| | | | | | | | | | | | | | | | | | | | | | | | Store the IPT manager's data structure to the provided storage manager. Keys are not persistent yet! And we must save the publication IPT set since it can have the only record of IPT publication times.
| * | tor-hsservice: ipt_set: Have various methods take a RuntimeIan Jackson2023-12-045-16/+29
| | | | | | | | | | | | | | | | | | | | | | | | Actually, a SleepProvider. We will need this for timestamp conversion during loading and saving. channel() needs it to load. note_publication_attempt needs it for saving, as does borrow_for_update.
| * | tor-hsservice: ipt_set: Have various methods take a Runtime (pre-fmt)Ian Jackson2023-12-044-6/+19
| | | | | | | | | | | | Whitespace changes that make the next commit less noisy.
| * | tor-hsservice: ipt_set: Provide IptManagerView::borrow_for_read()Ian Jackson2023-12-041-2/+10
| | | | | | | | | | | | | | | | | | | | | We're about to make borrow_for_update() take a runtime parameter, which will be a bit annoying. borrow_for_read() doesn't need one. Call sites will come on a moment.
| * | tor-hsservice tests: Use a real storage manager for IPT manager testsIan Jackson2023-12-041-2/+8
| | |
| * | tor-hsservice tests: Break out create_storage_handles_from_state_mgrIan Jackson2023-12-041-2/+9
| | | | | | | | | | | | We're going to want to reuse this.
| * | tor-hsservice tests: Break out MockedIptManager state structIan Jackson2023-12-041-18/+45
| | | | | | | | | | | | | | | | | | | | | And therefore, break out the IPT manager startup, into a MockedIptManager::start. We can have it borrow the TempDir, legitimising the _untracked call.
| * | tor-hsservice tests: Use a real keystore for IPT manager testsIan Jackson2023-12-041-54/+4
| | | | | | | | | | | | | | | | | | IPT persistence tests will need to actually save things. We'll fix up the `.into_untracked()` wrinkle shortly.
| * | tor-hsservice tests: publish: Make run_test take a runtimeIan Jackson2023-12-041-2/+3
| | | | | | | | | | | | | | | We're about to need to arrange to have the same runtime earlier, so run_test needs to accept one from the caller.
| * | tor-hsservice tests: test_temp_dir: Make macro not assume importIan Jackson2023-12-041-1/+1
| | |
| * | tor-hsservice: ipt_set: Make ::channel() fallibleIan Jackson2023-12-044-8/+10
| | | | | | | | | | | | This is going to load the state from disk.
| * | tor-hsservice: Pass and record storage handlesIan Jackson2023-12-046-13/+76
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Introduce type aliases for the Arc<dyn >. Add Send and Sync bounds. * Pass the storage manager to ipt_mgr and the per-key handle to ipt_set. * Store the handles in ipt_mgr::Immutable and IptPublishSet. * Change the ipt mgr storage key to "hs_ipts_{nickname}". This avoids use of "_" as a non-separator, and allows the possibility of other submodules using other storage keys too - and, here, we introduce one. * Provide a dummy struct for the IPT set state, which is needed to define the type alias etc. We'll populate that struct later.
| * | tor-hsservice: Provide StartupError variants for failed state readsIan Jackson2023-12-041-0/+26
| | |
| * | tor-hsservice: Introduce IptStoreErrorIan Jackson2023-12-045-8/+72
|/ / | | | | | | | | | | | | | | | | | | If we can't store IPT details, we mustn't publish the corresponding IPT. But that's not fatal; maybe we can store later. So introduce a new IptStoreError type, and change the return value from some functions that are going to be able to fail that way. This introduces a new TODO HSS: we need the publisher to be able to retry after such a failure.
* | Merge branch 'publisher-bug' into 'main'gabi-2502023-12-041-28/+58
|\ \ | | | | | | | | | | | | | | | | | | tor-hsservice: Measure last_uploaded from when the upload was initiated. Closes #1142, #1130, and #1132 See merge request tpo/core/arti!1787
| * | tor-hsservice: Add more details to the last_uploaded docs.Gabriela Moldovan2023-12-041-0/+9
| | |
| * | tor-hsservice: If upload_all fails, retry after 5min.Gabriela Moldovan2023-12-041-13/+33
| | | | | | | | | | | | Fixes #1132
| * | tor-hsservice: Update a handful of publisher logs.Gabriela Moldovan2023-12-041-2/+5
| | | | | | | | | | | | This promotes some logs to `debug!` and adds some new trace-level logs.