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

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

<section anchor="introduction">
      <name>Introduction</name>
      <t>The System Management data model <xref target="RFC7317"/> defines separate functionality to support local and Remote Authentication Dial In User Service (RADIUS) authentication:</t>
      <dl>
        <dt>User Authentication Model:</dt>
        <dd>
          <t>Defines a list of user names with
associated passwords and a configuration leaf to decide the order
in which local or RADIUS authentication is used.</t>
        </dd>
        <dt>RADIUS Client Model:</dt>
        <dd>
          <t>Defines a list of RADIUS servers used by a
 device for centralized user authentication.</t>
        </dd>
      </dl>
      <t><xref target="RFC9105"/> defines a YANG module ("ietf-system-tacacs-plus") that augments the System Management data model <xref target="RFC7317"/> for the management of Terminal Access Controller Access-Control System Plus (TACACS+) clients as an alternative to RADIUS servers <xref target="RFC2865"/>. Typically, the "ietf-system-tacacs-plus" module is used to configure a TACACS+ client on a device to support deployment scenarios with centralized authentication, authorization, and accounting servers.</t>
      <t>This document defines a YANG module for managing TACACS+ clients (<xref target="sec-module"/>), including TACACS+ over TLS 1.3 clients <xref target="I-D.ietf-opsawg-tacacs-tls13"/>. This document obsoletes <xref target="RFC9105"/>.</t>
      <t>The YANG module in this document conforms to the Network Management
   Datastore Architecture (NMDA) defined in <xref target="RFC8342"/>.</t>
      <section anchor="changes-since-rfc-9105">
        <name>Changes Since RFC 9105</name>
        <t>The following changes have been made to <xref target="RFC9105"/>:</t>
        <ul spacing="normal">
          <li>
            <t>Add support for TLS <xref target="I-D.ietf-opsawg-tacacs-tls13"/></t>
          </li>
          <li>
            <t>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 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 TLS <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 and PSK.</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"/>.</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 explicitely 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 explicitely 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.</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 markers="true" name="ietf-system-tacacs-plus@2024-12-11.yang"><![CDATA[
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) 2024 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 2024-12-11 {
    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
         - updates the description of the 'name' under 'server'
           list to better reflect the intended use and clarifies
           the difference with the new domain-name
         - 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
         - 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.";
      }
      leaf connection-opens {
        type yang:counter64;
        description
          "Number of new connection requests sent to the server,
           e.g., socket open.";
      }
      leaf connection-closes {
        type yang:counter64;
        description
          "Number of connection close requests sent to the server,
           e.g., socket close.";
      }
      leaf connection-aborts {
        type yang:counter64;
        description
          "Number of aborted connections to the server. These do
           not include connections that are closed gracefully.";
      }
      leaf connection-failures {
        type yang:counter64;
        description
          "Number of connection failures to the server.";
      }
      leaf connection-timeouts {
        type yang:counter64;
        description
          "Number of connection timeouts to the server.";
      }
      leaf messages-sent {
        type yang:counter64;
        description
          "Number of messages sent to the server.";
      }
      leaf messages-received {
        type yang:counter64;
        description
          "Number of messages received from the server.";
      }
      leaf errors-received {
        type yang:counter64;
        description
          "Number of error messages received from the server.";
      }
      leaf sessions {
        type yang:counter64;
        description
          "Number of TACACS+ sessions completed with the server.
           If the Single Connection Mode was not enabled, the number
           of sessions is the same as the number of
           'connection-closes'. If the Single Connection Mode was
           enabled, a single TCP connection may contain multiple
           TACACS+ sessions.";
      }
      leaf cert-errors {
        type yang:counter64;
        description
          "Number of connection failures due to certificate
           issues.";
      }
      leaf rpk-errors {
        if-feature "tlsc:server-auth-raw-public-key";
        type yang:counter64;
        description
          "Number of RPK-related connection failures.";
      }
    }
  }

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

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

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

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

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

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

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

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

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

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

<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>
    </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>
      <dl>
        <dt>Acknowledgments from RFC 9105:</dt>
        <dd>
          <t>The authors wish to thank Alex Campbell, John Heasley, Ebben Aries,
 Alan DeKok, Joe Clarke, Tom Petch, Robert Wilton, and many others for
 their helpful comments and suggestions.</t>
        </dd>
      </dl>
    </section>
  </back>
  <!-- ##markdown-source:
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
WVcJdjcIsaanhk3oaEUV5magz7rNqu42SkXuStR7+SuJRyml/t0EpJASzrFN
hkCqky3y+NLYjGrNVWasndrgCBsz5qLSB27kousWiNIVLjh8uAYbOjrKYmdz
ioQi6iwe5Qpw85Fp36wtGYLBeGa3gpPfG7BKUh4FB0VlMlSTk0the6o1ebGC
+d9tfLE8KdyYiOiBNZPDjZlSGE4pLyrKJCf6qsbjlC5UoQyMOV19oy2v+sVa
r3/i9C4dK0QSArNdncgyPe8oLZJHdqFacTjYYp42YSxx5n0cWnb0vCr8fggV
1kxha1xaFXw/WasKSO/EC+alh59hMc54ZMGM38BAwpDudBgn0hQO4KyRqzfA
B2Q9w4gcDuyOyiuAHMlbGiZzxcBbcAzaDALfafANMGO0PVN+4mzMj6jWAEZn
uKuJU4ISgrig0Rn/dg+azYRVUifVTCtNT5hO2eSc5/jAbhwGlSfDNTPoEUyD
I74Ubh4dbVWwYN2o/yuwZICd2Cb3hCd4lrzQFYzPhsNLXWFlc6/NtGZdXVUQ
htc3BVoVC4enhOTllK6NSi7jESouJcaeOZzLgRqM/kmzsXM2oeLmdfbeK2eA
fRDFJyp374DH3X5WsG2F0HVrW5xrK66WIHaO+agQwh7jahAuB9sAPzLTGszo
b92GNjh13crtW3urkzY7Dfa1NFW+vRncpfT3bDdcsBurbUxqBbOhY3Jr1njl
d8kvFN7BrdrDLc09XPtX5PeUd+ZvAohPrZ69SesDqKLO1h8hAplx/9w/qY8x
bSe0AoY4WRp07Gnt/HakWWud2Vy/yIbWUwxteOUSaqnTt7C511XuP5iBOvkI
BmpVhD5/Po6FGs59WMNC9TvzkS3UuIGeJLyD/NlkqNoHAVex8KFx0KE+XK5Q
2aTItj8ipFbu54+QrLYdqORtvNdavdIp5x6MXB26ZB6MvANd8wJ0upVyebTM
gUrl5hbIZxNzWEA2BA4oKfc3trbsRYPCMyNBdJuFOSX2Gb+d0DikEQy/Gd+c
lqcI1LBwuHPx5afcufiyVeeCsUf28TWh2CNdnOJAxcxQbkop2uXBFfFcpbPj
/fB45Tqf1libFoQ5T32e0jkrGGwsPJyG2WN4lf00o/DeWI3mT3hG/KhA1y2P
boF7snzb2Lyt1f9b7gOu4ui2Vegqn3zY0qvzE0qVMLxOZoY7LjM8H3Z4H6h0
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
QqWL5SlQjwyAXuf/A4BkplE0NwEA

-->

</rfc>
