<?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.26 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-opsawg-secure-tacacs-yang-06" category="std" consensus="true" submissionType="IETF" obsoletes="9105" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <front>
    <title abbrev="YANG for TACACS+ over TLS">A YANG Data Model for Terminal Access Controller Access-Control System Plus (TACACS+)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-secure-tacacs-yang-06"/>
    <author fullname="Mohamed Boucadair" role="editor">
      <organization>Orange</organization>
      <address>
        <email>mohamed.boucadair@orange.com</email>
      </address>
    </author>
    <author fullname="Bo Wu">
      <organization>Huawei Technologies</organization>
      <address>
        <email>mlana.wubo@huawei.com</email>
      </address>
    </author>
    <author fullname="Guangying Zheng">
      <organization>Huawei Technologies</organization>
      <address>
        <email>zhengguangying@huawei.com</email>
      </address>
    </author>
    <author fullname="Michael Wang">
      <organization>Huawei Technologies</organization>
      <address>
        <email>wangzitao@huawei.com</email>
      </address>
    </author>
    <date year="2025" month="April" day="01"/>
    <area>Operations and Management</area>
    <workgroup>Operations and Management Area Working Group</workgroup>
    <keyword>TLS</keyword>
    <keyword>device management</keyword>
    <keyword>network operator</keyword>
    <keyword>provider network</keyword>
    <keyword>AAA</keyword>
    <keyword>authentication</keyword>
    <keyword>authorization</keyword>
    <abstract>
      <?line 47?>

<t>This document defines a Terminal Access Controller Access-Control
   System Plus (TACACS+) client YANG module that augments the System
   Management data model, defined in RFC 7317, to allow devices to make
   use of TACACS+ servers for centralized Authentication, Authorization,
   and Accounting (AAA). Specifically, this document defines a YANG module for TACACS+ over TLS 1.3.</t>
      <t>This document obsoletes RFC 9105.</t>
    </abstract>
  </front>
  <middle>
    <?line 57?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The System Management data model <xref target="RFC7317"/> defines separate functionality to support local and Remote Authentication Dial In User Service (RADIUS) authentication:</t>
      <dl>
        <dt>User Authentication Model:</dt>
        <dd>
          <t>Defines a list of user names with
associated passwords and a configuration leaf to decide the order
in which local or RADIUS authentication is used.</t>
        </dd>
        <dt>RADIUS Client Model:</dt>
        <dd>
          <t>Defines a list of RADIUS servers used by a
 device for centralized user authentication.</t>
        </dd>
      </dl>
      <t><xref target="RFC9105"/> defines a YANG module ("ietf-system-tacacs-plus") that augments the System Management data model <xref target="RFC7317"/> for the management of Terminal Access Controller Access-Control System Plus (TACACS+) clients as an alternative to RADIUS servers <xref target="RFC2865"/>. Typically, the "ietf-system-tacacs-plus" module is used to configure a TACACS+ client on a device to support deployment scenarios with centralized authentication, authorization, and accounting servers.</t>
      <t>This document defines a YANG module for managing TACACS+ clients (<xref target="sec-module"/>), including TACACS+ over TLS 1.3 clients <xref target="I-D.ietf-opsawg-tacacs-tls13"/>. This document obsoletes <xref target="RFC9105"/>.</t>
      <t>The YANG module in this document conforms to the Network Management
   Datastore Architecture (NMDA) defined in <xref target="RFC8342"/>.</t>
      <section anchor="changes-since-rfc-9105">
        <name>Changes Since RFC 9105</name>
        <t>The following changes have been made to <xref target="RFC9105"/>:</t>
        <ul spacing="normal">
          <li>
            <t>Add support for TLS <xref target="I-D.ietf-opsawg-tacacs-tls13"/></t>
          </li>
          <li>
            <t>Add a constraint to ensure that the list of servers is unique per address/port number</t>
          </li>
          <li>
            <t>Update the description of 'address' to be consistent with the type</t>
          </li>
          <li>
            <t>Fix a must statement under 'tacacs-plus'</t>
          </li>
          <li>
            <t>Fix errors in the example provided in Appendix A of <xref target="RFC9105"/></t>
          </li>
          <li>
            <t>Add an example to illustrate the use of VRF</t>
          </li>
          <li>
            <t>Add new examples to illustrate the use of TACACS+TLS data nodes</t>
          </li>
        </ul>
        <t>Detailed YANG changes are listed in <xref target="sec-module"/>.</t>
      </section>
      <section anchor="editorial-note-to-be-removed-by-rfc-editor">
        <name>Editorial Note (To be removed by RFC Editor)</name>
        <ul empty="true">
          <li>
            <t>Note to the RFC Editor: This section is to be removed prior to publication.</t>
          </li>
        </ul>
        <t>This document contains placeholder values that need to be replaced with finalized values at the time of publication. This note summarizes all of the substitutions that are needed.</t>
        <t>Please apply the following replacements:</t>
        <ul spacing="normal">
          <li>
            <t>XXXX --&gt; the assigned RFC number for this I-D</t>
          </li>
          <li>
            <t>SSSS --&gt; the assigned RFC number for <xref target="I-D.ietf-opsawg-tacacs-tls13"/></t>
          </li>
          <li>
            <t>TBD  --&gt; the assigned port number in <xref section="7" sectionFormat="of" target="I-D.ietf-opsawg-tacacs-tls13"/></t>
          </li>
          <li>
            <t>2024-12-11 --&gt; the actual date of the publication of this document</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>The terminology for describing YANG data models is defined in
   <xref target="RFC7950"/>.</t>
      <t>The document uses the terms defined in <xref section="2" sectionFormat="of" target="I-D.ietf-opsawg-tacacs-tls13"/> and <xref section="3" sectionFormat="of" target="RFC8907"/>.</t>
      <t>'client' refers to TACACS+ client, while 'server' refers to TACACS+ server.</t>
      <section anchor="tree-diagrams">
        <name>Tree Diagrams</name>
        <t>The tree diagram used in this document follows the notation defined
   in <xref target="RFC8340"/>.</t>
      </section>
    </section>
    <section anchor="design-of-the-tacacs-data-model">
      <name>Design of the TACACS+ Data Model</name>
      <t>This module is used to configure a TACACS+ client on a device to
   support deployment scenarios with centralized authentication,
   authorization, and accounting servers.  Authentication is used to
   validate a user's username and password, authorization allows the
   user to access and execute commands at various privilege levels
   assigned to the user, and accounting keeps track of the activity of a
   user who has accessed the device.</t>
      <t>The "ietf-system-tacacs-plus" module augments the '/sys:system' path
   defined in the "ietf-system" module with the contents of the 'tacacs-plus'
   grouping.  Therefore, a device can use local, RADIUS, or
   TACACS+ authentication to validate users who attempt to access the
   device by several mechanisms, e.g., a command line interface or a
   web-based user interface.</t>
      <t>The 'server' list, which is directly under the 'tacacs-plus'
   container, holds a list of TACACS+ servers and uses 'server-type' to
   distinguish between Authentication, Authorization, and Accounting
   (AAA) services. The list of servers is for redundancy.</t>
      <t>When there are multiple interfaces connected to a TACACS+ client or
   server, the source address of outgoing TACACS+ packets could be
   specified, or the source address could be specified through the
   interface IP address setting or derived from the outbound interface
   from the local Forwarding Information Base (FIB). For a TACACS+
   server located in a Virtual Private Network (VPN), a VPN Routing and
   Forwarding (VRF) instance needs to be specified.</t>
      <t>The 'statistics' container under the 'server' list is a collection of
   read-only counters for sent and received messages from a configured
   server.</t>
      <t>The YANG module for TACACS+ client has the structure shown in <xref target="tree-overview"/>.</t>
      <figure anchor="tree-overview">
        <name>Tree Structure Overview</name>
        <artwork><![CDATA[
augment /sys:system:
  +--rw tacacs-plus
     +--rw client-credentials* [id] {credential-reference}?
     |  +--rw id                       string
     |  +--rw (auth-type)?
     |     +--:(certificate)
     |     |  ...
     |     +--:(raw-public-key) {tlsc:client-ident-raw-public-key}?
     |     |  ...
     |     +--:(tls13-epsk) {tlsc:client-ident-tls13-epsk}?
     |        ...
     +--rw server-credentials* [id] {credential-reference}?
     |  +--rw id                 string
     |  +--rw ca-certs!
     |  |  ...
     |  +--rw ee-certs!
     |  |  ...
     |  +--rw raw-public-keys! {tlsc:server-auth-raw-public-key}?
     |  |  ...
     |  +--rw tls13-epsks?       empty
     |          {tlsc:server-auth-tls13-epsk}?
     +--rw server* [name]
        +--rw name                           string
        +--rw server-type
        |       tacacs-plus-server-type
        +--rw domain-name?                   inet:domain-name
        +--rw sni-enabled?                   boolean
        +--rw address                        inet:host
        +--rw port?                          inet:port-number
        +--rw (security)
        |  +--:(tls)
        |  |  +--rw client-identity!
        |  |  |  +--rw (ref-or-explicit)?
        |  |  |     +--:(ref)
        |  |  |     |  +--rw credentials-reference?
        |  |  |     |          sys-tcs-plus:client-credentials-ref
        |  |  |     |          {credential-reference}?
        |  |  |     +--:(explicit)
        |  |  |        +--rw (auth-type)?
        |  |  |           +--:(certificate)
        |  |  |           |  ...
        |  |  |           +--:(raw-public-key)
        |  |  |           |     {tlsc:client-ident-raw-public-key}?
        |  |  |           |  ...
        |  |  |           +--:(tls13-epsk)
        |  |  |                 {tlsc:client-ident-tls13-epsk}?
        |  |  |              ...
        |  |  +--rw server-authentication
        |  |  |  +--rw (ref-or-explicit)?
        |  |  |     +--:(ref)
        |  |  |     |  +--rw credentials-reference?
        |  |  |     |          sys-tcs-plus:server-credentials-ref
        |  |  |     |          {credential-reference}?
        |  |  |     +--:(explicit)
        |  |  |        +--rw ca-certs!
        |  |  |        |  ...
        |  |  |        +--rw ee-certs!
        |  |  |        |  ...
        |  |  |        +--rw raw-public-keys!
        |  |  |        |       {tlsc:server-auth-raw-public-key}?
        |  |  |        |  ...
        |  |  |        +--rw tls13-epsks?             empty
        |  |  |                {tlsc:server-auth-tls13-epsk}
        |  |  +--rw hello-params {tlscmn:hello-params}?
        |  |     +--rw tls-versions
        |  |     |  +--rw min?   identityref
        |  |     |  +--rw max?   identityref
        |  |     +--rw cipher-suites
        |  |        +--rw cipher-suite*
        |  |                tlscsa:tls-cipher-suite-algorithm
        |  +--:(obfuscation)
        |     +--rw shared-secret?           string
        +--rw (source-type)?
        |  +--:(source-ip)
        |  |  +--rw source-ip?               inet:ip-address
        |  +--:(source-interface)
        |     +--rw source-interface?        if:interface-ref
        +--rw vrf-instance?
        |       -> /ni:network-instances/network-instance/name
        +--rw single-connection?             boolean
        +--rw timeout?                       uint16
        +--ro statistics
           +--ro discontinuity-time?    yang:date-and-time
           +--ro connection-opens?      yang:counter64
           +--ro connection-closes?     yang:counter64
           +--ro connection-aborts?     yang:counter64
           +--ro connection-failures?   yang:counter64
           +--ro connection-timeouts?   yang:counter64
           +--ro messages-sent?         yang:counter64
           +--ro messages-received?     yang:counter64
           +--ro errors-received?       yang:counter64
           +--ro sessions?              yang:counter64
           +--ro cert-errors?           yang:counter64
           +--ro rpk-errors?            yang:counter64
                   {tlsc:server-auth-raw-public-key}?
]]></artwork>
      </figure>
      <t>Specifically, the module is designed to cover the following key requirements specified in <xref target="I-D.ietf-opsawg-tacacs-tls13"/>:</t>
      <ul spacing="normal">
        <li>
          <t>TLS 1.3 <xref target="RFC8446"/> <bcp14>MUST</bcp14> be used for transport.</t>
        </li>
        <li>
          <t>Earlier TLS versions <bcp14>MUST NOT</bcp14> be used.</t>
        </li>
        <li>
          <t>The cipher suites offered or accepted <bcp14>SHOULD</bcp14> be configurable.</t>
        </li>
        <li>
          <t>Implementations <bcp14>MAY</bcp14> support Raw Public Keys (RPKs) and Pre-Shared Keys (PSKs).</t>
        </li>
        <li>
          <t>Implementations <bcp14>MUST</bcp14> support the ability to configure the server's domain name, so that it may be included in the TLS Server Name Indication (SNI) extension.</t>
        </li>
      </ul>
      <t>The following new data nodes are supported compared to <xref target="RFC9105"/>:</t>
      <dl>
        <dt>'client-credentials' and 'server-credentials':</dt>
        <dd>
          <t>Defines a set credentials that can be globally provisioned and then referenced under specific servers.</t>
        </dd>
        <dt>'domain-name':</dt>
        <dd>
          <t>Provides a domain name of the server per <xref section="3.3" sectionFormat="of" target="I-D.ietf-opsawg-tacacs-tls13"/>. This is the TLS TACACS+ server's domain name that is  included in the SNI extension. This domain name is distinct from the IP address/hostname used for the underlying transport connection.</t>
        </dd>
        <dt>'sni-enabled':</dt>
        <dd>
          <t>Controls activation of Server Name Indication (SNI) (<xref section="3" sectionFormat="of" target="RFC6066"/>). This parameter can be used only if a domain name is provided.</t>
        </dd>
        <dt>'client-identity':</dt>
        <dd>
          <t>Specifies the identity credentials that the client may present when
