tor-keymgr: Add a top-level Error enum
Previously, the tor_keymgr::Error
type was Box<dyn KeystoreError>
.
This forced us to impl KeystoreError
for any error returned by the
keymgr (including those that were not coming from a Keystore
impl).
Now, tor_keymgr::Error
is an non-exhaustive enum and the Box<dyn KeystoreError>
opaque error type is only returned from Keystore
impls.
The reason we're keeping the dyn KeystoreError
error type is because
it enables Keystore
implementors to use their own error types. Without
it, they would have to choose from our (closed) set of error variants,
which may not be suitable for their keystore. See #901 (closed).
Closes #1113 (closed)