summaryrefslogtreecommitdiffstats
path: root/net/src/lib.rs
AgeCommit message (Collapse)Author
2024-01-25net: Derive Clone for KeyServer.Justus Winter
2023-11-23net: Improve enum Error, mark as non-exhaustive, fix terminology.Justus Winter
2023-11-22net: Fix KeyServer::{get,search}.Justus Winter
- Change both functions to return a vector of Result<Cert>. First, the keyserver may return more than one cert for both user ID searches as well as searches by key handle. Second, we may understand not all certs returned by the server, and that is okay, and we shouldn't let the whole query fail because of that. - Previously, the functions made an attempt at validating the results. However, that is flawed. First, in the case of retrieval by key handle, the test was brittle and easily circumvented by a key server. Second, the server may have good reason to return an additional cert, even if it doesn't have the key handle that the user asked for. For example, it may know that a cert is superseded and return the new one too, as a courtesy. draft-shaw-openpgp-hkp-00 doesn't forbid that. - In the case of search by email address, the server may know the association between the queried email address and the cert, even if said association is not recorded in the cert itself. - Remove the brittle checks, return all certs returned by the server, add a warning to the documentation of KeyServer::get.
2023-11-16net: Re-export the reqwest crate.Justus Winter
- As we use types from reqwest in our API, re-export it as a courtesy for downstream consumers. This way, they can use the re-exported reqwest and be confident that they use the correct version.
2023-10-11openpgp: Add non-allocating accessors for parsed User ID components.Justus Winter
- Now that we use OnceCell for the cache, we can hand out references to the cached data. This closes the gap between UserID and ConventionallyParsedUserID, hence I think this addresses the concern in #377. - Deprecate the allocating variants. - Fixes #377.
2023-09-19net: Alpha conversion: use the more appropriate URL instead of URI.Justus Winter
2023-09-19net: Port the WKD code to reqwest.Justus Winter
- Fixes #992.
2023-09-19net: Port the HKP code to reqwest.Justus Winter
2023-09-19net: Drop the network policy mechanism.Justus Winter
- This seems over-engineered in retrospect.
2022-09-15net: Add support for DANE certificate retrieval.Wiktor Kwapisiewicz
- Add dane::get. - Make EmailAddress functions pub(crate) to use them from the DANE module. - Add tests for generating correct FQDN. - See #865.
2022-05-06autocrypt, net: openpgp: Rewrite all usages of `Reader::new`.Wiktor Kwapisiewicz
2022-04-22net: Assert that public types are Send + Sync.Justus Winter
2022-04-22net: Make AClient Send and SyncErik Escher
This allows futures with a Keyserver in scope to be Send, allowing them to be used with multithreaded async libraries such as tokio.
2022-01-12net: Fix link.Neal H. Walfield
- Detected by the rustdoc::bare-urls lint.
2021-11-03net: Implement Signer and Decryptor for remote keys.Wiktor Kwapisiewicz
- Add sequoia_net::pks::unlock_signer. - Add sequoia_net::pks::unlock_decryptor.
2021-09-30Allow if conditions that use complex codeLars Wirzenius
An if condition is an expression and can be as complex as the programmer wants. However, the more complex a condition is, the harder it tends to be to understand. I marked functions with such if conditions so that clippy won't complain about the code. I probably should have simplified the code, perhaps by extracting the condition to its own function, but it would have been much harder to do, so I didn't. Found by clippy lint blocks_in_if_conditions: https://rust-lang.github.io/rust-clippy/master/index.html#blocks_in_if_conditions
2021-09-21Avoid matching on &Foo, when a plain Foo pattern worksLars Wirzenius
The extra & in a pattern (match arm or if let) is unnecessary and only makes the code harder to read. In most places it's enough to just remove the & from the pattern, but in a few places a dereference (*) needs to be added where the value captured in the pattern is used, as removing the & changes the type of the captured value to be a reference. Overall, the changes are almost mechanical. Although the diff is huge, it should be easy to read. The clippy lint match_ref_pats warns about this. See: https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats
2021-08-30net: Implement Update Manifests.Justus Winter
2021-04-09Lint: Use lazy evaluation.Nora Widdecke
- https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call
2021-01-21net: Release 0.23.0.net/v0.23.0Justus Winter
2021-01-20Add branding to all crates.Justus Winter
2021-01-15net: Make conversion from u8 to Policy fallible.Justus Winter
2021-01-15net: Decouple from core.Justus Winter
- Move core::NetworkPolicy to net::Policy, update all code accordingly.
2020-12-09net: Implement searching for email addresses via hkp.Justus Winter
2020-12-09net: Add note.Justus Winter
2020-12-09net: Allow hkp queries by KeyHandle.Justus Winter
2020-10-23update net to futures=0.2amesgen
2020-10-14Use 'Examples' for the examples section.Justus Winter
- See #480.
2020-10-14Replace most 'extern crate' directives with 'use'.Justus Winter
- See #480.
2020-04-20openpgp: Add armor::Writer::with_headers.Justus Winter
- Add a new constructor that takes headers. This allows us to make the header argument polymorphic.
2020-04-02openpgp: Drop KeyID::from_hex in favor of FromStr.Justus Winter
- See #462.
2020-03-26Remove redundant field names.Wiktor Kwapisiewicz
2020-03-20openpgp: Remove `to_hex` in KeyHandle, KeyID and Fingerprint.Wiktor Kwapisiewicz
- Replace all usages of `to_hex` with formatting string with :X specifier. - Fixes #456.
2020-03-09Switch from failure to anyhow.Justus Winter
- Use the anyhow crate instead of failure to implement the dynamic side of our error handling. anyhow::Error derefs to dyn std::error::Error, allowing better interoperability with other stdlib-based error handling libraries. - Fixes #444.
2020-03-09net: Define net::Error using thiserror.Justus Winter
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-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-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-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-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-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-08-22Bump percent-encoding to 2.1.Justus Winter
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.