<?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.36 (Ruby 3.4.9) -->
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-cel-nfsv4-rpc-tls-othername-03" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="SunRPC x.509 Identity Squashing">Remote Procedure Call Identity Squashing via x.509 Certificate Fields</title>
    <seriesInfo name="Internet-Draft" value="draft-cel-nfsv4-rpc-tls-othername-03"/>
    <author fullname="Rick Macklem">
      <organization abbrev="FreeBSD">FreeBSD Project</organization>
      <address>
        <postal>
          <country>Canada</country>
        </postal>
        <email>rmacklem@uoguelph.ca</email>
      </address>
    </author>
    <author fullname="Chuck Lever" role="editor">
      <organization/>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>cel-ietf@chucklever.net</email>
      </address>
    </author>
    <date year="2026" month="May" day="15"/>
    <area>Web and Internet Transport</area>
    <workgroup>Network File System Version 4</workgroup>
    <keyword>x.509</keyword>
    <keyword>SubjectAltName</keyword>
    <keyword>otherName</keyword>
    <keyword>NFS</keyword>
    <keyword>SunRPC</keyword>
    <abstract>
      <?line 43?>

<t>This document extends RPC-with-TLS so that a client's x.509
certificate may carry instructions to the RPC server to execute all
RPC transactions from that client as a single user identity.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://chucklever.github.io/i-d-rpc-tls-othername/#go.draft-cel-nfsv4-rpc-tls-othername.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-cel-nfsv4-rpc-tls-othername/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        nfsv4 Working Group mailing list (<eref target="mailto:nfsv4@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/nfsv4/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/nfsv4/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/chucklever/i-d-rpc-tls-othername"/>.</t>
    </note>
  </front>
  <middle>
    <?line 49?>

<section anchor="introduction">
      <name>Introduction</name>
      <section anchor="background">
        <name>Background</name>
        <t>The Remote Procedure Call version 2 protocol (RPC, for short) has been
a Proposed Standard for three decades (see <xref target="RFC5531"/> and its
antecedents).
Upper layer protocols such as the Network File System family
(<xref target="RFC8881"/>) are based on RPC.</t>
        <t>In 2022, the IETF published <xref target="RFC9289"/>, which specifies a mechanism
by which RPC transactions can be cryptographically protected during
transit. RFC 9289 provides confidentiality and integrity of RPC
traffic and authenticates the communicating peers.</t>
      </section>
      <section anchor="problem-statement">
        <name>Problem Statement</name>
        <t><xref section="4.2" sectionFormat="of" target="RFC9289"/> states that:</t>
        <ul empty="true">
          <li>
            <t>RPC user authentication is not affected by
the use of transport layer security.  When a client presents a TLS
peer identity to an RPC server, the protocol extension described in
the current document provides no way for the server to know whether
that identity represents one RPC user on that client or is shared
amongst many RPC users.  Therefore, a server implementation cannot
utilize the remote TLS peer identity to authenticate RPC users.</t>
          </li>
        </ul>
        <t>Mobile devices such as laptops are typically used by a single user and
do not have a fixed, well-known IP address or fully qualified DNS name.
Without either, the server has fewer verification checks available on
the client's X.509 certificate.  This extension allows a server to
restrict access from such a client to a single user identity, limiting
exposure if that certificate is compromised.</t>
        <t>When a service runs in a dedicated VM or container, it often runs as
a single assigned user identity. Kerberos is poorly suited here:
TGTs expire in hours, yet the service may run for much longer. This
extension lets the client convey that identity in the certificate,
which does not expire on the same short cycle as a TGT.</t>
        <t>When an RPC server replaces incoming RPC user identities with a single
user identity, for brevity we refer to this as "identity squashing".</t>
      </section>
      <section anchor="summary-of-proposed-solution">
        <name>Summary of Proposed Solution</name>
        <t>To enable interoperable implementations of RPC identity squashing,
this document specifies the use of the x.509 SubjectAltName otherName
field to carry an RPC user identity.  The document defines an object
identifier for the otherName "type-id" field, the corresponding
"value" field format, and normative guidance on how RPC servers
interpret that value.</t>
      </section>
    </section>
    <section anchor="requirements-language">
      <name>Requirements Language</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="x509-certificate-subjectaltname-field">
      <name>x.509 Certificate SubjectAltName Field</name>
      <t>As specified in <xref section="4.2.1.6" sectionFormat="of" target="RFC5280"/>:</t>
      <ul empty="true">
        <li>
          <t>The subjectAltName <bcp14>MAY</bcp14> carry additional name types through the use of
the otherName field.  The format and semantics of the name are
indicated through the OBJECT IDENTIFIER in the type-id field.  The
name itself is conveyed as value field in otherName.</t>
        </li>
      </ul>
      <t>A SubjectAltName extension <bcp14>MAY</bcp14> contain multiple entries of different types
(e.g., dNSName, iPAddress, otherName). When processing a certificate for
identity squashing purposes, the server examines only the otherName entries
with type-id values defined in this document. Other SubjectAltName entries
are used for their normal purposes (such as hostname verification for TLS).</t>
      <t>This document specifies new uses of the otherName field to carry an
RPC user identity. The receiving system (an RPC server) then
replaces the RPC user, as carried in the RPC header credential and
verifier fields in each RPC request within the TLS session, with the
user identity specified in the certificate used to authenticate that
session.</t>
      <section anchor="server-processing-of-othername-fields">
        <name>Server Processing of otherName Fields</name>
        <t>When an RPC server receives a client certificate containing a
