Commit Graph

7690 Commits

Author SHA1 Message Date
Nick Mathewson 2833648bfb Merge branch 'ipts' into 'main'
dev notes: Draft IPT algorithm

See merge request tpo/core/arti!1429
2023-07-25 16:29:38 +00:00
Nick Mathewson 6f841d0fb8 Merge branch 'onion-service-notes-v1' into 'main'
Initial notes about onion service structs and APIs

See merge request tpo/core/arti!1422
2023-07-25 16:29:28 +00:00
gabi-250 e3d2e12624 Merge branch 'keymgr-keygen-key-list' into 'main'
keymgr-doc: Document the list of keys the keymgr needs to generate.

See merge request tpo/core/arti!1413
2023-07-25 10:51:01 +00:00
Ian Jackson 965aab96b9 Merge branch 'safer_build' into 'main'
Add `doc/safer_build.md` to explain path anonymization

Closes #957

See merge request tpo/core/arti!1435
2023-07-25 10:44:51 +00:00
Nick Mathewson 7347a25ab1 Change keyid to nickname 2023-07-24 12:22:46 -04:00
Nick Mathewson 4f5fb5c011 Mention anti-DOS options. 2023-07-24 12:19:43 -04:00
Nick Mathewson 75038d8348 Mention ob_config. Not sure we will want to build it like this. 2023-07-24 12:18:21 -04:00
Nick Mathewson 7166c9e5b5 Add `doc/safer_build.md` to explain path anonymization
Otherwise our default build instructions will lead people
to build binaries that include their home directory.

Closes #957 for now.
2023-07-24 09:34:40 -04:00
Nick Mathewson f400ba2925 Merge branch 'fmt' into 'main'
Run cargo +nightly fmt to format many let ... else ...

See merge request tpo/core/arti!1434
2023-07-24 13:19:36 +00:00
Ian Jackson 3e2a909707 Run cargo +nightly fmt to format many let ... else ...
rustfmt has grown opinions about how let ... else ... ought to be
formatted.  They don't always agree with our previous manual
decisions.

I think our policy is to always insist on rustfmt.  When that version
of rustfmt hits stable, our CI will start to fail for everyone.
(Right now this discrepancy just causes trouble for contributors who
are using nightly by default.)
2023-07-24 13:46:05 +01:00
Nick Mathewson 19f097d1fa Merge branch 'typos' into 'main'
Fix typos

See merge request tpo/core/arti!1431
2023-07-22 14:08:24 +00:00
Dimitris Apostolou 947ddfff0c
Fix typos 2023-07-22 10:10:34 +03:00
gabi-250 15407a1a7e Merge branch 'keymgr-api-updates' into 'main'
keymgr: API updates and other improvements

Closes #903

See merge request tpo/core/arti!1421
2023-07-21 16:22:56 +00:00
gabi-250 3ceff307bf Merge branch 'keymgr-api-updates-minor-fixes' into 'keymgr-api-updates'
Keymgr api updates minor fixes

See merge request gabi-250/arti!1
2023-07-21 15:54:52 +00:00
gabi-250 f735583eca Merge branch 'keymgr-api-updates-more-fixes' into 'keymgr-api-updates'
Address review comments

See merge request gabi-250/arti!5
2023-07-21 15:47:44 +00:00
Ian Jackson 611576c515 Merge branch 'access' into 'main'
Add getters to a couple of config builders

See merge request tpo/core/arti!1425
2023-07-21 15:10:31 +00:00
gabi-250 eeca8e36aa Merge branch 'warn' into 'main'
tor-geoip: Fix a doc warning

See merge request tpo/core/arti!1430
2023-07-21 14:25:16 +00:00
Ian Jackson f00ac8e747 tor-geoip: Fix a doc warning
cargo doc --locked --document-private-items --workspace --all-features

warning: unclosed HTML tag `CountryCode`
  --> crates/tor-geoip/src/lib.rs:90:54
   |
