<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.35 (Ruby 2.6.10) -->
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wells-origin-bound-one-time-codes-00" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title>Origin-Bound One-Time Codes</title>
    <seriesInfo name="Internet-Draft" value="draft-wells-origin-bound-one-time-codes-00"/>
    <author initials="E." surname="Wells" fullname="Eryn Wells">
      <organization>Apple Inc.</organization>
      <address>
        <email>eryn_wells@apple.com</email>
      </address>
    </author>
    <author initials="T." surname="O'Connor" fullname="Theresa O'Connor">
      <organization>Apple Inc.</organization>
      <address>
        <email>hober@apple.com</email>
      </address>
    </author>
    <date year="2023" month="December" day="07"/>
    <area>apps</area>
    <workgroup>Dispatch</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 48?>

<t>This specification defines a mechanism for associating one-time codes with
domains that can be included in the body of an SMS message or the headers of an
email.</t>
    </abstract>
  </front>
  <middle>
    <?line 54?>

<section anchor="intro">
      <name>Introduction</name>
      <t>Many websites use one-time codes to provide an additional layer of security when
users log in with passwords. These one-time codes can be delivered over a
variety of transports, but <xref target="SMS"/> and email are the most common.</t>
      <t>To improve the experience of dealing with these codes, User Agents might attempt
to automatically extract them and present them to the user for filling. Without
a well-defined format for such messages, extraction relies on heuristics, which
are often unreliable and error-prone. Additionally, without a mechanism for
associating such codes with specific domains, users might be tricked into
providing the code to a malicious site.</t>
      <t>This document defines a mechanism for associating one-time codes with origins,
and formats for specifying them in SMS messages and emails. The benefits of this
association are that senders of one-time codes can specify to User Agents which
domains the one-time code is valid for, and User Agents can reliably extract
one-time codes from these messages without relying on heuristics.</t>
      <section anchor="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>For definitions of
<eref target="https://dom.spec.whatwg.org/#document">Document</eref> and
<eref target="https://dom.spec.whatwg.org/#concept-document-origin">Origin</eref>,
see <xref target="DOM"/>.</t>
        <t>For definitions of
<eref target="https://html.spec.whatwg.org/multipage/browsers.html#active-document">Active Document</eref>,
<eref target="https://html.spec.whatwg.org/multipage/browsers.html#browsing-context">Browsing Context</eref>,
<eref target="https://html.spec.whatwg.org/multipage/browsers.html#parent-browsing-context">Parent Browsing Context</eref>,
<eref target="https://html.spec.whatwg.org/multipage/origin.html#same-origin">Same Origin</eref>,
<eref target="https://html.spec.whatwg.org/multipage/origin.html#same-site">Same Site</eref>, and
<eref target="https://html.spec.whatwg.org/multipage/document-sequences.html#top-level-browsing-context">Top-Level Context</eref>,
see <xref target="HTML"/>.</t>
        <t>For definitions of
<eref target="https://infra.spec.whatwg.org/#ascii-whitespace">ASCII Whitespace</eref>,
<eref target="https://infra.spec.whatwg.org/#code-point">Code Point</eref>,
<eref target="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points">Collect a Sequence of Code Points</eref>,
<eref target="https://infra.spec.whatwg.org/#normalize-newlines">Normalize Newlines</eref>,
<eref target="https://infra.spec.whatwg.org/#strictly-split">Strictly Split</eref>, and
<eref target="https://infra.spec.whatwg.org/#tuple">Tuple</eref>,
see <xref target="INFRA"/>.</t>
        <section anchor="algorithms">
          <name>Algorithms</name>
          <t>Many requirements in this document take the form of precise algorithms as is the