establishing a connection to a server. Client identities can be configured at the top level and then referenced for specific server instances. Alternatively, client identities can be configured explicitly under each server instance.</t>
        </dd>
        <dt>'server-authentication':</dt>
        <dd>
          <t>Specifies how a client authenticates servers. Server credentials can be configured at the top level and then referenced for specific server instances. Alternatively, client identities can be configured explicitly under each server instance.</t>
        </dd>
        <dt>'hello-params':</dt>
        <dd>
          <t>Controls TLS versions and cipher suites.</t>
        </dd>
        <dt>'discontinuity-time':</dt>
        <dd>
          <t>The time on the most recent occasion at which the client suffered a discontinuity
(a configuration action to reset all counters, re-initialization, etc.).</t>
        </dd>
        <dt>'cert-errors':</dt>
        <dd>
          <t>Number of connection failures due to certificate issues.</t>
        </dd>
        <dt>'rpk-errors':</dt>
        <dd>
          <t>Number of raw public key related connection failures.</t>
        </dd>
      </dl>
    </section>
    <section anchor="sec-module">
      <name>TACACS+ Client Module</name>
      <t>This YANG module uses types and groupings defined in <xref target="RFC6991"/>, <xref target="RFC8341"/>, <xref target="RFC8343"/>, <xref target="RFC8529"/>, <xref target="RFC9640"/>, <xref target="RFC9641"/>,