SubjectAltName extension, it <bcp14>MUST</bcp14> process the otherName fields as
follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>The server <bcp14>MUST</bcp14> examine all otherName entries in the SubjectAltName
extension.</t>
          </li>
          <li>
            <t>If the server finds an otherName with a type-id that matches one of
the identity squashing OIDs defined in this document (id-on-rpcAuthSys,
id-on-gssExportedName, or id-on-nfsv4Principal), it <bcp14>MUST</bcp14> extract
and validate the identity information from that otherName.</t>
          </li>
          <li>
            <t>If multiple identity squashing otherName fields are present in the
same SubjectAltName extension, the server <bcp14>MUST</bcp14> reject the certificate
to avoid ambiguity. See <xref target="sec-security-considerations"/> for details.</t>
          </li>
          <li>
            <t>If the server encounters otherName entries with type-id values it does
not recognize, it <bcp14>MUST</bcp14> ignore those entries and continue processing.</t>
          </li>
          <li>
            <t>Other types of SubjectAltName entries (dNSName, iPAddress, etc.) are
processed independently and do not affect identity squashing behavior.</t>
          </li>
        </ol>
        <t>The server performs identity squashing only if it successfully validates
an identity squashing otherName field and authorizes its use for the
authenticated TLS peer.</t>
      </section>
      <section anchor="server-processing">
        <name>Server Processing</name>
        <t>This section provides a non-normative example of how an RPC server
implementation might process identity squashing otherName fields.
Implementers are free to use alternative approaches.</t>
        <t>A typical server processing flow might include these steps:</t>
        <ol spacing="normal" type="1"><li>
            <t>During TLS session establishment, extract and validate the client's
X.509 certificate according to <xref target="RFC5280"/> and <xref target="RFC9289"/>.</t>
          </li>
          <li>
            <t>If the certificate contains a SubjectAltName extension, examine each
otherName entry to determine if any contain identity squashing type-id
values (id-on-rpcAuthSys, id-on-gssExportedName, or id-on-nfsv4Principal).</t>
          </li>
          <li>
            <t>If exactly one identity squashing otherName is found, extract and parse
the identity information according to the ASN.1 definition for that type-id.
If parsing fails, reject the certificate.</t>
          </li>
          <li>
            <t>Perform authorization checks to determine whether the authenticated TLS
peer is permitted to use the specified identity. This might involve:
            </t>
            <ul spacing="normal">
              <li>
                <t>Consulting an access control list mapping certificate subjects to
allowed user identities</t>
              </li>
              <li>
                <t>Verifying that the requested UID/GID values are within acceptable ranges</t>
              </li>
              <li>
                <t>Validating that the user@domain string matches expected domain patterns</t>
              </li>
              <li>
                <t>Checking that the GSS-API mechanism is trusted and the principal is
authorized</t>
              </li>
            </ul>
          </li>
          <li>
            <t>If authorization succeeds, associate the extracted identity with the TLS
session state.</t>
          </li>
          <li>
            <t>For each incoming RPC request on this TLS session, replace the credential
information in the RPC header with the identity extracted from the certificate.
The original credential information in the RPC header is ignored.</t>
          </li>
          <li>
            <t>Process the RPC request using the squashed identity for all authorization
and access control decisions.</t>
          </li>
        </ol>
        <t>Parsing and validating the certificate once at TLS session establishment
and caching the result avoids per-request overhead.</t>
      </section>
      <section anchor="interoperability-with-non-supporting-servers">
        <name>Interoperability with Non-Supporting Servers</name>
        <t>RPC servers that do not implement this specification will not recognize
the otherName OIDs defined in this document. Such servers <bcp14>MUST</bcp14> ignore
unrecognized otherName entries per <xref section="4.2.1.6" sectionFormat="of" target="RFC5280"/>.
These servers will process RPC requests using the credential information
contained in the RPC header, subject to their normal authentication and
authorization policies.</t>
      </section>
      <section anchor="authsys-identities">
        <name>AUTH_SYS Identities</name>
        <section anchor="othername-oid-for-authsys">
          <name>otherName OID for AUTH_SYS</name>
          <t>The otherName OID for AUTH_SYS identities is id-on-rpcAuthSys,
defined in <xref target="sec-asn1"/>.</t>
        </section>
        <section anchor="format-of-the-othername-value">
          <name>Format of the otherName Value</name>
          <t>The otherName value for AUTH_SYS identities contains an RPCAuthSys
structure as defined in <xref target="sec-asn1"/>. This structure consists
of a 32-bit unsigned integer specifying a numeric UID, and a sequence
of 32-bit unsigned integers specifying numeric GIDs.</t>
          <t>The use of these integers is further explained in <xref target="RFC5531"/>.</t>
        </section>
      </section>
      <section anchor="gss-api-principals">
        <name>GSS-API Principals</name>
        <section anchor="othername-oid-for-gss-api-principals">
          <name>otherName OID for GSS-API Principals</name>
          <t>The otherName OID for GSS-API exported names is id-on-gssExportedName,
defined in <xref target="sec-asn1"/>.</t>
        </section>
        <section anchor="format-of-the-othername-value-1">
          <name>Format of the otherName Value</name>
          <t>The otherName value contains a GSSExportedName structure as defined in