norm in <eref target="https://whatwg.org/">WHATWG</eref> (Web Hypertext Application Technology
Working Group) and many <eref target="https://www.w3.org/">W3C</eref> specifications. These
algorithms are expressed per <eref target="https://infra.spec.whatwg.org/#algorithms">the
requirements</eref> in <xref target="INFRA"/>.</t>
          <t>Requirements phrased in the imperative as part of algorithms (such as "strip any
leading space characters" or "return false and abort these steps") are to be
interpreted with the meaning of the key word ("must", "should", "may", etc) used
in introducing the algorithm.</t>
          <t>Conformance requirements phrased as algorithms or specific steps can be
implemented in any manner, so long as the end result is equivalent. In
particular, the algorithms defined in this specification are intended to be easy
to understand and are not intended to be performant. Implementers are encouraged
to optimize.</t>
        </section>
        <section anchor="examples-and-notes">
          <name>Examples and Notes</name>
          <t>Examples are marked at the start of the paragraph in bold with a letter.</t>
          <t><strong>Example Z.</strong> This is the 26th example in this document.</t>
          <t>Notes are marked at the start of the paragraph in bold.</t>
          <t><strong>Note:</strong> This is an informative note.</t>
        </section>
      </section>
    </section>
    <section anchor="obotc">
      <name>Origin-Bound One-Time Codes</name>
      <t>An <strong>origin-bound one-time code</strong> is a <eref target="https://infra.spec.whatwg.org/#tuple">tuple</eref> consisting of a
<strong>top-level origin</strong> (an <eref target="https://dom.spec.whatwg.org/#concept-document-origin">origin</eref>), an <strong>embedded origin</strong> (an <eref target="https://dom.spec.whatwg.org/#concept-document-origin">origin</eref>
or <tt>null</tt>), and a <strong>code</strong> (a string).</t>
      <t><strong>Example A.</strong>
((<tt>"https"</tt>, <tt>"example.com"</tt>, <tt>null</tt>, <tt>null</tt>), <tt>null</tt>, <tt>"747723"</tt>)
is an origin-bound one-time code whose top-level origin is
(<tt>"https"</tt>, <tt>"example.com"</tt>, <tt>null</tt>, <tt>null</tt>),
whose embedded origin is <tt>null</tt>, and whose code is <tt>"747723"</tt>.</t>
      <t><strong>Example B.</strong>
((<tt>"https"</tt>, <tt>"example.com"</tt>, <tt>null</tt>, <tt>null</tt>),
(<tt>"https"</tt>, <tt>"ecommerce.example"</tt>, <tt>null</tt>, <tt>null</tt>), <tt>"747723"</tt>)
is an origin-bound one-time
code whose origin is
(<tt>"https"</tt>, <tt>"example.com"</tt>, <tt>null</tt>, <tt>null</tt>),
whose embedded origin is
(<tt>"https"</tt>, <tt>"ecommerce.example"</tt>, <tt>null</tt>, <tt>null</tt>),
and whose code is <tt>"747723"</tt>.</t>
    </section>
    <section anchor="formats">
      <name>Message Formats</name>
      <section anchor="sms">
        <name>SMS</name>
        <t>An <strong>origin-bound one-time code SMS</strong> is a string for which <xref target="parse-sms">the "parse an
origin-bound one-time code SMS" algorithm</xref> returns an origin-bound
one-time code.</t>
        <t>An origin-bound one-time code SMS <bcp14>MAY</bcp14> begin with human-readable explanatory
text. This consists of all but the last line of the string.</t>
        <t>The last line <bcp14>MUST</bcp14> contain both a top-level host and a code, each prefixed with
a sigil: <tt>U+0040</tt> (<tt>@</tt>) before the top-level host, and <tt>U+0023</tt> (<tt>#</tt>) before the
code.</t>
        <t>Following the code, an embedded host <bcp14>MAY</bcp14> be specified. It is preceeded with a
<tt>U+0040</tt> (<tt>@</tt>) sigil.</t>
        <t>The fields on the last line <bcp14>MUST</bcp14> be separated by a single <tt>U+0020</tt> (<tt>SPACE</tt>).
The order of fields in the last line is always top-level host, code, and
embedded host (if present). Nothing can come before the top-level host in the
last line.</t>
        <t>Trailing text in the last line <bcp14>SHOULD</bcp14> be ignored to preserve the ability for
future documents to introduce new syntax.</t>
        <t><strong>Example C.</strong> In the following origin-bound one-time code SMS, the top-level
host is "<tt>example.com</tt>", the code is "<tt>747723</tt>", no embedded host is specified,
and the explanatory text is "<tt>747723 is your ExampleCo authentication
code.\n\n</tt>".</t>
        <artwork><![CDATA[
747723 is your ExampleCo authentication code.

@example.com #747723
]]></artwork>
        <t><strong>Example D.</strong> In the following origin-bound one-time code SMS, the top-level
host is "<tt>example.com</tt>", the code is "<tt>747723</tt>", the embedded host is
"<tt>ecommerce.example</tt>", and the explanatory text is "<tt>747723 is your ExampleCo
authentication code.\n</tt>".</t>
        <artwork><![CDATA[
747723 is your ExampleCo authentication code.
@example.com #747723 @ecommerce.example
]]></artwork>
        <t><strong>Example E.</strong> The message "<tt>something @example.com #747723</tt>" is not an
origin-bound one-time code SMS because it doesn’t start with the top-level host.</t>
        <t><strong>Example F.</strong> The message "<tt>#747723 @ecommerce.example @example.com</tt>" is not an
origin-bound one-time code SMS because the fields are in the wrong order.</t>
        <t><strong>Example G.</strong> The message "<tt>@example.com code #747723</tt>" is not an origin-bound
one-time code message because several characters appear between the two values
on the last line of the message.</t>
        <t><strong>Example H.</strong> In the following origin-bound one-time code SMS, the top-level
host is "<tt>example.com</tt>", the code is "<tt>747723</tt>", the embedded host is
"<tt>ecommerce.example</tt>", and the explanatory text is "". The trailing text "<tt>
$future</tt>" is ignored.</t>
        <artwork><![CDATA[
@example.com #747723 @ecommerce.example $future
]]></artwork>
        <section anchor="parse-sms">
          <name>Parsing (SMS)</name>
          <t>To <strong>parse an origin-bound one-time code SMS</strong> from <em>message</em>, run these steps:</t>
          <ol spacing="normal" type="1"><li>
              <t>Let <em>line</em> be the <xref target="lastline">last line</xref> of message, and <em>position</em> be 0.</t>
            </li>
            <li>
              <t>If <em>position</em> points past the end of <em>line</em>, return failure.</t>
            </li>
            <li>
              <t>Let <em>top-level host</em> be the result of <xref target="exmarkedtok">extracting a marked token</xref>
from <em>line</em> at position with marker <tt>U+0040</tt> (<tt>@</tt>).</t>
            </li>
            <li>
              <t>If <em>top-level host</em> is failure, return failure.</t>
            </li>
            <li>
              <t>Let <em>top-level origin</em> be the <eref target="https://dom.spec.whatwg.org/#concept-document-origin">origin</eref> (<tt>"https"</tt>, <em>top-level host</em>,
<tt>null</tt>, <tt>null</tt>).</t>
            </li>
            <li>
              <t>If <em>position</em> points past the end of <em>line</em>, return failure.</t>
            </li>
            <li>
              <t>If the <eref target="https://infra.spec.whatwg.org/#code-point">code point</eref> at <em>position</em> within <em>line</em> is not <tt>U+0020</tt>
(<tt>SPACE</tt>), return failure.</t>
            </li>
            <li>
              <t>Advance <em>position</em> by 1.</t>
            </li>
            <li>
              <t>If <em>position</em> points past the end of <em>line</em>, return failure.</t>
            </li>
            <li>
              <t>Let <em>code</em> be the result of <xref target="exmarkedtok">extracting a marked token</xref> from
<em>line</em> at <em>position</em> with marker <tt>U+0023</tt> (<tt>#</tt>).</t>
            </li>
            <li>
              <t>If <em>code</em> is failure, return failure.</t>
            </li>
            <li>
              <t>Let <em>embedded origin</em> be <tt>null</tt>.</t>
            </li>
            <li>
              <t>If <em>position</em> does not point past the end of <em>line</em>, and if the <eref target="https://infra.spec.whatwg.org/#code-point">code point</eref>
at <em>position</em> within <em>line</em> is <tt>U+0020</tt> (<tt>SPACE</tt>), run the following steps:
              </t>
              <ol spacing="normal" type="1"><li>
                  <t>Advance <em>position</em> by 1.</t>
                </li>
                <li>
                  <t>Let <em>embedded host</em> be the result of <xref target="exmarkedtok">extracting a marked token</xref>
from <em>line</em> at <em>position</em> with marker <tt>U+0040</tt> (<tt>@</tt>).</t>
                </li>
                <li>
                  <t>If <em>embedded host</em> is failure, set <em>embedded origin</em> to <tt>null</tt>.
Otherwise, set <em>embedded origin</em> to the <eref target="https://dom.spec.whatwg.org/#concept-document-origin">origin</eref> (<tt>"https"</tt>,
<em>embedded host</em>, <tt>null</tt>, <tt>null</tt>).</t>
                </li>
              </ol>
            </li>
            <li>
              <t>Return the origin-bound one-time code
(<em>top-level origin</em>, <em>embedded origin</em>, <em>code</em>).</t>
            </li>
          </ol>
          <section anchor="exmarkedtok">
            <name>Extracting a Marked Token</name>
            <t>To <strong>extract a marked token</strong> from <em>string</em> at <em>position</em> with <eref target="https://infra.spec.whatwg.org/#code-point">code point</eref>
              <em>marker</em>, run the following steps:</t>
            <ol spacing="normal" type="1"><li>
                <t>If <em>position</em> points past the end of <em>string</em>, return failure.</t>
              </li>
              <li>
                <t>If the <eref target="https://infra.spec.whatwg.org/#code-point">code point</eref> at <em>position</em> within <em>string</em> is not <em>marker</em>, return
failure.</t>
              </li>
              <li>
                <t>Advance <em>position</em> by 1.</t>
              </li>
              <li>
                <t>If <em>position</em> points past the end of <em>string</em>, return failure.</t>
              </li>
              <li>
                <t>Let <em>token</em> be the result of <eref target="https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points">collecting a sequence of code points</eref>
which are not <eref target="https://infra.spec.whatwg.org/#ascii-whitespace">ASCII whitespace</eref> from <em>string</em> with <em>position</em>.</t>
              </li>
              <li>
                <t>If <em>token</em> is the empty string, return failure.</t>
              </li>
              <li>
                <t>Return <em>token</em>.</t>
              </li>
            </ol>
          </section>
          <section anchor="lastline">
            <name>Extracting the Last Line of a String</name>
            <t>The <strong>last line</strong> of <em>string</em> is the result of running these steps:</t>
            <ol spacing="normal" type="1"><li>
                <t><eref target="https://infra.spec.whatwg.org/#normalize-newlines">Normalize newlines</eref> in <em>string</em>.</t>
              </li>
              <li>
                <t>Let <em>lines</em> be the result of <eref target="https://infra.spec.whatwg.org/#strictly-split">strictly splitting</eref> <em>string</em> on <tt>U+000A</tt>
(<tt>LF</tt>).</t>
              </li>
              <li>
                <t>Return the last item of <em>lines</em>.</t>
              </li>
            </ol>
          </section>
        </section>
      </section>
      <section anchor="email">
        <name>Email</name>
        <t>In order to deliver an origin-bound one-time code via email, we define a
<tt>One-Time-Code</tt> message header that contains the one-time code and
origin-binding information about it.</t>
        <t>The information in the body of this header <bcp14>MUST</bcp14> use a DKIM-style tag list as
defined in <xref section="3.2" sectionFormat="of" target="RFC6376"/>. The following tag names are defined:</t>
        <dl>
          <dt><tt>origin</tt></dt>
          <dd>
            <t>The top-level origin the code is bound to</t>
          </dd>
          <dt><tt>code</tt></dt>
          <dd>
            <t>The code itself</t>
          </dd>
          <dt><tt>embedded-origin</tt></dt>
          <dd>
            <t>The embedded origin</t>
          </dd>
        </dl>
        <t>The header body <bcp14>MUST</bcp14> contain exactly one <tt>code</tt> tag. It <bcp14>SHOULD</bcp14> include one
<tt>origin</tt> tag. If the header body contains an <tt>origin</tt> tag, it <bcp14>MAY</bcp14> also include
one <tt>embedded-origin</tt> tag.</t>
        <t>Though it is recommended to always provide origin-binding information along with
one-time codes, senders can affirmatively decline to provide it, while still
including the code to assist User Agents with detecting it, by omitting the
<tt>origin</tt> and <tt>embedded-origin</tt> tags. MUAs <bcp14>MAY</bcp14> choose to ignore the
<tt>One-Time-Code</tt> header if an <tt>origin</tt> tag is not specified.</t>
        <t><strong>Example I.</strong> The following header specifies an origin-bound one-time code
where the code is <tt>"123456"</tt> and the origin is <tt>"example.com"</tt>.</t>
        <artwork><![CDATA[
One-Time-Code: code=123456; origin=example.com
]]></artwork>
        <t><strong>Example J.</strong> The following example is an origin-bound one-time code header
with an origin of "<tt>example.com</tt>", a code of "<tt>123456</tt>", and an embedded domain
of "<tt>ecommerce.example</tt>"</t>
        <artwork><![CDATA[
One-Time-Code: origin=example.com; code=123456;
               embedded-origin=ecommerce.example.com
]]></artwork>
        <t><strong>Example K.</strong> The following example is not a domain-bound one-time code header
because it is missing an <tt>origin</tt> tag.</t>
        <artwork><![CDATA[
One-Time-Code: code=123456;
               embedded-origin=ecommerce.example.com
]]></artwork>
        <t><strong>Example L.</strong> The following header specifies a code, but does not specify
origin-binding information. Therefore, it is not an origin-bound one-time code.</t>
        <artwork><![CDATA[
One-Time-Code: code=123456
]]></artwork>
        <section anchor="parse-email">
          <name>Parsing (Message Header)</name>
          <t>Parsing the body of the <tt>One-Time-Code</tt> header proceeds according to <xref target="RFC6376"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="usage">
      <name>Usage</name>
      <t>Many User Agents help users fill out forms on websites. Sites can use features
like <tt>autocomplete=one-time-code</tt> (<eref target="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-autocomplete-one-time-code">defined in HTML</eref>) to hint to User
Agents that they could assist the user with providing a one-time code to the
website. <xref target="HTML"/></t>
      <t><strong>Note:</strong> This specification does not impose any requirements or restrictions on
the use of one-time codes which are not origin-bound one-time codes.</t>
      <t>User Agents <strong>determine whether or not to assist the user by providing an
origin-bound one-time code to a website</strong> with origin-bound one-time code <em>otc</em>
and <eref target="https://dom.spec.whatwg.org/#document">Document</eref> <em>doc</em> by running these steps:</t>
      <ol spacing="normal" type="1"><li>
          <t>If <em>doc</em> is not the <eref target="https://html.spec.whatwg.org/multipage/browsers.html#active-document">active document</eref> of a <eref target="https://html.spec.whatwg.org/multipage/browsers.html#browsing-context">browsing context</eref>, return
failure.</t>
        </li>
        <li>
          <t>Let <em>context</em> be <em>doc</em>’s <eref target="https://html.spec.whatwg.org/multipage/browsers.html#browsing-context">browsing context</eref>.</t>
        </li>
        <li>
          <t>If <em>context</em> is a <eref target="https://html.spec.whatwg.org/multipage/document-sequences.html#top-level-browsing-context">top-level browsing context</eref>, run these steps:
          </t>
          <ol spacing="normal" type="1"><li>
              <t>If <em>otc</em>’s embedded origin is not <tt>null</tt>, return failure.</t>
            </li>
            <li>
              <t>If <em>otc</em>’s top-level origin is <eref target="https://html.spec.whatwg.org/multipage/origin.html#same-origin">same origin</eref> with <em>doc</em>’s
<eref target="https://dom.spec.whatwg.org/#concept-document-origin">origin</eref>, return <tt>"origin"</tt>.</t>
            </li>
            <li>
              <t>If <em>otc</em>’s top-level origin is <eref target="https://html.spec.whatwg.org/multipage/origin.html#same-site">same site</eref> with <em>doc</em>’s
<eref target="https://dom.spec.whatwg.org/#concept-document-origin">origin</eref>, return <tt>"site"</tt>.</t>
            </li>
            <li>
              <t>Return failure.</t>
            </li>
          </ol>
        </li>
        <li>
          <t>If <em>otc</em>’s embedded origin is <tt>null</tt>, return failure.</t>
        </li>
        <li>
          <t>Let <em>match type</em> be <tt>"origin"</tt>.</t>
        </li>
        <li>
          <t>If <em>otc</em>’s embedded origin is not <eref target="https://html.spec.whatwg.org/multipage/origin.html#same-origin">same origin</eref> with <em>doc</em>’s
<eref target="https://dom.spec.whatwg.org/#concept-document-origin">origin</eref>, set <em>match type</em> to <tt>"site"</tt>.</t>
        </li>
        <li>
          <t>If <em>otc</em>’s embedded origin is not <eref target="https://html.spec.whatwg.org/multipage/origin.html#same-site">same site</eref> with <em>doc</em>’s <eref target="https://dom.spec.whatwg.org/#concept-document-origin">origin</eref>,
return failure.</t>
        </li>
        <li>
          <t>Set <em>context</em> to its <eref target="https://html.spec.whatwg.org/multipage/browsers.html#parent-browsing-context">parent browsing context</eref>.</t>
        </li>
        <li>
          <t>While <em>context</em> is not a <eref target="https://html.spec.whatwg.org/multipage/document-sequences.html#top-level-browsing-context">top-level browsing context</eref>, run these steps:
          </t>
          <ol spacing="normal" type="1"><li>
              <t>If <em>context</em>’s active document's <eref target="https://dom.spec.whatwg.org/#concept-document-origin">origin</eref> is <eref target="https://html.spec.whatwg.org/multipage/origin.html#same-origin">same origin</eref> with
neither <em>otc</em>’s embedded origin nor <em>otc</em>’s top-level origin, set <tt>match
type</tt> to <tt>"site"</tt>.</t>
            </li>
            <li>
              <t>If <em>context</em>’s active document's <eref target="https://dom.spec.whatwg.org/#concept-document-origin">origin</eref> is <eref target="https://html.spec.whatwg.org/multipage/origin.html#same-site">same site</eref> with
neither <em>otc</em>’s embedded origin nor <em>otc</em>’s top-level origin, return
failure.</t>
            </li>
            <li>
              <t>Set <em>context</em> to its <eref target="https://html.spec.whatwg.org/multipage/browsers.html#parent-browsing-context">parent browsing context</eref>.</t>
            </li>
          </ol>
        </li>
        <li>
          <t>If <em>context</em> is not a <eref target="https://html.spec.whatwg.org/multipage/document-sequences.html#top-level-browsing-context">top-level browsing context</eref>, return failure.</t>
        </li>
        <li>
          <t>If <em>context</em>'s <eref target="https://html.spec.whatwg.org/multipage/browsers.html#active-document">active document</eref>'s <eref target="https://dom.spec.whatwg.org/#concept-document-origin">origin</eref> is <eref target="https://html.spec.whatwg.org/multipage/origin.html#same-origin">same origin</eref>
with <em>otc</em>'s top-level origin, return <em>match type</em>.</t>
        </li>
        <li>
          <t>If <em>context</em>’s active document's <eref target="https://dom.spec.whatwg.org/#concept-document-origin">origin</eref> is <eref target="https://html.spec.whatwg.org/multipage/origin.html#same-site">same site</eref> with
<em>otc</em>’s top-level origin, return <tt>"site"</tt>.</t>
        </li>
        <li>
          <t>Return failure.</t>
        </li>
      </ol>
      <t>If the above steps returned <tt>"origin"</tt> or <tt>"site"</tt>, the User Agent <bcp14>MAY</bcp14> assist
the user with providing the origin-bound one-time code's code to the website.</t>
      <t>If the above steps returned <tt>"site"</tt>, the User Agent <bcp14>SHOULD</bcp14> indicate the
origin-bound one-time code's top-level and embedded origins to the user when
assisting them.</t>
      <t>If the above steps returned failure, the User Agent <bcp14>SHOULD NOT</bcp14> assist the user
with providing the origin-bound one-time code's code to the website.</t>
      <t><strong>Note:</strong> because the schemes of an origin-bound one-time code's top-level and
embedded origins are always <tt>"https"</tt>, assisting the user with providing
origin-bound one-time codes is only available in secure contexts.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>Per <xref target="BCP90"/>, the following provisional message header field
will be submitted to the <eref target="https://www.iana.org/assignments/message-headers/message-headers.xhtml">IANA Message Headers registry</eref>:</t>
      <dl>
        <dt>Header field name:</dt>
        <dd>
          <t><tt>One-Time-Code</tt></t>
        </dd>
        <dt>Applicable protocol:</dt>
        <dd>
          <t><tt>mail</tt></t>
        </dd>
        <dt>Status:</dt>
        <dd>
          <t><tt>provisional</tt></t>
        </dd>
        <dt>Author/Change controller:</dt>
        <dd>
          <t>TBD (the working group that takes this up)</t>
        </dd>
        <dt>Specification document(s):</dt>
        <dd>
          <t>This document.</t>
        </dd>
        <dt>Related information:</dt>
        <dd>
          <t>None.</t>
        </dd>
      </dl>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>This document attempts to mitigate the phishing risk associated with the
delivery of one-time codes over SMS and email by enabling User Agents to know
what website the one-time code is intended for.</t>
      <t>This document does not attempt to mitigate other risks associated with the
delivery of one-time codes over SMS or email. Interception of messages by
untrusted parties, and account cloning and takeover attacks are still possible
even with domain-binding information.</t>
      <t>Sites would do well to consider using authentication technologies such as
<xref target="WEBAUTHN"/> for authentication or verification.</t>
    </section>
    <section anchor="privacy">
      <name>Privacy Considerations</name>
      <t>Any party which has access to a user’s SMS or email messages (such as the user’s
cellular carrier, mobile operating system, or anyone who intercepted the
message) can learn that the user has an account on the service identified in an
origin-bound one-time code message delivered over these transport mechanisms.</t>
      <t>On some platforms, User Agents might need access to all incoming SMS and email
messages---even messages which are not origin-bound one-time code messages---in
order to support the autofilling of origin-bound one-time codes delivered over
SMS or email in origin-bound one-time code messages.</t>
    </section>
    <section anchor="implementations">
      <name>Implementation Status</name>
      <t>Apple and Google ship implementations of the domain-bound one-time code parser
for SMS messages.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <referencegroup anchor="BCP90">
          <reference anchor="RFC3864" target="https://www.rfc-editor.org/info/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>
        </referencegroup>
        <reference anchor="DOM" target="https://www.w3.org/TR/dom/">
          <front>
            <title>DOM</title>
            <author/>
          </front>
          <seriesInfo name="W3C REC" value="dom"/>
          <seriesInfo name="W3C" value="dom"/>
        </reference>
        <reference anchor="HTML" target="https://www.w3.org/TR/html/">
          <front>
            <title>HTML</title>
            <author/>
          </front>
          <seriesInfo name="W3C REC" value="html"/>
          <seriesInfo name="W3C" value="html"/>
        </reference>
        <reference anchor="INFRA" target="https://infra.spec.whatwg.org/">
          <front>
            <title>Infra Standard</title>
            <author initials="A." surname="van Kesteren" fullname="Anne van Kesteren">
              <organization>Apple</organization>
            </author>
            <author initials="D." surname="Denicola" fullname="Domenic Denicola">
              <organization>Google</organization>
            </author>
            <date year="2023" month="June" day="27"/>
          </front>
          <annotation>Living Standard.</annotation>
        </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="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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="SMS" target="http://www.3gpp.org/ftp/Specs/archive/23_series/23.040/23040-3b0.zip">
          <front>
            <title>Technical realization of the Short Message Service (SMS)</title>
            <author>
              <organization abbrev="3GPP">3rd Generation Partnership Project</organization>
              <address>
                <postal>
                  <country>France</country>
                  <city>Sophia Antipolis Cedex</city>
                </postal>
              </address>
            </author>
            <author fullname="NASSAR, Mohamed Amin">
              <organization>Nokia Germany</organization>
            </author>
            <date day="6" month="June" year="2008"/>
            <abstract>
              <t>This specification describes the point-to-point SMS.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="WEBAUTHN" target="https://www.w3.org/TR/webauthn-1/">
          <front>
            <title>Web Authentication:An API for accessing Public Key Credentials Level 1</title>
            <author/>
          </front>
          <seriesInfo name="W3C REC" value="webauthn-1"/>
          <seriesInfo name="W3C" value="webauthn-1"/>
        </reference>
      </references>
    </references>
    <?line 484?>

<section numbered="false" anchor="acks">
      <name>Acknowledgments</name>
      <t>Many thanks to
Aaron Parecki,
Arielle Davenport,
Ashley Clark,
Elaine Knight,
Eric Shepherd,
Irene Valdes Salazar,
Jay Mulani,
Phillip Tao,
Ricky Mondello, and
Steven Soneff
for their valuable feedback on this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
+8R/jeZ/AZuTBYuxSAAA

-->

</rfc>