<xref target="RFC9642"/>, and <xref target="RFC9645"/>.</t>
      <t>The module augments <xref target="RFC7317"/>.</t>
      <t>The module also cites <xref target="RFC6520"/>, <xref target="RFC9257"/>, and <xref target="RFC9258"/>.</t>
      <sourcecode type="yang"><![CDATA[
<CODE BEGINS> file "ietf-system-tacacs-plus@2025-01-23.yang"
module ietf-system-tacacs-plus {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-system-tacacs-plus";
  prefix sys-tcs-plus;

  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 6991: Common YANG Data Types";
  }
  import ietf-yang-types {
    prefix yang;
    reference
      "RFC 6991: Common YANG Data Types";
  }
  import ietf-system {
    prefix sys;
    reference
      "RFC 7317: A YANG Data Model for System Management";
  }
  import ietf-netconf-acm {
    prefix nacm;
    reference
      "RFC 8341: Network Configuration Access Control Model";
  }
  import ietf-interfaces {
    prefix if;
    reference
      "RFC 8343: A YANG Data Model for Interface Management";
  }
  import ietf-network-instance {
    prefix ni;
    reference
      "RFC 8529: YANG Data Model for Network Instances";
  }
  import ietf-crypto-types {
    prefix ct;
    reference
      "RFC 9640: YANG Data Types and Groupings for Cryptography";
  }
  import ietf-truststore {
    prefix ts;
    reference
      "RFC 9641: A YANG Data Model for a Truststore";
  }
  import ietf-keystore {
    prefix ks;
    reference
      "RFC 9642: A YANG Data Model for a Keystore";
  }
  import ietf-tls-common {
    prefix tlscmn;
    reference
      "RFC 9645: YANG Groupings for TLS Clients and TLS Servers";
  }
  import ietf-tls-client {
    prefix tlsc;
    reference
      "RFC 9645: YANG Groupings for TLS Clients and TLS Servers";
  }

  organization
    "IETF OPSAWG (Operations and Management Area Working Group)";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>

     Editor:   Mohamed Boucadair
               <mailto:mohamed.boucadair@orange.com>
     Author:   Bo Wu
               <lana.wubo@huawei.com>
     Author:   Guangying Zheng
               <zhengguangying@huawei.com>";
  description
    "This module provides configuration of TACACS+ clients.

     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
     'MAY', and 'OPTIONAL' in this document are to be interpreted as
     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
     they appear in all capitals, as shown here.

     Copyright (c) 2025 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Revised BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX; see the
     RFC itself for full legal notices.";

  revision 2025-01-23 {
    description
      "This revision adds TLS support. Specifically, this revision
       adds:
         - a new feature 'credential-reference'
         - a new container 'client-credentials'
         - a new container 'server-credentials'
         - a new leaf 'domain-name'
         - a new leaf 'sni-enabled'
         - TLS as a new security choice
         - a new leaf 'discontinuity-time' under 'statistics'
         - a new leaf 'cert-errors' under 'statistics'
         - a new leaf 'rpk-errors' under 'statistics'
       Also, this revision:
         - updates the reference of 'tacacs-plus' identity
           to also cite RFC SSSS
         - fixes a must statement under 'tacacs-plus' by adding
           a missing prefix
         - requires that the servers list must be unique per
           address/port number.
         - updates the description of the 'name' under 'server'
           list to better reflect the intended use and clarifies
           the difference with the new domain-name
         - updates the description of the 'address' to be
           consistent with the type
         - removes the default statement for the 'port' under
           'server' list because a distinct default port number
           is used for TACACS+TLS
         - updates the 'port' leaf under 'server' list to enumerate
           the various TACACS+ default port numbers
         - added a constraint on the VRF with 'source-interface'
           is also provided
         - updates the description of timeout to remove redundant
           text with the default statement";
    reference
      "RFC XXXX: A YANG Data Model for Terminal Access Controller
                 Access-Control System Plus (TACACS+)";
  }

  revision 2021-08-05 {
    description
      "Initial revision.";
    reference
      "RFC 9105: A YANG Data Model for Terminal Access Controller
                 Access-Control System Plus (TACACS+)";
  }

  feature credential-reference {
    description
      "Indicates whether service credentials references are
       supported.";
  }

  identity tacacs-plus {
    base sys:authentication-method;
    description
      "Indicates AAA operation using TACACS+.";
    reference
      "RFC SSSS: Terminal Access Controller Access-Control
                 System Plus (TACACS+) over TLS 1.3
       RFC 8907: The TACACS+ Protocol";
  }

  typedef tacacs-plus-server-type {
    type bits {
      bit authentication {
        description
          "Indicates that the TACACS+ server is providing
           authentication services.";
      }
      bit authorization {
        description
          "Indicates that the TACACS+ server is providing
           authorization services.";
      }
      bit accounting {
        description
          "Indicates that the TACACS+ server is providing accounting
           services.";
      }
    }
    description
      "The type can be set to authentication, authorization,
       accounting, or any combination of the three types.";
  }

  typedef client-credentials-ref {
    type leafref {
      path "/sys:system/sys-tcs-plus:tacacs-plus"
         + "/sys-tcs-plus:client-credentials/sys-tcs-plus:id";
    }
    description
      "Defines a type to reference client credentials.";
  }

  typedef server-credentials-ref {
    type leafref {
      path "/sys:system/sys-tcs-plus:tacacs-plus"
         + "/sys-tcs-plus:server-credentials/sys-tcs-plus:id";
    }
    description
      "Defines a type to reference server credentials.";
  }

  grouping statistics {
    description
      "Grouping for TACACS+ statistics attributes, including TLS
       specifics.";
    container statistics {
      config false;
      description
        "A collection of server-related statistics objects.";
      leaf discontinuity-time {
        type yang:date-and-time;
        description
          "The time on the most recent occasion at which the
           TACACS+ client suffered a discontinuity. Examples of 
           discontinuity can be a configuration action to reset
           all counters, re-initialization of the system, or any
           other events that prevent reliable contiguous tracking
           of counters.";
      }
      leaf connection-opens {
        type yang:counter64;
        description
          "Number of new connection requests sent to the server,
           e.g., socket open.";
      }
      leaf connection-closes {
        type yang:counter64;
        description
          "Number of connection close requests sent to the server,
           e.g., socket close.";
      }
      leaf connection-aborts {
        type yang:counter64;
        description
          "Number of aborted connections to the server. These do
           not include connections that are closed gracefully.";
      }
      leaf connection-failures {
        type yang:counter64;
        description
          "Number of connection failures to the server.";
      }
      leaf connection-timeouts {
        type yang:counter64;
        description
          "Number of connection timeouts to the server.";
      }
      leaf messages-sent {
        type yang:counter64;
        description
          "Number of messages sent to the server.";
      }
      leaf messages-received {
        type yang:counter64;
        description
          "Number of messages received from the server.";
      }
      leaf errors-received {
        type yang:counter64;
        description
          "Number of error messages received from the server.";
      }
      leaf sessions {
        type yang:counter64;
        description
          "Number of TACACS+ sessions completed with the server.
           If the Single Connection Mode was not enabled, the number
           of sessions is the same as the number of
           'connection-closes'. If the Single Connection Mode was
           enabled, a single TCP connection may contain multiple
           TACACS+ sessions.";
      }
      leaf cert-errors {
        type yang:counter64;
        description
          "Number of connection failures due to certificate
           issues.";
      }
      leaf rpk-errors {
        if-feature "tlsc:server-auth-raw-public-key";
        type yang:counter64;
        description
          "Number of RPK-related connection failures.";
      }
    }
  }

  grouping certificate {
    description
      "Specifies a certificate that can be used for client
       identity.";
    uses "ks:inline-or-keystore-end-entity-cert-with-key-"
       + "grouping" {
      refine "inline-or-keystore/inline/inline-definition" {
        must 'not(public-key-format) or derived-from-or-self'
           + '(public-key-format, "ct:subject-public-key-'
           + 'info-format")';
      }
      refine "inline-or-keystore/central-keystore/"
           + "central-keystore-reference/asymmetric-key" {
        must 'not(deref(.)/../ks:public-key-format) or '
           + 'derived-from-or-self(deref(.)/../ks:public-'
           + 'key-format, "ct:subject-public-key-info-'
           + 'format")';
      }
    }
  }

  grouping raw-private-key {
    description
      "Specifies raw private key (RPK) that can be used for
       client identity.";
    uses ks:inline-or-keystore-asymmetric-key-grouping {
      refine "inline-or-keystore/inline/inline-definition" {
        must 'not(public-key-format) or derived-from-or-self'
           + '(public-key-format, "ct:subject-public-key-'
           + 'info-format")';
      }
      refine "inline-or-keystore/central-keystore/"
           + "central-keystore-reference" {
        must 'not(deref(.)/../ks:public-key-format) or '
           + 'derived-from-or-self(deref(.)/../ks:public-'
           + 'key-format, "ct:subject-public-key-info-format")';
      }
    }
  }

  grouping tls13-epsk {
    description
      "An External Pre-Shared Key (EPSK) is established or
       provisioned out-of-band, i.e., not from a TLS connection.
       An EPSK is a tuple of (Base Key, External Identity, Hash).
       When Pre-Shared Keys (PSKs) are provisioned out of band,
       the PSK identity and the Key Derivation Function (KDF) hash
       algorithm to be used with the PSK must also be
       provisioned.";
    reference
      "RFC 8446: The Transport Layer Security (TLS) Protocol
                 Version 1.3, Section 4.2.11
       RFC 9257: Guidance for External Pre-Shared Key (PSK) Usage
                 in TLS, Section 6
       RFC 9258: Importing External Pre-Shared Keys (PSKs) for
                 TLS 1.3, Section 5.1";
    uses ks:inline-or-keystore-symmetric-key-grouping;
    leaf external-identity {
      type string;
      mandatory true;
      description
        "A sequence of bytes used to identify an EPSK. A label for
         a pre-shared key established externally.";
      reference
        "RFC 8446: The Transport Layer Security (TLS) Protocol
                   Version 1.3, Section 4.2.11
         RFC 9257: Guidance for External Pre-Shared Key (PSK)
                   Usage in TLS, Section 4.1";
    }
    leaf hash {
      type tlscmn:epsk-supported-hash;
      default "sha-256";
      description
        "For externally established PSKs, the Hash algorithm must be
         set when the PSK is established or default to SHA-256 if no
         such algorithm is defined.";
      reference
        "RFC 8446: The Transport Layer Security (TLS) Protocol
                   Version 1.3, Section 4.2.11";
    }
    leaf context {
      type string;
      description
        "The context used to determine the EPSK, if any exists. For
         example, context may include information about peer roles or
         identities to mitigate Selfie-style reflection attacks.";
      reference
        "RFC 9258: Importing External Pre-Shared Keys (PSKs) for
                   TLS 1.3, Section 5.1 ";
    }
    leaf target-protocol {
      type uint16;
      description
        "Specifies the protocol for which a PSK is imported for
         use.";
      reference
        "RFC 9258: Importing External Pre-Shared Keys (PSKs) for
                   TLS 1.3, Section 3 ";
    }
    leaf target-kdf {
      type uint16;
      description
        "The KDF for which a PSK is imported for use.";
      reference
        "RFC 9258: Importing External Pre-Shared Keys (PSKs) for
                   TLS 1.3, Section 3";
    }
  }

  grouping client-identity {
    description
      "Identity credentials that a TLS client may present when
       establishing a connection to a TLS server. When configured,
       and requested by the TLS server when establishing a TLS
       session, these credentials are passed in the Certificate
       message.";
    reference
      "RFC 8446: The Transport Layer Security (TLS) Protocol
                 Version 1.3, Section 4.4.2";
    nacm:default-deny-write;
    choice auth-type {
      default "certificate";
      description
        "A choice amongst authentication types.";
      case certificate {
        container certificate {
          description
            "Specifies the client identity using a certificate.";
          uses certificate;
        }
      }
      case raw-public-key {
        if-feature "tlsc:client-ident-raw-public-key";
        container raw-private-key {
          description
            "Specifies the client identity using RPK.";
          uses raw-private-key;
        }
      }
      case tls13-epsk {
        if-feature "tlsc:client-ident-tls13-epsk";
        container tls13-epsk {
          description
            "An EPSK is established or provisioned out-of-band.";
          uses tls13-epsk;
        }
      }
    }
  }

  grouping client-identity-with-ref {
    description
      "Identity credentials that the TLS client may present when
       establishing a connection to a TLS server. When configured,
       and requested by the TLS server when establishing a TLS
       session, these credentials are passed in the Certificate
       message.";
    choice ref-or-explicit {
      description
        "A choice between a reference or explicit configuration.";
      case ref {
        description
          "Provides a reference to a client identity.";
        leaf credentials-reference {
          if-feature "credential-reference";
          type sys-tcs-plus:client-credentials-ref;
          description
            "Specifies the client credentials reference.";
        }
      }
      case explicit {
        description
          "Explicit configuration of the client identity.";
        uses client-identity;
      }
    }
  }

  grouping server-authentication {
    description
      "Specifies how a TLS client can authenticate TLS servers.
       Any combination of credentials is additive and unordered.";
    nacm:default-deny-write;
    container ca-certs {
      presence "Indicates that Certification Authority (CA) 
                certificates have been configured.
                This statement is present so the mandatory descendant
                nodes do not imply that this node must be 
                configured.";
      description
        "A set of CA certificates used by the TLS client to
         authenticate TLS server certificates.
         A server certificate is authenticated if it has a valid
         chain of trust to a configured CA certificate.";
      reference
        "RFC 9641: A YANG Data Model for a Truststore";
      uses ts:inline-or-truststore-certs-grouping;
    }
    container ee-certs {
      presence "Indicates that End Entity (EE) certificates have been
                configured.
                This statement is present so the mandatory descendant
                nodes do not imply that this node must be 
                configured.";
      description
        "A set of server certificates (i.e., end entity certificates)
         used by a TLS client to authenticate certificates
         presented by TLS servers. A server certificate is
         authenticated if it is an exact match to a configured server
         certificate.";
      reference
        "RFC 9641: A YANG Data Model for a Truststore";
      uses ts:inline-or-truststore-certs-grouping;
    }
    container raw-public-keys {
      if-feature "tlsc:server-auth-raw-public-key";
      presence "Indicates that raw public keys have been configured.
                This statement is present so the mandatory descendant
                nodes do not imply that this node must be
                configured.";
      description
        "A set of raw public keys used by a TLS client to
         authenticate raw public keys presented by the TLS server.
         A raw public key is authenticated if it is an exact match
         to a configured raw public key.";
      reference
        "RFC 9641: A YANG Data Model for a Truststore";
      uses ts:inline-or-truststore-public-keys-grouping {
        refine "inline-or-truststore/inline/inline-definition/"
             + "public-key" {
          must 'derived-from-or-self(public-key-format,'
             + ' "ct:subject-public-key-info-format")';
        }
        refine "inline-or-truststore/central-truststore/"
             + "central-truststore-reference" {
          must 'not(deref(.)/../ts:public-key/ts:public-key-'
             + 'format[not(derived-from-or-self(., "ct:subject-'
             + 'public-key-info-format"))])';
        }
      }
    }
    leaf tls13-epsks {
      if-feature "tlsc:server-auth-tls13-epsk";
      type empty;
      description
        "Indicates that a TLS client can authenticate TLS servers
         using configured EPSKs.";
    }
  }

  grouping server-authentication-with-ref {
    description
      "Specifies how a TLS client can authenticate TLS servers.";
    choice ref-or-explicit {
      description
        "A choice between a reference of explicit configuration.";
      case ref {
        description
          "Provides a reference to server credentials.";
        leaf credentials-reference {
          if-feature "credential-reference";
          type sys-tcs-plus:server-credentials-ref;
          description
            "Specifies the server credentials reference.";
        }
      }
      case explicit {
        description
          "Explicit configuration of a server credentials.";
        uses server-authentication;
      }
    }
  }

  grouping hello-params {
    description
      "Configurable parameters for the TLS Hello message.";
    reference
      "RFC SSSS: Terminal Access Controller Access-Control
                 System Plus (TACACS+) over TLS 1.3,
                 Section 5.1";
    nacm:default-deny-write;
    uses tlscmn:hello-params-grouping {
      refine "tls-versions/min" {
        must "not(derived-from-or-self(current(), "
           + "'tlscmn:tls12'))" {
          error-message
            "TLS 1.2 is not supported as min TLS version";
        }
      }
      refine "tls-versions/max" {
        must "not(derived-from-or-self(current(), "
           + "'tlscmn:tls12'))" {
          error-message
            "TLS 1.2 is not supported as max TLS version";
        }
      }
    }
  }

  grouping tls-client {
    description
      "A grouping for configuring a TLS client without any
       consideration for how an underlying TCP session is
       established.";
    container client-identity {
      presence "Indicates that a TLS-level client identity has been
                configured.
                This statement is present so the mandatory descendant
                do not imply that this node must be configured.";
      description
        "Identity credentials that a TLS client may present when
         establishing a connection to a TLS server.";
      uses client-identity-with-ref;
    }
    container server-authentication {
      must 'credentials-reference or ca-certs or ee-certs or '
         + 'raw-public-keys or tls13-epsks';
      description
        "Specifies how a TLS client can authenticate TLS servers.";
      uses server-authentication-with-ref;
    }
    container hello-params {
      if-feature "tlscmn:hello-params";
      description
        "Configurable parameters for the TLS Hello message.";
      uses hello-params;
    }
  }

  grouping tacacs-plus {
    description
      "Grouping for TACACS+ attributes.";
    container tacacs-plus {
      must "not(derived-from-or-self(../sys:authentication"
         + "/sys:user-authentication-order, "
         + "'sys-tcs-plus:tacacs-plus'))"
         + " or bit-is-set(server/server-type,'authentication')" {
        error-message
          "When 'tacacs-plus' is used as a system authentication
           method, a TACACS+ authentication server must be
           configured.";
        description
          "When 'tacacs-plus' is used as an authentication method,
           a TACACS+ server must be configured.";
      }
      description
        "Container for TACACS+ configurations and operations.";
      list client-credentials {
        if-feature "credential-reference";
        key "id";
        description
          "Identity credentials that a TLS client may present
           when establishing a connection to a TLS server.
           A list of client credentials that can be referenced
           when configuring server instances.";
        nacm:default-deny-write;
        leaf id {
          type string;
          description
            "An identifier that uniquely identifies a client 
             identity within the device configuration.";
        }
        uses client-identity;
      }
      list server-credentials {
        if-feature "credential-reference";
        key "id";
        description
          "Identity credentials that a TLS client may present
           when establishing a connection to a TLS server.";
        nacm:default-deny-write;
        leaf id {
          type string;
          description
            "An identifier that uniquely identify server
             credentials within the device configuration.";
        }
        uses server-authentication;
      }
      list server {
        key "name";
        unique "address port";
        ordered-by user;
        description
          "List of TACACS+ servers used by the device.";
        leaf name {
          type string;
          description
            "A name that is used to uniquely identify a TACACS+
             server within the device configuration.
             This name is not to be confused with the domain-name.";
        }
        leaf server-type {
          type tacacs-plus-server-type;
          mandatory true;
          description
            "Server type: authentication/authorization/accounting and
             various combinations.";
        }
        leaf domain-name {
          type inet:domain-name;
          description
            "Provides a domain name of the TACACS+ server.";
          reference
            "RFC SSSS: Terminal Access Controller Access-Control
                       System Plus (TACACS+) over TLS 1.3,
                       Section 3.4.2";
        }
        leaf sni-enabled {
          type boolean;
          must '../domain-name' {
            error-message
              "A domain name must be provided to make use of Server
               Name Indication (SNI).";
          }
          description
            "Enables the use of SNI, when set to true. Disables the
             use of SNI, when set to false.";
          reference
            "RFC 6066: Transport Layer Security (TLS) Extensions:
                       Extension Definitions, Section 3
             RFC SSSS: Terminal Access Controller Access-Control
                       System Plus (TACACS+) over TLS 1.3,
                       Section 3.4.2";
        }
        leaf address {
          type inet:host;
          mandatory true;
          description
            "The IP address or name of the TACACS+ server.";
        }
        leaf port {
          type inet:port-number;
          description
            "The port number of TACACS+ server port number.
             Default port number for legacy TACACS+ is 49,
             while it is TBD for TACACS+TLS.";
        }
        choice security {
          mandatory true;
          description
            "Security mechanism between TACACS+ client and server.";
          case tls {
            description
              "TLS is used to secure TACACS+ exchanges.";
            reference
              "RFC SSSS: Terminal Access Controller Access-Control
                         System Plus (TACACS+) over TLS 1.3";
            uses tls-client;
          }
          case obfuscation {
            leaf shared-secret {
              type string {
                length "1..max";
              }
              description
                "The shared secret, which is known to both the
                 TACACS+ client and server. TACACS+ server
                 administrators SHOULD configure a shared secret with
                 a minimum length of 16 characters.
                 It is highly recommended that this shared secret is
                 at least 32 characters long and sufficiently complex
                 with a mix of different character types,
                 i.e., upper case, lower case, numeric, and
                 punctuation.  Note that this security mechanism is
                 best described as 'obfuscation' and not 'encryption'
                 as it does not provide any meaningful integrity,
                 privacy, or replay protection.";
              reference
                "RFC 8907: The TACACS+ Protocol";
              nacm:default-deny-all;
            }
          }
        }
        choice source-type {
          description
            "The source address type for outbound TACACS+ packets.";
          case source-ip {
            leaf source-ip {
              type inet:ip-address;
              description
                "Specifies the source IP address for TACACS+ outbound
                 packets.";
            }
          }
          case source-interface {
            leaf source-interface {
              type if:interface-ref;
              description
                "Specifies the interface from which the IP address
                 is derived for use as the source for outbound
                 TACACS+ packets.";
            }
          }
        }
        leaf vrf-instance {
          type leafref {
            path "/ni:network-instances/ni:network-instance/ni:name";
          }
          must "(not(../source-interface)) or "
             + "(current() = /if:interfaces/if:interface"
             + "[if:name = current()/../source-interface]"
             + "/ni:bind-ni-name)" {
            error-message
              "VRF instance must match the network instance of the
               source interface.";
          }
          description
            "Specifies the VPN Routing and Forwarding (VRF) instance
             to use to communicate with the TACACS+ server.
             If 'source-interface' is configured, this value MUST 
             match the network instance bound to the source interface
             (via bind-ni-name).";
          reference
            "RFC 8529: YANG Data Model for Network Instances";
        }
        leaf single-connection {
          type boolean;
          default "false";
          description
            "Indicates whether the Single Connection Mode is enabled
             for the server.";
          reference
            "RFC 8907: The TACACS+ Protocol, Section 4.3";
        }
        leaf timeout {
          type uint16 {
            range "1..max";
          }
          units "seconds";
          default "5";
          description
            "The number of seconds that the device will wait for a
             response from each TACACS+ server before trying with a
             different server.";
        }
        uses statistics;
      }
    }
  }

  augment "/sys:system" {
    description
      "Augments the system model with the tacacs-plus data nodes.";
    uses tacacs-plus;
  }
}
<CODE ENDS>
]]></sourcecode>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This section is modeled after the template described in <xref section="3.7" sectionFormat="of" target="I-D.ietf-netmod-rfc8407bis"/>.</t>
      <t>The "ietf-ac-common" YANG module defines a data model that is