<xref target="sec-asn1"/>, consisting of a GSS-API mechanism OID and a
mechanism-specific exported name value as described in <xref section="3.2" sectionFormat="of" target="RFC2743"/>.</t>
        </section>
      </section>
      <section anchor="nfsv4-user-domain-string-identities">
        <name>NFSv4 User @ Domain String Identities</name>
        <section anchor="othername-oid-for-string-identities">
          <name>otherName OID for String Identities</name>
          <t>The otherName OID for NFSv4 user@domain principals is id-on-nfsv4Principal,
defined in <xref target="sec-asn1"/>.</t>
        </section>
        <section anchor="format-of-the-othername-value-2">
          <name>Format of the otherName Value</name>
          <t>The otherName value contains an NFSv4Principal structure as defined in
<xref target="sec-asn1"/>, consisting of a UTF-8 encoded user name, the
literal "@" character, and a UTF-8 encoded domain name, as described in
<xref section="5.9" sectionFormat="of" target="RFC8881"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="extending-this-mechanism">
      <name>Extending This Mechanism</name>
      <t>It is possible that in the future, RPC servers might implement other forms
of RPC user identity, such as Windows Security Identifiers.
This section describes how standards action can extend the mechanism
specified in this document to accommodate new forms of user identity.</t>
      <t>Documents that extend this mechanism using Standards Action <bcp14>MUST</bcp14> satisfy
the following requirements:</t>
      <ul spacing="normal">
        <li>
          <t>New identity types <bcp14>MUST</bcp14> define an ASN.1 module.</t>
        </li>
        <li>
          <t>New identity types <bcp14>MUST</bcp14> request an IANA OID allocation.</t>
        </li>
        <li>
          <t>New identity types <bcp14>SHOULD</bcp14> provide security considerations specific to that identity type.</t>
        </li>
        <li>
          <t>New identity types <bcp14>SHOULD</bcp14> provide examples and test vectors.</t>
        </li>
      </ul>
    </section>
    <section anchor="client-certificate-generation">
      <name>Client Certificate Generation</name>
      <t>This section provides non-normative guidance for Certificate Authorities
and administrators who generate client certificates containing identity
squashing otherName fields.</t>
      <section anchor="choosing-an-identity-format">
        <name>Choosing an Identity Format</name>
        <t>The choice of which identity format to use depends on the deployment
environment:</t>
        <dl>
          <dt>RPCAuthSys</dt>
          <dd>
            <t>Appropriate for environments where numeric UIDs and GIDs are the primary
form of user identity, such as traditional UNIX/Linux systems. This format
is compact but requires that UID/GID mappings be consistent between the
certificate and the server's user database.</t>
          </dd>
          <dt>GSSExportedName</dt>
          <dd>
            <t>Suitable for environments using GSS-API mechanisms like Kerberos. This
format fits naturally into existing GSS-API deployments but requires
that servers support the specific mechanism indicated by the nameType OID.</t>
          </dd>
          <dt>NFSv4Principal</dt>
          <dd>
            <t>Recommended for heterogeneous environments or when human-readable
identities are preferred. The user@domain format is familiar to
administrators and supports internationalization, but requires that
servers perform name-to-UID mapping similar to NFSv4 identity mapping.</t>
          </dd>
        </dl>
      </section>
      <section anchor="populating-identity-fields">
        <name>Populating Identity Fields</name>
        <t>When generating certificates, consider these guidelines:</t>
        <dl>
          <dt>UID/GID values</dt>
          <dd>
            <t>Ensure that the numeric values in RPCAuthSys correspond to valid entries
in the server's user database. Avoid using privileged UIDs (such as 0 for
root) unless there is a specific operational requirement and strong
authorization controls are in place.</t>
          </dd>
          <dt>GSS-API exported names</dt>
          <dd>
            <t>The nameValue field should contain a properly formatted exported name
token as defined by the specific GSS-API mechanism. For Kerberos, this
follows the format specified in <xref target="RFC4121"/>. Consult the mechanism
specification for proper encoding.</t>
          </dd>
          <dt>User@domain strings</dt>
          <dd>
            <t>Both the user and domain components should be UTF-8 encoded. Domain names
should typically match the DNS domain under which the server operates.
International domain names should be encoded in UTF-8, not in Punycode
(ACE) form.</t>
          </dd>
        </dl>
      </section>
      <section anchor="certificate-validity-period">
        <name>Certificate Validity Period</name>
        <t>Certificates containing identity squashing otherName fields grant access
to server resources under a specific user identity. Administrators should
consider appropriate validity periods based on their security requirements.
Shorter validity periods reduce the window of exposure if a certificate is
compromised, but may increase operational overhead for certificate renewal.</t>
        <t>Administrators should also factor in how quickly certificate revocation
(CRL or OCSP) propagates in their environment, since that affects how
long a compromised certificate remains usable after revocation.</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <aside>
        <t>RFC Editor: This section is to be removed before publishing this document as an RFC.</t>
      </aside>
      <t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting of this
Internet-Draft, and is based on a proposal described in
<xref target="RFC7942"/>. The description of implementations in this section is
intended to assist the IETF in its decision processes in progressing
drafts to RFCs.</t>
      <t>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="freebsd-nfs-server-and-client">
        <name>FreeBSD NFS Server and Client</name>
        <dl>
          <dt>Organization:</dt>
          <dd>
            <t>FreeBSD</t>
          </dd>
          <dt>URL:</dt>
          <dd>
            <t><eref target="https://www.freebsd.org">https://www.freebsd.org</eref></t>
          </dd>
          <dt>Maturity:</dt>
          <dd>
            <t>Complete.</t>
          </dd>
          <dt>Coverage:</dt>
          <dd>
            <t>The mechanism to represent user@domain strings has been implemented
