| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | | |
| | |
| | |
| | |
| | |
| | | |
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
|
| | |\ \
| | | |
| | | |
| | | |
| | | | |
Use add_warning to maintain warning exception in examples.
See merge request tpo/core/arti!2132
|
| | | | | |
|
| | |\ \ \
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Fix remaining instances of unexpected_cfgs lint
Closes #1395
See merge request tpo/core/arti!2134
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | | |
(We need this to permit our usage of our $omit_from hack.)
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | | |
By removing 'cfg(fuzzing)', this resolves another case of #1395.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The use of cfg(fuzzing) here is reasonable and localized, but we
need to permit it to avoid a warning from #1395.
|
| | | |/ /
| | | |
| | | |
| | | |
| | | | |
This now generates an error (per #1395), and everything we used it for
is also available as a feature.
|
| | |/ / |
|
| | |\ \
| | | |
| | | |
| | | |
| | | | |
tor-rpcbase: Use Void to eliminate a panic, as statically unreachable
See merge request tpo/core/arti!2124
|
| | | | | |
|
| | |\ \ \
| | |_|/
| |/| |
| | | |
| | | |
| | | |
| | | | |
add_warning/CI: New strategy to avoid "unexpected-cfgs" warning
Closes #1395
See merge request tpo/core/arti!2129
|
| | | | |
| | | |
| | | |
| | | | |
This commit is automatically generated.
|
| | |\ \ \
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
tor-keymgr: Move test constants to test_utils.
Closes #1363
See merge request tpo/core/arti!2125
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
| | |\ \ \ \
| | |/ / /
| |/| | |
| | | | |
| | | | | |
Declare arti-hyper obsolete and unmaintained
See merge request tpo/core/arti!2127
|
| | | | |/
| | |/| |
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
It was a bit misleading since it doesn't cover all processing for the
hop.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Get rid of an `if` block by changing the guarded loop to check its
conditions at the beginning of the loop instead of the end. This
is a slight behavior change, since previously channel readiness
wasn't checked before the first iteration of the loop.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This should be a pure refactor. We remove a large if block and
modify the first loop inside it to check whether the channel is ready
before each attempt to send a message instead of after.
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | |/
| |/|
| | |
| | | |
It no longer requires the user to have `typetag` in scope.
|
| | | |
| | |
| | |
| | | |
This resolves a clippy warning about redundant bounds.
|