designed to be accessed via YANG-based management protocols, such as
NETCONF <xref target="RFC6241"/> and RESTCONF <xref target="RFC8040"/>. These protocols have to
use a secure transport layer (e.g., SSH <xref target="RFC4252"/>, TLS <xref target="RFC8446"/>, and
QUIC <xref target="RFC9000"/>) and have to use mutual authentication.</t>
      <t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/>
   provides the means to restrict access for particular NETCONF or
   RESTCONF users to a preconfigured subset of all available NETCONF or
   RESTCONF protocol operations and content.</t>
      <t>There are a number of data nodes defined in this YANG module that are
writable/creatable/deletable (i.e., "config true", which is the
default).  All writable data nodes are likely to be reasonably
sensitive or vulnerable in some network environments.  Write
operations (e.g., edit-config) and delete operations to these data
nodes without proper protection or authentication can have a negative
effect on network operations.  The following subtrees and data nodes
have particular sensitivities/vulnerabilities:</t>
      <dl>
        <dt>'server':</dt>
        <dd>
          <t>This list contains the data nodes used
to control the TACACS+ servers used by the device. Unauthorized
access to this list could enable an attacker to assume complete
control over the device by pointing to a compromised TACACS+
server, or to modify the counters to hide attacks against the
device.</t>
        </dd>
        <dt>'shared-secret':</dt>
        <dd>
          <t>This leaf controls the key
