<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version  (Ruby 3.1.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC4880 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4880.xml">
<!ENTITY I-D.ietf-openpgp-crypto-refresh SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-openpgp-crypto-refresh.xml">
<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC5234 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5234.xml">
<!ENTITY RFC6532 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6532.xml">
<!ENTITY RFC2822 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2822.xml">
<!ENTITY RFC5322 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5322.xml">
<!ENTITY RFC6531 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6531.xml">
<!ENTITY RFC5980 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5980.xml">
<!ENTITY RFC2047 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2047.xml">
]>


<rfc ipr="trust200902" docName="draft-dkg-openpgp-userid-conventions-00" category="info" submissionType="IETF" xml:lang="en">
  <front>
    <title>OpenPGP User ID Conventions</title>

    <author initials="D. K." surname="Gillmor" fullname="Daniel Kahn Gillmor">
      <organization>ACLU</organization>
      <address>
        <email>dkg@fifthhorseman.net</email>
      </address>
    </author>

    <date year="2023" month="August" day="25"/>

    <area>Security</area>
    <workgroup>openpgp</workgroup>
    <keyword>OpenPGP, userid</keyword>

    <abstract>


<t>OpenPGP User IDs are UTF-8 strings.
Existing documents claim that by conventione, they contain "an RFC 2822 name-addr object", but that's not the case.
This document attempts to better describe the actual conventions about User IDs in the deployed OpenPGP ecosystem.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        The latest revision of this draft can be found at <eref target="https://dkg.gitlab.io/openpgp-userid-conventions/"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-dkg-openpgp-userid-conventions/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        OpenPGP Working Group mailing list (<eref target="mailto:openpgp@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/openpgp/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/openpgp/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://gitlab.com/dkg/openpgp-userid-conventions"/>.</t>
    </note>


  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

<t>OpenPGP certificates contain User IDs.
An OpenPGP User ID packet contains a simple UTF-8 string.
According to <xref target="RFC4880"/> and its successor <xref target="I-D.ietf-openpgp-crypto-refresh"/>:</t>

<ul empty="true"><li>
  <t>By convention, it includes an <xref target="RFC2822"/> mail name-addr</t>
</li></ul>

<t>But in practice, this is not what most OpenPGP implementations generate or expect.
This document tries to better describe the actual convention used.</t>

<section anchor="terminology"><name>Terminology</name>

<t>The term "OpenPGP Certificate" is used in this document interchangeably with "OpenPGP Transferable Public Key", as defined in <xref section="10.1" sectionFormat="of" target="I-D.ietf-openpgp-crypto-refresh"/>.</t>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

</section>
</section>
<section anchor="uid-conventions"><name>OpenPGP User ID Conventions</name>

<t>An OpenPGP User ID has no formal constraints other than being a UTF-8 string, but common conventions govern its use in specific contexts.</t>

<t>In the context of sending and receiving signed and encrypted e-mail messages, a User ID typically contains an e-mail address.
While <xref target="RFC5322"/> and <xref target="RFC6531"/> describe an <spanx style="verb">addr-spec</spanx> as it is used e-mail message headers (us-ascii in the former, and Unicode in the latter), the common OpenPGP User ID convention is somewhat simpler, while still permitting extraction of a valid <spanx style="verb">addr-spec</spanx>.
An e-mail-oriented OpenPGP implementation that follows this simpler convention is more likely to be interoperable with Transferable Public Keys found in the wild.</t>

<t>In particular, the common convention for an OpenPGP User ID related to e-mail can be described with the following ABNF (see <xref target="RFC5234"/>), which uses the Unicode-augmented definitions of <spanx style="verb">atext</spanx> and <spanx style="verb">dot-atom-text</spanx> found in <xref target="RFC6532"/>:</t>

<figure><artwork><![CDATA[
openpgp-addr-spec            = dot-atom-text "@" dot-atom-text

openpgp-email-prefix-char    = atext / specials / SPACE

openpgp-email-wrapped-addr   = *openpgp-uid-prefix-char
                               "<" openpgp-addr-spec ">"

openpgp-email-uid-convention = openpgp-addr-spec /
                               openpgp-email-wrapped-addr
]]></artwork></figure>

<t>Note that any <spanx style="verb">openpgp-addr-spec</spanx> described in the above sequence is also a valid Unicode <spanx style="verb">addr-spec</spanx>.
The only <spanx style="verb">addr-spec</spanx>s not matched are obsolete forms, or those with <spanx style="verb">CWFS</spanx> or <spanx style="verb">quoted-string</spanx> in the local part, or those with domain literals for the domain part.
Using such a non-matching <spanx style="verb">addr-spec</spanx> in an OpenPGP User ID is likely to lead to interoperability problems.</t>

</section>
<section anchor="internationalized-domain-names"><name>Internationalized Domain Names</name>

<t>FIXME: if a domain name in the <spanx style="verb">openpgp-addr-spec</spanx> contains non-ASCII characters, will existing implementations accept A-labels?
Or should we encourage standardization on U-labels (see <xref target="RFC5980"/>)?</t>

</section>
<section anchor="example-user-ids"><name>Example User IDs</name>

<section anchor="conventional-user-ids"><name>Conventional User IDs</name>

<t>Most tools will work fine with the following User IDs, even though most of them are not technically <xref target="RFC5322"/> <spanx style="verb">name-addr</spanx> objects:</t>

<t><list style="symbols">
  <t><spanx style="verb">Alice Jones &lt;alice@example.org&gt;</spanx></t>
  <t><spanx style="verb">Alice T. Jones &lt;alice@example.org&gt;</spanx></t>
  <t><spanx style="verb">Sean O'Brian &lt;sean@example.org&gt;</spanx></t>
  <t><spanx style="verb">Jörg Schmidt &lt;js@example.org&gt;</spanx></t>
  <t><spanx style="verb">Mr. Ed, the Talking Horse &lt;ed@example.org&gt;</spanx></t>
  <t><spanx style="verb">alice@example.org</spanx></t>
</list></t>

</section>
<section anchor="examples-of-atypical-user-ids"><name>Examples of Atypical User IDs</name>

<t>The following examples are UTF-8 strings that are valid <xref target="RFC5322"/> <spanx style="verb">name-addr</spanx> objects, but would most likely cause interoperability problems if they were used as an OpenPGP User ID:</t>

<section anchor="rfc-2047-encoding-of-non-ascii-characters"><name>RFC 2047 Encoding of non-ASCII Characters</name>

<t>Do not use <xref target="RFC2047"/> encoding:</t>

<t><spanx style="verb">
=?utf-8?Q?J=C3=B6rg?= Schmidt &lt;js@example.org&gt;
</spanx></t>

</section>
<section anchor="quoted-string-parts"><name><spanx style="verb">quoted-string</spanx> Parts</name>

<t>Do not use  <xref target="RFC5322"/> <spanx style="verb">quoted-string</spanx> parts:</t>

<t><spanx style="verb">
"Sean O'Brian" &lt;sean@example.org&gt;
</spanx></t>

</section>
<section anchor="fws"><name>FWS</name>

<t>Do not use Folding Whitespace (FWS) (<xref section="3.2.2" sectionFormat="of" target="RFC5322"/>).</t>

<t><spanx style="verb">
Alice
  Jones &lt;alice@example.org&gt;
</spanx></t>

<t>It's probably not a good idea to include any control character or whitespace character at all, other than <u> </u> in an OpenPGP User ID.
Do not include newline, carriage returns, tab characters, non-folding characters, byte order marks, etc.</t>

<t>Also, leading or trailing whitespace is likely to cause interoperability failures in any context where the User ID must be cleanly parsed.</t>

</section>
<section anchor="comments"><name>Comments</name>

<t>Avoid Comments (<xref section="3.2.2" sectionFormat="of" target="RFC5322"/>) with the possible exception of a single comment just before the angle-bracket that delimits the <spanx style="verb">openpgp-addr-spec</spanx></t>

<t>FIXME: should we discourage comments entirely?
See, for example, the litany of complaints at https://dkg.fifthhorseman.net/blog/openpgp-user-id-comments-considered-harmful.html</t>

<t><spanx style="verb">
Alice (the Great) Jones &lt;alice@example.org&gt;
</spanx></t>

<t>or</t>

<t><spanx style="verb">
(The Great) Alice Jones &lt;alice@example.org&gt;
</spanx></t>

<t>or</t>

<t><spanx style="verb">
Alice Jones &lt;alice@example.org&gt; (The Great)
</spanx></t>

</section>
</section>
</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This draft asks IANA to make one change to the OpenPGP protocol group.</t>

<t>In the "Packet Types/Tags registry", update row 13 ("User ID Packet") by adding this document to the "Reference" field.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>This document describes widespread conventions about User IDs in the OpenPGP ecosystem.</t>

<t>Generating an OpenPGP certificate with a User ID that does not match these conventions may result in security failures when a peer tries to find a certificate but cannot</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>

&RFC4880;
&I-D.ietf-openpgp-crypto-refresh;
&RFC2119;
&RFC8174;
&RFC5234;
&RFC6532;


    </references>

    <references title='Informative References'>

&RFC2822;
&RFC5322;
&RFC6531;
&RFC5980;
&RFC2047;


    </references>


<section anchor="python-example"><name>Python Example</name>

<t>The following Python example can be used to parse a conventional OpenPGP User ID:</t>

<figure><sourcecode type="text/x-python" name="openpgp_userid_convention.py"><![CDATA[
#!/usr/bin/python3

from typing import Optional, Tuple
import re

def openpgp_userid(test: str) -> Optional[Tuple[str, str]]:
    '''Returns a None if `test` is not a conventional User ID.

    if `test` is a conventional User ID, returns a Tuple containing
    the User ID and the embedded e-mail address.'''

    specials = r'[()<>\[\]:;@\\,."]'
    atext = "[-A-Za-z0-9!#$%&'*+/=?^_`{|}~\x80-\U0010ffff]"
    dot_atom_text = atext + r"+(?:\." + atext + "+)*"
    pgp_addr_spec = dot_atom_text + "@" + dot_atom_text
    pgp_uid_prefix_char = "(?:" + atext + "|" + specials + "| )"
    addr_spec_raw = "(?P<addr_spec_raw>" + pgp_addr_spec + ")"
    addr_spec_wrapped = pgp_uid_prefix_char + \
        "*<(?P<addr_spec_wrapped>" + pgp_addr_spec + ")>"
    pgp_uid_convention = "^(?:" + addr_spec_raw + "|" + \
        addr_spec_wrapped + ")$"

    pgp_uid_convention_re = re.compile(pgp_uid_convention,
                                       re.UNICODE)

    m = pgp_uid_convention_re.search(test)
    if m:
        return (m[0], m['addr_spec_wrapped'] or m['addr_spec_raw'])
    else:
        return None

]]></sourcecode></figure>

</section>
<section anchor="document-history"><name>Document History</name>

<t>RFC Editor Note: Please delete this section before publication.</t>

<section anchor="substantive-changes-from-origin-to-draft-ietf-openpgp-userid-conventions-00"><name>Substantive Changes from Origin to draft-ietf-openpgp-userid-conventions-00</name>

<t><list style="symbols">
  <t>added positive and negative examples</t>
  <t>added Python implementation</t>
  <t>added FIXME about internationalized domain names</t>
</list></t>

</section>
<section anchor="origin"><name>Origin</name>

<t>This was originally discussed on the mailing list at https://mailarchive.ietf.org/arch/msg/openpgp/wNo27-0STfGR9JZSlC7s6OYOJkI and was formulated as a patch to the OpenPGP specification at https://mailarchive.ietf.org/arch/msg/openpgp/wNo27-0STfGR9JZSlC7s6OYOJkI .</t>

</section>
</section>


  </back>

<!-- ##markdown-source:
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
IFM4m61IeY1ubxz+r+doOf8D/CcYHw4gAAA=

-->

</rfc>

