| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
| |
`tor-keymgr/testdata` contains a bunch of OpenSSH keys used for testing.
I meant to share the script I generated them with, but somehow never got
around to it.
Note: the OpenSSH keys generated by this script are going to look
slightly different than the ones that are checked into the repo. This is
because some of those original key files were generated ad-hoc (I
manually modified them a while ago, but I forgot exactly how
|
| |
|
|
| |
This is a follow-up from !2131
|
| |\
| |
| |
| |
| |
| |
| | |
tor-keymgr: Refactor code shared between ArtiNativeKeystore and ArtiEphemeralKeystore
Closes #1362 and #1367
See merge request tpo/core/arti!2131
|
| | |
| |
| |
| | |
This reverts commit 9ea35caeb1ed23fd029627d04819debc41d85c77.
|
| | |
| |
| |
| | |
Prompted by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2131#note_3028014
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
| |
| |
| |
| |
| | |
This helps prevent external users from creating `SshKeyData` out of
unsupported types of `ssh_key::public::KeyData` and
`ssh_key::private::KeypairData`.
|
| | |
| |
| |
| | |
KeyData/KeypairData.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
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`.
|
| | | |
|
| | |
| |
| |
| |
| |
| | |
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.
|
| | |
| |
| |
| | |
Closes #1362 #1367
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| | | |
|
| | |
| |
| |
| |
| | |
I think it makes more sense for parse_ssh_format_erased to be a function
of the key than of `KeyType`.
|
| | |
| |
| |
| |
| |
| | |
We're about to need it in the `UnparsedOpenSshKey` impl.
This commit is just code motion and has no functional changes.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
`UnparsedOpenSshKey` was originally only meant to be used for the
`ArtiNativeKeystore`.
I am about to make it private to the arti module, so I'm updating the
ephemeral keystore tests to not use it.
Part of #1362
|
| |\ \
| |/
|/|
| |
| |
| |
| | |
add_warning/CI: New strategy to avoid "unexpected-cfgs" warning
Closes #1395
See merge request tpo/core/arti!2129
|
| | |
| |
| |
| | |
This commit is automatically generated.
|
| | |
| |
| |
| |
| |
| |
| | |
This doesn't need to be public anymore now that the test keys are
exported from `test_utils`.
Addresses https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2076#note_3016577
|
| | |
| |
| |
| |
| |
| |
| | |
This is used by `ArtiNativeKeystore` and the `EphemeralKeystore`.
Moving it to test_utils means `EphemeralKeystore` no longer needs to
import test helpers from the arti module.
|
| |/
|
|
|
| |
Closes #1363 and addresses a handful of TODOs about `include_str!`ing
the same key multiple times from various test modules.
|
| |
|
|
| |
This had somehow got duplicated; remove the one in derive.rs.
|
| | |
|
| |
|
|
|
|
| |
`KeyMgrBuilderError` is used in `KeyMgrBuilder`'s public API.
See https://gitlab.torproject.org/tpo/core/arti/-/issues/1358#note_3016025
|
| |
|
|
|
|
|
| |
This is a new feature in d-d 0.10.0.
Our currrent semver policy doesn't care about this, but let's not
encode that property in the tree and leave ourselves a booby-trap.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the combination of a number of separate commits, many of which
were generated by seddery, and then rebased and squashed.
Cargo.toml
perl -i~ -pe 's{^derive-adhoc}{derive-deftly = "0.10"}' crates/*/Cargo.toml
(not regenerated during rebase)
update Cargo.lock
`cargo fetch` without --locked
(regenerated during rebase)
seddery
git-ls-files | grep '\.rs$' | xargs perl -i~ -pe 's{^use derive_adhoc}{use derive_deftly}'
git-ls-files | grep '\.rs$' | xargs perl -i~ -pe 's{\bdefine_derive_adhoc\b}{define_derive_deftly}g'
git-ls-files | grep '\.rs$' | xargs perl -i~ -pe 's{\bAdhoc\b}{Deftly}g if m{derive}'
git-ls-files | grep '\.rs$' | xargs perl -i~ -pe 's{\#\[derive_adhoc\b}{#[derive_deftly}g'
git-ls-files | grep '\.rs$' | xargs perl -i~ -pe 's{use derive_adhoc}{use derive_deftly}'
git-ls-files | grep '\.rs$' | xargs perl -i~ -pe 's{\bderive_adhoc\b}{derive_deftly_adhoc} if m{use.*deftly}'
git-ls-files | grep '\.rs$' | xargs perl -i~ -pe 's{\bderive_adhoc!}{derive_deftly_adhoc!}'
(not regenerated during rebase)
Manually add `#[derive_deftly_adhoc]` where needed.
seddery
git-ls-files | grep '\.rs$' | xargs perl -i~ -pe 's{\#\[adhoc\b}{#[deftly}g'
git-ls-files | grep '\.rs$' | xargs perl -i~ -pe 's{\bderive_adhoc_template}{derive_deftly_template}'
(not regenerated during rebase)
Manually fix up an import
Manually update some builder attrs
Manually fix up tor_rtmock::time_core
This was missed in my seddery, due to me rebasing the branch and not
redoing the seddery.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
Change Path::display to this new function, in call sites where it's
being used for a diagnostic.
|
| |\
| |
| |
| |
| |
| |
| | |
deny clippy::unchecked_duration_subtraction
Closes #1304
See merge request tpo/core/arti!2008
|
| | | |
|
| |\ \
| | |
| | |
| | |
| | | |
Fix rust-analyzer problems seen with default features on Windows
See merge request tpo/core/arti!2009
|
| | |/
| |
| |
| |
| | |
The PermissionsExt::from_mode function is not available on Windows and
disabled in all other places of the file. Do so here as well.
|
| |/
|
|
|
|
|
| |
The slugs used for ArtiPath must be separated by slashes, which Windows
systems wouldn't do properly because paths are separated by backslashes.
Implement a platform-independent way of slug creation.
|
| |
|
|
| |
Closes #1202
|
| | |
|
| |
|
|
|
| |
`InvalidKeyPathComponentValue::Slug` now has to wrap a `String`, because
we can't get `HsIdParse` errors as static strings.
|
| | |
|
| | |
|
| |
|
|
| |
Prompted by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1960#note_2994317
|
| |
|
|
|
| |
The tor-keymgr crate *is* documented, but could use a better README and
some examples and/or usage guides.
|
| |
|
|
| |
This removes a remnant of a now-gone TODO.
|