using an OID from the FreeBSD arc.</t>
          </dd>
          <dt>Licensing:</dt>
          <dd>
            <t>BSD 3-clause</t>
          </dd>
          <dt>Implementation experience:</dt>
          <dd>
            <t>None to report</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="sec-security-considerations">
      <name>Security Considerations</name>
      <section anchor="general-security-considerations">
        <name>General Security Considerations</name>
        <t>The security considerations in <xref section="8" sectionFormat="of" target="RFC9289"/> apply to this
specification, including the discussion of certificate validation, trust
anchors, and TLS session establishment.</t>
      </section>
      <section anchor="identity-squashing-and-authorization">
        <name>Identity Squashing and Authorization</name>
        <t>This specification enables a client to request that all RPC operations within a
TLS session be executed under a single user identity specified in the client's
X.509 certificate. This "identity squashing" mechanism has several security
implications:</t>
        <section anchor="trust-in-the-certificate-authority">
          <name>Trust in the Certificate Authority</name>
          <t>Servers <bcp14>MUST</bcp14> limit which Certificate Authorities (CAs) they trust to
issue certificates carrying the otherName extensions defined in this
document.  A compromised or malicious CA could issue certificates that
grant access to server resources under arbitrary user identities.</t>
          <t>Servers <bcp14>SHOULD</bcp14> maintain separate trust anchors for identity squashing
certificates and certificates used solely for TLS peer authentication,
giving administrators direct control over which CAs may assert user
identities.</t>
        </section>
        <section anchor="authorization-decisions">
          <name>Authorization Decisions</name>
          <t>The presence of an otherName field specifying a user identity does not by itself
grant any authorization. Servers <bcp14>MUST</bcp14> perform their normal authorization checks
to determine whether the requested identity is permitted for the authenticated
TLS peer.</t>
          <t>For example, a server might maintain an access control list mapping certificate
subjects or distinguished names to the set of user identities they are permitted
to assume. Only if such authorization succeeds should the server execute RPC
operations under the specified identity.</t>
        </section>
        <section anchor="name-canonicalization">
          <name>Name Canonicalization</name>
          <section anchor="nfsv4-principals">
            <name>NFSv4 Principals</name>
            <t>When processing NFSv4Principal otherName values, servers <bcp14>MUST</bcp14> apply the same
name canonicalization and domain validation procedures described in
<xref section="5.9" sectionFormat="of" target="RFC8881"/>. In particular:</t>
            <ul spacing="normal">
              <li>
                <t>Domain names <bcp14>SHOULD</bcp14> be validated against expected domain suffixes</t>
              </li>
              <li>
                <t>Internationalized domain names <bcp14>MUST</bcp14> be properly normalized</t>
              </li>
              <li>
                <t>Case-sensitivity rules for usernames and domains <bcp14>MUST</bcp14> be consistently applied</t>
              </li>
            </ul>
          </section>
          <section anchor="gss-api-exported-names">
            <name>GSS-API Exported Names</name>
            <t>When processing GSSExportedName otherName values, servers <bcp14>MUST</bcp14> verify that:</t>
            <ul spacing="normal">
              <li>
                <t>The mechanism OID in the nameType field corresponds to a GSS-API mechanism
the server supports and trusts</t>
              </li>
              <li>
                <t>The nameValue field conforms to the exported name format defined by that
specific GSS-API mechanism</t>
              </li>
              <li>
                <t>The mechanism-specific name validation and canonicalization procedures are
followed</t>
              </li>
            </ul>
            <t>Servers <bcp14>SHOULD NOT</bcp14> accept exported names from GSS-API mechanisms they do not
fully support, as improper name handling could lead to authorization bypass
vulnerabilities.</t>
          </section>
          <section anchor="authsys-credentials">
            <name>AUTH_SYS Credentials</name>
            <t>When processing RPCAuthSys otherName values, servers <bcp14>MUST</bcp14>:</t>
            <ul spacing="normal">
              <li>
                <t>Validate that the UID and GIDs fall within acceptable ranges for the local
system's user database</t>
              </li>
              <li>
                <t>Verify that the UID corresponds to a valid user account</t>
              </li>
              <li>
                <t>Confirm that the GIDs represent valid groups and that the user is authorized
to be a member of those groups</t>
              </li>
            </ul>
            <t>Servers <bcp14>SHOULD</bcp14> reject certificates containing UID 0 (root) or other privileged
UIDs unless there is an explicit and well-justified operational requirement,
and additional strong authorization controls are in place.</t>
          </section>
        </section>
      </section>
      <section anchor="session-binding">
        <name>Session Binding</name>
        <t>All RPC operations within a TLS session containing an identity squashing otherName
execute under the same user identity. Servers <bcp14>MUST</bcp14> ensure that session state
cannot be hijacked or transferred between different TLS sessions, as this could
allow an attacker to gain the privileges associated with the squashed identity.</t>
      </section>
      <section anchor="revocation">
        <name>Revocation</name>
        <t>Servers <bcp14>SHOULD</bcp14> support certificate revocation checking (via CRL, OCSP, or similar
mechanisms) for certificates containing identity squashing otherName fields.
Since these certificates grant user-level access to server resources, timely
revocation is critical when a certificate is compromised or a user's access
should be terminated.</t>
      </section>
      <section anchor="privacy-considerations">
        <name>Privacy Considerations</name>
        <t>The otherName fields defined in this specification reveal user identity information
