<?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.27 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-opsawg-secure-tacacs-yang-09" category="std" consensus="true" submissionType="IETF" obsoletes="9105" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <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-09"/>
    <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>
    <date year="2025" month="April" day="09"/>
    <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 39?>

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

<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";
    choice auth-type {
      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.";
    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";
    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 YANG-based management protocols (1) have to
use a secure transport layer (e.g., SSH <xref target="RFC4252"/>, TLS <xref target="RFC8446"/>, and
QUIC <xref target="RFC9000"/>) and (2) 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
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="3" month="April" 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-19"/>
        </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 1219?>

<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>Authors of RFC 9105:</dt>
        <dd>
          <t>Bo Wu</t>
        </dd>
        <dt/>
        <dd>
          <t>Guangying Zheng</t>
        </dd>
        <dt/>
        <dd>
          <t>Michael Wang</t>
        </dd>
        <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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
YV4r78Oi/hUSCQmkFbAHvXs42PoibHE/dfj7A/iO67WV0omEAV+8OLq3xxS1
zpPBi4GncQIj0HsaHZnhAZUZuhGKRkovDr+8OpFpGrrzsouLRZGco+tcBit1
+OQW16/+x/OfgES8QFfMynsPHz26uenTHd3/xOIAFCTXBjdlkxrCoePNj0f8
xtY+X9FOjk+/J5MdcIBXL/YGXxNiupPUGYoLRDTVpd09jlgtYXiHBdtr0lh3
LwoS0Tt+ZTuCw41tIJqimLjTfB/vNDfjS3i9lypS1qhCvG7QDkFC7xoI9EL2
a3Mav6Qr8aC+GYqKH57jLWT8Ck1YCpFaT6BBPixCePSZun5S0LUTRREbwmKA
LCmus1CL0MDWZmxNmaSpyCx1Sutep3N9nbzF+7aAgnjTqTy5SUAvud65IupU
+Vws341Yf+zdl4mnb4mr5v8bpFoHLUvzbnlpcvaFzdl1goL7yubv1kYDQ6Hf
ldlbd3G9de3MbrB4P8tBYkek88vl8zU3l3mFVrANjDnxLPRMDwaPJ+uzLlT/
A+sedM0dk64Rp4SlHMpYRYXjGYsdPD7s7fcOe4cOMFMVwnJ/i48nZ9Nf3vx8
8PjR/sH+/lcP7j/cf3x478vpvbPh8SOnAbW/YDZx4LQh3DdQ5GDf80i8NhwP
N2TjX/fZ55wxGSzGWfJNV3K6z8TdG83G0UUxAVZWdp7BzVw7zUcpimUvTllo
Gr++ehZmSdef7Xu9NZ+6n4xR1mOsRvg5TPvvj58fvzj7A1o3+c9wslBBba6j
D9ncWwEBjtoTTME8syLmOYWRvsSnn6bXv+j0MndwGpnqNlMRJ1dwOmITN7gc
6TgYddGS45NTMzORFzFhMtwMhgDDBxJh0oXvMtcxziX3itA5VAGGaxKyPl6c
lNIlh65/76D3IKA+isuzyZQm3VZpzugqe3gflEG8phtv5P58k1VXHYI1snOZ
QWhcgqVzvQw7VEhMem95aQe2lF/ePRen7dGGpfcb+8Gr3I/7bOu/8BpW0Pkv
i3hBB3/QsCJv/lePD5lT6ZvOpxU8JGLktIw2lzFGNKkQWoBQT7BED4xlB7KO
WoXi6Murk1iH+/sH/fHwUb/vIEfx6iAgDu/dt947RrJBD1lA87f3kamUE8b9
A34hZqbMkLka+mJ8KAIlJ6qVKuPDf3kQGp+adBB+SIqZugMQ+G5wevzw/q+D
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
AQA=

-->

</rfc>
