Age | Commit message (Collapse) | Author |
|
- Notably, check the http status code.
|
|
- We may not understand all of the certs, but that is no reason not
to return them.
|
|
- This was duplicated by accident in
bc1f27770002690f6117eaec59e8b11ca6196489.
|
|
- 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.
|
|
- Fixes #992.
|
|
zbase32 is distributed under LGPL-3+ which is incompatible with some projects.
Use the MIT licensed implementation z-base-32 instead.
Signed-off-by: Dylan Aïssi <dylan.aissi@collabora.com>
|
|
Less code to maintain this way.
Sponsored-by: pep.foundation
|
|
More idiomatic this way.
Sponsored-by: pep.foundation
|
|
- Add dane::get.
- Make EmailAddress functions pub(crate) to use them from the DANE
module.
- Add tests for generating correct FQDN.
- See #865.
|
|
In WKD, when a URL is generated for an email, the local part is added
to the URL as a query parameter exactly as it's in the input. Sequoia
was previously converting it to lower case. This fixes it to avoid the
change.
However, the local part still needs to be converted to lower case for
hash computation, so we do that when we compute the hash.
Fixes #874
Sponsored-by: pep.foundation
|
|
|
|
- Continuation of e6a335b93a10620bcb7cbfa32e232949758f0c99.
|
|
- Fixed with the help of clippy::needless_borrow.
|
|
|
|
|
|
In a match arm, instead of binding the matched value to the name "_",
just don't bind. Its shorter and easier to understand
Found by clippy lint redundant_patter:
https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern
|
|
When creating a struct with a field foo, using a variable also named
foo, it's not necessary to name the field explicitly. Thus, instead
of:
Self { foo: foo }
use this:
Self { foo }
The shorter form is more idiomatic and thus less confusing to
experienced Rust programmers.
This was found by the clippy lint redundant_field_names:
https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names
Sponsored-by: author
|
|
- Apply cargo intraconv.
|
|
- https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone
|
|
- https://rust-lang.github.io/rust-clippy/master/index.html#len_zero
- https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty
|
|
- Use explicit depth to indicate how many redirects have been executed
and break the loop if the number is bigger than 10.
- Using `reqwest` was considered but rejected due to Tokio version
incompatibility (`reqwest` insists on using Tokio 1 while Sequoia
uses 0.2 in many places).
|
|
- See: https://lists.gnupg.org/pipermail/gnupg-devel/2018-May/033736.html
- This solves lookups on domains that do redirects such as kernel.org
- Fixes #666.
|
|
|
|
- We might implement it for an iterator over certs at some point.
But in this case a simple `export` function is all we need.
- This will also allow us to seal the `Serialize` and `Marshal` traits.
|
|
- Secret key material is not authenticated by OpenPGP, so care must
be taken when merging certificates.
- Rename Cert::merge to Cert::merge_public_and_secret.
- Add new function Cert::merge_public. This function can be used to
merge certificates from untrusted sources as it ignores secret key
material that cannot be authenticated by OpenPGP.
- Fixes #584.
|
|
|
|
|
|
- See #480.
|
|
- See #480.
|
|
- Previously, the paths generated included the top-level domain, but
that assumes that the top-level directory of the web root is
called like that. For me that was very surprising and
inconvenient, so I changed it.
|
|
- Fixes #420.
|
|
- 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.
|
|
- Add two new traits: `Marshal` and `MarshalInto`.
- Implement them instead of `Serialize` and `SerializeInto`.
- Only implement `Serialize` and `SerializeInto` for data structures
that are normally exported.
- This should prevent users from accidentally serializing a bare
signature (`Signature`) when they meant to serialize a signature
packet (`Packet`), for instance.
- Fixes #368.
|
|
- A `ComponentAmalgamation` derefs to a `ComponentBundle`. Don't
use `ComponentAmalgamation::bundle` if it is unnecessary and
doesn't improve legibility.
|
|
- Add `openpgp/src/cert/prelude.rs` to import most types and traits
related to certificates.
- Use it instead of using the types and traits individually.
|
|
- 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.
|
|
- `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`.
|
|
- Fixes #414.
|
|
|
|
|
|
- Fixes #387.
|
|
- 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.
|
|
Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
|
|
|
|
|
|
|
|
|
|
|
- This improves error handling, and the API resembles collections.
|
|
|