| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This will make it easier to see the correspondence between CTorPaths
and the HS client/service key specifiers.
Initially, I was hoping this would make it easier to write a d-d macro
that automatically derives a `CTorPath` variant (e.g.
`HsClientDescEncKeypair`) from the KeySpecifier type name
(`HsClientDescEncKeypairSpecifier`), but alas, I don't think d-d can
"chop off" name suffixes ("Specifier", in this case).
`from_ctor_path()`/`ctor_path()` implementations for converting
`CTorPath`s to and from key specifiers.
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
Previously, the `arti_path` was needed to build the various `ArtiPath`
errors, but that's no longer the case.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
The `ArtiPath` is included in the `KeyPathError::Arti` outer error type,
so there is no need to include it in `ArtiPathError` too.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
This makes the error handling around `KeyPath`s a bit more sensible,
IMO, and it will make it easier to extend it for `CTorPath` errors.
|
| | | |
| | |
| | |
| | | |
This never returns any other type of error.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Out of all the variants in `KeyPathError`, `Unrecognized` is the odd one
out, because unlike the others, which are mainly just lower level
parsing errors, `Unrecognized` is a higher level error constructed in
`KeyMgr::describe()`.
`KeyMgr::describe()` now returns an `Option`, because
* the failure to describe a user provided `KeyPath` may or may not be
an error
* previously, `describe()` would only ever return `Ok` or
`Err(KeyPathError::Unrecognized)`, which essentially a binary
result. Also, `describe()` would never return any of the other
`KeyPathError` kinds, which further suggests `Unrecognized`
doesn't belong there
The `Unrecognized` variant still exists, but is now part of
`KeystoreCorruptionError`, (returned from
`KeyMgr::validate_entry_integrity()`).
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If you try to use this macro within `tor-keymgr` (as we do in the
tests), clippy complains about the unreachable catch-all branch for
`KeyPath`s (we can't get rid of the catch-all, because outside of
`tor-keymgr` KeyPath` is non-exhaustive; but we should probably just go
ahead and make `KeyPath` exhaustive at this point, because it's very
unlikely it will ever grow new variants).
|
| | | |
| | |
| | |
| | |
| | | |
`KeyMgr::describe()` now works for `CTorPath`s too, so the key path
validation can be the same as for `ArtiPath`s.
|
| | | |
| | |
| | |
| | |
| | | |
C Tor keystore entries now use the same output format as the non-C Tor
entries.
|
| | | | |
|
| | | |
| | |
| | |
| | | |
This folds `display_arti_entry()` into `display_entry()`.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This is no longer needed now that `KeyMgr::describe()` works on
`CTorPath`s.
Removing this special handling has the added bonus that the keymgr CLI
output is now uniform for all keystores (before this change, `keys list`
used a slightly different output format for displaying C Tor entries).
The corresponding tests will be updated in a future commit.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | | |
This is similar to `#[serde(with = "...")]`, and feels a bit nicer than
having to specify two separate functions for the conversions (because
with two separate functions, you *can* technically only specify one of
them, which shouldn't be allowed).
|
| | | |
| | |
| | |
| | |
| | | |
This enables us to implement `KeyMgr::describe()`, which relies on the
ability to extract the key specifier of the key from its `KeyPath`.
|
| |/ /
| |
| |
| |
| |
| | |
Unlike `ArtiPath`s, C Tor paths don't need to be parsed, because we have
a predefined list of allowed C Tor paths (`CTorPath` is an enum with
variants for each supported key type).
|
| |\ \
| | |
| | |
| | |
| | | |
tor-netdoc: Replace AuthCert with the version from tmp
See merge request tpo/core/arti!3555
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
This is in the spec. I don't think it is a great idea to duplicate it
here.
|
| | | |
| | |
| | |
| | |
| | | |
These names came from tmp, and we renamed things as we went, but
didn't change the docs everywhere.
|
| | | |
| | |
| | |
| | | |
Fix the type names while we're here.
|
| | | |
| | |
| | |
| | | |
This module is now the "proper" tests for the parse2 impl on AuthCert.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
tmp's version of AuthCert is gone. Each of its fields is already in
AuthCert, including the docs links. I've decided not to transfer the
syntax snippets.
The remaining function in that module is now an inherent method on
AuthCert, not on tmp's version.
This needs reformatting since verify_self_signed is now at the wrong level!
|
| | | |
| | |
| | |
| | |
| | | |
It's not clear that we want to expose these impls, but our existing
tests (in test::tmp) want them.
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | | |
This will enable parse2 to process it.
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We can call this type authcert::CrossCert.
The names in the docs are getting rather wrong, and right now the docs
build produces warnings. We'll tidy all that at the end after we're
done moving and renaming.
|
| | | |
| | |
| | |
| | |
| | |
| | | |
The distinction is: `verify_selfcert` sounds like it only verifies the
self certificate. `veriify_self_signed` completely verifies a
document, albeit one that is expected to be self-signed.
|
| | | |
| | |
| | |
| | |
| | | |
Let's keep the existing name `AuthCert` in authcert.rs, so we want to
rename this from DirKeyCertificateVersion, while we move it.
|
| | | |
| | |
| | |
| | | |
This is our new style. Now there's no known-dead code.
|
| | | |
| | |
| | |
| | | |
This will let the parse2 derive work properly.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Make AuthCert look like the network document.
This means removing its stored copy of H(KP_auth_sign_rsa), which it
previously had via the embedded AuthCertKeyIds.
We reculculate it as needed in AuthCert::key_ids().
|