<?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.8) -->
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-cel-nfsv4-rpc-tls-othername-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.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-02"/>
    <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 abbrev="Oracle">Oracle Corporation</organization>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>chuck.lever@oracle.com</email>
      </address>
    </author>
    <date year="2026" month="February" day="03"/>
    <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 46?>

<t>This document extends RPC-with-TLS, as described in <xref target="RFC9289"/>, 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 53?>

<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).
Several important upper layer protocols, such as the family of Network
File System protocols (most recently described in <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. This protection includes maintaining confidentiality and
integrity, and the authentication of 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 host address or fully qualified DNS name.
The lack of a well known fixed IP host address or fully qualified DNS name
weakens the verification checks that may be done on the client's X.509
certificate by the server.  As such, this extension allows the client to be
restricted to a single user entity on the server, limiting the scope of risk
associated with allowing access to the server.</t>
        <t>When a service is running in a dedicated VM or container, it often
runs as a single assigned user identity. Handling this user identity
using Kerberos is problematic, since Kerberos TGTs typically expire
in a matter of hours and the service is typically a long running task.
This extension allows the client to specify the single assigned user
identity to the server in a manner that will not expire for a significant
period of time.</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>In the interest of enabling the independent creation of interoperating
implementations of RPC identity squashing, this document proposes the
use of the x.509 SubjectAltName otherName field to carry a RPC user
identity.
For these user squashing instructions,
this document establishes a fixed object identifier
carried in the "type-id" part of the otherName field,
and specifies the format of the "value" part of the otherName
field when "type-id" carries the new object identifier.
The document also provides normative guidance on how the "value"
is to be interpreted by RPC servers.</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>SHOULD</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.
This ensures forward compatibility with future extensions.</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>Implementations should consider caching the parsed and validated identity
information at TLS session establishment time to avoid repeated parsing
for each RPC request.</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. This ensures that clients presenting certificates
with identity squashing otherName fields can interoperate with servers
that do not support this specification, though without identity squashing.</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"/>. This principal appears in the same form as an
internatialized electronic mail addresses, following the normative rules
specified by <xref section="7.5" sectionFormat="of" target="RFC5280"/> and its updates.</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>Here, we'll provide the base level of general requirements that must be
met, as instructions to future authors. These are to include:</t>
      <ul spacing="normal">
        <li>
          <t>New identity types must define an ASN.1 module</t>
        </li>
        <li>
          <t>Must request IANA OID allocation</t>
        </li>
        <li>
          <t>Should provide security considerations specific to that identity type</t>
        </li>
        <li>
          <t>Should 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 provides the strongest integration with existing enterprise
authentication infrastructure but requires that servers support the
specific GSS-API 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>The choice of validity period might also consider whether certificate
revocation checking (CRL or OCSP) is deployed and how quickly revocation
information propagates in the environment.</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 for RPC-with-TLS described in <xref section="8" sectionFormat="of" target="RFC9289"/>
apply to this specification. In particular, the discussion about certificate
validation, trust anchors, and the establishment of secure TLS sessions remains
relevant.</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>The server <bcp14>MUST</bcp14> carefully consider which Certificate Authorities (CAs) it trusts
to issue certificates containing the otherName extensions defined in this document.
A compromised or malicious CA could issue certificates that allow unauthorized
access to server resources under arbitrary user identities.</t>
          <t>Servers <bcp14>SHOULD</bcp14> maintain separate trust anchors for certificates containing
identity squashing otherName fields versus certificates used solely for TLS
peer authentication. This allows administrators to tightly control which CAs
are authorized to 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">TBD4</td>
              <td align="left">id-on-rpcAuthSys</td>
              <td align="left">RFC-TBD</td>
            </tr>
            <tr>
              <td align="left">TBD5</td>
              <td align="left">id-on-gssExportedName</td>
              <td align="left">RFC-TBD</td>
            </tr>
            <tr>
              <td align="left">TBD6</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="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="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative 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="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>
        <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="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 551?>

<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 ::= {
            user "alice",
            atSign "@",
            domain "nfs.example.com"
        }
    }
}
]]></sourcecode>
        <t>DER encoding (hexadecimal):</t>
        <artwork><![CDATA[
30 2B A0 29 06 08 2B 06 01 05 05 07 08 XX A0 1D
0C 05 61 6C 69 63 65 13 01 40 0C 0F 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 ::= {
            user "用户",        -- Chinese characters for "user"
            atSign "@",
            domain "例え.jp"    -- Japanese IDN
        }
    }
}
]]></sourcecode>
        <t>DER encoding (hexadecimal):</t>
        <artwork><![CDATA[
30 2D A0 2B 06 08 2B 06 01 05 05 07 08 XX A0 1F
0C 06 E7 94 A8 E6 88 B7 13 01 40 0C 0C 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>user: "bob"</t>
            </li>
            <li>
              <t>domain: "example.org"</t>
            </li>
          </ul>
          <t>Expected DER encoding:</t>
          <artwork><![CDATA[
30 22 A0 20 06 08 2B 06 01 05 05 07 08 XX A0 14
0C 03 62 6F 62 13 01 40 0C 0B 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>user: "user123"</t>
            </li>
            <li>
              <t>domain: "nfs.lab.example.com"</t>
            </li>
          </ul>
          <t>Expected DER encoding:</t>
          <artwork><![CDATA[
30 2F A0 2D 06 08 2B 06 01 05 05 07 08 XX A0 21
0C 07 75 73 65 72 31 32 33 13 01 40 0C 14 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 atSign field</t>
          <t>Input (malformed):</t>
          <ul spacing="normal">
            <li>
              <t>user: "alice"</t>
            </li>
            <li>
              <t>atSign: "" (empty)</t>
            </li>
            <li>
              <t>domain: "example.com"</t>
            </li>
          </ul>
          <t>Expected result: Parsing failure</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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
AWKzVpBf+0a/6YrytmdzWMa/AdGA+AERfAAA

-->

</rfc>