in the client's X.509 certificate. This information is transmitted during the TLS
handshake and may be visible to network observers if the handshake is not properly
protected.</t>
        <t>While TLS 1.3 encrypts most of the handshake including certificates, earlier TLS
versions may expose this information. Deployments concerned about privacy <bcp14>SHOULD</bcp14>
use TLS 1.3 or later.</t>
      </section>
      <section anchor="multiple-identity-formats">
        <name>Multiple Identity Formats</name>
        <t>Implementations <bcp14>MUST NOT</bcp14> allow multiple identity squashing otherName fields to be
present simultaneously in the same SubjectAltName extension. If multiple such
fields are present (e.g., both RPCAuthSys and NFSv4Principal), the server <bcp14>MUST</bcp14>
reject the certificate to avoid ambiguity about which identity should be used.</t>
      </section>
    </section>
    <section anchor="sec-iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="smi-security-for-pkix-module-identifier">
        <name>SMI Security for PKIX Module Identifier</name>
        <t>IANA is requested to assign an object identifier for the ASN.1 module
specified in this document in the "SMI Security for PKIX Module Identifier"
registry (1.3.6.1.5.5.7.0):</t>
        <table>
          <thead>
            <tr>
              <th align="left">Decimal</th>
              <th align="left">Description</th>
              <th align="left">References</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD1</td>
              <td align="left">id-mod-rpc-tls-identity-squashing</td>
              <td align="left">RFC-TBD</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="smi-security-for-pkix-other-name-forms">
        <name>SMI Security for PKIX Other Name Forms</name>
        <t>IANA is requested to assign three object identifiers for the otherName
types specified in this document in the "SMI Security for PKIX Other
Name Forms" registry (1.3.6.1.5.5.7.8):</t>
        <table>
          <thead>
            <tr>
              <th align="left">Decimal</th>
              <th align="left">Description</th>
              <th align="left">References</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD2</td>
              <td align="left">id-on-rpcAuthSys</td>
              <td align="left">RFC-TBD</td>
            </tr>
            <tr>
              <td align="left">TBD3</td>
              <td align="left">id-on-gssExportedName</td>
              <td align="left">RFC-TBD</td>
            </tr>
            <tr>
              <td align="left">TBD4</td>
              <td align="left">id-on-nfsv4Principal</td>
              <td align="left">RFC-TBD</td>
            </tr>
          </tbody>
        </table>
        <t>These otherName identifiers are used in the SubjectAltName extension
of X.509 certificates to carry RPC user identity information for the
purpose of identity squashing as described in this document.</t>
        <t>"RFC-TBD" is to be replaced with the actual RFC number when this