90 |     /// We store these as NonZeroU8 so that an Option<CountryCode> only has to
   |                                                      ^^^^^^^^^^^^^
   |
   = note: `#[warn(rustdoc::invalid_html_tags)]` on by default
2023-07-21 14:44:14 +01:00
Ian Jackson a92627418d dev notes: Draft IPT algorithm 2023-07-21 13:20:34 +01:00
Gabriela Moldovan 96e59cb97f
keymgr: Use KeystoreId instead of a static string. 2023-07-21 12:36:29 +01:00
Gabriela Moldovan 32083cbd51
keymgr: Add a newtype for keystore identifiers. 2023-07-21 12:36:22 +01:00
Gabriela Moldovan ec82795614
keymgr, tor-error: Remove unused error type and HasKind. 2023-07-21 12:36:19 +01:00
Gabriela Moldovan c7d29dfc3d
keymgr: Use BadApiUsage instead of KeystoreMisuse.
Trying to use a keystore that doesn't exist is `bad_api_usage!`.
2023-07-21 12:36:16 +01:00
Gabriela Moldovan d48cc2ca6b
keymgr: Remove unused KeystoreSelector::All variant.
This also removes the corresponding
`KeyMgrError::UnsupportedKeystoreSelector` error, because it's not
needed anymore.
2023-07-21 12:36:13 +01:00
Gabriela Moldovan a4c5edd165
Revert "keymgr: Require callers to be explicit about which keystore to get keys from." (fmt) 2023-07-21 12:21:39 +01:00
Gabriela Moldovan 98337afec9
Revert "keymgr: Require callers to be explicit about which keystore to get keys from."
This reverts commit 38a6c74c78.

This also updates some tests to make them compile with the reverted
version of the code.
2023-07-21 12:21:36 +01:00
Ian Jackson 562c1a00be Merge branch 'access2' into 'main'
tor-linkspec: impl AsRef<str> for PtTransportName

See merge request tpo/core/arti!1426
2023-07-21 09:48:52 +00:00
Ian Jackson cfbff212d4 tor-guardmgr: bridges: fix typo in getter doc 2023-07-21 10:48:16 +01:00
Nick Mathewson c8e1dad298 Merge branch 'pwd-grp' into 'main'
Update pwd-grp to 0.1.1 to fix MacOS build etc.

See merge request tpo/core/arti!1427
2023-07-20 21:48:33 +00:00
Gabriela Moldovan 3cc2da91f2
keymgr: Remove unnecessary dependency. 2023-07-20 19:37:04 +01:00
gabi-250 56a4d7317c Merge branch 'rlimit_up' into 'main'
Bump requirement to rlimit 0.10.1

See merge request tpo/core/arti!1423
2023-07-20 18:36:32 +00:00
Gabriela Moldovan 3dbc49f3d0
keymgr: Use std::cfg instead of if_cfg. 2023-07-20 19:35:54 +01:00
Gabriela Moldovan 9d818f164b
keymgr: Require callers to be explicit about where to remove keys from.
As with `KeyMgr::insert`, only `KeystoreSelector::Id` and
`KeystoreSelector::Default` are supported.
2023-07-20 19:25:12 +01:00
Gabriela Moldovan 9ece85e572
keymgr: Add tests for KeyMgr. 2023-07-20 19:25:08 +01:00
Gabriela Moldovan 79c382ff50
keymgr: Add EncodableKey::to_bytes for encoding keys.
We'll need this to implement `Keystore::insert`.
2023-07-20 19:25:04 +01:00
Gabriela Moldovan 483bb6712d
keymgr: Add some extra derives to ArtiPath and KeyType. 2023-07-20 19:25:01 +01:00
Gabriela Moldovan 38a6c74c78
keymgr: Require callers to be explicit about which keystore to get keys from. 2023-07-20 19:24:57 +01:00
Gabriela Moldovan 85be9c0d30
keymgr: Move KeyMgr::get impl to Keymgr::get_from_store.
This refactoring will make more sense later, when we give
`KeyMgr::get` an extra parameter that specifies which keystore to
retrieve the key from.
2023-07-20 19:24:53 +01:00
Gabriela Moldovan 8b0b8785f4
keymgr: Remove unimplemented/unnecessary has_key_bundle function.
The concept of a "key bundle" would introduce a lot of complexity while
providing little to no gain.