known to both the TACACS+ client and server. Unauthorized access
to this leaf could make the device vulnerable to attacks;
therefore, it has been restricted using the "default-deny-all"
access control defined in <xref target="RFC8341"/>.  When setting, it is highly
recommended that the leaf is at least 32 characters long and
sufficiently complex with a mix of different character types,
i.e., upper case, lower case, numeric, and punctuation.</t>
        </dd>
        <dt>'client-identity' and 'server-authentication':</dt>
        <dd>
          <t>Any modification to a key or reference to a key may dramatically alter the implemented security policy. For this reason, the NACM extension "default-deny-write" has been set.</t>
        </dd>
      </dl>
      <t>This YANG module uses groupings from other YANG modules that define nodes that may be considered sensitive or vulnerable in network environments. Refer to <xref section="5.3" sectionFormat="of" target="RFC9642"/> and <xref section="5.3" sectionFormat="of" target="RFC9645"/> for information as to which nodes may be considered sensitive or vulnerable in network environments.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to update the following URI in the "ns" subregistry within
   the "IETF XML Registry" <xref target="RFC3688"/>:</t>
      <artwork><![CDATA[
   URI:  urn:ietf:params:xml:ns:yang:ietf-system-tacacs-plus
   Registrant Contact:  The IESG.
   XML:  N/A; the requested URI is an XML namespace.
]]></artwork>
      <t>IANA is requested to register the following YANG module in the "YANG Module
   Names" registry <xref target="RFC6020"/> within the "YANG Parameters" registry group:</t>
      <artwork><![CDATA[
   Name:  ietf-system-tacacs-plus
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-system-tacacs-plus
   Prefix:  sys-tcs-plus
   Maintained by IANA?  N
   Reference:  RFC XXXX
]]></artwork>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7317">
          <front>
            <title>A YANG Data Model for System Management</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="August" year="2014"/>
            <abstract>
              <t>This document defines a YANG data model for the configuration and identification of some common system properties within a device containing a Network Configuration Protocol (NETCONF) server. This document also includes data node definitions for system identification, time-of-day management, user management, DNS resolver configuration, and some protocol operations for system management.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7317"/>
          <seriesInfo name="DOI" value="10.17487/RFC7317"/>
        </reference>
        <reference anchor="I-D.ietf-opsawg-tacacs-tls13">
          <front>
            <title>Terminal Access Controller Access-Control System Plus (TACACS+) over TLS 1.3</title>
            <author fullname="Thorsten Dahm" initials="T." surname="Dahm">
         </author>
            <author fullname="John Heasley" initials="J." surname="Heasley">
              <organization>NTT</organization>
            </author>
            <author fullname="dcmgash@cisco.com" initials="" surname="dcmgash@cisco.com">
              <organization>Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Andrej Ota" initials="A." surname="Ota">
              <organization>Google Inc.</organization>
            </author>
            <date day="13" month="February" year="2025"/>
            <abstract>
              <t>   The Terminal Access Controller Access-Control System Plus (TACACS+)
   Protocol provides device administration for routers, network access
   servers and other networked computing devices via one or more
   centralized TACACS+ Servers.  This document adds Transport Layer
   Security (TLS 1.3) support to TACACS+ and obsoletes former inferior
   security mechanisms.

   This document updates RFC8907.


              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-tacacs-tls13-18"/>
        </reference>
        <reference anchor="RFC8342">
          <front>
            <title>Network Management Datastore Architecture (NMDA)</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder"/>
            <author fullname="P. Shafer" initials="P." surname="Shafer"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="R. Wilton" initials="R." surname="Wilton"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>Datastores are a fundamental concept binding the data models written in the YANG data modeling language to network management protocols such as the Network Configuration Protocol (NETCONF) and RESTCONF. This document defines an architectural framework for datastores based on the experience gained with the initial simpler model, addressing requirements that were not well supported in the initial model. This document updates RFC 7950.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8342"/>
          <seriesInfo name="DOI" value="10.17487/RFC8342"/>
        </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="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC6066">
          <front>
            <title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <date month="January" year="2011"/>
            <abstract>
              <t>This document provides specifications for existing TLS extensions. It is a companion document for RFC 5246, "The Transport Layer Security (TLS) Protocol Version 1.2". The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6066"/>
          <seriesInfo name="DOI" value="10.17487/RFC6066"/>
        </reference>
        <reference anchor="RFC6991">
          <front>
            <title>Common YANG Data Types</title>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document introduces a collection of common data types to be used with the YANG data modeling language. This document obsoletes RFC 6021.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6991"/>
          <seriesInfo name="DOI" value="10.17487/RFC6991"/>
        </reference>
        <reference anchor="RFC8341">
          <front>
            <title>Network Configuration Access Control Model</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. This document defines such an access control model.</t>
              <t>This document obsoletes RFC 6536.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="91"/>
          <seriesInfo name="RFC" value="8341"/>
          <seriesInfo name="DOI" value="10.17487/RFC8341"/>
        </reference>
        <reference anchor="RFC8343">
          <front>
            <title>A YANG Data Model for Interface Management</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document defines a YANG data model for the management of network interfaces. It is expected that interface-type-specific data models augment the generic interfaces data model defined in this document. The data model includes definitions for configuration and system state (status information and counters for the collection of statistics).</t>
              <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t>
              <t>This document obsoletes RFC 7223.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8343"/>
          <seriesInfo name="DOI" value="10.17487/RFC8343"/>
        </reference>
        <reference anchor="RFC8529">
          <front>
            <title>YANG Data Model for Network Instances</title>
            <author fullname="L. Berger" initials="L." surname="Berger"/>
            <author fullname="C. Hopps" initials="C." surname="Hopps"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <author fullname="D. Bogdanovic" initials="D." surname="Bogdanovic"/>
            <author fullname="X. Liu" initials="X." surname="Liu"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>This document defines a network instance module. This module can be used to manage the virtual resource partitioning that may be present on a network device. Examples of common industry terms for virtual resource partitioning are VPN Routing and Forwarding (VRF) instances and Virtual Switch Instances (VSIs).</t>
              <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8529"/>
          <seriesInfo name="DOI" value="10.17487/RFC8529"/>
        </reference>
        <reference anchor="RFC9640">
          <front>
            <title>YANG Data Types and Groupings for Cryptography</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="October" year="2024"/>
            <abstract>
              <t>This document presents a YANG 1.1 (RFC 7950) module defining identities, typedefs, and groupings useful to cryptographic applications.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9640"/>
          <seriesInfo name="DOI" value="10.17487/RFC9640"/>
        </reference>
        <reference anchor="RFC9641">
          <front>
            <title>A YANG Data Model for a Truststore</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="October" year="2024"/>
            <abstract>
              <t>This document presents a YANG module for configuring bags of certificates and bags of public keys that can be referenced by other data models for trust. Notifications are sent when certificates are about to expire.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9641"/>
          <seriesInfo name="DOI" value="10.17487/RFC9641"/>
        </reference>
        <reference anchor="RFC9642">
          <front>
            <title>A YANG Data Model for a Keystore</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="October" year="2024"/>
            <abstract>
              <t>This document presents a YANG module called "ietf-keystore" that enables centralized configuration of both symmetric and asymmetric keys. The secret value for both key types may be encrypted or hidden. Asymmetric keys may be associated with certificates. Notifications are sent when certificates are about to expire.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9642"/>
          <seriesInfo name="DOI" value="10.17487/RFC9642"/>
        </reference>
        <reference anchor="RFC9645">
          <front>
            <title>YANG Groupings for TLS Clients and TLS Servers</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="October" year="2024"/>
            <abstract>
              <t>This document presents four YANG 1.1 modules -- three IETF modules and one supporting IANA module.</t>
              <t>The three IETF modules are "ietf-tls-common", "ietf-tls-client", and "ietf-tls-server". The "ietf-tls-client" and "ietf-tls-server" modules are the primary productions of this work, supporting the configuration and monitoring of TLS clients and servers.</t>
              <t>The IANA module is "iana-tls-cipher-suite-algs". This module defines YANG enumerations that provide support for an IANA-maintained algorithm registry.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9645"/>
          <seriesInfo name="DOI" value="10.17487/RFC9645"/>
        </reference>
        <reference anchor="RFC6520">
          <front>
            <title>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) Heartbeat Extension</title>
            <author fullname="R. Seggelmann" initials="R." surname="Seggelmann"/>
            <author fullname="M. Tuexen" initials="M." surname="Tuexen"/>
            <author fullname="M. Williams" initials="M." surname="Williams"/>
            <date month="February" year="2012"/>
            <abstract>
              <t>This document describes the Heartbeat Extension for the Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) protocols.</t>
              <t>The Heartbeat Extension provides a new protocol for TLS/DTLS allowing the usage of keep-alive functionality without performing a renegotiation and a basis for path MTU (PMTU) discovery for DTLS. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6520"/>
          <seriesInfo name="DOI" value="10.17487/RFC6520"/>
        </reference>
        <reference anchor="RFC9257">
          <front>
            <title>Guidance for External Pre-Shared Key (PSK) Usage in TLS</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="J. Hoyland" initials="J." surname="Hoyland"/>
            <author fullname="M. Sethi" initials="M." surname="Sethi"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document provides usage guidance for external Pre-Shared Keys (PSKs) in Transport Layer Security (TLS) 1.3 as defined in RFC 8446. It lists TLS security properties provided by PSKs under certain assumptions, then it demonstrates how violations of these assumptions lead to attacks. Advice for applications to help meet these assumptions is provided. This document also discusses PSK use cases and provisioning processes. Finally, it lists the privacy and security properties that are not provided by TLS 1.3 when external PSKs are used.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9257"/>
          <seriesInfo name="DOI" value="10.17487/RFC9257"/>
        </reference>
        <reference anchor="RFC9258">
          <front>
            <title>Importing External Pre-Shared Keys (PSKs) for TLS 1.3</title>
            <author fullname="D. Benjamin" initials="D." surname="Benjamin"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document describes an interface for importing external Pre-Shared Keys (PSKs) into TLS 1.3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9258"/>
          <seriesInfo name="DOI" value="10.17487/RFC9258"/>
        </reference>
        <reference anchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9105">
          <front>
            <title>A YANG Data Model for Terminal Access Controller Access-Control System Plus (TACACS+)</title>
            <author fullname="B. Wu" initials="B." role="editor" surname="Wu"/>
            <author fullname="G. Zheng" initials="G." surname="Zheng"/>
            <author fullname="M. Wang" initials="M." role="editor" surname="Wang"/>
            <date month="August" year="2021"/>
            <abstract>
              <t>This document defines a Terminal Access Controller Access-Control System Plus (TACACS+) client YANG module that augments the System Management data model, defined in RFC 7317, to allow devices to make use of TACACS+ servers for centralized Authentication, Authorization, and Accounting (AAA). Though being a standard module, this module does not endorse the security mechanisms of the TACACS+ protocol (RFC 8907), and TACACS+ be used within a secure deployment.</t>
              <t>The YANG module in this document conforms to the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9105"/>
          <seriesInfo name="DOI" value="10.17487/RFC9105"/>
        </reference>
        <reference anchor="RFC2865">
          <front>
            <title>Remote Authentication Dial In User Service (RADIUS)</title>
            <author fullname="C. Rigney" initials="C." surname="Rigney"/>
            <author fullname="S. Willens" initials="S." surname="Willens"/>
            <author fullname="A. Rubens" initials="A." surname="Rubens"/>
            <author fullname="W. Simpson" initials="W." surname="Simpson"/>
            <date month="June" year="2000"/>
            <abstract>
              <t>This document describes a protocol for carrying authentication, authorization, and configuration information between a Network Access Server which desires to authenticate its links and a shared Authentication Server. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2865"/>
          <seriesInfo name="DOI" value="10.17487/RFC2865"/>
        </reference>
        <reference anchor="RFC8907">
          <front>
            <title>The Terminal Access Controller Access-Control System Plus (TACACS+) Protocol</title>
            <author fullname="T. Dahm" initials="T." surname="Dahm"/>
            <author fullname="A. Ota" initials="A." surname="Ota"/>
            <author fullname="D.C. Medway Gash" initials="D.C." surname="Medway Gash"/>
            <author fullname="D. Carrel" initials="D." surname="Carrel"/>
            <author fullname="L. Grant" initials="L." surname="Grant"/>
            <date month="September" year="2020"/>
            <abstract>
              <t>This document describes the Terminal Access Controller Access-Control System Plus (TACACS+) protocol, which is widely deployed today to provide Device Administration for routers, network access servers, and other networked computing devices via one or more centralized servers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8907"/>
          <seriesInfo name="DOI" value="10.17487/RFC8907"/>
        </reference>
        <reference anchor="RFC8340">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution of the YANG language.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="215"/>
          <seriesInfo name="RFC" value="8340"/>
          <seriesInfo name="DOI" value="10.17487/RFC8340"/>
        </reference>
        <reference anchor="I-D.ietf-netmod-rfc8407bis">
          <front>
            <title>Guidelines for Authors and Reviewers of Documents Containing YANG Data Models</title>
            <author fullname="Andy Bierman" initials="A." surname="Bierman">
              <organization>YumaWorks</organization>
            </author>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization>Orange</organization>
            </author>
            <author fullname="Qin Wu" initials="Q." surname="Wu">
              <organization>Huawei</organization>
            </author>
            <date day="14" month="January" year="2025"/>
            <abstract>
              <t>   This memo provides guidelines for authors and reviewers of
   specifications containing YANG modules, including IANA-maintained
   modules.  Recommendations and procedures are defined, which are
   intended to increase interoperability and usability of Network
   Configuration Protocol (NETCONF) and RESTCONF protocol
   implementations that utilize YANG modules.  This document obsoletes
   RFC 8407.

   Also, this document updates RFC 8126 by providing additional
   guidelines for writing the IANA considerations for RFCs that specify
   IANA-maintained modules.  The document also updates RFC 6020 by
   clarifying how modules and their revisions are handled by IANA.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-netmod-rfc8407bis-22"/>
        </reference>
        <reference anchor="RFC6241">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6241"/>
          <seriesInfo name="DOI" value="10.17487/RFC6241"/>
        </reference>
        <reference anchor="RFC8040">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8040"/>
          <seriesInfo name="DOI" value="10.17487/RFC8040"/>
        </reference>
        <reference anchor="RFC4252">
          <front>
            <title>The Secure Shell (SSH) Authentication Protocol</title>
            <author fullname="T. Ylonen" initials="T." surname="Ylonen"/>
            <author fullname="C. Lonvick" initials="C." role="editor" surname="Lonvick"/>
            <date month="January" year="2006"/>
            <abstract>
              <t>The Secure Shell Protocol (SSH) is a protocol for secure remote login and other secure network services over an insecure network. This document describes the SSH authentication protocol framework and public key, password, and host-based client authentication methods. Additional authentication methods are described in separate documents. The SSH authentication protocol runs on top of the SSH transport layer protocol and provides a single authenticated tunnel for the SSH connection protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4252"/>
          <seriesInfo name="DOI" value="10.17487/RFC4252"/>
        </reference>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
      </references>
    </references>
    <?line 1231?>

