<?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.43 (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-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.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-04"/>
    <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="September" day="05"/>
    <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 44?>

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

<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>This document calls the replacement of incoming RPC user identities
with a single user identity "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 name an
RPC user identity. The RPC server derives an RPC user from that
identity when the TLS session is established. For
each RPC request within the TLS session that carries an AUTH_NONE or
AUTH_SYS credential, the server executes the request under the
derived RPC user in place of the one the credential asserts.</t>
      <t>The derivation depends on the identity form. An RPCAuthSys value
carries a numeric UID and GIDs, and the server uses them directly.
A GSSExportedName value names a GSS-API principal, and the server
derives the RPC user from it as it does from the principal of an
RPCSEC_GSS security context. An NFSv4Principal value carries a
user@domain string, and the server resolves it through the mapping
it applies to the NFSv4 owner attribute. A server that cannot
derive an RPC user from the identity the certificate names is
unable to apply the identity, and <xref target="sec-server-processing"/>
specifies what it does then.</t>
      <t>Identity squashing does not apply to a request that carries an
RPCSEC_GSS credential <xref target="RFC2203"/>. Such a request is processed under
the identity established by its GSS security context, which
<xref section="4.2.1" sectionFormat="of" target="RFC9289"/> leaves unchanged by the use of TLS. An
RPCSEC_GSS credential carries a context handle rather than a user
identity, and the peer that established that context has already
proven its identity to the server. Replacing it would also discard
the machine credential over which SP4_MACH_CRED state protection
(<xref section="18.35" sectionFormat="of" target="RFC8881"/>) is defined.</t>
      <section anchor="sec-server-processing">
        <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 and derive
an RPC user from it.</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>
        <t>If the server recognizes an identity squashing type-id but cannot
validate the identity that otherName carries, cannot derive an RPC
user from it, or does not authorize its use for the authenticated
TLS peer, the server <bcp14>MUST</bcp14> reject every non-NULL procedure on that TLS
session that carries an AUTH_NONE or AUTH_SYS credential with a
reply_stat of MSG_DENIED, a reject_stat of AUTH_ERROR, and an
auth_stat of AUTH_TOOWEAK, as defined in <xref section="9" sectionFormat="of" target="RFC5531"/>.
The server <bcp14>MUST
NOT</bcp14> fall back to the credential carried in the RPC header. Such a
fallback would grant the client the access its header credential
asserts, which is the access the certificate was meant to withhold.</t>
      </section>
      <section anchor="sec-server-policy">
        <name>Server Policy</name>
        <t>A server that implements this specification either enforces identity
squashing or has it disabled. The scope at which a server sets that
policy, whether for the whole server, per export, or per some other
unit, is a local matter.</t>
        <t>A server on which identity squashing is disabled <bcp14>MUST</bcp14> ignore the
identity squashing otherName entries in a client certificate and
process RPC requests as a server that does not implement this
specification does (<xref target="sec-interop"/>). A client cannot distinguish the
two.</t>
        <t>A server that enforces identity squashing applies
<xref target="sec-server-processing"/> to every client certificate it receives.
On a connection for which no certificate identity has been applied,
the server <bcp14>MUST</bcp14> reject every non-NULL procedure that carries an
AUTH_NONE or AUTH_SYS credential with a reply_stat of MSG_DENIED, a
reject_stat of AUTH_ERROR, and an auth_stat of AUTH_TOOWEAK. That
covers a connection with no TLS session, a TLS session on which the
client presented no certificate, and a TLS session whose certificate
carries no identity squashing otherName, in addition to the case
<xref target="sec-server-processing"/> specifies. An enforcing server never
executes such a request under the credential carried in the RPC
header. A request that carries an RPCSEC_GSS credential is processed
under its GSS security context under either policy.</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>Derive an RPC user from the identity. For RPCAuthSys, take the UID and
GIDs as given. For GSSExportedName, map the principal as the server maps
the principal of an RPCSEC_GSS context. For NFSv4Principal, resolve the
user@domain string through the server's NFSv4 owner mapping. If the
derivation fails, treat the identity as one the server cannot apply.</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 derived RPC user with the TLS
session state.</t>
          </li>
          <li>
            <t>For each incoming RPC request on this TLS session that carries an
AUTH_NONE or AUTH_SYS credential, execute the request under the RPC user
derived from the certificate, for all authorization and access control
decisions. The credential information in the RPC header is ignored. A
request that carries an RPCSEC_GSS credential is processed under its GSS
security context, as it would be on any other TLS session.</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="sec-interop">
        <name>Interoperability with Non-Supporting Servers</name>
        <t>RPC servers that do not implement this specification do not recognize
the otherName OIDs defined in this document. <xref section="4.2" sectionFormat="of" target="RFC5280"/>
requires a certificate-using system to reject a certificate that carries
an unrecognized critical extension, and permits it to ignore an
unrecognized non-critical one. Neither rule reaches an unrecognized
type-id within a subjectAltName extension, which <xref section="4.2" sectionFormat="of" target="RFC5280"/> lists among the extensions that a conforming application
recognizes.</t>
        <t>This document cannot impose a requirement on servers that do not
implement it. Such servers are expected to ignore otherName entries
whose type-id they do not recognize, and to process RPC requests using
the credential information contained in the RPC header, subject to
their normal authentication and authorization policies. That
expectation is convention rather than a requirement inherited from
<xref target="RFC5280"/>.</t>
        <t>Issuing a certificate that carries one of the otherName fields defined
in this document does not by itself restrict the access available to
the certificate holder. The restriction takes effect only on servers
that implement this specification and enforce identity squashing
(<xref target="sec-server-policy"/>). <xref target="sec-security-considerations"/>
recommends that servers maintain trust anchors for identity squashing
certificates separate from those used solely for TLS peer
authentication.</t>
      </section>
      <section anchor="certificate-profile">
        <name>Certificate Profile</name>
        <t>A certificate carrying one of the otherName fields defined in this
document <bcp14>MUST</bcp14> contain a non-empty subject distinguished name, and its
subjectAltName extension <bcp14>MUST NOT</bcp14> be marked critical.</t>
        <t><xref section="4.2.1.6" sectionFormat="of" target="RFC5280"/> requires a critical subjectAltName
extension when the subject field contains an empty sequence. A server
that does not implement this specification and encounters a critical
subjectAltName carrying only an unrecognized type-id may reject the
certificate, because <xref section="4.2" sectionFormat="of" target="RFC5280"/> directs a
certificate-using system to reject a critical extension that contains
information it cannot process. <xref target="RFC5280"/> does not settle whether an
unrecognized type-id within a recognized extension is such
information. A non-empty subject distinguished name keeps the
subjectAltName extension non-critical, which removes the rejection
outcome and leaves the fall-through described in <xref target="sec-interop"/>.</t>
      </section>
      <section anchor="client-requirements">
        <name>Client Requirements</name>
        <t>A client that presents a certificate carrying one of the otherName
fields defined in this document <bcp14>MUST</bcp14> use a security policy that
requires a TLS session on every connection to the RPC server, as
described in <xref section="6.1.1" sectionFormat="of" target="RFC9289"/>. If the AUTH_TLS probe does
not elicit a "STARTTLS" token, or if the subsequent TLS handshake
fails, the client <bcp14>MUST NOT</bcp14> continue RPC operation on that connection.</t>
        <t>The AUTH_TLS probe occurs in cleartext. Without such a policy, an
on-path attacker can alter the probe to make it appear that the server
does not support TLS. RPC operation then continues with no certificate
presented, and the server applies its normal policy to the credential
carried in each RPC header. For AUTH_SYS that credential is asserted
by the client and is not verified, so the attacker replaces the
identity named in the certificate with whatever identity the client
sends.</t>
        <t>A client <bcp14>MUST NOT</bcp14> present a certificate carrying one of the otherName
fields defined in this document on a TLS session over which it
transmits RPC requests for more than one RPC user. A client that
multiplexes RPC users onto one session can still use this mechanism by
opening a separate TLS session, authenticated with such a certificate,
for the user that certificate names.</t>
        <t><xref section="6.2" sectionFormat="of" target="RFC9289"/> observes that a client's TLS credentials
are potentially visible to every RPC user that shares a TLS session.
Under <xref target="RFC9289"/> alone, a local user who reaches the shared
credential still faces the server's per-user authorization. A server
that applies identity squashing discards the credential carried in the
RPC header. Reaching the session is then the whole of the
authorization, and every request on it is attributed to the identity
named in the certificate.</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. The integers
have the meaning that the AUTH_SYS authentication flavor gives them
in Appendix A of <xref target="RFC5531"/>.</t>
          <t>RPCAuthSys names an identity in the terms AUTH_SYS uses. It is not an
AUTH_SYS credential, and a server does not build an authsys_parms
structure from it. The per-call stamp and the machinename fields of
authsys_parms are therefore absent, since a stamp has no meaning in a
certificate and TLS has already authenticated the client host.</t>
          <t>The first element of gids is the effective GID. Any further elements
are supplementary GIDs. When gids is empty, the server supplies the
effective GID and the supplementary GIDs from its own user database
entry for the UID.</t>
          <t>The 16-element bound that <xref target="RFC5531"/> places on the gids array of
authsys_parms does not apply, because the server derives a local
identity rather than a wire credential. A server whose local
representation cannot hold every GID in the sequence <bcp14>MUST</bcp14> treat the
identity as one it cannot apply rather than silently truncate the
list.</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. This is the
form that <xref section="5.9" sectionFormat="of" target="RFC8881"/> uses for the owner attribute.
The string <bcp14>MUST</bcp14> contain the "@" character. <xref target="RFC8881"/> gives a
string without "@" a meaning of its own, that no translation was
available at the sender, which does not apply to a certificate.</t>
          <t>The server derives the RPC user by resolving the string through the
same mapping it applies to the owner attribute. <xref target="RFC8881"/> leaves
that mapping to the implementation, and this document does not
specify it further. A server whose mapping does not handle the
domain part of the string can resolve only strings whose domain
matches its own.</t>
          <t>This form carries an identity that belongs to an upper-layer
protocol rather than to RPC. The RPCAuthSys and GSSExportedName forms
name identities in terms the RPC layer already uses for its AUTH_SYS
and RPCSEC_GSS flavors. The user@domain string is the representation
that NFSv4 defines for its owner and owner_group attributes, and
resolving it requires the owner mapping of an NFSv4 server. An RPC
server for another program has no such mapping and cannot apply this
form. The form is therefore suited to NFSv4 servers, and a deployment
that spans other RPC services chooses one of the other two.</t>
        </section>
      </section>
    </section>
    <section anchor="extending-this-mechanism">
      <name>Extending This Mechanism</name>
      <t>RPC servers might in future implement other forms of RPC user
identity, such as Windows Security Identifiers. Standards Action can
extend the mechanism specified in this document to a new form. A
document that defines a new identity type:</t>
      <ul spacing="normal">
        <li>
          <t><bcp14>MUST</bcp14> define an ASN.1 module.</t>
        </li>
        <li>
          <t><bcp14>MUST</bcp14> request an IANA OID allocation.</t>
        </li>
        <li>
          <t><bcp14>SHOULD</bcp14> provide security considerations specific to that identity type.</t>
        </li>
        <li>
          <t><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 servers that key user identities by GSS-API principal
name, such as servers already deployed with Kerberos. Identity
squashing applies only to AUTH_NONE and AUTH_SYS requests, so this
format names the principal those requests execute under and leaves
RPCSEC_GSS requests, which prove a principal of their own, untouched.
One use is a host with no keytab whose users hold Kerberos principals:
the certificate names a service principal the server already knows, so
the host's non-GSS traffic executes as that principal while its users'
RPCSEC_GSS traffic keeps their own identities. Servers must support
the mechanism indicated by the nameType OID.</t>
          </dd>
          <dt>NFSv4Principal</dt>
          <dd>
            <t>Suited to NFSv4 servers, which already resolve user@domain strings
through their owner mapping, and to deployments where human-readable
identities are preferred. The format is familiar to administrators
and supports internationalization, but it names an NFSv4 identity
rather than an RPC one, so RPC servers for other programs cannot
apply it.</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. List the effective GID first, followed
by any supplementary GIDs, or leave gids empty to have the server
supply the groups from its own user database. Avoid 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
choose validity periods to suit their security requirements. Shorter
validity periods reduce the window of exposure if a certificate is
compromised, but increase the operational overhead of 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="absence-of-enforcement">
          <name>Absence of Enforcement</name>
          <t>An RPC server that does not implement this specification, or that
implements it with identity squashing disabled (<xref target="sec-server-policy"/>),
processes RPC requests using the credential carried in each RPC
header. For AUTH_SYS that credential is asserted by the client and is
not verified.</t>
          <t>Identity squashing therefore fails toward greater privilege. An
administrator who issues these certificates expecting access to be
confined to one identity gets no such confinement from a server that
does not enforce it, and the client cannot tell whether the server
applied the certificate identity. Other identity policies that an RPC
server applies without announcing them, such as mapping UID 0 to an
unprivileged identity or deriving the group list from the server's own
user database, fail toward lesser privilege instead.</t>
          <t>A client can confirm that a server enforces identity squashing by
presenting a certificate that carries no identity squashing otherName
and observing AUTH_TOOWEAK. A server that ignores the otherName gives
the client no signal, so a client cannot distinguish a server with
identity squashing disabled from one that does not implement this
specification.</t>
          <t>A deployment cannot rely on the presence of these otherName fields as
an access restriction. The restriction exists only where the server
enforces it.</t>
        </section>
        <section anchor="name-resolution">
          <name>Name Resolution</name>
          <section anchor="nfsv4-principals">
            <name>NFSv4 Principals</name>
            <t>When processing NFSv4Principal otherName values, servers <bcp14>MUST</bcp14> resolve
the string through the same mapping they apply to the NFSv4 owner
attribute, and <bcp14>MUST</bcp14> treat a string that mapping cannot resolve as an
identity the server cannot apply. <xref target="RFC8881"/> does not specify that
mapping, so how the domain is validated, how an internationalized
domain name is normalized, and whether names are case-sensitive are
properties of the server's mapping. Applying one mapping to both the
certificate and the owner attribute keeps a given string resolving to
one local identity on a given server.</t>
          </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>MUST</bcp14> derive the RPC user from the exported name as they derive
it from the principal of an RPCSEC_GSS security context established
under the same mechanism, and <bcp14>MUST</bcp14> treat a name that derivation cannot
map as an identity the server cannot apply.</t>
            <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-identities-1">
            <name>AUTH_SYS Identities</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 requests within a TLS session containing an identity squashing
otherName that carry an AUTH_NONE or AUTH_SYS credential execute under the
same user identity. Requests that carry an RPCSEC_GSS credential execute
under the identity of their GSS security context, and the certificate
identity is not bound to them. 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, which is transmitted
during the TLS handshake. <xref section="5" sectionFormat="of" target="RFC9289"/> forbids negotiating
TLS versions prior to 1.3, and TLS 1.3 encrypts the client certificate,
so a network observer does not see the identity in transit.</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="RFC2203">
          <front>
            <title>RPCSEC_GSS Protocol Specification</title>
            <author fullname="M. Eisler" initials="M." surname="Eisler"/>
            <author fullname="A. Chiu" initials="A." surname="Chiu"/>
            <author fullname="L. Ling" initials="L." surname="Ling"/>
            <date month="September" year="1997"/>
            <abstract>
              <t>This memo describes an ONC/RPC security flavor that allows RPC protocols to access the Generic Security Services Application Programming Interface (referred to henceforth as GSS-API). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2203"/>
          <seriesInfo name="DOI" value="10.17487/RFC2203"/>
        </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 750?>

<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 Identity Structure
-- UID and GID list in the terms of the RPC AUTH_SYS authentication
-- flavor, RFC 5531 Appendix A.  Not an AUTH_SYS credential: the
-- stamp and machinename fields are absent and gids is unbounded.
RPCAuthSys ::= SEQUENCE {
    uid        INTEGER (0..4294967295),  -- 32-bit UID
    gids       SEQUENCE OF INTEGER (0..4294967295)
               -- Effective GID first, then supplementary 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 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
-- In the form RFC 8881 Section 5.9 uses for the owner attribute
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, effective GID
1000, and supplementary GIDs 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>The server supplies the effective GID and supplementary GIDs from its
own user database entry for UID 500.</t>
          <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).
In RFC 8881 a string without '@' signifies that no translation was
available at the sender, so a server has nothing to resolve.</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 Chair
Brian Pawlowski,
and
NFSV4 Working Group Secretary
Thomas Haynes
for their guidance and oversight.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA91923LbWLbY+/6KHfVDSzkkm9TNsjIzxxRFyeq2JFuS3e2e
mnSBJEiiDQIcAJTM9niq8naq8poPyGP+IG95yK8klfxG1m1v7A2AsrpnMicV
nR4fEgT2Ze11v6HdbqsiKuLwWG/dhIu0CPXrLB2Hk1UW6kEQx/piEiZwx1rf
/nkV5PMomen7KNAfOwfd53oQZkU0jcYBPHcWhfEk31LBaJSF9zDe7Sq5eT2Q
O+vDbCl8bJZm62OdFxOlJuk4CRawkkkWTIv2OIzbyTS/329ny3G7iPN2WszD
DG9pd/dVvhotojyP0qRYL+Ghi+HdmVpGx/qPRTpu6TzNiiyc5vBpveAPMP4i
WC5h6j+pvAiSyU9BnCbw6DrMFSx4T6lomR3rIlvlxW63+7y7q4IsDGAr34cj
DQ/oi6SAFYSFvsuCJF/CHFvqIc0+zLJ0tYT7rsICvwIs4lDfrvMiXOh3YYar
1PtbKh3laRwWYX6sPoRruHNyrHSbIYQfblejn8Nx0Y+LK9glXqEtmy9XZ7d8
F8JVqWBVzNMMR1Aa/qarOGb43UTjD/oyGH+IwwX9lGazIIl+CQpYx7E+y8Lw
5PYUDxpnozvMoclvdG2crpICT2cQJMEkoGvhIojiY50tePQXq3S2CuPlvDMO
6usYzFewkFfhfZjRL1mKeBZOoiLN/BneJlERTvRtARiR63Sq+4swi8benIgP
UVhMX4xx2BhH7cBRKHUfJqsQwKDlFAhp4CvjxfdwHoi05/gjXOXB6J4XOFwH
gAOXg2w8P9bzoljmx998gzfhleg+7JibvsEL34yy9CEPv6Hnv4HnsnCZls/N
omK+GnXG6eKbcpXfRO1JHYfh2Rh3W5RPOxuTgaK0+eFvvpqlnS+SSWdeLGKl
2u02nG9eZAEctrqbRzmSwmoBBKnDj0WYTHINCNV+gDnbd69ugXZ0MQ8KHehx
HMFdX+eComOH3BfBWo+DLFvrKIGxV2NErlwX+GyI4+k8zGAreCX8GI5X8Azw
E4W/FEg9gTwxzdIFz8ez6SCHmXM4M6ChFQyiI+EdHd7LIppM4lCpr5Acs3TC
U8P3r/QJoCViQTLBjcIyGlnavVDkrl5mKXCLNNbbsKyWnqaZzoGmih09h1WM
wjBRAT69THNGz2QSZBO6r5gDqehJOA4mgLLbOXz59Onf3JwNDg72ep8/E7uI
ilwFwDJgcthBvtNRb5dL2FAcrOFfM3mu89V4jttGyDWxkGmwiOK12uYJjo6O
YIIdQNlQjwJcGOwF1g/guYBNdXd3WzQSckS9XI3iKJ/DTfzw892j558/t/TD
PII582U4hgMNEeKLcDwHLpEv1GgtP9fOahwkABU9ztbLIp1lwRJuA4iuaS/A
S2AaADMcnaLHoqKjYU6Nk+It9xHCapwmUz7SIEaJQJACKM0y/AbEj9wNnp8C
ptGPyOjw9jFxB9waENhileAFJO1lCAfaIQSAsxoBX2JOghiu1KdPtyEtX+93
dml4AwUQOzJiUBwr9QfaL2GcMyM+CBSTpICY0ynvcbSGm3EdcDOOWBhpICeb
A7rjZjpafw/jWEICGIQ5YgJcAUKDQXDpFr+RVILEoR0+R4ukRKyEuQDGcRaN
QgScLAVmzHAKS9oW3kmqH4BYGWlDhyw/JOkDnHSI/IJGARq0awHGZhYLQrIE
DczuEisMCtDJ54CMExgjWKTJLC+AOyRr+0wOcABqBCmcZmELiZuXEC2WMR0S
QxmQC6AMg6yKKI5+CWm1GVMwsqU6rBy8cCZT6jIdIfVMwvtoHJbkFQeAtcuc
CAeEg6DuKqcTrfAcwDtQSOjY58E9sC49jT6GEyCcMI7bCLlEX7zWwWQCUMoR
DCj31hq0mxgpaqJPr241cWH1PTDWdAXMNkJIt9xTQDYzDR/gE3xj1kqgmIfj
D7DQe5RDgNAAdUWHbPjxD6RUOfyYQAwnUeIIbA5EVQntIlWw1ALEKmDyeIyr
JtbL0DHniWBtZL4tHUeLCOlNhR+BHyI3jaaCC45ciJDAF4B8oJ2FEzgMoQBc
BZyGzlbARyK8MgFNAB+Z6HeXCEDgC0UQJQihCBBrChvhuwPgomZNAah8swSe
8SWD/i7MRmGW5jj/Mk0zOIp8RUoFIt6xuju/Q+AsI1x2ouE8MlAJ16DKmdPA
xaFQgymJVhYIF1AQZyCOCbaqhC0occKIGGqw9PtwXaGgKOFbSuC0FPPVSRoy
R5EFpXxnDtjC8keP12PaLDKK87tOVWwj5uZCH8s4GBMVISeKEgA+8kRLr7Ic
4PEKBfyG09Vb9lNuFXRmqberxSLIiDGXkjCNVyx070C6J4SiyMLh9zDjbx5t
58LWdX2WFiC2u7VSJLkMFj6yHeGryI5+PEXzA9GXlRLhoxUsQTZUTjUJp4Bu
Od6b0qiK74ShMssu7Qx6CxXKdjTZ0jRXSyQRsF3g/ckEKWPrPohXodyAQyyC
okUyLKHPoE/q2SqaBMmYTn0ODLhk97kiGALfLRiVaDQ8BVBk/rwCTFkQP34V
JLNVMAtZxwFLQqMpkeuty7e3d1st/v/66po+3wzfvL24GZ7i59uX/Vev7Acl
d9y+vH776rT8VD45uL68HF6d8sNwVXuX1NZl//0Wb2/r+vXdxfVV/9UWo717
osRuU9Qb7PYAhYCoXSmmTwav//t/7u2LmrLb66GAFoWn92wfvoCkSni2NInX
8hXOYK3AqguDjLgKqHfjYBkVQQzkHaBkQk6NPADg+G//iJD507H+3Wi87O3/
QS7ghr2LBmbeRYJZ/UrtYQZiw6WGaSw0vesVSPvr7b/3vhu4Oxd/988xoLVu
947++Q8Kkaduq1eoiEx3pfq5pT46Ek9z6vQ6h0iKpOLuHnU/fyaVCTEw90eD
JRoinICtB88HMUlCssiQrkFDn80d+hYVpiQ1oh8hV6YiOvccTEGU97nhCTQq
4BcMECVGmrjjX598Oxzc6YvT4dXdxdnF8MZwZaFldyYYhMYDrT2MpyzIkK0T
sjItCmHDGHatgFb9KjxLQUGwYLkGAiUuIuCKwDBBCrOdO4lApyS9jWCjtsPO
rNPSk6tbHAgE4es+axitcsadDmuVS7RqcuTmKL6d0wWIqTqjBVMgQ+6dewpI
+BFsC2SCRFP+Kcg6WW4YgBEccuGdkxq1d/Q1Pl+DiAyFvIAULmGvUcacMbar
A1NK1LV5mhd0IJ5qhA+CNrhTk4ml4EjCB5zEYkkFr5AZMeIkqkFG3Pnm6wQm
v2chYW+2JmsJZuRGNBkZ0CE5phCFQOMKxALr6DM4mDAQwyoDlg6/aoRuVH+W
FSsgo4gn77+9e/nT1fXVEFQlRV9u39+CJRaKJVU5VTK4jYrAE4FVHBLQFe9p
4khIwCZUIyzEEta+y+FR8QIUyzssdGgEPpBJuCQXgigxFiJItx3dJ7D1QVMH
W5aRR9ld6WRFfh799uKUCPz84jRnFu9sho4Svi+AWjLAqXjdAZI7v70dfkSb
K5zQ0TJ94rniwPBru//6AmgENKJoieDxR1XmXI23ojzYiFwQUcFqmpx1WA6F
QGLUuR0OfoKZrL1HpA7ET9u+Oru9339tH+L12a0rnO/FJF0gZ0CtHDSh6saB
7tMY1xgVHlMTL6bChS6XMelK7HahOTVIPLRgChh1tELToG9tAEYqsrMYAE14
7RxiRYEV+IIuvGKlD80FWMLae4o38ukTgKXNE7dLXvX5syop9YEUZoE0GnPo
w6hzLqsvy1xooxisrtCJeywO9opWsdvd+/y5A8yJTB4zBJoMvD60K5BKlAcE
h4bRUAT5oJtOXZwqqiI2fZdDHAZ4oqsEnS0zHtBRdIEDIPJs2EVJODIl2I/J
BI4hC4jpAizQsMKzVP5hEAKHBgPcDTH87HAweJyFwWSt0H8APA136xrdJX52
QCtFroEnBGf4kK6At4LelQKd5rDUiWJkHc9RHXG2kSIqsiV0+3r/p8v+4OVP
A1C32B9jfEloXmyXsOwddfYOBJbGAxZZOSSmCmP561Iwwv0l9+cIhf70VTNi
GlPV9cAAjoxD5v/W1nPIQUQ7iWC1SQkgc5b0TJmsSSiRlTtNyWYHxarHckgW
QQ+LpCYVtyajjVpTiSDYNXRoyIupy14AcBM2fuxoYiEaWU+4AcrXeB6yFwhU
NY8yShK9Bs69USnQ29GknSbooRZJ0FJ8ZZbnLhdvkT+JfiGftmWfOyUQYU/k
yUa0BqYKxlQR+kwrSlhnJHXBepfLXeKTzP1UjftFhQWV1dcatls/vSw03j05
C0Xm/GakKCrnm4V4Y5XjKmR29ykcRrAYRWA7oopyS85mxmLmQW3AxBzWmbG5
DYwG9aRJCNgZ502HHyYUfAGjswGZmhQ+4dIK2TAQRTpLol/C8lSiGehxeA6g
w9lxENBIIlGyCh11ldfDeiKbBECmzQqj3m5ShcNi3CH/tyr5NiAzKSLwYMw+
ZXHfsde26RBH4Ty4j9JMdBqBzDLMEH3yxmNHJTma4q5BS8WZ2etn8BDd/U9A
F+vVTjMAYk48FgWAKMXKdWxOrO8TZePU1w/kGIiKG6Y1RwhagJH6zRRTIRCR
My15SHuqgnKJhQi2FM9mS9Udea7aiTI72kgEGANbw5BJ++otmNhLG78xijF6
z5+iKesGTVm4nELX2fonlDmIf5e35z+BlXgxPG2RaoDrsD/SKMObm+sbFqeg
Z+CO/N/vrq+/H/a/I7eDwwlLEfbc2s8UIuqoCotHh4yeIn8fBeMPRtjW5P/E
MHvkXHOQ1SiKWaVR+DQ9zNJ4lgVJ4Toq6SzY+YtHxE87UyhR802AKMrdR6ra
4APsdBEG7DZGqM7TuCKK0zgarysil659RrvZVUutxzBn4SFaoph97DsHtgAY
hT59g7rKITJ2pyOjinLUTiciRMfpErZQyJasQzxnJy5YcbyilomFWKx9gP2Y
E2ohY0CHLQgrwnr8mqfGBwkKMVJDhIpCnI7hsEAAFUS0dpuwDYFqnVRRWsqq
Kww1bLLlGxWARhUFAxlG73DMzlzCrM4BWDK2J0EHofyDoLu2WfqIyxdUMbQx
zOTCM6IcgwUr0DJpE8VD2qkeee00nR2KZaM2mhEUWCY+0bDrqLCaW0ddJ6wx
J0KHeLx8EEnqP2WWYaK/sopJS/1aRlU1S57IlPQjTEl9kSnpjUwJKQEQfYyq
d+5DgyYGQDjOhxbHJ60vwiIuHqQfygwnFSDKWrznH0grcLUaAxl49jHsbhFa
ixfRMsQgDx9BC2tdkhXOKIaDyukllI5iHSS5bwpaH8njbFcZttvfZIfqZgvO
NTUVT7bJnJS1CONjFrXBzBFXWC4naiO/AWFmGXpAEwIVWkAOjDx4lo6qRGMX
0WxeWIvlCSpwR12YEQjHgAimmCIBp4aaQBBj6hSvA6gqSwO0KoglSCzWKmCl
+TYFc0hWAoZAvJoQQ4TR8iJcip10SgkHHr5Z+xYX0zIWg65ZDCacqmrhVJR4
aTYhJSoFEW6d3uLasAa9p1s3mIZ4CJttAGPToVNQ+TydjG1Q4MOM7ojQ57S2
vuTNyp4Sfb1uculfaXLZrcEq0etGFuCjiAA4OMXkGx/kyyADgt1ooXmQxrv6
t1edHmtQkeXXRF6yxQ7qwTgqoQhaOK0N1hNv4fQJni5yzjquSlBNgw+MJeKc
VOicRKk5g8ESvr/ihGyha67iLJS0HsFt+D1XDd5Ej10YJyLO4HsRW8YnSJy4
7kL03IQ85de55xUU36FBWeU4cgWSRRYGhW8eBLn1CMs+RMiTP46B/JrNJmsD
eIkMHiobLatmF5BWz1keOapXi6igeA4zEJq9DE85/nq42/CIewQO5gLqth6A
IYwmPCoTiVFhEbhZGmvgDoUBhke3EszCNVP2IedRVBIOUDGhOd5haGLNkBeo
iUCAJwBxvgGkMRY0ckRx9uNilgV5UDN0A5rRmDl5wzUcsvHIgDIqOVf885I0
zkQGGyDovaGMU9xmepF6j9mu4aT0ElrEjHIBgLHqJoYh+GdMlnA4oXhrno4j
w11rUQZ2K3Ccw1pv5PNjFEJ8p/CIl8VgBGwqTqVHgiRf1LJaNhWxMTBil2oj
JJZPeBoOMiQ003w4kN7jYRkMM45woTlbIq4i4HDAmjmH58L6P5gwffXbVQzt
qRiq7rFme4mNxRGZ1yhliKO7gIbzeS381hGijFy+2Esxs4EN9GZxTH67MTmF
Z3IKSKXs5CKyb9sTB06DAGGt56LML4kob5DQ6Qrk1u1qiTwYB2TVyPh4jX2i
lJNkYYydBlNHV00d7Xm7lO+3fdTl2dFNeYesQ9CBRhk7lUvYtVcE4JxzPoHr
iUzzg7suEqC3aZXY9QFc4XRJlXJ0DBLBxEw5kJQa0xLoxXsYdUU7APD7jr4S
5TNbIaMKSWPTlTmVcTIZ1lZNB3CWwkZEFTCqVK6QK+ecREi4YZ+VUyPDBQnH
Woh8VKp0hTXkSiVy0miEsKovqTSI7w1YUarC6A5m14q5DZm45bslLBuC5mTz
lJ70cF3DJwnNpLrRPidsUMVmtmHy5Rr8QS1zCCjFvDB7JbPVdUTyFTI0yHoi
i5H3atNgKSMioW9+zMmFapTAD5R7h+xTOdozujDzfFVPWfBYG0camqMkQm+q
FmKw3guO0GEGh013dFxYZUolQ8ZbBbqvONsvtA+TmAFVEMQtO5LJB1wijvKd
V018BIEsro4G/Vlt+7Yse8fQpfIFFz8h/WJBwXdahMFRVAbISiDZDtOP4Xxz
kloN0zsAQBMS9GrKIWHBhzhM+RpYuBKvTfYFeW+Vj0vMpd0sIzBQpxFm6vd9
ywhzg9ib/sVzNnxV2XMm74sxg9jADRdL3JFgvON4QqZGarlJxt/EmrRJA0Mh
uAiyDw4v7ahqRJcToUqu5bJzwz/zDYG4MlHErJcjAqW5CPKS94OMAKRpGb5X
j7npGnHOxnjKlVVh4JwGxU18gWL4FyXGWhNLedrQKBwHqKBvFniSuIFpD0+T
dzUxVoapEUjK054sixc22vHsdQuuPCyKuLQ+qtKvJsac38plROwxcheA5/MU
LNQfwnCZc2RwExq6ItiIS8yAN4kqDCEUeOmqGKcSy5ScArwB/f9tYwR6+ZUV
j61QK/vy3OxSolYTLAi8koUnE7FqJmLtEzF5hUq3FzM+dsg7FFXxQ4rHt3Rf
1gqOWrXU0hIxD4F4/YQM67thbymytiwdhWWsM0RxiEi5dXvXv7mDO7Zgzg+Y
e4r8dGpomcmVFV/MysjnIDSUsanLCIzlNDYwiksnvbaQPRpcly1KeLKywHQM
cCO3/xjOP2OPgak0EK+miWsArgNigXk4x6ygYPyBLXj2yYnVh2MCLBfo9eDE
IkyptbajyZqy1MQ6Nyes+DtAoWB3l1v/suv+tc7jWs6TSWhCbdVkBgpiVMNh
yvHL2qw645g9cw1ABqhnInGcCxQJyb8xtWcoKHiHnHWIS8x5Zgs6ybnP/eAM
0rhVxbwoGQIAM53Ce6+Axc4KdlkyYVdoFUlMSsHfk/hQOvhkVebjRAVXbpG1
4KmjVBLBESlMGXFKgpzYDxGvyZv4GOZlVQ48AQeIj5lZEQGBR4IZzd4d9OJY
x8RorQChOLGmVEr8EIXnOiIgm1IWt+LCxPLIA1GrVqF8Nk/CH1aLxNIRoWZp
gZgaHFxNiVSc27pMC/6KSQFg+kuOHHMt6whhbQ1rpiocrqPeksHuOJg1FSm3
bFiRPSnz1NpjRDxcf+WgOEN2atC0dAaigW1r3KzaX1UyLBk2JONxclf+eJRE
ucR4Ezr2vpMcWxhdiAOtjMnKWxgzCIaf4wmKKGvPpjhODHewYeFN1Mhyz3KG
i9KfB9e/8q17wnlzKzPhzb87rkFy39QSnryUAJTFQZ70RBB/hfxqwWE7Xx1+
RxmzlbklF33D7K4qWTq0FRfpYmyymp/gLIa9qeWtZHMA+Sv0Uuu93fYoQn+Z
1GBR1SaGwUn1XDO1Ojm9JhZoVFkcZcMYuTuIGQI97myNmbsUFeMhiDDvwPNu
WlBUTNxpHNwDpGYm23eBtmN/iblC0UdAe1iTW7jbIWeRSViWfOLEDV3QbOjM
zss5MUcZVInCloomzTnaBh6cWm5N1lUU2/gt6MM/Ab9buCdmUtMIFkjBWACG
rtPF0gpQSbRMHCMqnSpvRC7FMZWYWBRO8TFQw8ekitF4GPsGcW3gi7qwqiQU
iJJjc0UrvNiRp5jDL/rLNMpyVKdsrdoM/X2SYMK2NUZp4MwxcAum5irjlA/J
CiH+imqHRCmBITB+UNamGYy0cC+viB6RejLlzVPqHrVRDcRzDJswz50ERYDl
1oqjc0auAJrLBnuHbbO7EUbBGDXZFuGacFEbJFOelgxMM1jXD8rPeC5tLGdf
tjCBBUOpiPiOmQcsMCxR0EkGZw8VP2yrfd1SXPKHCO9FcAnqG2pmLcWGi1Q1
XFQaZpy27a4rj2JO1AMUT8QDFCp0/zGDNqEKG/nayJ+b7mzm1ObOUCJ2Npl9
Q2D078+xnZhwtXxhA3dW7sQtw44lszloiOhcC1oHyl5rG8+Av3NZE03XaCzt
sSZEifPP9veMzcjRxLdIEi/0KUeebjkw9WVp2nBj82HxLG7wywamnCPzI9b/
V0+sVtDx207s7d1Z+4g8MxMTU2QXFeM/iBUYeuvFlobDwwg62bMkNPwnBShU
YM5CmzmpoiCscB5zkgcdSj38Z5s6zzU1tsS1Ui/CeYl8Up67DW/21iauFhmU
RWyg5NEHMUbxicDKEyxSZrba4mWCrCGTI2bW84DV3tZJa63PhLzalfJppxzE
V/Hu6mzSDe+hj5gD6VYprYXPOX3bRIjrpTa1IhsXEuyRUZI/z0MYDdVLszH2
b5MnWxLv0J1thGGNe5vBLUikIAQ3YKPCmcV52SaaXiaRgNx+fD2XQflBZcLM
clwmsEII5kQh/STiUYgl87m0slhhu5M2NcVQto2FKwfgNuxcYorujNpFtWAV
DklJ2YorNB1VOxFVzJwvd+AwionFc9yEVeVxeCd4yhqiaJoN8fbIlto7MpIP
l9mUKSQ3EwluYKUyfvqJGhOVuMIlbqrEQMpWFI9XiVvmbDlBhGcylTdcVqdM
JQfGoxOO2gKYZ1mwMGocmcRmJA69OiKZXOtcqEcqGh4t71ZUROmhAMfkzp8b
njQJl3G6prAu27TLIJGCAuuRoxYc43lKxZ1Vh4XmtNCv9JAaEVEiFyLZpW1G
44VuTZoH0ANx3tIFzqNx4r70GqiUQZmy0u+jZIKNMW6N4/HCFv0DCpgeP4At
Y6MKsfdetGwrab1SaZ+CiSNhFarUQJbRC/bgm74DdE9JP9ivSqk281y+ifLZ
KR9qkU5WMfC2tsk/ZVsYfr/oX/VZ7seozLHLsK2l6FySAb30QieMZMMGzJ/c
/hW4noaBJImQiRQbWOl7EDMpd+AxHmU3DHQeJjLbpjxFP0vRNkhAtHYH6rNj
oODIN+DfZBHBUYD0wOnJKTLjucKGnODcrdZqSh+vhKDEQ46IKylEtjKRFQkW
M4DZERfOVnK7pW5dspcqVbIO4YTJfZSlCX4+dm1PdYxWapaC3iNF3dq5FbcL
ROpa27ktoTV2HupM2LtDaSZtWGSlp4vtPJUFtlT/7dXFD9+8ipLVR4nN5KJh
8I5gMOnxggl+WFri8C7YsMl6EqaTU8Mo1oLINAqLh5DdPjBS1bD0XFWe2QXH
UZEIAKBbYE+kJ1DnLjeSj10xKhlbKPVrdcGwBta/DCRsoF8kCJ+U8TCaNjMd
iwwwQC1pXYrpU6cUBTdnPQLGqSquZUq0EnRhm6TwErE4DGs9sSaFiXN7ygAQ
DOIItXIOxksq58SYgJt4WFBqAOliq6RIAQRYSqn1dcIVqVTOgDa89eIDXAHi
oiiwZ5esRNt/p1TTMQ2v6gs39dmm4Y67yTIGIKDHLksEIxkIF/I1cwvcoWkR
ZnO5g9yErMygsPXYFiNl+dc+iMwANjDHsHBQpmMTihYYSZeghyzHSaOzvSck
moDbvAP2iWwZENe3HARvG8WqlKgIAIyOVtdJclqDVVZ54aXOYDNLSj5jGMZ8
tQiSNo6PhIPEXBKIFDFOwywzxTOClkj92IQuCqhzmM95sX0idudg6OTc5iUJ
mJ1YPy5yiqgoPWq886gkI89vwbm65PnOU7dHDpG6p+rkprZNi1YTiRPhdbpc
xZymVrJu4u1S6ivSopICmresjETY5iyRQmyqginnflYnHOYwyW3FBx2+sGRT
OOl1QCj7BSEcKZHOpgzp0sPSyAH1qygv6u4y9qxhViJnqsI42M4sWTf4tSho
SeyC3U8ctIaVWL+qRAE0P8zoTPrrYz4x0HGoRhUo7x4obsbJr7gj282jSweX
pWmxA7wmlnKyTHiM1UJsGJFYs5tVRChWZJgaVskx5mRLRl/TyYLFRYO/Bw7s
Tij0ndPSJZ9TDmSZWLKkXMPYyPGC0gCcgZAAMQzsWv9C/XYzNfcMxyUNr2yV
vJ97tRUlwVUa8aDpvt/bJRe95DX7PAgPzEsAQWjzHthnwHW3bxs4ybE+SQvb
jieT2lm6BaU80CByDwEQCHPPEdExLiAGrjb3lf31yIyk0bEjngzMsssWFdkK
OTp9jMhp6bUruOD6O9y1GHcI/ETLanFmTKJfr5I1/oQo2B8Md1gVr6UoUcY1
8oXXQLLpRKnBFxTGx2rAudqSE82wbttp47GiMjeR2CWCVFrP9H2Flrep2HZi
XkGJErRUMrHRPBP+b/V7h2ZQfmE7OaDn2tPA4VdjJvkHsohQH3A7+/khZ8BT
p62fcPNkDHJEvNIO4drEXRwyAx77QFlUjbvjhhHTAC0Ibsz3oGH94w+AOe78
WXgvto3aHty8QjZ2Pbh9vUM4HszouJh7Rp6ebKIbHNUktokay4OKU05CLDdV
mW9Bfr9Vzn6oaUEneW8NLGw/61dMYc/RFYiWT8cBCo/P2FD0bKCH1O/4WHum
T5RLSzTO7kFcJntb2rWyL8prosbhvLNBp2JEYZqSicbmtAKEOjeobGjCh2q3
9cR4fKueQsYspogWZN4AZhg3JrEt0wu7fYp9iFsmdcJ2pGUWmuZIvG67UmZm
z57v73K8MZSfl5z+Mq2t2pjXJeyoT14yYQ0KO0KKWKSOtxH3LDGp9zYZngYi
lUGK5qh/Mp0DrAfNvdcxYXOSFo40jx3vbbImVQ+M1hVmkfjHj8JMecl5a0DE
CaC6xITWdo0gBtift6CGqKBWg0DHbJp5kCuqO4WTYD8CZaFIex0n6a2sviQZ
SqvFamwJdlFaC0GDhCN6ncTBxY5iZpICw0DcOaTiUjgyVKgAFdmKITyi9APA
iiBOGRDWP1vDMOnqpaZhgB6anIL/E5M5HUzuidKK1IEyK3PVkRbBWoUfbUDI
NC0HrdHUP+Ka2d2g1LXb4VyVfczV25tX+P13psf2w8NDB8sSR/kEm3r/QalL
XChwRrxtkOIqyIU8QCYWzMJjURhKbZ8yFU1iToNqXlYP2z2RUrYyfgSKcZjC
ErOxIBvDrK/AKErwPpwWL++1xzFG/pSqcBtMzAatEXgb3npF9Vm0MDRQ1Fel
e2vg+3tMKX5zUjEH30gtjjcNYdzrzf4kL4R05KfSWH99va68JQWexiGPWSYr
SU+aepzZFJ9QDxVMcFaS4NyyoenGwhOpIqm/zoBMc1ejNBzWb0BADa+cPkAE
bacwByPyXiJcbnNJlbso1FrYYp2UCkFTS9aKg/GxclWh7KYmrg7izsm9cU9n
a46Pah1kj2jdYJzsjtLGZdImB9xaKWMXkzOSOgOLNrfBYae3B/18B0dcS1p6
kaooz1dhxUdnUtv8EJ1TCLIpM7yjMQ/NEeeYsBZg9mYKMnGAv6G+0TAnZa25
ypt+RHnLRhFoMFnNu9QpYSIOU5uGb/PXfn0+Pnns3QubkvErWS8tNYsotFDx
kXIitq2CdDL/4Hgoy5sTIz3nOe8OMcMjE31qqtuYIzBLZF+o11VKLCw3ScjH
9HrthjmOZF3NU/MQT3r1iNrnlLhUK1DVxgrUslyzTPFxq08f72ADcKGqRfaJ
O73NOVJhUeDpBajKFqBiZ51aFrmNP+ZhUfXnSpLLmv04ZgeKdaQVBoqvpX8R
G+WNVZzWgCutMuNwxIiTw93KssmGslzBl5HFiCEXwHBP/r7XY+3pZQ0tLaXg
yukWE4l3sjlXkVuqbKixaalSO6wXXzHTbcxwNPnG6tfmG+umfGPl5hs3t0As
Q3KUUg5Y8IBvophh9g25wsTxQt0DPaKnuAhxvVzcWR5D4QIvokrL+1gBZDYr
WbsWuLOwKAOLchedFmk0XkeZUhu21U9FmfDtt4spwjj26FL8UNKApeZILo1m
7iNm12fq10Qoe3FS4543mQk49SoZC3wXZRDA0CWW/nc5lq1WiePdstOlkmFg
0IVDvUTcVsWz7jywyZTnN2vRaZrDRKeYe5b0ZhWuf3W76zDUTZaHhfhjzXRG
a5Ny/4XSuy/0Y6GwGydE43W/w0ylnRMVRlZ7HVKKiPMqA8IkuBVzI/PU6WBU
byJkN4qn19QTyRI7AZ4bFjy1rRGBuHSWm/mzkGv9iop4YzpqauFYMnqngLBe
UUiWTW4bmWee77U8yUL4KE1yg9GAlXnXjc3EchPfqn2hKylLlewmjK240lTC
Dao5IUZ7CTEsZ0p93us9q2yqA5O7kygYlCM7uTEW3BzvIGdHecSOKPL6Tngp
N2VlimTNcC2CiYcAcqFriUwLttai3DaDmbRMP5xK6CKcKMfxyJYz6hj4C2/N
sCwJa2TcnggEDb79hrqOcJfCJVJcaFtSW5Zg+3H0cUumpsPJGRqJb7aWg9uQ
hCSRrIBblBhIO5lOqcLRuZCgZGFJ+QSnlwh+Gfe1CboSGjZgWTVT5wtoZl0a
9NaddsW6vi4TTW0UzZRImtAJpxfV3esSmHMSfykeRdBC1TuX2arOfykqt7qV
nycpHnnPWUZh8M1+/uquyhRMk3kpJqxJyUnxZUaxrcE2bcQIo2yAABtweOqv
9GU0qU9+Zxt/E4GohtL3NCo2NrZ2I6S1nlRO52Dl6H/EGcxmG2ieu/9z7ovt
NyNRO2yZE1QzyTY1mqmYWFgixb1Uqlm9tLvauRggcJk/9+4UNOFeGAsJmdCC
KZeO2BNpxDF6tOW1Q6XePFovQbdT96s4Ma0prL20odCkSj9OePBx0iFyeVd2
sBIXpds9nftHbmozY60ZzvrWkuBRjTQq09jGn6NGgBy+5KDRmGqNFbXdKbUT
fJSWVXrM+CEJKQYmTd5Gn1BXLhvOaHGTY/7oYoQRoqmkQ/AANYyQGuJNeT+s
0G1zGNIJJBvFTlEeTS0+Se42KQRFpo/vgPoZGAobPW7ow4m+tCRJySbW/Kro
JfV5Y4/RScRvl1F9cTFZM8UWK7sOJrcpdVOnMKfRmNX91k9qnOpnnhQmSbYS
xboxq/NHb+5WI0M6zKSUSyY/pbnZurUjHNvZNeHJn8B1GMTVFxXfQeiE7b1m
REp4DqDdPPoZSz7Jl0RJypwaYZOYytd3OAfAL54h45UYh6IOUuQCMBWksKKZ
Sai2yJeX/ZMmZa8kPraqaQ1AtvGwKgmY0tzm8Bk7RBA5tvE9roObVy2KpJFp
nUcLfPFlWTuQU+D0i2l0j7YFvJUAXM30ZB8PYk8b33oZP+J9a1EYKl4rZyMI
X9Mo4EFes7fxRWS4O3Y7AbOTEG0ZRmbHEALevEYQhNS42fH9pVYVFb8xLDg0
ZZs22aWh+9PmV7u5vXilNhfdOvyiRXrWqzl3Ow8d+P53mHSEWR9JOEuB+uhl
bvjsPb8Qk5K3UsLOXmevdKfDFwy040sf/beeuXW2Oee88ssrpWY2c7sv1Jq0
a/OOSAL5pem2XsmyzKuRj7ysjmbC+lV92tm7YWQR4Ds8HCRhuspjW9v3aON2
vzU8NYNoaAEv7/Eh5b2S1+7bZDu1HtiquZWhrjeC18EIvRjVnsIWq1f8Ar6v
OEO4MQ4UBUnQGAO6vbwo4z/IAl5/d/GDvqQkZCdjGg4Hx45yx48qMdkZeT35
xWq64cVqblqzeiSZ2tSdPHFFWwC/Gfq+1nobELeDLR8O4P+edbo7oD/9hbzW
6CbGT2XcufnvL8BnicGjNa7/ov5y3Ja/8tPmP/8eeFrfnZz2eNxo0oat23f2
mtNrl6j7FyTcNjzBK3nkVNgDxq+4oCKJRw+FX1xbOxenHMh6e7g5/28+G1qX
Kte1pTcdzdH/E0eza4/GK91unNs7Gnp6z326Ukv45af33af9srbH50aZ5Pmi
3CO1r9tqfD1IydSwMLsmd/LybYq112T579iQ1xbIK7woh6OhoXel0NBvl6fU
luxry02OIW3Y0YaCcYGpF5hXk6zIIJB+Sm6LKIzfmNceyzujsSc+ckJmOsI0
mAVSpZ6UKJOZTZ5NhzmV726M15XXU5Y1gPJmFCzoqNpwj267IdJs3ndVa4Sb
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
tlswlSZTJvtsDsv9P1NVJWbapgAA

-->

</rfc>
