<?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.7.30 (Ruby 3.4.7) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-macaddress-on-02" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title>Media Access Control (MAC) Addresses in X.509 Certificates</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-macaddress-on-02"/>
    <author initials="R." surname="Housley" fullname="Russ Housley">
      <organization abbrev="Vigil Security">Vigil Security, LLC</organization>
      <address>
        <email>housley@vigilsec.com</email>
      </address>
    </author>
    <author initials="C." surname="Bonnell" fullname="Corey Bonnell">
      <organization abbrev="DigiCert">DigiCert, Inc.</organization>
      <address>
        <email>corey.bonnell@digicert.com</email>
      </address>
    </author>
    <author initials="J." surname="Mandel" fullname="Joe Mandel">
      <organization abbrev="AKAYLA">AKAYLA, Inc.</organization>
      <address>
        <email>joe@akayla.com</email>
      </address>
    </author>
    <author initials="T." surname="Okubo" fullname="Tomofumi Okubo">
      <organization abbrev="Penguin Securities">Penguin Securities Pte. Ltd.</organization>
      <address>
        <email>tomofumi.okubo+ietf@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="January" day="06"/>
    <area>Security</area>
    <workgroup>Limited Additional Mechanisms for PKIX and SMIME</workgroup>
    <keyword>MACsec</keyword>
    <keyword>802.1AE</keyword>
    <keyword>X.509</keyword>
    <keyword>SubjectAltName</keyword>
    <abstract>
      <?line 57?>

<t>This document defines a new otherName for inclusion in the X.509 Subject Alternative Name (SAN) and Issuer Alternative Name (IAN) extensions to carry an IEEE Media Access Control (MAC) address. The new name form makes it possible to bind a layer‑2 interface identifier to a public key certificate. Additionally, this document defines how constraints on this name form can be encoded and processed in the X.509 Name Constraints extension.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://CBonnell.github.io/draft-housley-lamps-macaddress-on/draft-ietf-lamps-macaddress-on.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-lamps-macaddress-on/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Limited Additional Mechanisms for PKIX and SMIME Working Group mailing list (<eref target="mailto:spasm@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/spasm/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/spasm/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/CBonnell/draft-housley-lamps-macaddress-on"/>.</t>
    </note>
  </front>
  <middle>
    <?line 61?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Deployments that use X.509 certificates to identify a device by a Media Access Control (MAC) address need a standard way to encode it in the Subject Alternative Name (SAN) extension defined in <xref target="RFC5280"/>. This document defines a new otherName form "MACAddress". The name form carries either a 48‑bit IEEE 802 MAC address (EUI‑48) or a 64‑bit extended identifier (EUI‑64) in an OCTET STRING. Additionally, the name form also can convey constraints on EUI-48 or EUI-64 values when included in the Name Constraints extension defined in <xref target="RFC5280"/>. The new name form enables certificate‑based authentication at layer 2 and facilitates secure provisioning in Internet‑of‑Things and automotive networks.</t>
    </section>
    <section anchor="conventions-and-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?>