<section anchor="example-tacacs-authentication-configuration-with-shared-secret">
      <name>Example TACACS+ Authentication Configuration with Shared Secret</name>
      <t><xref target="ex9105"/> shows an example where a TACACS+ authentication server instance is configured using shared secret for authentication.</t>
      <figure anchor="ex9105">
        <name>Example with Shared Secret</name>
        <sourcecode type="json"><![CDATA[
{
  "ietf-system:system": {
    "authentication": {
      "user-authentication-order": [
        "ietf-system-tacacs-plus:tacacs-plus",
        "ietf-system:local-users"
      ]
    },
    "ietf-system-tacacs-plus:tacacs-plus": {
      "server": [
        {
          "name": "tac_plus1",
          "server-type": "authentication",
          "address": "192.0.2.2",
          "shared-secret": "QaEfThUkO198010075460923+h3TbE8n",
          "source-ip": "192.0.2.12",
          "timeout": 10
        }
      ]
    }
  }
}
]]></sourcecode>
      </figure>
      <t><xref target="ex9105-vrf"/> provides an example to associate a TACACS+ server with a VRF.</t>
      <figure anchor="ex9105-vrf">
        <name>Example with VRF</name>
        <sourcecode type="json"><![CDATA[
{
  "ietf-network-instance:network-instances": {
    "network-instance": [
      {
        "name": "MANAGEMENT_VRF",
        "description": "Management VRF for TACACS+ traffic isolation"
      }
    ]
  },
  "ietf-system:system": {
    "authentication": {
      "user-authentication-order": [
        "ietf-system-tacacs-plus:tacacs-plus",
        "ietf-system:local-users"
      ]
    },
    "ietf-system-tacacs-plus:tacacs-plus": {
      "server": [
        {
          "name": "tac_plus1",
          "server-type": "authentication",
          "address": "192.0.2.2",
          "shared-secret": "QaEfThUkO198010075460923+h3TbE8n",
          "source-ip": "192.0.2.12",
          "vrf-instance": "MANAGEMENT_VRF",
          "timeout": 10
        }
      ]
    }
  }
}
]]></sourcecode>
      </figure>
    </section>
    <section anchor="tacacstls-examples">
      <name>TACACS+TLS Examples</name>
      <t>This section provides examples to illustrate the configuration of TACACS+TLS clients.</t>
      <t>These examples follow the convention used in <xref section="1.5" sectionFormat="of" target="RFC9645"/> for binary data that has been base64 encoded.</t>
      <section anchor="example-tacacs-authentication-configuration-with-explicit-certificate-definitions">
        <name>Example TACACS+ Authentication Configuration with Explicit Certificate Definitions</name>
        <t><xref target="exin"/> shows a configuration example with 'inline-definition' for the client identity and server authentication.</t>
        <figure anchor="exin">
          <name>Example with TACACS+TLS with Inline Certificate Definitions</name>
          <sourcecode type="json"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

{
  "ietf-system:system": {
    "authentication": {
      "user-authentication-order": [
        "ietf-system-tacacs-plus:tacacs-plus",
        "ietf-system:local-users"
      ]
    },
    "ietf-system-tacacs-plus:tacacs-plus": {
      "server": [
        {
          "name": "instance-1",
          "server-type": "authentication",
          "domain-name": "tacacs.example.com",
          "sni-enabled": true,
          "address": "2001:db8::1",
          "port": 1234,
          "client-identity": {
            "certificate": {
              "inline-definition": {
                "public-key-format": "ietf-crypto-types:subject-\
                                             public-key-info-format",
                "public-key": "BASE64VALUE=",
                "private-key-format": "ietf-crypto-types:rsa-private\
                                                        -key-format",
                "cleartext-private-key": "BASE64VALUE=",
                "cert-data": "BASE64VALUE="
              }
            }
          },
          "server-authentication": {
            "ca-certs": {
              "inline-definition": {
                "certificate": [
                  {
                    "name": "CA-Certificate-1",
                    "cert-data": "BASE64VALUE="
                  }
                ]
              }
            }
          },
          "hello-params": {
            "tls-versions": {
              "min": "ietf-tls-common:tls13",
              "max": "ietf-tls-common:tls13"
            },
            "cipher-suites": {
              "cipher-suite": [
                "TLS_AES_128_GCM_SHA256"
              ]
            }
          },
          "single-connection": false,
          "timeout": 10
        }
      ]
    }
  }
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="example-tacacs-authentication-configuration-with-certificate-references">
        <name>Example TACACS+ Authentication Configuration with Certificate References</name>
        <t><xref target="ex-ref"/> shows a configuration example with credential references for multiple service instances: four server instances are configured with all using the same credentials. These instances form a redundancy group for both IPv4 and IPv6.</t>
        <figure anchor="ex-ref">
          <name>Example with TACACS+TLS with References</name>
          <sourcecode type="json"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

{
  "ietf-system:system": {
    "ietf-system-tacacs-plus:tacacs-plus": {
      "client-credentials": [
        {
          "id": "client-cred-1",
          "certificate": {
            "inline-definition": {
              "public-key-format": "ietf-crypto-types:subject-public\
                                                   -key-info-format",
              "public-key": "BASE64VALUE=",
              "private-key-format": "ietf-crypto-types:rsa-private-\
                                                         key-format",
              "cleartext-private-key": "BASE64VALUE=",
              "cert-data": "BASE64VALUE="
            }
          }
        }
      ],
      "server-credentials": [
        {
          "id": "server-cred-1",
          "ca-certs": {
            "inline-definition": {
              "certificate": [
                {
                  "name": "CA-Certificate-1",
                  "cert-data": "BASE64VALUE="
                }
              ]
            }
          }
        }
      ],
      "server": [
        {
          "name": "primary-v6",
          "server-type": "authentication",
          "domain-name": "tacacs.example.com",
          "sni-enabled": true,
          "address": "2001:db8::1",
          "port": 1234,
          "client-identity": {
            "credentials-reference": "client-cred-1"
          },
          "server-authentication": {
            "credentials-reference": "server-cred-1"
          }
        },
        {
          "name": "backup-v6",
          "server-type": "authentication",
          "domain-name": "tacacs.example.com",
          "sni-enabled": true,
          "address": "2001:db8::2",
          "port": 1234,
          "client-identity": {
            "credentials-reference": "client-cred-1"
          },
          "server-authentication": {
            "credentials-reference": "server-cred-1"
          }
        },
        {
          "name": "primary-v4",
          "server-type": "authentication",
          "domain-name": "tacacs.example.com",
          "sni-enabled": true,
          "address": "192.0.2.1",
          "port": 49,
          "client-identity": {
            "credentials-reference": "client-cred-1"
          },
          "server-authentication": {
            "credentials-reference": "server-cred-1"
          }
        },
        {
          "name": "backup-v4",
          "server-type": "authentication",
          "domain-name": "tacacs.example.com",
          "sni-enabled": true,
          "address": "192.0.2.2",
          "port": 49,
          "client-identity": {
            "credentials-reference": "client-cred-1"
          },
          "server-authentication": {
            "credentials-reference": "server-cred-1"
          }
        }
      ]
    }
  }
}
]]></sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="sec-full">
      <name>Full Tree</name>
      <t>The full tree structure is shown below:</t>
      <artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

