Age | Commit message (Collapse) | Author |
|
|
|
- Trait Parse introduces a uniform interface to parse packets,
messages, keys, and related data structures.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Use our Result, communicate errors when making backends.
|
|
|
|
|
|
|
|
- Also, avoid deprecated method in sq.
|
|
- Instead of having Kind::Any, use an Option<Kind> where
appropriate.
|
|
|
|
|
|
|
|
|
|
|
|
- We define all types in the root of the openpgp crate, and their
implementations in separate modules. This makes using these types
much simpler, yet keeps the root from getting too crowded.
- Also fix all users accordingly.
|
|
|
|
|
|
- The url crate is more expressive than hyper::Uri and among other
things features a 'join' operation.
- This fixes malformed URLs being created by the net module where we
naively using string operations instead of the proper join
operation.
|
|
- Provide a function Descriptor::connect_with_policy that allows one
to override the configured IPC policy.
- Can be used to enforce the handling of secret key material in an
external server.
|
|
|
|
- Add a simple integration test checking hkp interactions.
|
|
- Provide external servers with a more useful context. This is not
so critical for the keystore, but could be interesting for servers
providing secret key services.
|
|
- Now that the Context is Send + Clone, we can attach a clone to the
Descriptor and pass it to the server thread.
|
|
- The failure crate is a young error handling solution for Rust. It
may change the API, but since we pin our dependencies, this should
not be a problem for us, albeit a bit inconvenient.
- Introduction of the crate is a bit noisy, but not as bad as
anticipated, because failure magically handles all errors used in
the standard library.
- Matching on concrete error values requires downcasting before
matching, which seems a bit unidiomatic. This is the cost of
using and "chaining" arbitrary error types. This is something
that may be improved later on in the library or language.
- Having said that, using the error type in the tool was nice. I
did not have to use a downcast, so maybe my worries about
downcasts are unjustified because it is not such a common use case
after all. On the other hand, the tool is quite simple and our
only mode of failure is to print the message.
|
|
- Spawn background servers according to the IPC policy.
- Add a test to store that demonstrates this.
|
|
- Previously, servers running in threads advertised their cookie in
the synchronization file, making it possible to connect to them.
However, the lifetime of these servers is bound to the lifetime of
the host process. This leads to spurious errors for other
processes when servers go down unexpectedly. A scheme to restart
servers magically seems not worth the trouble. This means that
servers need to rely on some other synchronization mechanism to
control access to shared resources.
|
|
- Error handling when starting either server or process is tricky.
This patch at least displays errors when spawning a thread like we
do when spawning a process.
|
|
- Update all keys stored in a store with network policy 'encrypted'
and 'insecure' periodically using the SKS keyserver pool.
- Slightly amend the net::ipc interface so that servers can spawn
futures on the reactor.
- As a background service cannot directly communicate failures, this
patch adds a logging mechanism.
- In sq, display the key update timestamp, and the status of the
last update.
|
|
|
|
- It only contains a KeyId type which is redundant relative to KeyID
and it is buggy (e.g., when it converts a Key ID to hex, it drops
any leading zeros).
- Update users to use KeyID instead.
|
|
- Previously, the TcpListener 'l' that is handed to the child
process via conversion to a raw filedescriptor was closed when
being dropped. This lead to a small chance of closing the next
TcpListener, resulting in spurious failures when falling back to
the in-process server.
|
|
|
|
- Now that TPKs can be serialized, KeyServer::send can get actual
TPKs to send.
|
|
- We should not even suggest to use unwrap in our examples.
|
|
|
|
- The network policy determines how Sequoia connects to remote
servers.
- Add a policy field in the context.
- Add an error indicating a policy violation.
- Honor the policy in the net module.
- Add ffi glue.
|
|
- Split up into six crates: buffered-reader, openpgp, sequoia-core,
sequoia-ffi, sequoia-net, and sequoia-store.
- Adjust imports accordingly.
|