diff options
author | Neal H. Walfield <neal@pep.foundation> | 2019-11-06 14:42:50 +0100 |
---|---|---|
committer | Neal H. Walfield <neal@pep.foundation> | 2019-11-06 15:21:12 +0100 |
commit | 8693a005c08e1c84d693fe7baa154f8785007520 (patch) | |
tree | d5e65fad35a3137db184562e886e4b2a9fa7111d /openpgp/Cargo.toml | |
parent | 0fdb21c2f446234570c8935ada9f29c7f6392b98 (diff) |
openpgp: Replace RFC 2822 parser with a de factor parser
- 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.
Diffstat (limited to 'openpgp/Cargo.toml')
-rw-r--r-- | openpgp/Cargo.toml | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/openpgp/Cargo.toml b/openpgp/Cargo.toml index 9dfb0baa..1cb26f49 100644 --- a/openpgp/Cargo.toml +++ b/openpgp/Cargo.toml @@ -34,6 +34,7 @@ memsec = "0.5.6" nettle = "5.0.2" quickcheck = { version = "0.9", default-features = false } rand = { version = "0.7", default-features = false } +regex = "1.3.1" time = "0.1.40" [build-dependencies] |