</section>
    <section anchor="macaddress-othername">
      <name>MACAddress otherName</name>
      <t>The new name form is identified by the object identifier (OID) id‑on‑MACAddress (TBD1). The name form has variants to convey a EUI-48 as an OCTET STRING comprising of 6 octets, or a EUI-64 as an OCTET STRING comprising of 8 octets. Constraints on EUI-48 and EUI-64 values are conveyed as OCTET STRINGs whose lengths are twice the octet length of the identifiers. The first set of N octets (where N is the length of the address octets) define the bit pattern of the constraint that the address must match, and the second set of N octets defines the bit mask that defines the set of significant bits in the bit pattern.</t>
      <t>The following sub-sections describe how to encode EUI-48 and EUI-64 values and their corresponding constraints.</t>
      <section anchor="encoding-a-macaddress-as-an-alternative-name">
        <name>Encoding a MACAddress as an alternative name</name>
        <t>When the name form is included in a Subject Alternative Name or Issuer Alternate Name extension, the syntax consists of exactly six or eight octets. Values are encoded with the most significant octet encoded first ("big-endian" or "left-to-right" encoding). No text representation is permitted in the certificate, as human‑readable forms such as "00‑24‑98‑7B‑19‑02" or "0024.987B.1902" are used only in management interfaces. When a device natively possesses a 48‑bit MAC identifier, the CA <bcp14>MUST</bcp14> encode it using a 6‑octet OCTET STRING as the MACAddress value. When the device’s factory identifier is a 64‑bit EUI‑64 or when no canonical 48‑bit form exists, the CA <bcp14>MUST</bcp14> encode it using an 8‑octet OCTET STRING as the MACAddress value.</t>
      </section>
      <section anchor="encoding-a-macaddress-constraint">
        <name>Encoding a MACAddress constraint</name>
        <t>When the name form is included in the Name Constraints extension, the syntax consists of an OCTET STRING that is twice as long as the OCTET STRING representation of the address type being constrained. Within the OCTET STRING, two elements are encoded:</t>
        <ol spacing="normal" type="1"><li>
            <t>The first set of N octets (where N is 6 for an EUI-48 constraint or 8 for an EUI-64 constraint) contains the "value bit pattern". This bit pattern encodes the bits that the masked address must contain to be considered a match.</t>
          </li>
          <li>
            <t>The second set of N octets encodes the "mask bit pattern" of the constraint. Each bit that is asserted in the mask bit pattern indicates that the bit in the same position in the address is constrained by the first set of N octets.</t>
          </li>
        </ol>
        <t>The bit patterns encoded in both the value bit pattern and mask bit pattern are encoded with the most significant bit encoded first ("big-endian" or "left-to-right" encoding).</t>
        <t>If a bit is not asserted in the mask bit pattern, then the CA <bcp14>MUST NOT</bcp14> assert the corresponding bit in the value bit pattern. This rule ensures that a canonical encoding is used for a given mask bit pattern and value bit pattern.</t>
      </section>
      <section anchor="generation-and-validation-rules">
        <name>Generation and Validation Rules</name>
        <t>A certificate <bcp14>MAY</bcp14> include one or more MACAddress otherName values if and only if the subject device owns (or is expected to own) the corresponding MAC address for the certificate lifetime. MAC addresses <bcp14>SHOULD NOT</bcp14> appear in more than one valid certificate issued by the same Certification Authority (CA) at the same time, unless different layer‑2 interfaces share a public key.</t>
        <t>A Relying party that matches a presented MAC address to a certificate <bcp14>SHALL</bcp14> perform a byte‑for‑byte comparison of the OCTET STRING contents. Canonicalization, case folding, or removal of delimiter characters <bcp14>MUST NOT</bcp14> be performed.</t>
        <t>Wildcards are not supported.</t>
        <t>Self‑signed certificates that carry a MACAddress otherName <bcp14>SHOULD</bcp14> include the address of one of the device’s physical ports.</t>
      </section>
      <section anchor="name-constraints-processing">
        <name>Name Constraints Processing</name>
        <t>The MACAddress otherName follows the general rules for otherName constraints in RFC 5280, Section 4.2.1.10. A name constraints extension <bcp14>MAY</bcp14> impose permittedSubtrees and excludedSubtrees on id‑on‑MACAddress.</t>
        <t>In the pseudo-code below, 'mask' is shorthand for the bit string formed from the mask portion of a constraint (e.g., the second set of N octets in the constraint, where N is 6 for an EUI-48 constraint or 8 for an EUI-64 constraint).
Similarly, 'value' refers to the bit string formed from the first set of N octets in the constraint.</t>
        <section anchor="matching-rule">
          <name>Matching Rule</name>
          <t>To determine if a name matches a given constraint, the certificate-consuming application performs the following algorithm:</t>
          <ol spacing="normal" type="1"><li>
              <t>If the name is 6 octets (representing an EUI-48 value) and the constraint is 16 octets (representing an EUI-64 constraint), then the name does not match the constraint.</t>
            </li>
            <li>
              <t>If the name is 8 octets (representing an EUI-64 value) and the constraint is 12 octets (representing an EUI-48 constraint), then the name does not match the constraint.</t>
            </li>
            <li>
              <t>Extract the value bit pattern from the upper (big-endian) N octets of the constraint, where N is "6" for EUI-48 identifiers and "8" for EUI-64 identifiers.</t>
            </li>
            <li>
              <t>Extract the mask bit pattern from the lower (big-endian) N octets of the constraint, where N is "6" for EUI-48 identifiers and "8" for EUI-64 identifiers.</t>
            </li>
            <li>
              <t>Perform an exclusive OR (XOR) operation with the value bit string extracted in step 3 and the octets of the name value.</t>
            </li>
            <li>
              <t>Perform a bitwise AND operation with the bit string calculated in step 5 and the mask bit pattern.</t>
            </li>
            <li>
              <t>If the result of step 6 is a bit string consisting of entirely zeros, then the name matches the constraint. Conversely, if the result of the operation is a bit string with at least one bit asserted, then the name does not match the constraint.</t>
            </li>
          </ol>
          <t>The algorithm can be alternatively expressed as:</t>
          <t><tt>
