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


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

]>


<rfc ipr="trust200902" docName="draft-ietf-mailmaint-unobtrusive-signatures-02" category="info" submissionType="IETF" updates="3156, 8551" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title>Unobtrusive End-to-End Email Signatures</title>

    <author fullname="Andrew Gallagher" role="editor">
      <organization>PGPKeys.EU</organization>
      <address>
        <email>andrewg@andrewg.com</email>
      </address>
    </author>
    <author initials="D. K." surname="Gillmor" fullname="Daniel Kahn Gillmor">
      <organization>ACLU</organization>
      <address>
        <email>dkg@fifthhorseman.net</email>
      </address>
    </author>
    <author fullname="Kai Engert">
      <organization>Thunderbird</organization>
      <address>
        <email>kaie@thunderbird.net</email>
      </address>
    </author>

    <date year="2026" month="April" day="30"/>

    <area>int</area>
    <workgroup>none</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 45?>

<t>This document deals with end-to-end cryptographically signed email.
It introduces a structure for signed email
that is designed to avoid creating any disturbance in legacy email clients.
This "unobtrusive" signature structure removes disincentives for signing email.</t>



    </abstract>

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


  </front>

  <middle>


<?line 52?>

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

<t>Several different standard structures
for end-to-end cryptographically signed email exist
(see Sections <xref target="RFC9787" section="4.1.1.1" sectionFormat="bare"/>, <xref target="RFC9787" section="4.1.1.2" sectionFormat="bare"/> and <xref target="RFC9787" section="4.1.2.1" sectionFormat="bare"/> of <xref target="RFC9787"/>).
But the existing mechanisms have some undesirable properties
which can make such mail difficult for the recipient to handle in some instances,
particularly when read by legacy email clients that don't understand the signing structure.
This document offers another signed email structure,
which is designed to be transparent to legacy email clients.</t>

<t>The goal of this mechanism is to help email clients commit to signing every outbound message,
which reduces complexity for the user of the mail client.
The mechanism is capable of working with any signature mechanism,
as well as transporting multiple signatures over a single message.
It is specified initially for <xref target="OpenPGP"/> and <xref target="CMS"/>,
but can be extended to be used with other signature formats.</t>

<t>This mechanism is intended only for signed-only messages.
A message that is encrypted-and-signed <bcp14>MUST NOT</bcp14> use this mechanism,
since any existing MUA that can decrypt an encrypted-and-signed message
already handles the signatures on such a message correctly.</t>

<t>This document updates <xref target="RFC3156"/> by providing an additional mechanism
for producing and consuming OpenPGP-signed MIME email.
This document also updates <xref target="RFC8551"/> by providing an additional mechanism
for producing and consuming CMS-signed MIME email.</t>

</section>
<section anchor="conventions-definitions"><name>Conventions and Definitions</name>

<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>

<?line -18?>

<t><list style="symbols">
  <t>"Signed Mail" is used to refer to Internet Mail Messages
that are cryptographically signed by the sender of the message,
and expected to be validated by the recipient of the message.
This document does not consider any cryptographic signature mechanism
that is not end-to-end (such as <xref target="DKIM"/>),
and should be agnostic to and non-interfering with any such mechanism.</t>
  <t>"OpenPGP Signature" refers to an OpenPGP Detached Signature
as described by <xref section="10.4" sectionFormat="of" target="OpenPGP"/>.</t>
  <t>"CMS Signature" refers to an <spanx style="verb">application/pkcs7-signature</spanx> object as described by <xref section="3.5.3.1" sectionFormat="of" target="RFC8551"/>.</t>
  <t>"MUA" refers to a Mail User Agent, which is also known as an email client.
For end-to-end signed mail,
the sender's MUA performs message composition and injection into the mail system,
and the receiver's MUA performs message ingestion from the mail system and rendering to the user.</t>
  <t>"Legacy MUA" refers to a MUA that does not know about this specification.</t>
  <t>"MTA" refers to a Message Transfer Agent,
for example an SMTP server that relays Internet mail messages from one point to another.</t>
  <t>"<spanx style="verb">CRLF</spanx>" refers to "Carriage Return followed by Line Feed",
the standard email line-ending sequence of two octets, <spanx style="verb">CR</spanx> (0x0D) and <spanx style="verb">LF</spanx> (0x0A).</t>
</list></t>

</section>
<section anchor="problems-with-existing-signature-schemes"><name>Problems With Existing Signature Schemes</name>

<t>Existing end-to-end signature schemes for mail can trigger a set of annoyances
for a recipient who uses a MUA that doesn't understand these structures.
These annoyances can cause the recipient to complain to the sender.
The easiest way for the sender to try to accommodate the recipient
in this case is to simply not sign mail.</t>

<t>The Unobtrusive Signature scheme defined in this document
is intended to minimize or eliminate all of these problems.</t>

<section anchor="unreadable-signed-mail"><name>Unreadable Signed Mail</name>

<t>A signed mail message that uses the S/MIME PKCS #7 <spanx style="verb">signed-data</spanx> Cryptographic Layer
described in <xref section="4.1.1.2" sectionFormat="of" target="RFC9787"/> is unreadable by a receiving MUA that doesn't understand <xref target="CMS"/>.</t>

<t>By contrast, a mail message signed with an Unobtrusive Signature should render normally by any legacy MUA.</t>

</section>
<section anchor="unknown-attachment"><name>Unknown Attachment</name>

<t>A signed mail message that uses
the S/MIME Multipart Signed Cryptographic Layer described in <xref section="4.1.1.1" sectionFormat="of" target="RFC9787"/> or
the PGP/MIME Signing Cryptographic Layer (multipart/signed) described in <xref section="4.1.2.1" sectionFormat="of" target="RFC9787"/>
has a separate MIME part that contains the message signature.</t>

<t>A receiving MUA that doesn't understand these structures
will often render the signature as an "attachment".
This can cause confusion and anxiety to the user of the MUA,
and they will sometimes respond to the sender with the complaint "I can't open your attachment".</t>

<t>By contrast, a mail message signed with an Unobtrusive Signature
is merely encapsulated in a <spanx style="verb">multipart/mixed</spanx> outer layer.
Legacy MUAs do not render such an encapsulation as an attachment.</t>

<section anchor="reducing-confusion-with-name-parameter"><name>Reducing Confusion with name Parameter</name>

<t>For existing end-to-end multipart signature schemes,
one partial mitigation to this problem is to mark the signature part
with an explicit filename that a legacy MUA is likely to display to the recipient.
Concretely, some signing MUAs that generate <spanx style="verb">multipart/signed</spanx> messages using PGP/MIME (<xref target="RFC3156"/>)
will add a <spanx style="verb">name="openpgp-digital-signature.asc"</spanx> parameter to
the <spanx style="verb">Content-Type</spanx> header of the <spanx style="verb">application/pgp-signature</spanx> MIME part.</t>