document is published.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC5531">
          <front>
            <title>RPC: Remote Procedure Call Protocol Specification Version 2</title>
            <author fullname="R. Thurlow" initials="R." surname="Thurlow"/>
            <date month="May" year="2009"/>
            <abstract>
              <t>This document describes the Open Network Computing (ONC) Remote Procedure Call (RPC) version 2 protocol as it is currently deployed and accepted. This document obsoletes RFC 1831. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5531"/>
          <seriesInfo name="DOI" value="10.17487/RFC5531"/>
        </reference>
        <reference anchor="RFC8881">
          <front>
            <title>Network File System (NFS) Version 4 Minor Version 1 Protocol</title>
            <author fullname="D. Noveck" initials="D." role="editor" surname="Noveck"/>
            <author fullname="C. Lever" initials="C." surname="Lever"/>
            <date month="August" year="2020"/>
            <abstract>
              <t>This document describes the Network File System (NFS) version 4 minor version 1, including features retained from the base protocol (NFS version 4 minor version 0, which is specified in RFC 7530) and protocol extensions made subsequently. The later minor version has no dependencies on NFS version 4 minor version 0, and is considered a separate protocol.</t>
              <t>This document obsoletes RFC 5661. It substantially revises the treatment of features relating to multi-server namespace, superseding the description of those features appearing in RFC 5661.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8881"/>
          <seriesInfo name="DOI" value="10.17487/RFC8881"/>
        </reference>
        <reference anchor="RFC9289">
          <front>
            <title>Towards Remote Procedure Call Encryption by Default</title>
            <author fullname="T. Myklebust" initials="T." surname="Myklebust"/>
            <author fullname="C. Lever" initials="C." role="editor" surname="Lever"/>
            <date month="September" year="2022"/>
            <abstract>
              <t>This document describes a mechanism that, through the use of opportunistic Transport Layer Security (TLS), enables encryption of Remote Procedure Call (RPC) transactions while they are in transit. The proposed mechanism interoperates with Open Network Computing (ONC) RPC implementations that do not support it. This document updates RFC 5531.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9289"/>
          <seriesInfo name="DOI" value="10.17487/RFC9289"/>
        </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="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="RFC2743">
          <front>
            <title>Generic Security Service Application Program Interface Version 2, Update 1</title>
            <author fullname="J. Linn" initials="J." surname="Linn"/>
            <date month="January" year="2000"/>
            <abstract>
              <t>This memo obsoletes [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2743"/>
          <seriesInfo name="DOI" value="10.17487/RFC2743"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC4121">
          <front>
            <title>The Kerberos Version 5 Generic Security Service Application Program Interface (GSS-API) Mechanism: Version 2</title>
            <author fullname="L. Zhu" initials="L." surname="Zhu"/>
            <author fullname="K. Jaganathan" initials="K." surname="Jaganathan"/>
            <author fullname="S. Hartman" initials="S." surname="Hartman"/>
            <date month="July" year="2005"/>
            <abstract>
              <t>This document defines protocols, procedures, and conventions to be employed by peers implementing the Generic Security Service Application Program Interface (GSS-API) when using the Kerberos Version 5 mechanism.</t>
              <t>RFC 1964 is updated and incremental changes are proposed in response to recent developments such as the introduction of Kerberos cryptosystem framework. These changes support the inclusion of new cryptosystems, by defining new per-message tokens along with their encryption and checksum algorithms based on the cryptosystem profiles. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4121"/>
          <seriesInfo name="DOI" value="10.17487/RFC4121"/>
        </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>
        <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>
      </references>
    </references>
    <?line 530?>

<section anchor="sec-asn1">
      <name>ASN.1 Module</name>
      <t>The following ASN.1 module normatively specifies the structure of
the new otherName values described in this document.
This specification uses the ASN.1 definitions from
<xref target="RFC5912"/> with the 2002 ASN.1 notation used in that document.
<xref target="RFC5912"/> updates normative documents using older ASN.1 notation.</t>
      <section anchor="rpc-tls-identity-squashing-module">
        <name>RPC TLS Identity Squashing Module</name>
        <sourcecode type="asn.1"><![CDATA[
RPCTLSIdentitySquashing
    { iso(1) identified-organization(3) dod(6) internet(1)
      security(5) mechanisms(5) pkix(7) id-mod(0)
      id-mod-rpc-tls-identity-squashing(TBD) }

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) } ;

-- Object Identifier Arc
id-pkix OBJECT IDENTIFIER ::=
    { iso(1) identified-organization(3) dod(6) internet(1)
      security(5) mechanisms(5) pkix(7) }

id-on OBJECT IDENTIFIER ::= { id-pkix 8 }  -- other names

-- ===================================================================
-- RPC AUTH_SYS Identity Squashing
-- ===================================================================

-- OID for RPC AUTH_SYS credentials in otherName
id-on-rpcAuthSys OBJECT IDENTIFIER ::= { id-on TBD }

-- RPC AUTH_SYS Credentials Structure
-- UID and GID list as used in RPC AUTH_SYS authentication flavor
-- See RFC 5531 (ONC RPC) and related specifications
RPCAuthSys ::= SEQUENCE {
    uid        INTEGER (0..4294967295),  -- 32-bit UID
    gids       SEQUENCE OF INTEGER (0..4294967295)  -- List of 32-bit GIDs
}

-- For use in SubjectAltName otherName
rpcAuthSys OTHER-NAME ::= {
    RPCAuthSys IDENTIFIED BY id-on-rpcAuthSys
}

-- ===================================================================
-- GSS-API Exported Name Identity Squashing
-- ===================================================================

-- OID for GSS-API Exported Name in otherName
id-on-gssExportedName OBJECT IDENTIFIER ::= { id-on TBD }

-- GSS-API Exported Name Structure
-- As defined in RFC 2743 Section 3.2
GSSExportedName ::= SEQUENCE {
    nameType   OBJECT IDENTIFIER,  -- GSS-API mechanism OID
    nameValue  OCTET STRING        -- Mechanism-specific exported name
}

-- For use in SubjectAltName otherName
gssExportedName OTHER-NAME ::= {
    GSSExportedName IDENTIFIED BY id-on-gssExportedName
}

-- ===================================================================
-- NFSv4 User@Domain Principal Identity Squashing
-- ===================================================================

-- OID for NFSv4 user@domain principal in otherName
id-on-nfsv4Principal OBJECT IDENTIFIER ::= { id-on TBD }

-- NFSv4 User@Domain Principal Structure
-- As defined in RFC 8881 Section 5.9
NFSv4Principal ::= SEQUENCE {
    principal  UTF8String          -- user@domain string
}

-- For use in SubjectAltName otherName
nfsv4Principal OTHER-NAME ::= {
    NFSv4Principal IDENTIFIED BY id-on-nfsv4Principal
}

END
]]></sourcecode>
      </section>
    </section>
    <section anchor="sec-certificate-examples">
      <name>Certificate Examples</name>
      <t>This appendix provides examples of X.509 certificates containing the
otherName extensions defined in this document. These examples are
provided in both human-readable notation and hexadecimal DER encoding
to assist implementers in verifying their implementations.</t>
      <section anchor="nfsv4-principal-example">
        <name>NFSv4 Principal Example</name>
        <t>This example shows a certificate for user "alice" at domain "nfs.example.com":</t>
        <sourcecode type="asn.1"><![CDATA[
SubjectAltName ::= SEQUENCE {
    otherName [0] IMPLICIT SEQUENCE {
        type-id OBJECT IDENTIFIER ::= id-on-nfsv4Principal,
        value [0] EXPLICIT NFSv4Principal ::= {
            principal "alice@nfs.example.com"
        }
    }
}
]]></sourcecode>
        <t>DER encoding (hexadecimal):</t>
        <artwork><![CDATA[
30 27 A0 25 06 08 2B 06 01 05 05 07 08 XX A0 19
30 17 0C 15 61 6C 69 63 65 40 6E 66 73 2E 65 78
61 6D 70 6C 65 2E 63 6F 6D
]]></artwork>
        <t>Note: XX represents the TBD value for id-on-nfsv4Principal.</t>
      </section>
      <section anchor="gss-api-exported-name-example">
        <name>GSS-API Exported Name Example</name>
        <t>This example shows a certificate containing a Kerberos V5 principal