module: ietf-system-tacacs-plus

  augment /sys:system:
    +--rw tacacs-plus
       +--rw client-credentials* [id] {credential-reference}?
       |  +--rw id                       string
       |  +--rw (auth-type)?
       |     +--:(certificate)
       |     |  +--rw certificate
       |     |     +--rw (inline-or-keystore)
       |     |        +--:(inline) {inline-definitions-supported}?
       |     |        |  +--rw inline-definition
       |     |        |     +--rw public-key-format?
       |     |        |     |       identityref
       |     |        |     +--rw public-key?
       |     |        |     |       binary
       |     |        |     +--rw private-key-format?
       |     |        |     |       identityref
       |     |        |     +--rw (private-key-type)
       |     |        |     |  +--:(cleartext-private-key)
       |     |        |     |  |        {cleartext-private-keys}?
       |     |        |     |  |  +--rw cleartext-private-key?
       |     |        |     |  |          binary
       |     |        |     |  +--:(hidden-private-key)
       |     |        |     |  |        {hidden-private-keys}?
       |     |        |     |  |  +--rw hidden-private-key?
       |     |        |     |  |          empty
       |     |        |     |  +--:(encrypted-private-key)
       |     |        |     |           {encrypted-private-keys}?
       |     |        |     |     +--rw encrypted-private-key
       |     |        |     |        +--rw encrypted-by
       |     |        |     |        +--rw encrypted-value-format
       |     |        |     |        |       identityref
       |     |        |     |        +--rw encrypted-value
       |     |        |     |                binary
       |     |        |     +--rw cert-data?
       |     |        |     |       end-entity-cert-cms
       |     |        |     +---n certificate-expiration
       |     |        |     |       {certificate-expiration-\
                                                       notification}?
       |     |        |     |  +-- expiration-date
       |     |        |     |          yang:date-and-time
       |     |        |     +---x generate-csr {csr-generation}?
       |     |        |        +---w input
       |     |        |        |  +---w csr-format    identityref
       |     |        |        |  +---w csr-info      csr-info
       |     |        |        +--ro output
       |     |        |           +--ro (csr-type)
       |     |        |              +--:(p10-csr)
       |     |        |                 +--ro p10-csr?   p10-csr
       |     |        +--:(central-keystore)
       |     |                 {central-keystore-supported,\
                                                    asymmetric-keys}?
       |     |           +--rw central-keystore-reference
       |     |              +--rw asymmetric-key?
       |     |              |       ks:central-asymmetric-key-ref
       |     |              |       {central-keystore-supported,\
                                                    asymmetric-keys}?
       |     |              +--rw certificate?      leafref
       |     +--:(raw-public-key) {tlsc:client-ident-raw-public-key}?
       |     |  +--rw raw-private-key
       |     |     +--rw (inline-or-keystore)
       |     |        +--:(inline) {inline-definitions-supported}?
       |     |        |  +--rw inline-definition
       |     |        |     +--rw public-key-format?
       |     |        |     |       identityref
       |     |        |     +--rw public-key?
       |     |        |     |       binary
       |     |        |     +--rw private-key-format?
       |     |        |     |       identityref
       |     |        |     +--rw (private-key-type)
       |     |        |        +--:(cleartext-private-key)
       |     |        |        |        {cleartext-private-keys}?
       |     |        |        |  +--rw cleartext-private-key?
       |     |        |        |          binary
       |     |        |        +--:(hidden-private-key)
       |     |        |        |        {hidden-private-keys}?
       |     |        |        |  +--rw hidden-private-key?
       |     |        |        |          empty
       |     |        |        +--:(encrypted-private-key)
       |     |        |                 {encrypted-private-keys}?
       |     |        |           +--rw encrypted-private-key
       |     |        |              +--rw encrypted-by
       |     |        |              +--rw encrypted-value-format
       |     |        |              |       identityref
       |     |        |              +--rw encrypted-value
       |     |        |                      binary
       |     |        +--:(central-keystore)
       |     |                 {central-keystore-supported,\
                                                    asymmetric-keys}?
       |     |           +--rw central-keystore-reference?
       |     |                   ks:central-asymmetric-key-ref
       |     +--:(tls13-epsk) {tlsc:client-ident-tls13-epsk}?
       |        +--rw tls13-epsk
       |           +--rw (inline-or-keystore)
       |           |  +--:(inline) {inline-definitions-supported}?
       |           |  |  +--rw inline-definition
       |           |  |     +--rw key-format?
       |           |  |     |       identityref
       |           |  |     +--rw (key-type)
       |           |  |        +--:(cleartext-symmetric-key)
       |           |  |        |  +--rw cleartext-symmetric-key?
       |           |  |        |          binary
       |           |  |        |          {cleartext-symmetric-keys}?
       |           |  |        +--:(hidden-symmetric-key)
       |           |  |        |        {hidden-symmetric-keys}?
       |           |  |        |  +--rw hidden-symmetric-key?
       |           |  |        |          empty
       |           |  |        +--:(encrypted-symmetric-key)
       |           |  |                 {encrypted-symmetric-keys}?
       |           |  |           +--rw encrypted-symmetric-key
       |           |  |              +--rw encrypted-by
       |           |  |              +--rw encrypted-value-format
       |           |  |              |       identityref
       |           |  |              +--rw encrypted-value
       |           |  |                      binary
       |           |  +--:(central-keystore)
       |           |           {central-keystore-supported,symmetric\
                                                              -keys}?
       |           |     +--rw central-keystore-reference?
       |           |             ks:central-symmetric-key-ref
       |           +--rw external-identity                   string
       |           +--rw hash?
       |           |       tlscmn:epsk-supported-hash
       |           +--rw context?                            string
       |           +--rw target-protocol?                    uint16
       |           +--rw target-kdf?                         uint16
       +--rw server-credentials* [id] {credential-reference}?
       |  +--rw id                 string
       |  +--rw ca-certs!
       |  |  +--rw (inline-or-truststore)
       |  |     +--:(inline) {inline-definitions-supported}?
       |  |     |  +--rw inline-definition
       |  |     |     +--rw certificate* [name]
       |  |     |        +--rw name                      string
       |  |     |        +--rw cert-data
       |  |     |        |       trust-anchor-cert-cms
       |  |     |        +---n certificate-expiration
       |  |     |                {certificate-expiration-\
                                                       notification}?
       |  |     |           +-- expiration-date    yang:date-and-time
       |  |     +--:(central-truststore)
       |  |              {central-truststore-supported,certificates}?
       |  |        +--rw central-truststore-reference?
       |  |                ts:central-certificate-bag-ref
       |  +--rw ee-certs!
       |  |  +--rw (inline-or-truststore)
       |  |     +--:(inline) {inline-definitions-supported}?
       |  |     |  +--rw inline-definition
       |  |     |     +--rw certificate* [name]
       |  |     |        +--rw name                      string
       |  |     |        +--rw cert-data
       |  |     |        |       trust-anchor-cert-cms
       |  |     |        +---n certificate-expiration
       |  |     |                {certificate-expiration-\
                                                       notification}?
       |  |     |           +-- expiration-date    yang:date-and-time
       |  |     +--:(central-truststore)
       |  |              {central-truststore-supported,certificates}?
       |  |        +--rw central-truststore-reference?
       |  |                ts:central-certificate-bag-ref
       |  +--rw raw-public-keys! {tlsc:server-auth-raw-public-key}?
       |  |  +--rw (inline-or-truststore)
       |  |     +--:(inline) {inline-definitions-supported}?
       |  |     |  +--rw inline-definition
       |  |     |     +--rw public-key* [name]
       |  |     |        +--rw name                 string
       |  |     |        +--rw public-key-format    identityref
       |  |     |        +--rw public-key           binary
       |  |     +--:(central-truststore)
       |  |              {central-truststore-supported,public-keys}?
       |  |        +--rw central-truststore-reference?
       |  |                ts:central-public-key-bag-ref
       |  +--rw tls13-epsks?       empty
       |          {tlsc:server-auth-tls13-epsk}?
       +--rw server* [name]
          +--rw name                           string
          +--rw server-type
          |       tacacs-plus-server-type
          +--rw domain-name?                   inet:domain-name
          +--rw sni-enabled?                   boolean
          +--rw address                        inet:host
          +--rw port?                          inet:port-number
          +--rw (security)
          |  +--:(tls)
          |  |  +--rw client-identity!
          |  |  |  +--rw (ref-or-explicit)?
          |  |  |     +--:(ref)
          |  |  |     |  +--rw credentials-reference?
          |  |  |     |          sys-tcs-plus:client-credentials-ref
          |  |  |     |          {credential-reference}?
          |  |  |     +--:(explicit)
          |  |  |        +--rw (auth-type)?
          |  |  |           +--:(certificate)
          |  |  |           |  +--rw certificate
          |  |  |           |     +--rw (inline-or-keystore)
          |  |  |           |        +--:(inline)
          |  |  |           |        |        {inline-definitions-\
                                                          supported}?
          |  |  |           |        |  +--rw inline-definition
          |  |  |           |        |     +--rw public-key-format?
          |  |  |           |        |     |       identityref
          |  |  |           |        |     +--rw public-key?
          |  |  |           |        |     |       binary
          |  |  |           |        |     +--rw private-key-format?
          |  |  |           |        |     |       identityref
          |  |  |           |        |     +--rw (private-key-type)
          |  |  |           |        |     |  +--:(cleartext-private\
                                                                -key)
          |  |  |           |        |     |  |        {cleartext-\
                                                       private-keys}?
          |  |  |           |        |     |  |  +--rw cleartext-\
                                                         private-key?
          |  |  |           |        |     |  |          binary
          |  |  |           |        |     |  +--:(hidden-private-\
                                                                 key)
          |  |  |           |        |     |  |        {hidden-\
                                                       private-keys}?
          |  |  |           |        |     |  |  +--rw hidden-\
                                                         private-key?
          |  |  |           |        |     |  |          empty
          |  |  |           |        |     |  +--:(encrypted-private\
                                                                -key)
          |  |  |           |        |     |           {encrypted-\
                                                       private-keys}?
          |  |  |           |        |     |     +--rw encrypted-\
                                                          private-key
          |  |  |           |        |     |        +--rw encrypted-\
                                                                   by
          |  |  |           |        |     |        +--rw encrypted-\
                                                         value-format
          |  |  |           |        |     |        |       \
                                                          identityref
          |  |  |           |        |     |        +--rw encrypted-\
                                                                value
          |  |  |           |        |     |                binary
          |  |  |           |        |     +--rw cert-data?
          |  |  |           |        |     |       end-entity-cert-\
                                                                  cms
          |  |  |           |        |     +---n certificate-\
                                                           expiration
          |  |  |           |        |     |       {certificate-\
                                            expiration-notification}?
          |  |  |           |        |     |  +-- expiration-date
          |  |  |           |        |     |          yang:date-and-\
                                                                 time
          |  |  |           |        |     +---x generate-csr
          |  |  |           |        |             {csr-generation}?
          |  |  |           |        |        +---w input
          |  |  |           |        |        |  +---w csr-format
          |  |  |           |        |        |  |       identityref
          |  |  |           |        |        |  +---w csr-info
          |  |  |           |        |        |          csr-info
          |  |  |           |        |        +--ro output
          |  |  |           |        |           +--ro (csr-type)
          |  |  |           |        |              +--:(p10-csr)
          |  |  |           |        |                 +--ro p10-csr?
          |  |  |           |        |                         p10-\
                                                                  csr
          |  |  |           |        +--:(central-keystore)
          |  |  |           |                 {central-keystore-\
                                          supported,asymmetric-keys}?
          |  |  |           |           +--rw central-keystore-\
                                                            reference
          |  |  |           |              +--rw asymmetric-key?
          |  |  |           |              |       ks:central-\
                                                   asymmetric-key-ref
          |  |  |           |              |       {central-keystore\
                                         -supported,asymmetric-keys}?
          |  |  |           |              +--rw certificate?
          |  |  |           |                      leafref
          |  |  |           +--:(raw-public-key)
          |  |  |           |        {tlsc:client-ident-raw-public-\
                                                                key}?
          |  |  |           |  +--rw raw-private-key
          |  |  |           |     +--rw (inline-or-keystore)
          |  |  |           |        +--:(inline)
          |  |  |           |        |        {inline-definitions-\
                                                          supported}?
          |  |  |           |        |  +--rw inline-definition
          |  |  |           |        |     +--rw public-key-format?
          |  |  |           |        |     |       identityref
          |  |  |           |        |     +--rw public-key?
          |  |  |           |        |     |       binary
          |  |  |           |        |     +--rw private-key-format?
          |  |  |           |        |     |       identityref
          |  |  |           |        |     +--rw (private-key-type)
          |  |  |           |        |        +--:(cleartext-private\
                                                                -key)
          |  |  |           |        |        |        {cleartext-\
                                                       private-keys}?
          |  |  |           |        |        |  +--rw cleartext-\
                                                         private-key?
          |  |  |           |        |        |          binary
          |  |  |           |        |        +--:(hidden-private-\
                                                                 key)
          |  |  |           |        |        |        {hidden-\
                                                       private-keys}?
          |  |  |           |        |        |  +--rw hidden-\
                                                         private-key?
          |  |  |           |        |        |          empty
          |  |  |           |        |        +--:(encrypted-private\
                                                                -key)
          |  |  |           |        |                 {encrypted-\
                                                       private-keys}?
          |  |  |           |        |           +--rw encrypted-\
                                                          private-key
          |  |  |           |        |              +--rw encrypted-\
                                                                   by
          |  |  |           |        |              +--rw encrypted-\
                                                         value-format
          |  |  |           |        |              |       \
                                                          identityref
          |  |  |           |        |              +--rw encrypted-\
                                                                value
          |  |  |           |        |                      binary
          |  |  |           |        +--:(central-keystore)
          |  |  |           |                 {central-keystore-\
                                          supported,asymmetric-keys}?
          |  |  |           |           +--rw central-keystore-\
                                                           reference?
          |  |  |           |                   ks:central-\
                                                   asymmetric-key-ref
          |  |  |           +--:(tls13-epsk)
          |  |  |                    {tlsc:client-ident-tls13-epsk}?
          |  |  |              +--rw tls13-epsk
          |  |  |                 +--rw (inline-or-keystore)
          |  |  |                 |  +--:(inline)
          |  |  |                 |  |        {inline-definitions-\
                                                          supported}?
          |  |  |                 |  |  +--rw inline-definition
          |  |  |                 |  |     +--rw key-format?
          |  |  |                 |  |     |       identityref
          |  |  |                 |  |     +--rw (key-type)
          |  |  |                 |  |        +--:(cleartext-\
                                                       symmetric-key)
          |  |  |                 |  |        |  +--rw cleartext-\
                                                       symmetric-key?
          |  |  |                 |  |        |          binary
          |  |  |                 |  |        |          {cleartext-\
                                                     symmetric-keys}?
          |  |  |                 |  |        +--:(hidden-symmetric-\
                                                                 key)
          |  |  |                 |  |        |        {hidden-\
                                                     symmetric-keys}?
          |  |  |                 |  |        |  +--rw hidden-\
                                                       symmetric-key?
          |  |  |                 |  |        |          empty
          |  |  |                 |  |        +--:(encrypted-\
                                                       symmetric-key)
          |  |  |                 |  |                 {encrypted-\
                                                     symmetric-keys}?
          |  |  |                 |  |           +--rw encrypted-\
                                                        symmetric-key
          |  |  |                 |  |              +--rw encrypted-\
                                                                   by
          |  |  |                 |  |              +--rw encrypted-\
                                                         value-format
          |  |  |                 |  |              |       \
                                                          identityref
          |  |  |                 |  |              +--rw encrypted-\
                                                                value
          |  |  |                 |  |                      binary
          |  |  |                 |  +--:(central-keystore)
          |  |  |                 |           {central-keystore-\
                                           supported,symmetric-keys}?
          |  |  |                 |     +--rw central-keystore-\
                                                           reference?
          |  |  |                 |             ks:central-symmetric\
                                                             -key-ref
          |  |  |                 +--rw external-identity
          |  |  |                 |       string
          |  |  |                 +--rw hash?
          |  |  |                 |       tlscmn:epsk-supported-hash
          |  |  |                 +--rw context?
          |  |  |                 |       string
          |  |  |                 +--rw target-protocol?
          |  |  |                 |       uint16
          |  |  |                 +--rw target-kdf?
          |  |  |                         uint16
          |  |  +--rw server-authentication
          |  |  |  +--rw (ref-or-explicit)?
          |  |  |     +--:(ref)
          |  |  |     |  +--rw credentials-reference?
          |  |  |     |          sys-tcs-plus:server-credentials-ref
          |  |  |     |          {credential-reference}?
          |  |  |     +--:(explicit)
          |  |  |        +--rw ca-certs!
          |  |  |        |  +--rw (inline-or-truststore)
          |  |  |        |     +--:(inline)
          |  |  |        |     |        {inline-definitions-\
                                                          supported}?
          |  |  |        |     |  +--rw inline-definition
          |  |  |        |     |     +--rw certificate* [name]
          |  |  |        |     |        +--rw name
          |  |  |        |     |        |       string
          |  |  |        |     |        +--rw cert-data
          |  |  |        |     |        |       trust-anchor-cert-cms
          |  |  |        |     |        +---n certificate-expiration
          |  |  |        |     |                {certificate-\
                                            expiration-notification}?
          |  |  |        |     |           +-- expiration-date
          |  |  |        |     |                   yang:date-and-time
          |  |  |        |     +--:(central-truststore)
          |  |  |        |              {central-truststore-\
                                             supported,certificates}?
          |  |  |        |        +--rw central-truststore-reference?
          |  |  |        |                ts:central-certificate-bag\
                                                                 -ref
          |  |  |        +--rw ee-certs!
          |  |  |        |  +--rw (inline-or-truststore)
          |  |  |        |     +--:(inline)
          |  |  |        |     |        {inline-definitions-\
                                                          supported}?
          |  |  |        |     |  +--rw inline-definition
          |  |  |        |     |     +--rw certificate* [name]
          |  |  |        |     |        +--rw name
          |  |  |        |     |        |       string
          |  |  |        |     |        +--rw cert-data
          |  |  |        |     |        |       trust-anchor-cert-cms
          |  |  |        |     |        +---n certificate-expiration
          |  |  |        |     |                {certificate-\
                                            expiration-notification}?
          |  |  |        |     |           +-- expiration-date
          |  |  |        |     |                   yang:date-and-time
          |  |  |        |     +--:(central-truststore)
          |  |  |        |              {central-truststore-\
                                             supported,certificates}?
          |  |  |        |        +--rw central-truststore-reference?
          |  |  |        |                ts:central-certificate-bag\
                                                                 -ref
          |  |  |        +--rw raw-public-keys!
          |  |  |        |       {tlsc:server-auth-raw-public-key}?
          |  |  |        |  +--rw (inline-or-truststore)
          |  |  |        |     +--:(inline)
          |  |  |        |     |        {inline-definitions-\
                                                          supported}?
          |  |  |        |     |  +--rw inline-definition
          |  |  |        |     |     +--rw public-key* [name]
          |  |  |        |     |        +--rw name
          |  |  |        |     |        |       string
          |  |  |        |     |        +--rw public-key-format
          |  |  |        |     |        |       identityref
          |  |  |        |     |        +--rw public-key
          |  |  |        |     |                binary
          |  |  |        |     +--:(central-truststore)
          |  |  |        |              {central-truststore-\
                                              supported,public-keys}?
          |  |  |        |        +--rw central-truststore-reference?
          |  |  |        |                ts:central-public-key-bag-\
                                                                  ref
          |  |  |        +--rw tls13-epsks?             empty
          |  |  |                {tlsc:server-auth-tls13-epsk}?
          |  |  +--rw hello-params {tlscmn:hello-params}?
          |  |     +--rw tls-versions
          |  |     |  +--rw min?   identityref
          |  |     |  +--rw max?   identityref
          |  |     +--rw cipher-suites
          |  |        +--rw cipher-suite*
          |  |                tlscsa:tls-cipher-suite-algorithm
          |  +--:(obfuscation)
          |     +--rw shared-secret?           string
          +--rw (source-type)?
          |  +--:(source-ip)
          |  |  +--rw source-ip?               inet:ip-address
          |  +--:(source-interface)
          |     +--rw source-interface?        if:interface-ref
          +--rw vrf-instance?
          |       -> /ni:network-instances/network-instance/name
          +--rw single-connection?             boolean
          +--rw timeout?                       uint16
          +--ro statistics
             +--ro discontinuity-time?    yang:date-and-time
             +--ro connection-opens?      yang:counter64
             +--ro connection-closes?     yang:counter64
             +--ro connection-aborts?     yang:counter64
             +--ro connection-failures?   yang:counter64
             +--ro connection-timeouts?   yang:counter64
             +--ro messages-sent?         yang:counter64
             +--ro messages-received?     yang:counter64
             +--ro errors-received?       yang:counter64
             +--ro sessions?              yang:counter64
             +--ro cert-errors?           yang:counter64
             +--ro rpk-errors?            yang:counter64
                     {tlsc:server-auth-raw-public-key}?
]]></artwork>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The document leverages data structures defined in <xref target="RFC9645"/>.</t>
      <t>Thanks to Joe Clarke and Tom Petch for the review and comments.</t>
      <t>Thanks to Reshad Rahman for the yangdoctors review.</t>
      <dl>
        <dt>Acknowledgments from RFC 9105:</dt>
        <dd>
          <t>The authors wish to thank Alex Campbell, John Heasley, Ebben Aries,
 Alan DeKok, Joe Clarke, Tom Petch, Robert Wilton, and many others for
 their helpful comments and suggestions.</t>
        </dd>
      </dl>
    </section>
  </back>
  <!-- ##markdown-source:
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
TmBpz2BaVlcTrkJGhHe6SodvyqVDcSfCMC4OWTgMVVqccVAm5LC6wyFOtDcO
h3sGToPBWS188aniZhHF7Gq5JJo/GEXu1dPjzWi8MimQM0EPWNb3D9tlq8ee
Ae8ecGwIaqg95yg1utqTjvQsOe5I8YzSQU1qnDlaZzZmKYUeueJFOnB16FVu
zpEc9dqx982E24jkcumGYpBymJY6HS1nh6FXR7oOP5CCBvJUNoynaPpyUQCj
bXaVXAJgqXWIQEemk0BpbtZrm+WAaV7fDjSwaT47K4MYCWvvm1pGPT10B9En
vUEZ/17nqArkjGcdy3AVx6lkEMKHNEDrq/mmTMgbG33Xy9bkm2vIW2UhYDoe
dx7cQedfvfwx0mWvuSXdDizD5V02VaLdjUJs6Kll+3naT41ZGemzabOuu0ul
n3AZmtiElcSgkkb/boJQSgkveZkleJpki8rhm9rRy4U+Te3utXvCxo4hqfV1
W7kXTAtE6RpXGz5CU40lUHPY2Z4isQhBh0eFors8ceDXa0uGaHCh3a3o5A8G
rJaUR9FB0SdW6skppLA71ZZ5q6I5A9r4XEUiAWsioqfVTihgzZTScj4FUV42
OdEnNRpldFMSnbSZ0Z1WxsJqXpTN+idz2JnYJ5IQeKrZi5Qz8w7RkSmtUX04
PNhyglTESJpZal+0Y2RHL6giLknRMeAUhiekVSn2jY1TA+nNg+BkekTOllEu
Igim4hoSEoZ0scmI61D+EGeD3DJFBK1kGJHDA7ej6m4vT/JWlmlcM/AOHIs2
B5HvNPgWmBHamJnIu5yKPO0GwPAcdy9xStDBLyFoTJYItwfLzYFVjsjqmVbZ
Hi9zNFdwnufruvEYVOVHXM6gRzANjsRSuHl0tFXDgk2j/q/AkhF2YpvC483x
QgWpK1ifLceWvpvO5V6Xae26pqokjKhvC7Q6Fo5PCcXLWSmviBqi4lJhLJ3H
uQKoxegfNRt7GTo1N6+zx147A9ysIx+p3L0DHvf7WcO2NULXr+1wrqu4OoLY
y+lSI4QDxjUgfA52Ab5nprWYMdyijW1kmrq127TuliZtalrs62iqYhszuhsZ
7s1u+GA3VtuANArmko6pLVjrVdilsFB8p7Zur7ay92rdX0nYU9GZ3yWQkFo9
dzM2BFBHna3XMQLZ5xiEH9Ik820ntCKGOFkalPy3cX570qy1zmyvX2RDmymG
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
5GQ19Dr/HzgSq2cjQQEA

-->

</rfc>