<t>For recipients who understand what an OpenPGP digital signature is
(even if their MUA can't interpret it),
this might reduce the amount of pushback they provide to the sender.</t>

<t>The Unobtrusive Signature scheme described in this document
intends to offer even less friction to the recipient using a Legacy MUA by hiding the signature entirely.</t>

</section>
</section>
<section anchor="broken-signature"><name>Broken Signature</name>

<t>In some cases, mail is tampered with in transit, whether deliberately or maliciously.
In this case, for a MUA that does understand these messages,
some MUAs will visibly complain to the recipient that there is a failed signature.</t>

<t>If unsigned mail receives no comparable warning,
then the act of adding a signature to a message that might traverse a modifiable path is risky.
An MUA compliant with <xref section="6.4" sectionFormat="of" target="RFC9787"/> will not create such a warning,
but many MUAs do not yet comply with that guidance.</t>

<t>By contrast, a legacy MUA won't render anything about
the cryptographic status of an Unobtrusively Signed message at all.
And an MUA compatible with this specification that encounters a message
with a broken Unobtrusive Signature will never render an error
that it wouldn't have rendered on an unsigned message anyway,
which removes this disincentive to sign.</t>

</section>
</section>
<section anchor="unobtrusively-signed-message"><name>Unobtrusively Signed Message</name>

<t>An Unobtrusively Signed Message has a specific MIME structure and uses a specific header field.</t>

<section anchor="mime-structure"><name>MIME structure</name>

<t>The top-level <spanx style="verb">Content-Type</spanx> of an unobtrusively signed message is <spanx style="verb">multipart/mixed</spanx>,
and it has a single MIME subpart, which this specification refers to as the "Protected Part".
The Protected Part's header sections' first header field is <spanx style="verb">Sig</spanx>, described in <xref target="sig"/>.</t>

<t>We hereby specify a third PGP/MIME format in addition to the two listed in <xref section="4.1.2" sectionFormat="of" target="RFC9787"/>:</t>

<section anchor="pgpmime-unobtrusive-signing-cryptographic-layer-multipartmixed"><name>PGP/MIME Unobtrusive Signing Cryptographic Layer (multipart/mixed)</name>

<figure><artwork type="ascii-art"><![CDATA[
└┬╴multipart/mixed
 └─╴[protected part]
]]></artwork></figure>

<t>This MIME layer offers authenticity and integrity
if and only if the Protected Part contains one or more valid <spanx style="verb">Sig</spanx> headers.</t>

<t>This format is a Simple Cryptographic Envelope as specified in <xref section="4.4.1" sectionFormat="of" target="RFC9787"/>,
and the Protected Part (with all leading <spanx style="verb">Sig</spanx> Header Fields removed) is the Cryptographic Payload.</t>

<t>This MIME structure <bcp14>MUST NOT</bcp14> be used as part of a Multilayer Cryptographic Envelope.
If it is found anywhere but the outside of the message it <bcp14>MUST NOT</bcp14> be treated as a Cryptographic Layer.</t>

</section>
</section>
<section anchor="sig"><name>Sig Header Field</name>

<t>This specification defines a new header field, named <spanx style="verb">Sig</spanx>.
<spanx style="verb">Sig</spanx> is only meaningful if it appears in the Protected Part of an Unobtrusively Signed Message,
before any non-<spanx style="verb">Sig</spanx> header field.</t>

<t>It contains parameters, only two of which are currently defined.</t>

<t><list style="symbols">
  <t>The <spanx style="verb">t</spanx> parameter indicates the type of the signature with its value,
and the only values currently defined are <spanx style="verb">p</spanx> (meaning an OpenPGP signature) and <spanx style="verb">c</spanx> (meaning a CMS signature).
See <xref target="t-param"/>.</t>
  <t>The <spanx style="verb">b</spanx> parameter contains a base64-encoded blob that contains
the cryptographic signature object of the type described by <spanx style="verb">t</spanx>.
Whitespace is ignored in this value and <bcp14>MUST</bcp14> be ignored when reassembling the original signature.
In particular, the signing process can safely insert Folding White Space (<xref section="3.2.2" sectionFormat="of" target="RFC5322"/>)
in this value in arbitrary places to conform to line-length limits.</t>
</list></t>

<t>Note that if multiple <spanx style="verb">Sig</spanx> header fields appear in a single message,
each <spanx style="verb">Sig</spanx> header field represents a signature over the Protected Part
(with all leading <spanx style="verb">Sig</spanx> Header Fields removed).
That is, each <spanx style="verb">Sig</spanx> signs the same content,
and the order of the <spanx style="verb">Sig</spanx> header fields among themselves doesn't matter
as long as every <spanx style="verb">Sig</spanx> header field precedes all non-<spanx style="verb">Sig</spanx> header fields
in the Header Section of the Protected Part.
<spanx style="verb">Sig</spanx> header fields <bcp14>MUST NOT</bcp14> appear in a non-leading position.</t>

</section>
</section>
<section anchor="sender-guidance"><name>Sender Guidance</name>

<section anchor="always-use-header-protection"><name>Always Use Header Protection</name>

<t>A message signed with an unobtrusive signature <bcp14>MUST</bcp14> always use <xref target="RFC9788"/>,
signing every header field known to the sending MUA at message composition time.</t>

</section>
<section anchor="message-composition"><name>Message Composition</name>

<t>This updates the message composition function found in <xref section="5.1" sectionFormat="of" target="RFC9787"/>,
using the same parameters.</t>

<t><list style="symbols">
  <t><spanx style="verb">origbody</spanx>: the traditional unprotected message body
as a well-formed MIME tree (possibly just a single MIME leaf part).
As a well-formed MIME tree, <spanx style="verb">origbody</spanx> already has structural header fields present.</t>
  <t><spanx style="verb">origheaders</spanx>: the intended non-structural header fields for the message,
represented here as a list of <spanx style="verb">(h,v)</spanx> pairs,
where <spanx style="verb">h</spanx> is a header field name and <spanx style="verb">v</spanx> is the associated value.</t>
  <t><spanx style="verb">crypto</spanx>: an indication that the message is to be signed
with one or more Unobtrusive Signatures.
This contains a list of one or more secret keys.
Each key will make one signature.</t>
</list></t>

<t>The algorithm returns a MIME object that is ready to be injected into the mail system:</t>

<t><list style="numbers" type="1">
  <t>Create MIME tree <spanx style="verb">inner</spanx> as a copy of <spanx style="verb">origbody</spanx></t>
  <t>Ensure <spanx style="verb">Content-Type</spanx> Header Field of <spanx style="verb">inner</spanx> has parameter <spanx style="verb">hp</spanx> set to <spanx style="verb">"clear"</spanx></t>
  <t>For each header name and value <spanx style="verb">(h,v)</spanx> in <spanx style="verb">origheaders</spanx>:
  <list style="numbers" type="a">
      <t>If <spanx style="verb">h</spanx> is <spanx style="verb">Sig</spanx>, skip that header, otherwise</t>
      <t>Add header <spanx style="verb">h</spanx> to <spanx style="verb">inner</spanx> with value <spanx style="verb">v</spanx></t>
    </list></t>
  <t>Encode <spanx style="verb">inner</spanx> to reduce the risk of modification by MTAs (see <xref target="formatting-for-transit"/>)</t>
  <t>Convert <spanx style="verb">inner</spanx> to bytestring <spanx style="verb">innerbytes</spanx>,
applying canonicalization as per <xref target="canonicalization"/></t>
  <t>For each signing key <spanx style="verb">key</spanx> in <spanx style="verb">crypto</spanx>:
  <list style="numbers" type="a">
      <t>The signing system takes <spanx style="verb">innerbytes</spanx> and the signing key <spanx style="verb">key</spanx>,
yielding a respective signature payload <spanx style="verb">sig</spanx>.</t>
      <t>Prepend a Header Field named <spanx style="verb">Sig</spanx> to <spanx style="verb">inner</spanx> with two parameters,
<spanx style="verb">t</spanx> (set to the literal string <spanx style="verb">p</spanx>) and
<spanx style="verb">b</spanx> (set to the base64-encoded value of <spanx style="verb">sig</spanx>).</t>
    </list></t>
  <t>Create new MIME tree <spanx style="verb">output</spanx> with <spanx style="verb">Content-Type</spanx> <spanx style="verb">multipart/mixed</spanx>,
with a single subpart, set to <spanx style="verb">inner</spanx></t>
  <t>For each header name and value <spanx style="verb">(h,v)</spanx> in <spanx style="verb">origheaders</spanx>:
  <list style="numbers" type="a">
      <t>Add header <spanx style="verb">h</spanx> to <spanx style="verb">outer</spanx> with value <spanx style="verb">v</spanx></t>
    </list></t>
  <t>Return <spanx style="verb">output</spanx></t>
</list></t>

</section>
<section anchor="do-not-use-unobtrusive-signature-when-encrypting"><name>Do Not Use Unobtrusive Signature When Encrypting</name>

<t>In accordance with <xref section="5.2" sectionFormat="of" target="RFC9787"/>,
when sending end-to-end encrypted messages an MUA <bcp14>MUST</bcp14> place end-to-end signatures inside the encrypted data.
This mechanism is therefore not applicable to encrypted messages.</t>

</section>
<section anchor="formatting-for-transit"><name>Formatting for Transit</name>

<t>The Protected Part (with all leading <spanx style="verb">Sig</spanx> Header Fields removed)
<bcp14>SHOULD</bcp14> be formatted, for example by following the patterns described in
<xref section="3" sectionFormat="of" target="RFC3156"/>, to make it less likely that it will be
modified by MTAs:</t>

<t><list style="symbols">
  <t>Content-Encoding is used to make the message 7-bit clean</t>
  <t>End of line trailing whitespace is stripped or encoded to non-whitespace</t>
  <t>If any line begins with the string "From ",
either the Quoted-Printable or Base64 MIME encoding <bcp14>MUST</bcp14> be applied,
and if Quoted-Printable is used, at least one of the characters in the string "From " <bcp14>MUST</bcp14> be encoded</t>
</list></t>

</section>
<section anchor="canonicalization"><name>Canonicalization</name>

<t>To ensure that changes to line endings and trailing empty lines made by
MTAs in transit do not invalidate the signature, the formatted
Protected Part <bcp14>MUST</bcp14> be canonicalized before signing or verification.</t>

<t>Line endings in the message <bcp14>MUST</bcp14> be converted to <spanx style="verb">CRLF</spanx> format.
This ensures that an OpenPGP signature over the message will be
invariant for both binary and text mode signatures.</t>

<t>All empty lines at the end of the message body are ignored. An empty
line is a line of zero length after removal of the line terminator.
If there is no body or no trailing <spanx style="verb">CRLF</spanx> on the message body, a <spanx style="verb">CRLF</spanx>
is added.
In more formal terms, <spanx style="verb">*CRLF</spanx> at the end of the body is converted
to a single <spanx style="verb">CRLF</spanx>.
Note that a completely empty or missing body is canonicalized as a
single <spanx style="verb">CRLF</spanx>; that is, the canonicalized length will be 2 octets.</t>

<t>The latter transformation is equivalent to the "simple" body
canonicalization algorithm defined in <xref section="3.4.3" sectionFormat="of" target="RFC6376"/>.</t>

</section>
<section anchor="openpgp-signature-details"><name>OpenPGP Signature Details</name>

<t>The OpenPGP Signature is made over the canonical bytestring,
and binary mode (OpenPGP Signature Type 0x00) <bcp14>SHOULD</bcp14> be used.</t>

</section>
<section anchor="cms-signature-details"><name>CMS Signature Details</name>

<t>The CMS signature is a CMS ContentInfo containing
a single CMS object of type SignedData.
The SignedData encapContentInfo eContent field <bcp14>MUST</bcp14> be absent.
The signerInfos field contains the signatures for the canonical bytestring.</t>

<t>This specification is directly aligned with the specification
of the <spanx style="verb">application/pkcs7-signature</spanx> media type in <xref section="3.5.3.1" sectionFormat="of" target="RFC8551"/>.</t>

</section>
</section>
<section anchor="recipient-guidance"><name>Recipient Guidance</name>

<section anchor="detecting-an-unobtrusive-signature"><name>Detecting an Unobtrusive Signature</name>

<t>A receiving MUA detects the presence of an unobtrusive signature on a message by verifying that:</t>

<t><list style="symbols">
  <t>the message <spanx style="verb">Content-Type</spanx> is <spanx style="verb">multipart/mixed</spanx>, and</t>
  <t>there is exactly one top-level subpart (though that subpart itself may be multipart), and</t>
  <t>the <spanx style="verb">Content-Type</spanx> of that top-level subpart has parameter <spanx style="verb">hp="clear"</spanx>, and</t>
  <t>the first header field of the top-level subpart is named <spanx style="verb">Sig</spanx>, and</t>
  <t>the top-level subpart has a <spanx style="verb">From</spanx> header field,
and its <spanx style="verb">addr-spec</spanx> matches the <spanx style="verb">addr-spec</spanx> in the message's <spanx style="verb">From</spanx> header field.</t>
</list></t>

<t>This last requirement (matching <spanx style="verb">From</spanx> <spanx style="verb">addr-spec</spanx>s) is an anti-spoofing measure,
by analogy with <xref section="4.4" sectionFormat="of" target="RFC9788"/>.</t>

</section>
<section anchor="validating-an-unobtrusive-signature"><name>Validating an Unobtrusive Signature</name>

<t>When validating an unobtrusive signature,
the signature data (that is, the value of the <spanx style="verb">b</spanx> field)
is converted from Base64 to binary format.
When <spanx style="verb">t=p</spanx>, this decoding yields a binary-format OpenPGP Detached Signature.
When <spanx style="verb">t=c</spanx>, it yields a CMS signature in PKCS7 format.
The signed object is extracted from the <spanx style="verb">multipart/mixed</spanx> part by selecting
every octet that comes after the <spanx style="verb">CRLF</spanx> that terminates the last leading <spanx style="verb">Sig</spanx> header,
and before the <spanx style="verb">CRLF</spanx> that immediately precedes the trailing MIME boundary.
The signed object is then canonicalized as described in <xref target="canonicalization"/>.
The canonicalized data is then passed to the signature verification routine as a raw bytestream.</t>

</section>
<section anchor="message-rendering-and-the-cryptographic-summary"><name>Message Rendering and the Cryptographic Summary</name>

<t>If the message has at least one Unobtrusive Signature which validates,
then the MUA renders the message as though the top-level subpart is the message itself.
The Cryptographic Summary of the message <bcp14>SHOULD</bcp14> indicate that the message is <spanx style="verb">signed-only</spanx>,
and that all header fields present in the top-level subpart share that Cryptographic Status.</t>

<section anchor="example-rendering"><name>Example Rendering</name>

<t>For example, consider a message with this structure:</t>

<figure><artwork type="ascii-art"><![CDATA[
A └┬╴multipart/mixed
B  └┬╴multipart/alternative; hp="clear" [Cryptographic Payload]
C   ├─╴text/plain
D   └─╴text/html
]]></artwork></figure>

<t>If at least one Unobtrusive Signature is present as a leading <spanx style="verb">Sig</spanx> header field in <spanx style="verb">B</spanx>,
and it validates correctly,
the message should be rendered the same way as this message:</t>

<figure><artwork type="ascii-art"><![CDATA[
B └┬╴multipart/alternative
C  ├─╴text/plain
D  └─╴text/html
]]></artwork></figure>

<t>And its Cryptographic Status will be <spanx style="verb">signed-only</spanx>.</t>

</section>
</section>
<section anchor="consistency-with-summary-view-for-tampered-messages"><name>Consistency with Summary View for Tampered Messages</name>

<t>Many MUAs have two different views of a given message:</t>

<t><list style="symbols">
  <t>A summary view, when rendering an overview of the contents of a mailbox,
for example showing only <spanx style="verb">From</spanx>, <spanx style="verb">Subject</spanx>, <spanx style="verb">Date</spanx>, and "unread" status
information for any given message, and</t>
  <t>A message view, for displaying the message itself,
with its header context, cryptographic summary, and full contents.</t>
</list></t>

<t>The user reasonably expects that, for any given message,
the information available in the summary view should match the message view.</t>

<t>Some MUAs render the summary view after ingesting the full message,
but other MUAs might render the summary view
without ever accessing anything other than the Outer Header Section.
If the latter style of MUA gains access to a full message that has a valid unobtrusive signature,
it can construct a candidate summary view using the signed header field information.
If the candidate summary view differs from the already displayed summary view,
then the Outer Header Section has most likely been tampered with in transit.</t>

<t>The MUA <bcp14>MUST NOT</bcp14> render the message view in such a way
that its header information does not match the summary view,
as this will lead to user confusion about the message itself.</t>

<t>In such a situation, the MUA has two reasonable choices:</t>

<t><list style="symbols">
  <t>The MUA <bcp14>MAY</bcp14> treat the unobtrusive signature as invalid,
and show a message view that aligns with the already displayed summary view
by rendering only the Outer Header Section.
Such a message would have a cryptographic summary of <spanx style="verb">unprotected</spanx>.</t>
  <t>The MUA <bcp14>MAY</bcp14> accept the unobtrusive signature
(yielding a cryptographic summary of <spanx style="verb">signed-only</spanx>),
and update the summary view to use the candidate summary view instead.
Such an updated summary view may surprise a user who is used to
the summary view only sustaining minor changes
(e.g., from "unread" to "read") upon rendering the message view.</t>
</list></t>

<t>A more complex approach in such a situation would be
for the MUA to alert the user that the message may have been tampered with in transit,
and allow them to choose to view either form of the message.
This is similar to the approach described in <xref section="6.2.1.1" sectionFormat="of" target="RFC9787"/>.</t>

<t>Note that an MUA that renders the summary view only after
evaluating the full message will never encounter this problem,
as the summary view will be fully aligned with the message view from the start.</t>

<t>Note also that this concern applies to all forms of signed-only mail with header protection,
not just to mail protected with an unobtrusive signature.</t>

<section anchor="unprotected-header-fields-added-in-transit"><name>Unprotected Header Fields Added In Transit</name>

<t>As noted in <xref section="7" sectionFormat="of" target="RFC9788"/>,
it's possible that a MUA encounters some Header Fields on the outer message
(in the Header Section of <spanx style="verb">A</spanx> in the example above)
which could not have been known by the sender.</t>

<t>If any such fields would normally be rendered in some fashion by the MUA on an <spanx style="verb">unsigned</spanx> message,
it <bcp14>MAY</bcp14> consider rendering them even on a <spanx style="verb">signed-only</spanx> Unobtrusively Signed message,
but it should take care to indicate that they do not share
the <spanx style="verb">signed-only</spanx> Cryptographic Status with the rest of the message.</t>

</section>
</section>
<section anchor="signature-failure-handling"><name>Signature Failure Handling</name>

<t>Sometimes a receiving MUA encounters an unobtrusively signed message
where all unobtrusive signatures fail to validate.
The receiving MUA <bcp14>MUST NOT</bcp14> present the user with a cryptographic status
that is different from a message with no signature at all.
That is, the message's Cryptographic Status <bcp14>SHOULD</bcp14> be <spanx style="verb">unprotected</spanx>.</t>

<t>If a message gets tampered with in such a way that all unobtrusive signatures are broken,
the recipient should see the message as though it were a normal unsigned message.</t>

</section>
<section anchor="handling-multiple-signatures"><name>Handling Multiple Signatures</name>

<t>If more than one unobtrusive signature is present in a message,
the receiving MUA <bcp14>MUST</bcp14> verify each signature
against the known certificates associated with the indicated sender.
As long as one of the signatures validates,
the message should be treated as correctly signed,
even if all the other signatures are invalid.</t>

<section anchor="multiple-openpgp-signatures"><name>Multiple OpenPGP Signatures</name>

<t>Note that when a message is signed by multiple OpenPGP keys,
the composer <bcp14>MAY</bcp14> structure the message with each OpenPGP signature packet (see <xref section="5.2" sectionFormat="of" target="OpenPGP"/>)
in its own <spanx style="verb">Sig: t=p</spanx> header field,
or it <bcp14>MAY</bcp14> pack the OpenPGP signature packets together
into a single OpenPGP Detached Signature (see <xref section="10.4" sectionFormat="of" target="OpenPGP"/>)
and place them in a single <spanx style="verb">Sig: t=p</spanx> header field.
The verifying implementation <bcp14>MUST</bcp14> consider all appropriately placed <spanx style="verb">Sig: t=p</spanx> header fields,
regardless of how many signature packets are included in each header field.
It <bcp14>MAY</bcp14> coalesce the decoded <spanx style="verb">b=</spanx> data from multiple <spanx style="verb">Sig: t=p</spanx> header fields
into a single OpenPGP Detached Signature
(by simply concatenating the base64-decoded <spanx style="verb">b</spanx> values)
before attempting verification.</t>

<t>Some MIME parsers have a fixed upper bound on the size of any MIME header field.
A composer signing the message with more than one key should consider
the size of the OpenPGP signatures when generating the <spanx style="verb">Sig: t=p</spanx> header fields
to avoid breaking the message for recipients who use those constrained parsers.
If the total size of the cumulative signature packets are very large,
the composer <bcp14>MAY</bcp14> split up the OpenPGP Detached Signature at OpenPGP Signature packet boundaries,
and place each disaggregated OpenPGP Detached Signature into a separate header field.</t>

<t>A good rule of thumb is to ensure each <spanx style="verb">Sig: t=p</spanx> header field is no larger than 50 KiB.</t>

</section>
<section anchor="multiple-cms-signatures"><name>Multiple CMS Signatures</name>

<t>When a message is signed by multiple CMS keys,
each CMS signature <bcp14>SHOULD</bcp14> be placed in its own <spanx style="verb">Sig: t=c</spanx> header field.</t>

</section>
</section>
<section anchor="ignore-out-of-place-unobtrusive-signatures"><name>Ignore Out-of-place Unobtrusive Signatures</name>

<t>An unobtrusive signature <spanx style="verb">Sig</spanx> header field <bcp14>MUST NOT</bcp14> be evaluated unless:</t>

<t><list style="symbols">
  <t>it is within the MIME headers of the only subpart of a <spanx style="verb">multipart/mixed</spanx> message, and</t>
  <t>it appears before any non-<spanx style="verb">Sig</spanx> header field</t>
</list></t>

<t>Evaluating a <spanx style="verb">Sig</spanx> header outside of this location might mean that a modified message
could still appear to be successfully verified.
For example, an unobtrusively signed message might be included as a sub-part of another multipart message,
or be transformed into a non-MIME message with different message headers than the original email.
This could conceivably be used by an attacker
to make subtle changes to the meaning of a message
without altering the content of the Protected Part.</t>

</section>
</section>
<section anchor="mta-guidance"><name>MTA Guidance</name>

<t>An MTA or any other message relay service that observes a message with Content-Type <spanx style="verb">multipart/mixed</spanx>
that is a single part <bcp14>MUST NOT</bcp14> alter the content of this message body in any way,
including, but not limited to,
changing the content transfer encoding of the body part or any of its encapsulated body parts.
This corresponds to the guidance in <xref section="2.1" sectionFormat="of" target="RFC1847"/>
about the first section of <spanx style="verb">multipart/signed</spanx> messages.</t>

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

<t>Based on the principle that "a broken signature is the same as no signature",
a receiving MUA <bcp14>MUST NOT</bcp14> display any warnings if an Unobtrusive Signature fails to verify,
unless the user has requested debugging output.
This is because if an MITM can modify a message in transit,
then they can choose whether or not to also remove the (now invalid) signature.
If the receiving MUA displayed a more severe warning for a broken signature
than for a missing one (or vice versa),
the MITM could choose to modify the message in such a way that would result in the less-severe warning.
The warning message is thus attacker-controlled.</t>

<t>Otherwise, the security properties are equivalent to those of a multipart/signed message.</t>

</section>
<section anchor="performance-considerations"><name>Performance Considerations</name>

<section anchor="rationale-for-signature-in-mime-part"><name>Rationale for Signature in MIME Part</name>

<t>An alternate design considered for unobtrusive signatures was
to simply place the <spanx style="verb">Sig</spanx> header in the Outer Header Section of the message itself,
without requiring any additional MIME structure.
This was rejected in favor of the MIME structure described in <xref target="mime-structure"/> for the following reasons:</t>

<t><list style="symbols">
  <t>Unobtrusive signatures always offer Header Protection aligned with <xref target="RFC9788"/>,
so the signature needs to be able to cover those Header Fields generated by the sending MUA.
But we know that most received messages contain a mix
of Header Fields generated by the sending MUA and Header Fields injected by MTAs that touch the message in transit.</t>
  <t>Placing the signature as a Header Field in the Outer Header Section raises challenges
in identifying which Header Fields are covered by the signature.</t>
  <t>An MTA is more likely to modify, reorder, or enforce limits on Header Fields
in the message's Outer Header Section than it is to corrupt Header Fields in the subpart.</t>
  <t>Any DKIM signature that includes the body of the message
will cover the end-to-end signature if it is part of the message body.
If the end-to-end signature was in the message's Outer Header Section
it would not normally be signed by DKIM,
and would be vulnerable to inadvertent breakage by naive MTAs.</t>
</list></t>

</section>
<section anchor="no-one-pass-message-generation"><name>No One-pass Message Generation</name>

<t>Because the signature is included first in the message,
it is not possible to generate the message in a single pass.</t>

<t>A sending MUA that needs to generate a signed outbound message in a single pass
should use another end-to-end signing mechanism, like <spanx style="verb">multipart/signed</spanx>.</t>

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

<section anchor="sig-header"><name>Register the Sig Header Field</name>

<t>IANA is requested to update the Permanent Message Header Field Names registry
to add the following entry:</t>

<texttable title="Permanent Message Header Field Names">
      <ttcol align='left'>Header Field Name</ttcol>
      <ttcol align='left'>Protocol</ttcol>
      <ttcol align='left'>Status</ttcol>
      <ttcol align='left'>Trace</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>Sig</c>
      <c>MIME</c>
      <c>informational</c>
      <c>no</c>
      <c>This document</c>
</texttable>

<t>The registration template called for in <xref section="4.2.1" sectionFormat="of" target="RFC3864"/> is:</t>

<texttable title="Permanent Message Header Field Registration Template for Sig">
      <ttcol align='left'>Template Field</ttcol>
      <ttcol align='left'>Value</ttcol>
      <c>Header field name</c>
      <c><spanx style="verb">Sig</spanx></c>
      <c>Applicable protocol</c>
      <c>MIME</c>
      <c>Status</c>
      <c>informational</c>
      <c>Author/Change controller</c>
      <c>IETF</c>
      <c>Specification document(s)</c>
      <c>This document</c>
      <c>Related information</c>
      <c>RFC9580 describes OpenPGP detached signatures, RFC8551 describes <spanx style="verb">application/pkcs7-signature</spanx> objects.</c>
</texttable>

</section>
<section anchor="sig-header-parameters"><name>Create Registry for Sig Message Header Parameters</name>

<t>IANA is requested to create a registry titled "Sig Message Header Parameters"
in the "Message Headers" group of registries, with the following initial contents:</t>

<texttable title="Sig Message Header Parameters">
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c><spanx style="verb">t</spanx></c>
      <c>Type of Signature (see <xref target="t-param"/>)</c>
      <c>This document</c>
      <c><spanx style="verb">b</spanx></c>
      <c>Base64-encoded Signature Content (whitespace permitted and ignored)</c>
      <c>This document</c>
</texttable>

<t>(( TODO: do we need a registry for this? Are we expecting any new parameters? ))</t>

</section>
<section anchor="t-param"><name>Create Registry For t Parameter</name>

<t>IANA is requested to create a registry titled "Sig Message Header Signature Types"
in the "Message Headers" group of registries, with the following initial contents:</t>

<texttable title="Sig Message Header Signature Types">
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c><spanx style="verb">p</spanx></c>
      <c>An OpenPGP Detached Signature</c>
      <c>This document</c>
      <c><spanx style="verb">c</spanx></c>
      <c>A CMS Signature</c>
      <c>This document</c>
</texttable>

</section>
<section anchor="update-multipartmixed-to-refer-here"><name>Update multipart/mixed to Refer Here</name>

<t>IANA is requested to update the "multipart/mixed" entry in the Media Types registry,
to add a reference to this document.</t>

</section>
<section anchor="registration-policies"><name>Registration Policies</name>

<t>IANA is requested to set all registries within this document to use
the SPECIFICATION <bcp14>REQUIRED</bcp14> registration policy, see <xref section="4.6" sectionFormat="of" target="RFC8126"/>.
This policy means that review and approval by a designated expert is required,
and that the IDs and their meanings must be documented in
a permanent and readily available public specification,
in sufficient detail so that interoperability between independent implementations is possible.</t>

</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC9787">
  <front>
    <title>Guidance on End-to-End Email Security</title>
    <author fullname="D. K. Gillmor" initials="D. K." role="editor" surname="Gillmor"/>
    <author fullname="A. Melnikov" initials="A." role="editor" surname="Melnikov"/>
    <author fullname="B. Hoeneisen" initials="B." role="editor" surname="Hoeneisen"/>
    <date month="August" year="2025"/>
    <abstract>
      <t>End-to-end cryptographic protections for email messages can provide useful security. However, the standards for providing cryptographic protection are extremely flexible. That flexibility can trap users and cause surprising failures. This document offers guidance for Mail User Agent (MUA) implementers to help mitigate those risks and to make end-to-end email simple and secure for the end user. It provides a useful set of vocabulary as well as recommendations to avoid common failures. It also identifies a number of currently unsolved usability and interoperability problems.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9787"/>
  <seriesInfo name="DOI" value="10.17487/RFC9787"/>
</reference>
<reference anchor="RFC9788">
  <front>
    <title>Header Protection for Cryptographically Protected Email</title>
    <author fullname="D. K. Gillmor" initials="D. K." surname="Gillmor"/>
    <author fullname="B. Hoeneisen" initials="B." surname="Hoeneisen"/>
    <author fullname="A. Melnikov" initials="A." surname="Melnikov"/>
    <date month="August" year="2025"/>
    <abstract>
      <t>S/MIME version 3.1 introduced a mechanism to provide end-to-end cryptographic protection of email message headers. However, few implementations generate messages using this mechanism, and several legacy implementations have revealed rendering or security issues when handling such a message.</t>
      <t>This document updates the S/MIME specification (RFC 8551) to offer a different mechanism that provides the same cryptographic protections but with fewer downsides when handled by legacy clients. Furthermore, it offers more explicit usability, privacy, and security guidance for clients when generating or handling email messages with cryptographic protection of message headers.</t>
      <t>The Header Protection scheme defined here is also applicable to messages with PGP/MIME (Pretty Good Privacy with MIME) cryptographic protections.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9788"/>
  <seriesInfo name="DOI" value="10.17487/RFC9788"/>
</reference>
<reference anchor="RFC8126">
  <front>
    <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
    <author fullname="M. Cotton" initials="M." surname="Cotton"/>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <author fullname="T. Narten" initials="T." surname="Narten"/>
    <date month="June" year="2017"/>
    <abstract>
      <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
      <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
      <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="26"/>
  <seriesInfo name="RFC" value="8126"/>
  <seriesInfo name="DOI" value="10.17487/RFC8126"/>
</reference>
<reference anchor="OpenPGP">
  <front>
    <title>OpenPGP</title>
    <author fullname="P. Wouters" initials="P." role="editor" surname="Wouters"/>
    <author fullname="D. Huigens" initials="D." surname="Huigens"/>
    <author fullname="J. Winter" initials="J." surname="Winter"/>
    <author fullname="Y. Niibe" initials="Y." surname="Niibe"/>
    <date month="July" year="2024"/>
    <abstract>
      <t>This document specifies the message formats used in OpenPGP. OpenPGP provides encryption with public key or symmetric cryptographic algorithms, digital signatures, compression, and key management.</t>
      <t>This document is maintained in order to publish all necessary information needed to develop interoperable applications based on the OpenPGP format. It is not a step-by-step cookbook for writing an application. It describes only the format and methods needed to read, check, generate, and write conforming packets crossing any network. It does not deal with storage and implementation questions. It does, however, discuss implementation issues necessary to avoid security flaws.</t>
      <t>This document obsoletes RFCs 4880 ("OpenPGP Message Format"), 5581 ("The Camellia Cipher in OpenPGP"), and 6637 ("Elliptic Curve Cryptography (ECC) in OpenPGP").</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9580"/>
  <seriesInfo name="DOI" value="10.17487/RFC9580"/>
</reference>
<reference anchor="CMS">
  <front>
    <title>Cryptographic Message Syntax (CMS)</title>
    <author fullname="R. Housley" initials="R." surname="Housley"/>
    <date month="September" year="2009"/>
    <abstract>
      <t>This document describes the Cryptographic Message Syntax (CMS). This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="70"/>
  <seriesInfo name="RFC" value="5652"/>
  <seriesInfo name="DOI" value="10.17487/RFC5652"/>
</reference>
<reference anchor="RFC3156">
  <front>
    <title>MIME Security with OpenPGP</title>
    <author fullname="M. Elkins" initials="M." surname="Elkins"/>
    <author fullname="D. Del Torto" initials="D." surname="Del Torto"/>
    <author fullname="R. Levien" initials="R." surname="Levien"/>
    <author fullname="T. Roessler" initials="T." surname="Roessler"/>
    <date month="August" year="2001"/>
    <abstract>
      <t>This document describes how the OpenPGP Message Format can be used to provide privacy and authentication using the Multipurpose Internet Mail Extensions (MIME) security content types described in RFC 1847. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3156"/>
  <seriesInfo name="DOI" value="10.17487/RFC3156"/>
</reference>
<reference anchor="RFC8551">
  <front>
    <title>Secure/Multipurpose Internet Mail Extensions (S/MIME) Version 4.0 Message Specification</title>
    <author fullname="J. Schaad" initials="J." surname="Schaad"/>
    <author fullname="B. Ramsdell" initials="B." surname="Ramsdell"/>
    <author fullname="S. Turner" initials="S." surname="Turner"/>
    <date month="April" year="2019"/>
    <abstract>
      <t>This document defines Secure/Multipurpose Internet Mail Extensions (S/MIME) version 4.0. S/MIME provides a consistent way to send and receive secure MIME data. Digital signatures provide authentication, message integrity, and non-repudiation with proof of origin. Encryption provides data confidentiality. Compression can be used to reduce data size. This document obsoletes RFC 5751.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8551"/>
  <seriesInfo name="DOI" value="10.17487/RFC8551"/>
</reference>
<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>
<reference anchor="RFC5322">
  <front>
    <title>Internet Message Format</title>
    <author fullname="P. Resnick" initials="P." role="editor" surname="Resnick"/>
    <date month="October" year="2008"/>
    <abstract>
      <t>This document specifies the Internet Message Format (IMF), a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages. This specification is a revision of Request For Comments (RFC) 2822, which itself superseded Request For Comments (RFC) 822, "Standard for the Format of ARPA Internet Text Messages", updating it to reflect current practice and incorporating incremental changes that were specified in other RFCs. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5322"/>
  <seriesInfo name="DOI" value="10.17487/RFC5322"/>
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC1847">
  <front>
    <title>Security Multiparts for MIME: Multipart/Signed and Multipart/Encrypted</title>
    <author fullname="J. Galvin" initials="J." surname="Galvin"/>
    <author fullname="S. Murphy" initials="S." surname="Murphy"/>
    <author fullname="S. Crocker" initials="S." surname="Crocker"/>
    <author fullname="N. Freed" initials="N." surname="Freed"/>
    <date month="October" year="1995"/>
    <abstract>
      <t>This document defines a framework within which security services may be applied to MIME body parts. [STANDARDS-TRACK] This memo defines a new Simple Mail Transfer Protocol (SMTP) [1] reply code, 521, which one may use to indicate that an Internet host does not accept incoming mail. This memo defines an Experimental Protocol for the Internet community. This memo defines an extension to the SMTP service whereby an interrupted SMTP transaction can be restarted at a later time without having to repeat all of the commands and message content sent prior to the interruption. This memo defines an Experimental Protocol for the Internet community.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="1847"/>
  <seriesInfo name="DOI" value="10.17487/RFC1847"/>
</reference>
<reference anchor="RFC6376">
  <front>
    <title>DomainKeys Identified Mail (DKIM) Signatures</title>
    <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
    <author fullname="T. Hansen" initials="T." role="editor" surname="Hansen"/>
    <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
    <date month="September" year="2011"/>
    <abstract>
      <t>DomainKeys Identified Mail (DKIM) permits a person, role, or organization that owns the signing domain to claim some responsibility for a message by associating the domain with the message. This can be an author's organization, an operational relay, or one of their agents. DKIM separates the question of the identity of the Signer of the message from the purported author of the message. Assertion of responsibility is validated through a cryptographic signature and by querying the Signer's domain directly to retrieve the appropriate public key. Message transit from author to recipient is through relays that typically make no substantive change to the message content and thus preserve the DKIM signature.</t>
      <t>This memo obsoletes RFC 4871 and RFC 5672. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="76"/>
  <seriesInfo name="RFC" value="6376"/>
  <seriesInfo name="DOI" value="10.17487/RFC6376"/>
</reference>

<reference anchor="I-D.bre-openpgp-samples">
   <front>
      <title>OpenPGP Example Keys and Certificates</title>
      <author fullname="Bjarni Rúnar Einarsson" initials="B. R." surname="Einarsson">
         <organization>Mailpile ehf</organization>
      </author>
      <author fullname="&quot;juga&quot;" initials="" surname="&quot;juga&quot;">
         <organization>Independent</organization>
      </author>
      <author fullname="Daniel Kahn Gillmor" initials="D. K." surname="Gillmor">
         <organization>American Civil Liberties Union</organization>
      </author>
      <date day="8" month="May" year="2025"/>
      <abstract>
	 <t>   The OpenPGP development community benefits from sharing samples of
   signed or encrypted data.  This document facilitates such
   collaboration by defining a small set of OpenPGP certificates and
   keys for use when generating such samples.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-bre-openpgp-samples-03"/>
   
</reference>
<reference anchor="DKIM">
  <front>
    <title>DomainKeys Identified Mail (DKIM) Signatures</title>
    <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
    <author fullname="T. Hansen" initials="T." role="editor" surname="Hansen"/>
    <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
    <date month="September" year="2011"/>
    <abstract>
      <t>DomainKeys Identified Mail (DKIM) permits a person, role, or organization that owns the signing domain to claim some responsibility for a message by associating the domain with the message. This can be an author's organization, an operational relay, or one of their agents. DKIM separates the question of the identity of the Signer of the message from the purported author of the message. Assertion of responsibility is validated through a cryptographic signature and by querying the Signer's domain directly to retrieve the appropriate public key. Message transit from author to recipient is through relays that typically make no substantive change to the message content and thus preserve the DKIM signature.</t>
      <t>This memo obsoletes RFC 4871 and RFC 5672. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="76"/>
  <seriesInfo name="RFC" value="6376"/>
  <seriesInfo name="DOI" value="10.17487/RFC6376"/>
</reference>
<reference anchor="RFC3864">
  <front>
    <title>Registration Procedures for Message Header Fields</title>
    <author fullname="G. Klyne" initials="G." surname="Klyne"/>
    <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
    <author fullname="J. Mogul" initials="J." surname="Mogul"/>
    <date month="September" year="2004"/>
    <abstract>
      <t>This specification defines registration procedures for the message header fields used by Internet mail, HTTP, Netnews and other applications. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="90"/>
  <seriesInfo name="RFC" value="3864"/>
  <seriesInfo name="DOI" value="10.17487/RFC3864"/>
</reference>
<reference anchor="RFC9216">
  <front>
    <title>S/MIME Example Keys and Certificates</title>
    <author fullname="D. K. Gillmor" initials="D. K." role="editor" surname="Gillmor"/>
    <date month="April" year="2022"/>
    <abstract>
      <t>The S/MIME development community benefits from sharing samples of signed or encrypted data. This document facilitates such collaboration by defining a small set of X.509v3 certificates and keys for use when generating such samples.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9216"/>
  <seriesInfo name="DOI" value="10.17487/RFC9216"/>
</reference>
<reference anchor="RFC7942">
  <front>
    <title>Improving Awareness of Running Code: The Implementation Status Section</title>
    <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
    <author fullname="A. Farrel" initials="A." surname="Farrel"/>
    <date month="July" year="2016"/>
    <abstract>
      <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
      <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="205"/>
  <seriesInfo name="RFC" value="7942"/>
  <seriesInfo name="DOI" value="10.17487/RFC7942"/>
</reference>



    </references>

</references>


<?line 654?>

<section anchor="test-vectors"><name>Test Vectors</name>

<t>These test vectors show different examples of unobtrusive signed messages.</t>

<section anchor="from-alice-to-bob"><name>From Alice to Bob</name>

<t>The message below is a common <spanx style="verb">multipart/alternative</spanx> email,
signed with an unobtrusive signature.
The signature should be verifiable using the "Alice" v4 certificate
found in <xref section="2.1.1" sectionFormat="of" target="I-D.bre-openpgp-samples"/>.</t>

<figure><sourcecode type="message/rfc822" name="uosig-0.eml"><![CDATA[
Content-Type: multipart/mixed; boundary="5d6"
MIME-Version: 1.0
From: Alice Lovelace <alice@openpgp.example>
To: Bob Babbage <bob@openpgp.example>
Subject: This is a Test
Date: Thu, 01 May 2025 22:16:15 -0400
Message-ID: <uosig-0@openpgp.example>

--5d6
Sig: t=p; b=wnUEABYKAB0WIQTrhbtfozp14V6UTmPyMVUMT0fjjgUCaBQq
 7wAKCRDyMVUMT0fjjr+3AP4nGDsaptk9I6EePoXftyevyH6luB2aSAzrD8o
 xQVNWDQD/VQ/s85C3v6SAxtFDcBsn2H32Hd/yW5BsDx62gmpL7Aw=
MIME-Version: 1.0
From: Alice Lovelace <alice@openpgp.example>
To: Bob Babbage <bob@openpgp.example>
Subject: This is a Test
Date: Thu, 01 May 2025 22:16:15 -0400
Message-ID: <uosig-0@openpgp.example>
Content-Type: multipart/alternative; boundary="913"; hp="clear"

--913
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

Hi Bob,

This is Alice.  I need you to:

- read this message
- reply to it
- delete it promptly.

Thanks,
Alice
--913
Content-Type: text/html; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

<html><head></head><body><p>Hi Bob,</p>
<p>This is Alice.  I need you to:</p>
<ul>
<li>read this message</li>
<li>reply to it</li>
<li>delete it promptly.</li>
</ul>
<p>Thanks,
Alice</p></body></html>
--913--

--5d6--
]]></sourcecode></figure>

</section>
<section anchor="from-david-to-alice"><name>From David to Alice</name>

<t>The message below is a simple <spanx style="verb">text/plain</spanx> email,
signed with an unobtrusive signature.
The signature should be verifiable using the "David" certificate
found in <xref section="5.1" sectionFormat="of" target="I-D.bre-openpgp-samples"/>.</t>

<figure><sourcecode type="message/rfc822" name="uosig-1.eml"><![CDATA[
Content-Type: multipart/mixed; boundary="a21"
MIME-Version: 1.0
From: David Deluxe <david@openpgp.example>
To: Alice Lovelace <alice@openpgp.example>
Subject: Checking in
Date: Fri, 02 May 2025 13:01:07 -0400
Message-ID: <uosig-1@openpgp.example>

--a21
Sig: t=p; b=wpIGABsIAAAAKSIhBkGZ2eqmaCp41aU09iv3YiKlTk3rx4Xb
 5qbFs0WGAm/iBQJoFPpTAAAACgkQQZnZ6qZoKnhDIRA9tgkt50eA1ckzilm
 9KndQt3t4iYlab66bvtP+kP9D7zaNzvC1vE+B6jPY1gUBOQMyF5CK3yC/xZ
 Ol2ww+x8Y3PZ7OpZ1dPUlshDL5gA7ZAw==
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
From: David Deluxe <david@openpgp.example>
To: Alice Lovelace <alice@openpgp.example>
Subject: Checking in
Date: Fri, 02 May 2025 13:01:07 -0400
Message-ID: <uosig-1@openpgp.example>
Content-Type: text/plain; charset="us-ascii"; hp="clear"

Alice!

So good to see you earlier.

I hope you will have a chance to check out
our new website: https://openpgp.example/
and tell me what you think.

All the best,

David

--a21--
]]></sourcecode></figure>

</section>
<section anchor="from-alice-to-david"><name>From Alice to David</name>

<t>The message below is a <spanx style="verb">multipart/alternative</spanx> email with an image attached,
signed with an unobtrusive signature.
The signature should be verifiable using the "Alice" v4 certificate
found in <xref section="2.1.1" sectionFormat="of" target="I-D.bre-openpgp-samples"/>.</t>

<figure><sourcecode type="message/rfc822" name="uosig-2.eml"><![CDATA[
Content-Type: multipart/mixed; boundary="3e4"
MIME-Version: 1.0
From: Alice Lovelace <alice@openpgp.example>
To: David Deluxe <david@openpgp.example>
Subject: Re: Checking in
Date: Fri, 02 May 2025 17:03:35 -0400
Message-ID: <uosig-2@openpgp.example>
In-Reply-To: <uosig-1@openpgp.example>
References: <uosig-1@openpgp.example>

--3e4
Sig: t=p; b=wnUEABYKAB0WIQTrhbtfozp14V6UTmPyMVUMT0fjjgUCaBUz
 JwAKCRDyMVUMT0fjjmnRAQDKnIfyPyvE2lVlVOQl+H99TK+VFCvBaTZyTAV
 xnKgJ1gEAjVDQ3idx4Z4wSN+pLhWS1LdpVbWdH7mW58gS0GBz5AM=
MIME-Version: 1.0
From: Alice Lovelace <alice@openpgp.example>
To: David Deluxe <david@openpgp.example>
Subject: Re: Checking in
Date: Fri, 02 May 2025 17:03:35 -0400
Message-ID: <uosig-2@openpgp.example>
In-Reply-To: <uosig-1@openpgp.example>
References: <uosig-1@openpgp.example>
Content-Type: multipart/mixed; boundary="d64"; hp="clear"

--d64
Content-Type: multipart/alternative; boundary="f4f"
MIME-Version: 1.0

--f4f
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

Hi David,

I think the attached logo might look good
on the website.

Thanks,
Alice

--f4f
Content-Type: text/html; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

<html><head></head><body><p>Hi David,</p>
<p>I think the attached logo might look good
on the website.</p>
<p>Thanks,
Alice</p></body></html>
--f4f--

--d64
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="logo.png"

iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAcElEQVR42uVTOxbA
MAgS739nO3TpRw20dqpbfARQEjOywiwYnCtkDKnbcLk66sqlT+zt9cidkE+6KwkZ
sgrzfcqVMpL2jo0447gYDpeArk+OnJHkIhAfTPRicihAf5YJrw7vjv0ZWRWM/uli
vdPf1QZ2kDD9xppd8wAAAABJRU5ErkJggg==

--d64--

--3e4--
]]></sourcecode></figure>

</section>
<section anchor="alice-to-david-followup"><name>Alice to David Followup</name>

<t>The message below is a <spanx style="verb">multipart/alternative</spanx> email
that is a self-reply from about a week later.
In the meantime, Alice has gotten a new OpenPGP certificate,
so the message is signed with both her old key and her new key.
This message's signatures should be verifiable respectively
using either the "Alice" v4 certificate found in <xref section="2.1.1" sectionFormat="of" target="I-D.bre-openpgp-samples"/> or
the "Alice" v6 certificate found in <xref section="2.2.1" sectionFormat="of" target="I-D.bre-openpgp-samples"/>.</t>

<figure><sourcecode type="message/rfc822" name="uosig-3.eml"><![CDATA[
Content-Type: multipart/mixed; boundary="0cd"
MIME-Version: 1.0
From: Alice Lovelace <alice@openpgp.example>
To: David Deluxe <david@openpgp.example>
Subject: Re: Checking in
Date: Thu, 08 May 2025 18:41:05 -0400
Message-ID: <uosig-3@openpgp.example>
In-Reply-To: <uosig-2@openpgp.example>
References: <uosig-2@openpgp.example>

--0cd
Sig: t=p; b=wnUEABYKAB0WIQTrhbtfozp14V6UTmPyMVUMT0fjjgUCaB0z
 AQAKCRDyMVUMT0fjjtCJAQCLvEeDH/grJ9szJTEPumRz0lvQm1f3GHNuTnS
 W9+SV/wD/YpPK4oMy2Cbrzo9JagpO4uxXkbCWQIHI9HFlwkz8Hg0=
Sig: t=p; b=wogGABsIAAAAKSIhBuRqR5oGQqpTb/U1uxxDl7NeiBI/TgFl
 Z9LvdROjBBHyBYJp1PpIAAAAAMXUEJmS8XYBIAZAiRxhUsVSePxF7QMK9CA
 V/4u2hOAfg/z5Tg/p9B8TB9ydm81DI/+ltru4grSnvFL2JKYMrdOxVMY40u
 NugvrgF+YyAGHahkMN
MIME-Version: 1.0
From: Alice Lovelace <alice@openpgp.example>
To: David Deluxe <david@openpgp.example>
Subject: Re: Checking in
Date: Thu, 08 May 2025 18:41:05 -0400
Message-ID: <uosig-3@openpgp.example>
In-Reply-To: <uosig-2@openpgp.example>
References: <uosig-2@openpgp.example>
Content-Type: multipart/alternative; boundary="97a"; hp="clear"

--97a
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

Hey David,

Also, please spell my name correctly in the
website's acknowledgements section.

Kind regards,
Alice

--97a
Content-Type: text/html; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

<html><head></head><body><p>Hey David,</p>
<p>Also, please spell my name correctly in the
website's acknowledgements section.</p>
<p>Kind regards,
Alice</p></body></html>
--97a--

--0cd--
]]></sourcecode></figure>

</section>
<section anchor="from-carlos-to-dana"><name>From Carlos to Dana</name>

<t>The message below is a <spanx style="verb">multipart/alternative</spanx> email,
signed with an unobtrusive CMS signature.
The signature should be verifiable using the "Carlos" X.509 certificate from
<xref section="7.1" sectionFormat="of" target="RFC9216"/>.</t>

<figure><sourcecode type="message/rfc822" name="uosig-4.eml"><![CDATA[
Content-Type: multipart/mixed; boundary="b8f"
MIME-Version: 1.0
From: Carlos Turing <carlos@smime.example>
To: Dana Hopper <dana@smime.example>
Subject: Touching base on Project Scoop
Date: Mon, 01 Dec 2025 20:41:05 -0400
Message-ID: <uosig-4@smime.example>

--b8f
Sig: t=c; b=MIIDoAYJKoZIhvcNAQcCoIIDkTCCA40CAQExDTALBglghkgB
 ZQMEAgMwCwYJKoZIhvcNAQcBoIICCzCCAgcwggG5oAMCAQICEz9eH1Qk0bQ
 BQ3gPc8GKF4UedpYwBQYDK2VwMFkxDTALBgNVBAoTBElFVEYxETAPBgNVBA
 sTCExBTVBTIFdHMTUwMwYDVQQDEyxTYW1wbGUgTEFNUFMgRWQyNTUxOSBDZ
 XJ0aWZpY2F0aW9uIEF1dGhvcml0eTAgFw0yMDEyMTUyMTM1NDRaGA8yMDUy
 MTIxNTIxMzU0NFowOjENMAsGA1UEChMESUVURjERMA8GA1UECxMITEFNUFM
 gV0cxFjAUBgNVBAMTDUNhcmxvcyBUdXJpbmcwKjAFBgMrZXADIQDCzoAyLN
 5hyE2ETWDvkZznna6ufx7kB10j8gCmkvfIraOBsDCBrTAMBgNVHRMBAf8EA
 jAAMBcGA1UdIAQQMA4wDAYKYIZIAWUDAgEwATAfBgNVHREEGDAWgRRjYXJs
 b3NAc21pbWUuZXhhbXBsZTATBgNVHSUEDDAKBggrBgEFBQcDBDAOBgNVHQ8
 BAf8EBAMCBsAwHQYDVR0OBBYEFGSF4zucHVrN5gu6Gn8IvsSczIQ/MB8GA1
 UdIwQYMBaAFGuilX26FJvkLQTRB6TRguQua4y1MAUGAytlcANBAMFRkFm3c
 uhUCKUxbGlrxtv1Etn50ugfgc4Aq5BkCll9VoJE4+DBDqi/tHBVy6+2UNg0
 FKNol8kwLufAUem7XAkxggFbMIIBVwIBATBwMFkxDTALBgNVBAoTBElFVEY
 xETAPBgNVBAsTCExBTVBTIFdHMTUwMwYDVQQDEyxTYW1wbGUgTEFNUFMgRW
 QyNTUxOSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQITP14fVCTRtAFDeA9zw
 YoXhR52ljALBglghkgBZQMEAgOggYkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3
 DQEHATAcBgkqhkiG9w0BCQUxDxcNMjUxMjAyMDA0MTA1WjBPBgkqhkiG9w0
 BCQQxQgRAKL1rWpLN627fT1QCjZRf+3Jhvr6SpbQREptLf0wBzIPktKLT4W
 nDO68KCYuZMD07gPaw9o47QxhC9C4CnXT3DDAFBgMrZXAEQOQGMe6IlrFn1
 owFikFVQ18/x9nqJ3FI2nJDOKv87VStnqsDOnMcjTLxSD5uGnKgUY15yD/Z
 p+oXksYt791AmQM=
MIME-Version: 1.0
From: Carlos Turing <carlos@smime.example>
To: Dana Hopper <dana@smime.example>
Subject: Touching base on Project Scoop
Date: Mon, 01 Dec 2025 20:41:05 -0400
Message-ID: <uosig-4@smime.example>
Content-Type: multipart/alternative; boundary="12f"; hp="clear"

--12f
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

Ahoy Dana--

Can you take a look at the most recent document on the W: drive
related to Project Scoop?

I am happy to talk with you about it Thursday.

--Carlos

--12f
Content-Type: text/html; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

<html><head></head><body><p>Ahoy Dana--</p>
<p>Can you take a look at the most recent document on the W: drive
related to Project Scoop?</p>
<p>I am happy to talk with you about it Thursday.</p>
<p>--Carlos</p></body></html>
--12f--

--b8f--
]]></sourcecode></figure>

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

<section anchor="changes-between-draft-ietf-mailmaint-unobtrusive-signatures-01-and-draft-ietf-mailmaint-unobtrusive-signatures-02"><name>Changes Between draft-ietf-mailmaint-unobtrusive-signatures-01 and draft-ietf-mailmaint-unobtrusive-signatures-02</name>

<t><list style="symbols">
  <t>Adjust canonicalization to align with DKIM simple.</t>
  <t>Fix one of the test vectors.</t>
  <t>Textual nits.</t>
</list></t>

</section>
<section anchor="changes-between-draft-ietf-mailmaint-unobtrusive-signatures-00-and-draft-ietf-mailmaint-unobtrusive-signatures-01"><name>Changes Between draft-ietf-mailmaint-unobtrusive-signatures-00 and draft-ietf-mailmaint-unobtrusive-signatures-01</name>

<t><list style="symbols">
  <t>Specified CMS signatures</t>
  <t>Added implementation status section</t>
</list></t>

</section>
<section anchor="changes-between-draft-gallagher-email-unobtrusive-signatures-02-and-draft-ietf-mailmaint-unobtrusive-signatures-00"><name>Changes Between draft-gallagher-email-unobtrusive-signatures-02 and draft-ietf-mailmaint-unobtrusive-signatures-00</name>

<t><list style="symbols">
  <t>Working group adoption.</t>
</list></t>

</section>
<section anchor="changes-between-draft-gallagher-email-unobtrusive-signatures-01-and-draft-gallagher-email-unobtrusive-signatures-02"><name>Changes Between draft-gallagher-email-unobtrusive-signatures-01 and draft-gallagher-email-unobtrusive-signatures-02</name>

<t><list style="symbols">
  <t>Align IANA registration section with requests from IANA.</t>
  <t>Update references for drafts which are now RFCs.</t>
  <t>Permit multiple OpenPGP signature packets in each <spanx style="verb">Sig</spanx> header,
aligning with OpenPGP "detached signature".</t>
  <t>Clarify signing process.</t>
  <t>Guidance for possible discrepancy between "summary" and "message" views
if headers are not aligned.</t>
</list></t>

</section>
<section anchor="changes-between-draft-gallagher-email-unobtrusive-signatures-00-and-draft-gallagher-email-unobtrusive-signatures-01"><name>Changes Between draft-gallagher-email-unobtrusive-signatures-00 and draft-gallagher-email-unobtrusive-signatures-01</name>

<t><list style="symbols">
  <t>Made explicit that <spanx style="verb">Sig</spanx> <bcp14>MUST NOT</bcp14> appear in a non-leading position.</t>
  <t>Expanded design rationale section.</t>
  <t>Clarified use of Quoted-Printable encoding.</t>
  <t>Terminology and reference cleanup.</t>
</list></t>

</section>
<section anchor="changes-between-draft-gallagher-email-invisible-signatures-00-and-draft-gallagher-email-unobtrusive-signatures-00"><name>Changes Between draft-gallagher-email-invisible-signatures-00 and draft-gallagher-email-unobtrusive-signatures-00</name>

<t><list style="symbols">
  <t>Updated sender canonicalization guidance from <bcp14>MUST</bcp14> to <bcp14>SHOULD</bcp14>.</t>
  <t>Registries changed to SPECIFICATION <bcp14>REQUIRED</bcp14>.</t>
  <t>Improved test vectors.</t>
  <t>Renamed to "Unobtrusive Signatures".</t>
  <t>Explicitly allow folding whitespace.</t>
  <t>Document existing convention re attachment filenames.</t>
  <t>Fixed references.</t>
  <t>Various clarifications to wording.</t>
</list></t>

</section>
</section>
<section removeInRFC="true" anchor="implementation-status"><name>Implementation Status</name>

<t>RFC Editor: When this section is removed before publishing,
please also remove the reference to <xref target="RFC7942"/>.</t>

<t>As recommended in <xref target="RFC7942"/>, this section describes
the status of implementations known to the editors at the time of draft publication.</t>

<t>The description of implementations in this section is intended to assist the IETF
in its decision processes in progressing drafts to RFCs.
Please note that the listing of any individual implementation here
does not imply endorsement by the IETF.
Furthermore, no effort has been spent to verify the information presented here
that was supplied by IETF contributors.
This is not intended as, and must not be construed to be,
a catalog of available implementations or their features.
Readers are advised to note that other implementations may exist.</t>

<section anchor="emacs-mml-mode"><name>emacs mml-mode</name>

<t>The <spanx style="verb">mml</spanx> MUA within <spanx style="verb">emacs</spanx> has a <eref target="https://debbugs.gnu.org/78448">patch set for generating unobtrusive signatures</eref>.
This code is distributed under the General Public License, version 3 or later.</t>

</section>
<section anchor="thunderbird"><name>Thunderbird</name>

<t>The <spanx style="verb">Thunderbird</spanx> MUA has a <eref target="https://bugzilla.mozilla.org/show_bug.cgi?id=1958983">work-in-progress patch set</eref>
for generating and processing unobtrusive signatures.
This code is distributed under the Mozilla Public License, version 2.0
or the General Public License, version 2.</t>

</section>
</section>
<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>The authors would like to thank
the attendees of the 9th OpenPGP Email Summit for feedback and suggestions.
Additionally, Anarcat and Barry Leiba offered useful feedback on the draft.</t>

</section>


  </back>

<!-- ##markdown-source:
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
ABX0TXiFSjBSSB5WhLe4DiN+x/bguyraKmMpEpFJuRgmLj3srkQB90QR0Hxc
k1cN/su4Rr6SUrW5/+U2q38EK+18B6xUHgz/38JK7Nk6TCjTw+NdsDVeUqY7
X6lM85RujjLNuw03INDqj2ClMmIlo5PBSlH9ndGpXyyaVuNs2w7eHYXP77rN
6/n05rnsLjrTymjn9Oxy3vVu4emHoze399vLxvbj7Pp812+vqvV+8OwfvTPt
2dXu/On9pF9/6LTOWkdnJ+5y8nx4ZpffZsbs22kzen7z6WbPP+18mnX723eV
+dNTwz24tJxaa7trn7jQ64eji8Xw5upjrXa2qj2+m1WuZ/S40X5/13w3vT18
/1hrGR8M5+ZpfBfe31rXTycHnfb5UR3ErX6/vTuvjq+Mkb39vNe1t2dHtcNu
7Wg1nB5WGq3tNy7YJrt2cOstTi6q784f28Hw6um+/bhbnsPTl3N7Edgnbx5X
xumZOZ60L/8/t36ZW7/VrXtg5rl1D8x/El4DMR8DNsMN/YI+w6JWVGYTTe4V
R7/EeaN8xvmDJjDMT1i6BuM+XWto0zlYKIPsCcadO3Qah0mDGTC3aZL/VDCn
5q+g2Pcmgmo4jxIbnLYHpkQeIPiyDoy6Gbh+yPjDM/8x1PGipyKV5/Wt3goe
3Zb+vrRXPkprYRh8oh76QRzudVSt7H9B4e5+B4XbP9xgIrEIE3Ttzikg/OcB
ff1LiKHbawLMM/Uzn/I5QX555tpd8RkShiJTgWVkJzzPD3wqrXg78P2ZlGVt
LANUroBMHIgzpfIXZdnuWqfILzBHpXQGqHTarVbDNx7fnfsfWuPF4NLoDOo+
XJt063Vjt1w3Os2nRte4qNmuPZ7YNVQ6nXbTsNvL+jL1WA0eq9ef4TF7sLTt
0z3faMPjrXrz+cg6q3Qm5X4Hnq51duzrweHp+cnunTWcPS5rncfGefV+2T6Z
iJ4u72uG36013ZP75uNTs2tc8zV4OuzWm0+17n2t2zoZnrW7d8v28rFx3+k0
mqun7uNDZdk/vbO7zZPLu5O2ffPQWV12756ubmsN9Py+f1c2Hz7MHqsn8Pdo
3mqeVIanMPypW7a6hn2yLK/a0BA0C/+1K5eNG/PUOIRrdyt4ut1tPV3Cf+3n
u/Llib+8+ti8bBvhqVG5a9bH7ebt3f3dzcfmTds45GtP7ZYYCTxt35cHTycf
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
gEra/wb3EJDokacAAA==

-->

</rfc>