for "bob@EXAMPLE.COM":</t>
        <sourcecode type="asn.1"><![CDATA[
SubjectAltName ::= SEQUENCE {
    otherName [0] IMPLICIT SEQUENCE {
        type-id OBJECT IDENTIFIER ::= id-on-gssExportedName,
        value [0] EXPLICIT GSSExportedName ::= {
            nameType 1.2.840.113554.1.2.2,  -- Kerberos V5
            nameValue '04 01 00 0B 06 09 2A 86 48 86 F7 12 01 02 02
                       00 00 00 11 62 6F 62 40 45 58 41 4D 50 4C 45
                       2E 43 4F 4D'H
        }
    }
}
]]></sourcecode>
        <t>DER encoding (hexadecimal):</t>
        <artwork><![CDATA[
30 47 A0 45 06 08 2B 06 01 05 05 07 08 YY A0 39
30 37 06 09 2A 86 48 86 F7 12 01 02 02 04 2A 04
01 00 0B 06 09 2A 86 48 86 F7 12 01 02 02 00 00
00 11 62 6F 62 40 45 58 41 4D 50 4C 45 2E 43 4F
4D
]]></artwork>
        <t>Note: YY represents the TBD value for id-on-gssExportedName.</t>
        <t>The nameValue field contains the GSS-API exported name token format
as defined by the Kerberos V5 mechanism. The first four bytes
(04 01 00 0B) are the token ID and length fields defined in
<xref section="3.2" sectionFormat="of" target="RFC2743"/>.</t>
      </section>
      <section anchor="rpc-authsys-example">
        <name>RPC AUTH_SYS Example</name>
        <t>This example shows a certificate containing UID 1000 and GIDs
1000, 10, and 100:</t>
        <sourcecode type="asn.1"><![CDATA[
SubjectAltName ::= SEQUENCE {
    otherName [0] IMPLICIT SEQUENCE {
        type-id OBJECT IDENTIFIER ::= id-on-rpcAuthSys,
        value [0] EXPLICIT RPCAuthSys ::= {
            uid 1000,
            gids { 1000, 10, 100 }
        }
    }
}
]]></sourcecode>
        <t>DER encoding (hexadecimal):</t>
        <artwork><![CDATA[
30 20 A0 1E 06 08 2B 06 01 05 05 07 08 ZZ A0 12
30 10 02 02 03 E8 30 0A 02 02 03 E8 02 01 0A 02
01 64
]]></artwork>
        <t>Note: ZZ represents the TBD value for id-on-rpcAuthSys.</t>
        <t>Breaking down the encoding:
- 02 02 03 E8: INTEGER 1000 (UID)
- 30 0A: SEQUENCE OF (GIDs)
  - 02 02 03 E8: INTEGER 1000
  - 02 01 0A: INTEGER 10
  - 02 01 64: INTEGER 100</t>
      </section>
      <section anchor="complete-certificate-example">
        <name>Complete Certificate Example</name>
        <t>This example shows a minimal self-signed certificate containing an
NFSv4Principal otherName. Line breaks and whitespace have been added
for readability:</t>
        <artwork><![CDATA[
-----BEGIN CERTIFICATE-----
MIICXzCCAcigAwIBAgIUAbCdEfG7KH0FjLbI8N9cJQqQoLwwDQYJKoZIhvcNAQEL
BQAwRDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExDzANBgNVBAcM
BklydmluZTEPMA0GA1UECgwGT3JhY2xlMB4XDTI1MDEwMTAwMDAwMFoXDTI2MDEw
MTAwMDAwMFowRDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExDzAN
BgNVBAcMBklydmluZTEPMA0GA1UECgwGT3JhY2xlMIGfMA0GCSqGSIb3DQEBAQUA
A4GNADCBiQKBgQC7VJTUt9Us8cKjMzEfYyjiWA4R4ypbHqGC0H0+tG3hGbN3MYHa
... [additional base64-encoded certificate data] ...
oxUwEwYDVR0lBAwwCgYIKwYBBQUHAwEwKwYDVR0RBCQwIqAfBggrBgEFBQcIAKAT
DBVhbGljZUBuZnMuZXhhbXBsZS5jb20wDQYJKoZIhvcNAQELBQADgYEAk3+...
-----END CERTIFICATE-----
]]></artwork>
        <t>The SubjectAltName extension in this certificate is encoded at the
position indicated by the bytes following the Extended Key Usage
extension.</t>
      </section>
      <section anchor="internationalized-domain-name-example">
        <name>Internationalized Domain Name Example</name>
        <t>This example shows an NFSv4Principal with internationalized characters:</t>
        <sourcecode type="asn.1"><![CDATA[
SubjectAltName ::= SEQUENCE {
    otherName [0] IMPLICIT SEQUENCE {
        type-id OBJECT IDENTIFIER ::= id-on-nfsv4Principal,
        value [0] EXPLICIT NFSv4Principal ::= {
            principal "用户@例え.jp"    -- UTF-8 encoded user@domain
        }
    }
}
]]></sourcecode>
        <t>DER encoding (hexadecimal):</t>
        <artwork><![CDATA[
30 22 A0 20 06 08 2B 06 01 05 05 07 08 XX A0 14
30 12 0C 10 E7 94 A8 E6 88 B7 40 E4 BE 8B E3 81
88 2E 6A 70
]]></artwork>
        <t>Note: The UTF-8 encoding of the Chinese characters "用户" is