Some context:
```
Originally, "key bundles" were meant to be the answer to the question
"which keystore should insert place keys in?":
36606a66dd/crates/tor-keymgr/src/mgr.rs (L60-69)
However, I'm not so sure anymore that "key bundles" are the answer. I
don't think there is any way we can "guess" where a key should go. When
inserting/generating a new key, we should either:

always write to the same, primary key store, OR require the user to be
explicit about which key store the new key should go in (by assigning an
ID to each key store and expecting the user to provide it when
inserting/generating new keys)

I prefer the latter option, because it provides more flexibility, which
we're going to need when implementing the key management CLI (which I
think should allow users to generate keys anywhere they want, e.g. arti
keymgr generate <key type> --keystore hsm ...)
```

For more details, see the discussion on #903.

Closes #903
2023-07-20 19:24:44 +01:00
Gabriela Moldovan 0b20806213
keymgr: Require callers to specify which keystore to insert keys in.
The caller uses `KeystoreSelector` to specify which keystore to insert
the new key into (only `KeystoreSelector::Id` and
`KeystoreSelector::Default` are supported for `insert`).

The ability to insert keys in a particular keystore will come in handy
when we implement the key management CLI (the CLI will have an option
for specifying the keystore to access/modify).
2023-07-20 19:24:29 +01:00
Gabriela Moldovan 6ec1b55938
keymgr: Add a convenience function for boxing keystore errors. 2023-07-20 19:24:19 +01:00
Gabriela Moldovan a794d78894
keymgr: Add an error type for misuse errors.
This error will be returned by `KeyMgr` if the caller tries to access a
keystore that does not exist, or if the requested `KeystoreSelector`
cannot be applied.
2023-07-20 19:24:16 +01:00
Gabriela Moldovan cf038fb772
keymgr: Add type for specifying which keystore to access. 2023-07-20 19:24:12 +01:00
Gabriela Moldovan d6d67769c9
keymgr: Add a function for looking keystores up by ID.
This will be used by `KeyMgr::insert` after we add an additional
argument to `insert` for specifying the keystore it should be using.
2023-07-20 19:24:08 +01:00
Gabriela Moldovan 04379dcae6
keymgr: Add an `id` function to `Keystore`.
This will enable the `KeyMgr` to look up `Keystore`s by ID (which is
a requirement for disambiguating the semantics of `insert`, which
currently tries to "guess" which keystore it should be using).
2023-07-20 19:24:05 +01:00
Gabriela Moldovan 2f05920c4d
keymgr: Iterate over all the stores, not just the secondary ones. 2023-07-20 19:24:01 +01:00
Gabriela Moldovan 9f5974fb7f
keymgr: Explicitly specify the default keystore for `KeyMgr`. 2023-07-20 19:23:58 +01:00
Gabriela Moldovan 8e49d1dd11
keymgr: Add a type alias for `Box<dyn Keystore>`.
This makes the code slightly less verbose.
2023-07-20 19:23:51 +01:00
Gabriela Moldovan ac93b1aef6
keymgr-config: Make fields private, add function for checking if keystore is enabled.
Hiding the underlying value of `enabled` enables us to give it a
different `auto` value depending on whether the `keymgr` feature is
enabled or not (it defaults to `true` if `keymgr` is enabled, and
`false` otherwise).
2023-07-20 19:23:48 +01:00
Gabriela Moldovan f18e773332
arti-client: Use a default keystore config if `experimental-api` is disabled.
The `experimental-api` was only meant to apply to the use of the
unstable `ArtiNativeKeystoreConfig` in the Arti config.
`experimental-api` was _not_ supposed to be used for enabling/disabling
the keystore (that's what the `enabled` flag is for).
2023-07-20 19:23:45 +01:00