summaryrefslogtreecommitdiff
path: root/crates/tor-keymgr/src/mgr.rs
Commit message (Collapse)AuthorAgeFilesLines
* tor-keymgr: Make SshKeyData accessors more idiomatic.Gabriela Moldovan2023-09-261-1/+1
|
* tor-keymgr: Rename as_ssh_keypair_data to as_ssh_key_data.Gabriela Moldovan2023-09-261-2/+2
| | | | | This function no longer returns `KeypairData` (it now returns `SshKeyData`).
* tor-keymgr: Make EncodableKey support public keys too.Gabriela Moldovan2023-09-251-5/+5
| | | | | | | | | Previously, `EncodableKey::to_keypair_data` could only be used for encoding private keys (its return type was `KeypairData`). Now `EncodableKey::to_keypair_data` can return public key data (`KeyData`) too. Note: `to_keypair_data()` will be renamed in a future commit.
* Run maint/add_warning to add lint block everywhereIan Jackson2023-08-231-0/+1
|
* tor-keymgr: Re-export ssh-key.Gabriela Moldovan2023-08-161-3/+5
| | | | | | | | | | The `KeypairData` type from [ssh-key] at some point leaked into the keymgr API (via the `EncodableKey` trait). Instead of re-exporting just `KeypairData`, let's re-export the entire `ssh_key` crate (`EncodableKey` implementors would need additional types from `ssh_key` to construct a `KeypairData` object anyway). [ssh-key]: https://crates.io/crates/ssh-key
* keymgr: Replace EncodableKey::to_bytes() with SSH-specific function.Gabriela Moldovan2023-08-021-4/+8
| | | | | | | | | | | The `EncodableKey::to_bytes` function didn't make much sense, because not all keys have a canonical byte representation. This commit replaces `EncodableKey::to_bytes` with `EncodableKey::as_ssh_keypair_data`. In the future, `EncodableKey` will grow functions for encoding keys in other storage formats too. Closes #965
* keymgr: Add TODO regarding generate() being racy.Gabriela Moldovan2023-07-271-0/+3
|
* keymgr: Document the TOCTOU issue with generate().Gabriela Moldovan2023-07-271-0/+16
|
* keymgr: Make the return value of generate() indicate if a new key was created.Gabriela Moldovan2023-07-271-3/+5
|
* keymgr: Make Keystore::generate() return a Result.Gabriela Moldovan2023-07-271-3/+3
|
* keymgr: Move duplicated match block to KeyMgr::select_keystore().Gabriela Moldovan2023-07-241-22/+14
|
* keymgr: Add KeyMgr::generate() for generating new keys.Gabriela Moldovan2023-07-241-1/+69
|
* keymgr: Add function for generating EncodableKeys.Gabriela Moldovan2023-07-241-0/+7
|
* keymgr: Add a Keystore::contains accessor.Gabriela Moldovan2023-07-241-0/+26
|
* keymgr: Use KeystoreId instead of a static string.Gabriela Moldovan2023-07-211-16/+33
|
* keymgr, tor-error: Remove unused error type and HasKind.Gabriela Moldovan2023-07-211-20/+2
|
* keymgr: Use BadApiUsage instead of KeystoreMisuse.Gabriela Moldovan2023-07-211-9/+7
| | | | Trying to use a keystore that doesn't exist is `bad_api_usage!`.
* keymgr: Remove unused KeystoreSelector::All variant.Gabriela Moldovan2023-07-211-28/+0
| | | | | | This also removes the corresponding `KeyMgrError::UnsupportedKeystoreSelector` error, because it's not needed anymore.
* Revert "keymgr: Require callers to be explicit about which keystore to get ↵Gabriela Moldovan2023-07-211-16/+7
| | | | keys from." (fmt)
* Revert "keymgr: Require callers to be explicit about which keystore to get ↵Gabriela Moldovan2023-07-211-33/+22
| | | | | | | | | keys from." This reverts commit 38a6c74c7894dc96b16c9039cacc2a4023977b05. This also updates some tests to make them compile with the reverted version of the code.
* keymgr: Require callers to be explicit about where to remove keys from.Gabriela Moldovan2023-07-201-15/+66
| | | | | As with `KeyMgr::insert`, only `KeystoreSelector::Id` and `KeystoreSelector::Default` are supported.
* keymgr: Add tests for KeyMgr.Gabriela Moldovan2023-07-201-0/+213
|
* keymgr: Require callers to be explicit about which keystore to get keys from.Gabriela Moldovan2023-07-201-6/+19
|
* keymgr: Move KeyMgr::get impl to Keymgr::get_from_store.Gabriela Moldovan2023-07-201-26/+36
| | | | | | This refactoring will make more sense later, when we give `KeyMgr::get` an extra parameter that specifies which keystore to retrieve the key from.
* keymgr: Require callers to specify which keystore to insert keys in.Gabriela Moldovan2023-07-201-26/+30
| | | | | | | | | | 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).
* keymgr: Add an error type for misuse errors.Gabriela Moldovan2023-07-201-2/+28
| | | | | | 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.
* keymgr: Add a function for looking keystores up by ID.Gabriela Moldovan2023-07-201-0/+5
| | | | | This will be used by `KeyMgr::insert` after we add an additional argument to `insert` for specifying the keystore it should be using.
* keymgr: Iterate over all the stores, not just the secondary ones.Gabriela Moldovan2023-07-201-1/+7
|
* keymgr: Explicitly specify the default keystore for `KeyMgr`.Gabriela Moldovan2023-07-201-4/+11
|
* keymgr: Add a type alias for `Box<dyn Keystore>`.Gabriela Moldovan2023-07-201-2/+5
| | | | This makes the code slightly less verbose.
* keymgr: Rename KeyStore to Keystore globally.Gabriela Moldovan2023-06-291-6/+6
| | | | | We've been capitalizing the "s" in "KeyStore" inconsistently. This `s/KeyStore/Keystore/g` across the codebase.
* keymgr: Downgrade "TODO hs" to "TODO HSS".Gabriela Moldovan2023-06-281-2/+2
| | | | | These TODOs can be deferred for now: we're not declaring the keymgr APIs stable until we add support for hidden services.
* keymgr: Replace Error with Box<dyn KeystoreError>.Gabriela Moldovan2023-06-261-3/+3
| | | | Part of #901
* keymgr: Downgrade 2 "TODO hs" to "TODO HSS".Gabriela Moldovan2023-06-221-1/+1
|
* keymgr: Remove Error::NotFound, update KeyMgr, KeyStore APIs.Gabriela Moldovan2023-06-211-11/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | This removes the `NotFound` `tor_keymgr::Error` variant. Since `KeyMgr` and `KeyStore` users will need to be able to distinguish between "not found" errors and other I/O errors, this also changes the return types of the `get()` and `remove()` functions of `KeyStore` and `KeyMgr`, which now return `Ok(None)` instead of `Error::NotFound`. This makes the `KeyStore` API consistent with `KeyMgr::get`, which already has a return type of `Result<Option<K>>` (rather than `Result<K>`). This also prepares us for #901, which will make key store errors opaque. Without this change: * we'd have to create a `struct NotFoundError;` error type. Its `HasKind` impl would need to return a new `ErrorKind::KeyStoreErrorNotFound` `ErrorKind` variant * callers would have to match the `error_kind()` of the error to figure out whether the key simply can't be found (`ErrorKind::KeyStoreErrorNotFound`), or if something went wrong (any other `ErrorKind`). Given the above, I think `Result<Option<()>>` makes for a more ergonomic API. Part of #901
* keymgr: Defer key bundle support until "Basic Service" milestone.Gabriela Moldovan2023-06-201-1/+1
| | | | We don't really need "key bundles" for the client keys.
* keymgr, arti-client: KeyMgr should return Ok(None) if the key is not found.Gabriela Moldovan2023-06-151-4/+4
| | | | | | | This simplifies usage quite a bit and will enable us to implement a dummy `KeyMgr` that doesn't depend on the error types from tor-keymgr (which will replace the "real" `KeyMgr` if the keymgr feature is disabled).
* keymgr: Introduce ToEncodableKey to simplify lookups.Gabriela Moldovan2023-06-151-12/+11
| | | | | | | This means `KeyMgr` users don't need to specify the underlying key type (e.g. `ed25519::Keypair`) when retrieving keys. Instead, they can just specify the type required (as long as it implements `ToEncodableKey`), e.g. `HsClientIntroAuthKeypair`.
* keymgr: Add key manager implementation stub.Gabriela Moldovan2023-06-151-0/+112