// Returns true if 'name' matches 'constraint'
boolean nameMatchesConstraint (name, constraint) {
   return (2 * length (name) == length (constraint) &amp;&amp;
           ((constraint.value ^ name) &amp;
            constraint.mask) == 0) ;
}
</tt></t>
          <t>Implementations are not required to implement this algorithm, but <bcp14>MUST</bcp14> calculate an identical result to this algorithm for a given set of inputs.</t>
        </section>
        <section anchor="othernamemacaddress-path-validation-processing">
          <name>OtherName.MACAddress Path Validation Processing</name>
          <t>This section describes the Path Validation Processing specific to OtherName.MACAddress constraints.</t>
          <t>The following is a utility function used to determine whether or not
a given constraint is completely contained within another constraint.</t>
          <artwork><![CDATA[
// Returns true if 'child' is a logical subset of 'parent'
// Both 'child' and 'parent' are OtherName.MACAddress
// constraints.
// Used to calculate both UNION and INTERSECTION sets for
// OtherName.MACAddress constraints.
boolean childIncludedInParent (constraint child, constraint parent)
  return (
     // if the lengths are the same
     child.length == parent.length &&
     // and if there are no bits set in the pst.mask that
     //    aren't also set in the rst.mask
     // e.g. we can add mask bits to the current set, we can't remove them
     (child.mask | parent.mask) == child.mask &&
     // and if the rst.value has at least all the bits set that
     //   were set (and live) in the pst.value
     // e.g. we can't change the values of the live bits from the superior constraint
     (child.value & parent.mask) == (parent.value & parent.mask)
    );
}
]]></artwork>
          <section anchor="initialization">
            <name>Initialization</name>
            <t>Per sections 6.1.1 (h) and (i) of <xref target="RFC5280"/>, we need to specify NameConstraint.MACAddress set values for both the initial-permitted-subtrees and for initial-excluded-subtrees:</t>
            <artwork><![CDATA[
initial-permitted-subtrees{} += { 000000000000000000000000H,
                                  00000000000000000000000000000000H }
initial-excluded-subtrees{} += { };
]]></artwork>
          </section>
          <section anchor="intersection-operation">
            <name>Intersection Operation</name>
            <t>See Section 6.1.4 (g) (1) of <xref target="RFC5280"/>.  The intersection of the set of OtherName.MACAddress current permitted_subtrees with each certificate in the path is as follows:</t>
            <artwork><![CDATA[
// This logic can be used for both MACAddress and iPAddress OtherName types
// Initialize -
permitted_subtrees{} (0) = initial-permitted-subtrees;

// Foreach certificate i = (1..n) in the path {
set prevSubtrees{}  =
   { the set of OtherName.MACAddress.permitted_subtrees
     from the permitted_subtree (i-1) variable};
tempPermittedSubtrees {} = {};
tempRequestedSubtrees {} =
   { the set of OtherName.MACAddress.permitted_subtrees from
     the NameConstraintExtenson in the current certificate };

// rst => one of the requested subtrees (from the cert)
// pst -> one of the current permitted subtrees
foreach ( constraint rst in tempRequestedSubtrees) {
    foreach ( constraint pst in prevSubtrees) {
          if (childIncludedInParent (rst, pst) {
                tempPermitedSubtree += rst;
                break;
          }
     }
 }

permitted_subtrees{} (i) = tempPermittedSubtree;
// } end for each cert on path

]]></artwork>
          </section>
          <section anchor="union-operation">
            <name>Union Operation</name>
            <t>See Section 6.1.4 (g) (2) of <xref target="RFC5280"/>.  The union of the set of OtherName.MACAddress current excluded_subtrees with each certificate in the path is as follows:</t>
            <artwork><![CDATA[
// Initialize
excluded_subtrees{} (0) = initial-excluded-subtrees;

// Foreach certificate i = (1..n) in the path {
tempExcludedSubtrees {} =
  { the set of OtherName.MACAddress.excluded_subtrees from
    excluded_subtrees (i-1) };
tempRequestedSubtrees {} =
  { the set of OtherName.MACAddress.excluded_subtrees from
    the current certificate };

// note that the ordering of the loop here differs
// from the 'intersection' operation.
foreach (constraint rst in tempRequestedSubtrees) {
  boolean matches = false;
  foreach (constraint est in tempExcludedSubtrees) {
      // If I find a constraint in the current excluded
      // constraints that 'covers' the requested subtree,
      // I do no need to add the requested subtree
      // to the set of excluded subtrees.
      if (childIncludedInParent (rst, est)) {
        matches = true;
        break;
     }
   }
   if (!matches) {
      tempExcludedSubtrees += rst;
   }
}
// } end foreach certificate in the path
excluded_subtrees{} (i) = tempExcludedSubtrees;
]]></artwork>
          </section>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The binding of a MAC address to a certificate is only as strong as the CA’s validation process. CAs <bcp14>MUST</bcp14> verify that the subscriber legitimately controls or owns the asserted MAC address.</t>
      <t>Some systems dynamically assign or share MAC addresses. Such practices can undermine the uniqueness and accountability that this name form aims to provide.</t>
      <t>Unlike IP addresses, MAC addresses are not typically routed across layer 3 boundaries. Relying parties in different broadcast domains <bcp14>SHOULD NOT</bcp14> assume uniqueness beyond their local network.</t>
      <section anchor="privacy-considerations">
        <name>Privacy Considerations</name>
        <t>A MAC address can uniquely identify a physical device and by extension, its user. Certificates that embed unchanging MAC addresses facilitate long‑term device tracking. Deployments that use the MACAddress name <bcp14>SHOULD</bcp14> consider rotating addresses, using temporary certificates, or employing MAC Address Randomization where feasible.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to make the following assignments in the “SMI Security for PKIX Module Identifier” (1.3.6.1.5.5.7.0) registry:</t>
      <artwork><![CDATA[
    +=========+====================================+===============+
    | Decimal | Description                        | References    |
    +=========+====================================+===============+
    | TBD0    | id-mod-mac-address-other-name-2025 | This document |
    +---------+------------------------------------+---------------+
]]></artwork>
      <t>IANA is requested to make the following assignment in the “SMI Security for PKIX Other Name Forms” (1.3.6.1.5.5.7.8) registry:</t>
      <artwork><![CDATA[
    +=========+=================================+===============+
    | Decimal | Description                     | References    |
    +=========+=================================+===============+
    | TBD1    | id-on-MACAddress                | This document |
    +---------+---------------------------------+---------------+
]]></artwork>
    </section>
    <section anchor="asn1-module">
      <name>ASN.1 Module</name>
      <t>This Appendix contains the ASN.1 Module for the MAC Address; it follows the conventions established by <xref target="RFC5912"/>.</t>
      <artwork><![CDATA[
MACAddressOtherName-2025
  { iso(1) identified-organization(3) dod(6) internet(1)
    security(5) mechanisms(5) pkix(7) id-mod(0)
    id-mod-mac-address-other-name-2025(TBD0) }

DEFINITIONS IMPLICIT TAGS ::=
BEGIN

IMPORTS
  OTHER-NAME FROM PKIX1Implicit-2009
    { iso(1) identified-organization(3) dod(6) internet(1)
      security(5) mechanisms(5) pkix(7) id-mod(0)
      id-mod-pkix1-implicit-02(59) }

 id-pkix FROM PKIX1Explicit-2009
   { iso(1) identified-organization(3) dod(6) internet(1)
     security(5) mechanisms(5) pkix(7) id-mod(0)
     id-mod-pkix1-explicit-02(51) } ;

-- id-pkix 8 is the otherName arc
id-on  OBJECT IDENTIFIER ::= { id-pkix 8 }

-- OID for this name form
id-on-MACAddress OBJECT IDENTIFIER ::= { id-on TBD1 }

-- Contents of the otherName field
MACAddressOtherNames OTHER-NAME ::= { on-MACAddress, ... }

on-MACAddress OTHER-NAME ::= {
MACAddress IDENTIFIED BY id-on-MACAddress }

MACAddress ::= OCTET STRING (SIZE (6 | 8 | 12 | 16))

END
]]></artwork>
    </section>
    <section anchor="mac-address-othername-examples">
      <name>MAC Address otherName Examples</name>
      <section anchor="eui-48-identifier">
        <name>EUI-48 identifier</name>
        <t>The following is a human‑readable summary of the Subject Alternative
Name extension from a certificate containing a single MACAddress
otherName with value 00‑24‑98‑7B‑19‑02:</t>
        <artwork><![CDATA[
  SEQUENCE {
    otherName [0] {
      OBJECT IDENTIFIER id-on-MACAddress
      [0] OCTET STRING '0024987B1902'H
    }
  }
]]></artwork>
      </section>
      <section anchor="eui-64-identifier">
        <name>EUI-64 identifier</name>
        <t>An EUI‑64 example (AC‑DE‑48‑00‑11‑22‑33‑44):</t>
        <artwork><![CDATA[
  [0] OCTET STRING 'ACDE480011223344'H
]]></artwork>
      </section>
      <section anchor="eui-48-constraint-for-universal-unicast-addresses">
        <name>EUI-48 constraint for universal, unicast addresses</name>
        <t>The first octet of a MAC address contains two flag bits. IEEE bit numbering has bit '0' as the least significant bit of the octet.</t>
        <ul spacing="normal">
          <li>
            <t>I/G bit (bit 0) – 0 = unicast, 1 = multicast.  Multicast prefixes are never OUIs.</t>
          </li>
          <li>
            <t>U/L bit (bit 1) – 0 = universal (IEEE‑assigned), 1 = local.</t>
          </li>
        </ul>
        <t>These flags let the implementations exclude multicast and local addresses but still cannot prove that a 24‑bit value is an IEEE‑registered OUI. 36‑bit CIDs share the same first 24 bits and enterprises <bcp14>MAY</bcp14> deploy pseudo‑OUIs. CAs <bcp14>MUST</bcp14> include only addresses the subscriber legitimately controls (registered OUI or CID).  Before issuing a certificate that contains a MACAddress or a name constraint based on such a permitted set of addresses, the CA <bcp14>MUST</bcp14> verify that control: for example, by consulting the IEEE registry or reviewing manufacturer documentation.</t>
        <t>The following constraint definition constrains EUI-48 values to only
those are universal and unicast; locally assigned or multicast values will not match the
constraint.</t>
        <artwork><![CDATA[
  [0] OCTET STRING '020000000000030000000000'H

]]></artwork>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC5280">
        <front>
          <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
          <author fullname="D. Cooper" initials="D." surname="Cooper"/>
          <author fullname="S. Santesson" initials="S." surname="Santesson"/>
          <author fullname="S. Farrell" initials="S." surname="Farrell"/>
          <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
          <author fullname="R. Housley" initials="R." surname="Housley"/>
          <author fullname="W. Polk" initials="W." surname="Polk"/>
          <date month="May" year="2008"/>
          <abstract>
            <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5280"/>
        <seriesInfo name="DOI" value="10.17487/RFC5280"/>
      </reference>
      <reference anchor="RFC5912">
        <front>
          <title>New ASN.1 Modules for the Public Key Infrastructure Using X.509 (PKIX)</title>
          <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
          <author fullname="J. Schaad" initials="J." surname="Schaad"/>
          <date month="June" year="2010"/>
          <abstract>
            <t>The Public Key Infrastructure using X.509 (PKIX) certificate format, and many associated formats, are expressed using ASN.1. The current ASN.1 modules conform to the 1988 version of ASN.1. This document updates those ASN.1 modules to conform to the 2002 version of ASN.1. There are no bits-on-the-wire changes to any of the formats; this is simply a change to the syntax. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5912"/>
        <seriesInfo name="DOI" value="10.17487/RFC5912"/>
      </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>
    <?line 380?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>We thank the participants on the LAMPS Working Group mailing list for their insightful feedback and comments. In particular, the authors extend sincere appreciation to David von Oheimb, John Mattsson, and Michael StJohns for their reviews and suggestions, which greatly improved the quality of this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
