summaryrefslogtreecommitdiffstats
path: root/net
AgeCommit message (Collapse)Author
2020-02-07Release 0.14.0.v0.14.0Justus Winter
2020-02-06openpgp: Rename ComponentBinding to ComponentBundle, etc.Justus Winter
- Likewise KeyBinding, UserIDBinding, UserAttributeBinding, UnknownBinding, etc. - Reason: a self-signature on a component is a binding, but revocations and TPSes are not bindings. - Consistently call collections of components and associated signatures bundles now. Likewise for fields, methods. - Fixes #425.
2020-02-05openpgp: Improve use of armor writer in tests and examples.Justus Winter
2020-01-23net: Avoid unnecessary indirection.Neal H. Walfield
2020-01-21openpgp: Change KeyIter to return KeyAmalgamations.Neal H. Walfield
- Change KeyIter to return KeyAmalgamations instead of Keys. - Given a `KeyAmalgamation`, it is possible to turn it into a `ValidKeyAmalgamation`. This is not possible with a `Key`. - With a `KeyAmalgamation`, it is still possible to query things about the certificate.
2020-01-20openpgp: Rename ComponentIter::components to bindings.Neal H. Walfield
- `ComponentIter::components` returns `ComponentBindings`. It is more accurate to call it `ComponentIter::component_bindings`. But, since it is called on a component, just use the shorter name, `ComponentIter::bindings`.
2020-01-20openpgp: Use the new framework for Cert::userid.Justus Winter
- Fixes #414.
2020-01-07Fix broken links in the documentation.Justus Winter
2020-01-06openpgp: Pass a timestamp to the KeyIter instead of each filter.Neal H. Walfield
- KeyIter::revoked and KeyIter::key_flags (and its variants) didn't take a time stamp so they could only be used for filtering keys based on their current state, not their state at some time in the past. Adding a time stamp to each of the filters would have fixed the problem, but it would have made the interface ugly: callers always want the same time stamp for all filters. - Split KeyIter into two structures: a KeyIter and a ValidKeyIter. - Add KeyIter::policy. It takes a time stamp, which is then used for filters like `alive` and `revoked`, and it returns a ValidKeyIter, which exposes filters that require a time stamp.
2019-12-20Release 0.13.0.v0.13.0Justus Winter
2019-12-20net: Use openpgp crypto API for SHA1 hashIgor Matuszewski
2019-12-20openpgp: Simplify key iteration interface.Neal H. Walfield
- Cert::keys_valid() is just a short-cut for Cert::keys_all().alive().revoked(false). - Remove Cert::keys_valid() and rename Cert::keys_all() to Cert::keys().
2019-12-19openpgp: Change KeyIter to return a struct instead of a tuple.Neal H. Walfield
- A tuple is just an unnamed, inflexible struct. Use a struct instead. - Fixes #400.
2019-12-19net: Fix bare trait objectIgor Matuszewski
2019-11-28Call TPKs Certificates, update identifiers, documentation.Justus Winter
- Fixes #387.
2019-11-26openpgp: Implement From<Fingerprint> for KeyID.Justus Winter
- Remove Fingerprint::to_keyid, use From instead.
2019-11-25Release 0.12.0.v0.12.0Justus Winter
2019-11-15net: Bail out if the received keyid does not match.Tobias Mueller
- Arguably, the user wanted to fetch a key with a certain ID. If the server returns something different, we throw an error. That error contains both the expected keyid as well as the TPK from the server, in case the consumer wants to inspect the problem or make use of the key regardless.
2019-11-06openpgp: Replace RFC 2822 parser with a de factor parserNeal H. Walfield
- RFC 4880 says that "by convention, [a User ID Packet] includes an RFC 2822 [RFC2822] mail name-addr." This is not the actual convention, and attempting to parse User IDs using an RFC 2822 parser means that many common User IDs cannot be parsed. - Disparities between the actual convention and the stated convention include: - Neither users nor the software they use to create keys correctly quotes User IDs: - 'Nachname, Vorname <name@example.org>' is not valid, because it contains an unquoted comma. It should be 'Nachname\, Vorname <name@example.org>' or '"Nachname, Vorname" <name@example.org>'. (The same goes for dots, single quotes, etc.) - 'user@example.org <user@example.org>' is not valid, because it contains an unquoted at symbol. - 'Bj=?utf-8?q?=C3=B6?=rn <bjoern@example.net>' is encoded using RFC 2047, which is what RFC 2822 mandates when using non-ASCII characters, but no OpenPGP software would decode this User ID. In practice, everyone just uses UTF-8 (in this case: 'Björn <bjoern@example.net>'). - There are many examples of User IDs containing raw email addresses ('user@example.org'). But, these are not "name-addr"s. At best, they are RFC 2822 "mailbox"es. - Some User IDs only contain a name (e.g, "Frank PGP"). - RFC 2822 also includes a lot of complexity that no one uses or needs. For instance, CFWS (comments and folding whitespace) can be placed everywhere, and the rules for parsing them are complex. - Instead of continuing to bend the RFC 2822 parser to our will, we instead accept reality. - This patch replaces the RFC 2822 parser with a significantly simpler parser, which is based on actual convention (i.e., User IDs in the wild). - This parser is based on dkg's mail to the OpenPGP working group mailing list. Message-ID: <87woe7zx7o.fsf@fifthhorseman.net> https://mailarchive.ietf.org/arch/msg/openpgp/wNo27-0STfGR9JZSlC7s6OYOJkI - This initial version has one notable regression with respect to the RFC 2822 parser: it doesn't handle User IDs holding URIs.
2019-10-31Change license to GPLv2+.Neal H. Walfield
2019-10-30Update authors.Neal H. Walfield
2019-10-27Fix more spelling errors caught by codespellDaniel Kahn Gillmor
Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
2019-10-25Release 0.11.0.v0.11.0Justus Winter
2019-10-25rfc2822,openpgp: Move rfc2822 crate to be a private mod in openpgpNeal H. Walfield
- The rfc2822 crate doesn't implement all of RFC 2822. Moreover, it includes a number of extensions. This makes rfc2822 a misnomer. - RFC 2822 is actually obsoleted by RFC 5322. This means that if we ever add support for RFC 5322, it will be an even worse misnomer. - Move the whole crate into the openpgp crate. Note: we don't directly export the API; it is only used internally by packet::userid. - Closes #279.
2019-09-27linting: Clear up bare trait object warningsDaniel Silverstone
Newer Rust compilers requre `dyn` marking trait objects. Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-09-10net: Make function private.Justus Winter
2019-09-10net: Improve error handling.Justus Winter
2019-09-09net: Introduce enum wkd::Variant.Justus Winter
2019-09-09net: Update existing TPKs in a WKD.Justus Winter
2019-09-09net: Strip local signatures when creating WKD.Justus Winter
2019-09-09net: Rework WKD building, insert one TPK at a time.Justus Winter
- This improves error handling, and the API resembles collections.
2019-09-09net: Do not diddle with the permissions.Justus Winter
2019-09-09net: Remove progress reporting on stdout.Justus Winter
2019-09-09net: Add wkd::generate function.juga
- Adds a function to generate the WKD hierarchy. - Fixes #295.
2019-09-06Release 0.10.0.v0.10.0Justus Winter
2019-09-06Bump quickcheck to 0.9, rand to 0.7.Justus Winter
2019-08-22Bump percent-encoding to 2.1.Justus Winter
2019-08-22Bump url to 2.1.Justus Winter
2019-08-22Trim dependencies of crates 'rand' and 'quickcheck'.Justus Winter
2019-08-20net: Remove unneeded port in WKD URLjuga
- Closes #314.
2019-08-20net: Drop SKS pool in favor of keys.openpgp.org.Justus Winter
2019-08-19net: Drop the sync variant.Justus Winter
- The sync wrapper hide the async nature of the implementation, and while this may seem convenient, it may cause subtle problems if it is invoked from a different event loop. - Furthermore, 'async' is a reserved keyword in the 2018 edition, requiring awkward escaping. - Fixes #307.
2019-07-15Switch to Rust 2018.Justus Winter
2019-07-15Prepare for Rust 2018.Justus Winter
- This is the result of running `cargo fix --edition`, with some manual adjustments. - The vast majority of changes merely qualify module paths with 'crate::'. - Two instances of adding an anonymous pattern to a trait's function. - `async` is a keyword in Rust 2018, and hence it needs to be escaped (e.g. in the case of the net::r#async module). - The manual adjustments were needed due to various shortcomings of the analysis employed by `cargo fix`, e.g. unexpanded macros, procedural macros, lalrpop grammars.
2019-07-08Release 0.9.0.v0.9.0Justus Winter
2019-06-19net: Replace or remove commentsjuga
- comments that do not apply anymore. - Closes #308. - Bugfix 0.7.0.
2019-06-14Release 0.8.0.v0.8.0Justus Winter
2019-06-10net: Honor compression features.Justus Winter
2019-06-10net: Drop unused parameter.Justus Winter
2019-05-28net: Add wkd module implementing a WKD clientjuga
- Also add an async::wkd module. - Part of #251.