E7 94 A8 E6 88 B7, and the Japanese text "例え" is E4 BE 8B E3 81 88.</t>
      </section>
      <section anchor="test-vectors">
        <name>Test Vectors</name>
        <t>This section provides test vectors for validating implementations.
Each test case includes the input values, expected ASN.1 structure,
and expected DER encoding.</t>
        <section anchor="valid-nfsv4principal-test-cases">
          <name>Valid NFSv4Principal Test Cases</name>
          <t>Test Case 1: Simple ASCII user and domain</t>
          <t>Input:</t>
          <ul spacing="normal">
            <li>
              <t>principal: "bob@example.org"</t>
            </li>
          </ul>
          <t>Expected DER encoding:</t>
          <artwork><![CDATA[
30 21 A0 1F 06 08 2B 06 01 05 05 07 08 XX A0 13
30 11 0C 0F 62 6F 62 40 65 78 61 6D 70 6C 65 2E
6F 72 67
]]></artwork>
          <t>Test Case 2: User with numbers and domain with subdomain</t>
          <t>Input:</t>
          <ul spacing="normal">
            <li>
              <t>principal: "user123@nfs.lab.example.com"</t>
            </li>
          </ul>
          <t>Expected DER encoding:</t>
          <artwork><![CDATA[
30 2D A0 2B 06 08 2B 06 01 05 05 07 08 XX A0 1F
30 1D 0C 1B 75 73 65 72 31 32 33 40 6E 66 73 2E
6C 61 62 2E 65 78 61 6D 70 6C 65 2E 63 6F 6D
]]></artwork>
        </section>
        <section anchor="valid-rpcauthsys-test-cases">
          <name>Valid RPCAuthSys Test Cases</name>
          <t>Test Case 1: Single user, single group</t>
          <t>Input:</t>
          <ul spacing="normal">
            <li>
              <t>uid: 1000</t>
            </li>
            <li>
              <t>gids: { 1000 }</t>
            </li>
          </ul>
          <t>Expected DER encoding:</t>
          <artwork><![CDATA[
30 13 A0 11 06 08 2B 06 01 05 05 07 08 ZZ A0 05
30 08 02 02 03 E8 30 04 02 02 03 E8
]]></artwork>
          <t>Test Case 2: User with empty group list</t>
          <t>Input:</t>
          <ul spacing="normal">
            <li>
              <t>uid: 500</t>
            </li>
            <li>
              <t>gids: (empty)</t>
            </li>
          </ul>
          <t>Expected DER encoding:</t>
          <artwork><![CDATA[
30 0F A0 0D 06 08 2B 06 01 05 05 07 08 ZZ A0 01
30 06 02 02 01 F4 30 00
]]></artwork>
          <t>Test Case 3: User with maximum 32-bit UID and multiple groups</t>
          <t>Input:</t>
          <ul spacing="normal">
            <li>
              <t>uid: 4294967295</t>
            </li>
            <li>
              <t>gids: { 1, 10, 100, 1000 }</t>
            </li>
          </ul>
          <t>Expected DER encoding:</t>
          <artwork><![CDATA[
30 24 A0 22 06 08 2B 06 01 05 05 07 08 ZZ A0 16
30 14 02 05 00 FF FF FF FF 30 0B 02 01 01 02 01
0A 02 01 64 02 02 03 E8
]]></artwork>
        </section>
        <section anchor="invalid-test-cases">
          <name>Invalid Test Cases</name>
          <t>These test cases should be rejected by conforming implementations:</t>
          <t>Test Case 1: NFSv4Principal with missing '@' separator</t>
          <t>Input (malformed):</t>
          <ul spacing="normal">
            <li>
              <t>principal: "aliceexample.com" (no '@' character present)</t>
            </li>
          </ul>
          <t>Expected result: Rejection by server (invalid principal string format)</t>
          <t>Test Case 2: RPCAuthSys with UID exceeding 32-bit range</t>
          <t>Input (malformed):</t>
          <ul spacing="normal">
            <li>
              <t>uid: 4294967296 (2^32)</t>
            </li>
            <li>
              <t>gids: { 1000 }</t>
            </li>
          </ul>
          <t>Expected result: Encoding failure or rejection</t>
          <t>Test Case 3: Certificate with multiple identity squashing otherNames</t>
          <t>Input (malformed):
SubjectAltName containing both:
- id-on-nfsv4Principal with user "alice@example.com"
- id-on-rpcAuthSys with uid 1000</t>
          <t>Expected result: Certificate rejection per Security Considerations</t>
        </section>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors are grateful to
Jeff Layton,
Greg Marsden,
and
Martin Thomson
for their input and support.</t>
      <t>Special thanks to
Area Director
Gorry Fairhurst,
NFSV4 Working Group Chairs
Brian Pawlowski
and
Christopher Inacio,
and
NFSV4 Working Group Secretary
Thomas Haynes
for their guidance and oversight.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
