<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.27 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-opsawg-secure-tacacs-yang-07" category="std" consensus="true" submissionType="IETF" obsoletes="9105" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title abbrev="YANG for TACACS+ over TLS">A YANG Data Model for Terminal Access Controller Access-Control System Plus (TACACS+)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-secure-tacacs-yang-07"/>
    <author fullname="Mohamed Boucadair" role="editor">
      <organization>Orange</organization>
      <address>
        <email>mohamed.boucadair@orange.com</email>
      </address>
    </author>
    <author fullname="Bo Wu">
      <organization>Huawei Technologies</organization>
      <address>
        <email>mlana.wubo@huawei.com</email>
      </address>
    </author>
    <date year="2025" month="April" day="08"/>
    <area>Operations and Management</area>
    <workgroup>Operations and Management Area Working Group</workgroup>
    <keyword>TLS</keyword>
    <keyword>device management</keyword>
    <keyword>network operator</keyword>
    <keyword>provider network</keyword>
    <keyword>AAA</keyword>
    <keyword>authentication</keyword>
    <keyword>authorization</keyword>
    <abstract>
      <?line 39?>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

   This document updates RFC8907.


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

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

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

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

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

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

module: ietf-system-tacacs-plus

  augment /sys:system:
    +--rw tacacs-plus
       +--rw client-credentials* [id] {credential-reference}?
       |  +--rw id                       string
       |  +--rw (auth-type)?
       |     +--:(certificate)
       |     |  +--rw certificate
       |     |     +--rw (inline-or-keystore)
       |     |        +--:(inline) {inline-definitions-supported}?
       |     |        |  +--rw inline-definition
       |     |        |     +--rw public-key-format?
       |     |        |     |       identityref
       |     |        |     +--rw public-key?
       |     |        |     |       binary
       |     |        |     +--rw private-key-format?
       |     |        |     |       identityref
       |     |        |     +--rw (private-key-type)
       |     |        |     |  +--:(cleartext-private-key)
       |     |        |     |  |        {cleartext-private-keys}?
       |     |        |     |  |  +--rw cleartext-private-key?
       |     |        |     |  |          binary
       |     |        |     |  +--:(hidden-private-key)
       |     |        |     |  |        {hidden-private-keys}?
       |     |        |     |  |  +--rw hidden-private-key?
       |     |        |     |  |          empty
       |     |        |     |  +--:(encrypted-private-key)
       |     |        |     |           {encrypted-private-keys}?
       |     |        |     |     +--rw encrypted-private-key
       |     |        |     |        +--rw encrypted-by
       |     |        |     |        +--rw encrypted-value-format
       |     |        |     |        |       identityref
       |     |        |     |        +--rw encrypted-value
       |     |        |     |                binary
       |     |        |     +--rw cert-data?
       |     |        |     |       end-entity-cert-cms
       |     |        |     +---n certificate-expiration
       |     |        |     |       {certificate-expiration-\
                                                       notification}?
       |     |        |     |  +-- expiration-date
       |     |        |     |          yang:date-and-time
       |     |        |     +---x generate-csr {csr-generation}?
       |     |        |        +---w input
       |     |        |        |  +---w csr-format    identityref
       |     |        |        |  +---w csr-info      csr-info
       |     |        |        +--ro output
       |     |        |           +--ro (csr-type)
       |     |        |              +--:(p10-csr)
       |     |        |                 +--ro p10-csr?   p10-csr
       |     |        +--:(central-keystore)
       |     |                 {central-keystore-supported,\
                                                    asymmetric-keys}?
       |     |           +--rw central-keystore-reference
       |     |              +--rw asymmetric-key?
       |     |              |       ks:central-asymmetric-key-ref
       |     |              |       {central-keystore-supported,\
                                                    asymmetric-keys}?
       |     |              +--rw certificate?      leafref
       |     +--:(raw-public-key) {tlsc:client-ident-raw-public-key}?
       |     |  +--rw raw-private-key
       |     |     +--rw (inline-or-keystore)
       |     |        +--:(inline) {inline-definitions-supported}?
       |     |        |  +--rw inline-definition
       |     |        |     +--rw public-key-format?
       |     |        |     |       identityref
       |     |        |     +--rw public-key?
       |     |        |     |       binary
       |     |        |     +--rw private-key-format?
       |     |        |     |       identityref
       |     |        |     +--rw (private-key-type)
       |     |        |        +--:(cleartext-private-key)
       |     |        |        |        {cleartext-private-keys}?
       |     |        |        |  +--rw cleartext-private-key?
       |     |        |        |          binary
       |     |        |        +--:(hidden-private-key)
       |     |        |        |        {hidden-private-keys}?
       |     |        |        |  +--rw hidden-private-key?
       |     |        |        |          empty
       |     |        |        +--:(encrypted-private-key)
       |     |        |                 {encrypted-private-keys}?
       |     |        |           +--rw encrypted-private-key
       |     |        |              +--rw encrypted-by
       |     |        |              +--rw encrypted-value-format
       |     |        |              |       identityref
       |     |        |              +--rw encrypted-value
       |     |        |                      binary
       |     |        +--:(central-keystore)
       |     |                 {central-keystore-supported,\
                                                    asymmetric-keys}?
       |     |           +--rw central-keystore-reference?
       |     |                   ks:central-asymmetric-key-ref
       |     +--:(tls13-epsk) {tlsc:client-ident-tls13-epsk}?
       |        +--rw tls13-epsk
       |           +--rw (inline-or-keystore)
       |           |  +--:(inline) {inline-definitions-supported}?
       |           |  |  +--rw inline-definition
       |           |  |     +--rw key-format?
       |           |  |     |       identityref
       |           |  |     +--rw (key-type)
       |           |  |        +--:(cleartext-symmetric-key)
       |           |  |        |  +--rw cleartext-symmetric-key?
       |           |  |        |          binary
       |           |  |        |          {cleartext-symmetric-keys}?
       |           |  |        +--:(hidden-symmetric-key)
       |           |  |        |        {hidden-symmetric-keys}?
       |           |  |        |  +--rw hidden-symmetric-key?
       |           |  |        |          empty
       |           |  |        +--:(encrypted-symmetric-key)
       |           |  |                 {encrypted-symmetric-keys}?
       |           |  |           +--rw encrypted-symmetric-key
       |           |  |              +--rw encrypted-by
       |           |  |              +--rw encrypted-value-format
       |           |  |              |       identityref
       |           |  |              +--rw encrypted-value
       |           |  |                      binary
       |           |  +--:(central-keystore)
       |           |           {central-keystore-supported,symmetric\
                                                              -keys}?
       |           |     +--rw central-keystore-reference?
       |           |             ks:central-symmetric-key-ref
       |           +--rw external-identity                   string
       |           +--rw hash?
       |           |       tlscmn:epsk-supported-hash
       |           +--rw context?                            string
       |           +--rw target-protocol?                    uint16
       |           +--rw target-kdf?                         uint16
       +--rw server-credentials* [id] {credential-reference}?
       |  +--rw id                 string
       |  +--rw ca-certs!
       |  |  +--rw (inline-or-truststore)
       |  |     +--:(inline) {inline-definitions-supported}?
       |  |     |  +--rw inline-definition
       |  |     |     +--rw certificate* [name]
       |  |     |        +--rw name                      string
       |  |     |        +--rw cert-data
       |  |     |        |       trust-anchor-cert-cms
       |  |     |        +---n certificate-expiration
       |  |     |                {certificate-expiration-\
                                                       notification}?
       |  |     |           +-- expiration-date    yang:date-and-time
       |  |     +--:(central-truststore)
       |  |              {central-truststore-supported,certificates}?
       |  |        +--rw central-truststore-reference?
       |  |                ts:central-certificate-bag-ref
       |  +--rw ee-certs!
       |  |  +--rw (inline-or-truststore)
       |  |     +--:(inline) {inline-definitions-supported}?
       |  |     |  +--rw inline-definition
       |  |     |     +--rw certificate* [name]
       |  |     |        +--rw name                      string
       |  |     |        +--rw cert-data
       |  |     |        |       trust-anchor-cert-cms
       |  |     |        +---n certificate-expiration
       |  |     |                {certificate-expiration-\
                                                       notification}?
       |  |     |           +-- expiration-date    yang:date-and-time
       |  |     +--:(central-truststore)
       |  |              {central-truststore-supported,certificates}?
       |  |        +--rw central-truststore-reference?
       |  |                ts:central-certificate-bag-ref
       |  +--rw raw-public-keys! {tlsc:server-auth-raw-public-key}?
       |  |  +--rw (inline-or-truststore)
       |  |     +--:(inline) {inline-definitions-supported}?
       |  |     |  +--rw inline-definition
       |  |     |     +--rw public-key* [name]
       |  |     |        +--rw name                 string
       |  |     |        +--rw public-key-format    identityref
       |  |     |        +--rw public-key           binary
       |  |     +--:(central-truststore)
       |  |              {central-truststore-supported,public-keys}?
       |  |        +--rw central-truststore-reference?
       |  |                ts:central-public-key-bag-ref
       |  +--rw tls13-epsks?       empty
       |          {tlsc:server-auth-tls13-epsk}?
       +--rw server* [name]
          +--rw name                           string
          +--rw server-type
          |       tacacs-plus-server-type
          +--rw domain-name?                   inet:domain-name
          +--rw sni-enabled?                   boolean
          +--rw address                        inet:host
          +--rw port?                          inet:port-number
          +--rw (security)
          |  +--:(tls)
          |  |  +--rw client-identity!
          |  |  |  +--rw (ref-or-explicit)?
          |  |  |     +--:(ref)
          |  |  |     |  +--rw credentials-reference?
          |  |  |     |          sys-tcs-plus:client-credentials-ref
          |  |  |     |          {credential-reference}?
          |  |  |     +--:(explicit)
          |  |  |        +--rw (auth-type)?
          |  |  |           +--:(certificate)
          |  |  |           |  +--rw certificate
          |  |  |           |     +--rw (inline-or-keystore)
          |  |  |           |        +--:(inline)
          |  |  |           |        |        {inline-definitions-\
                                                          supported}?
          |  |  |           |        |  +--rw inline-definition
          |  |  |           |        |     +--rw public-key-format?
          |  |  |           |        |     |       identityref
          |  |  |           |        |     +--rw public-key?
          |  |  |           |        |     |       binary
          |  |  |           |        |     +--rw private-key-format?
          |  |  |           |        |     |       identityref
          |  |  |           |        |     +--rw (private-key-type)
          |  |  |           |        |     |  +--:(cleartext-private\
                                                                -key)
          |  |  |           |        |     |  |        {cleartext-\
                                                       private-keys}?
          |  |  |           |        |     |  |  +--rw cleartext-\
                                                         private-key?
          |  |  |           |        |     |  |          binary
          |  |  |           |        |     |  +--:(hidden-private-\
                                                                 key)
          |  |  |           |        |     |  |        {hidden-\
                                                       private-keys}?
          |  |  |           |        |     |  |  +--rw hidden-\
                                                         private-key?
          |  |  |           |        |     |  |          empty
          |  |  |           |        |     |  +--:(encrypted-private\
                                                                -key)
          |  |  |           |        |     |           {encrypted-\
                                                       private-keys}?
          |  |  |           |        |     |     +--rw encrypted-\
                                                          private-key
          |  |  |           |        |     |        +--rw encrypted-\
                                                                   by
          |  |  |           |        |     |        +--rw encrypted-\
                                                         value-format
          |  |  |           |        |     |        |       \
                                                          identityref
          |  |  |           |        |     |        +--rw encrypted-\
                                                                value
          |  |  |           |        |     |                binary
          |  |  |           |        |     +--rw cert-data?
          |  |  |           |        |     |       end-entity-cert-\
                                                                  cms
          |  |  |           |        |     +---n certificate-\
                                                           expiration
          |  |  |           |        |     |       {certificate-\
                                            expiration-notification}?
          |  |  |           |        |     |  +-- expiration-date
          |  |  |           |        |     |          yang:date-and-\
                                                                 time
          |  |  |           |        |     +---x generate-csr
          |  |  |           |        |             {csr-generation}?
          |  |  |           |        |        +---w input
          |  |  |           |        |        |  +---w csr-format
          |  |  |           |        |        |  |       identityref
          |  |  |           |        |        |  +---w csr-info
          |  |  |           |        |        |          csr-info
          |  |  |           |        |        +--ro output
          |  |  |           |        |           +--ro (csr-type)
          |  |  |           |        |              +--:(p10-csr)
          |  |  |           |        |                 +--ro p10-csr?
          |  |  |           |        |                         p10-\
                                                                  csr
          |  |  |           |        +--:(central-keystore)
          |  |  |           |                 {central-keystore-\
                                          supported,asymmetric-keys}?
          |  |  |           |           +--rw central-keystore-\
                                                            reference
          |  |  |           |              +--rw asymmetric-key?
          |  |  |           |              |       ks:central-\
                                                   asymmetric-key-ref
          |  |  |           |              |       {central-keystore\
                                         -supported,asymmetric-keys}?
          |  |  |           |              +--rw certificate?
          |  |  |           |                      leafref
          |  |  |           +--:(raw-public-key)
          |  |  |           |        {tlsc:client-ident-raw-public-\
                                                                key}?
          |  |  |           |  +--rw raw-private-key
          |  |  |           |     +--rw (inline-or-keystore)
          |  |  |           |        +--:(inline)
          |  |  |           |        |        {inline-definitions-\
                                                          supported}?
          |  |  |           |        |  +--rw inline-definition
          |  |  |           |        |     +--rw public-key-format?
          |  |  |           |        |     |       identityref
          |  |  |           |        |     +--rw public-key?
          |  |  |           |        |     |       binary
          |  |  |           |        |     +--rw private-key-format?
          |  |  |           |        |     |       identityref
          |  |  |           |        |     +--rw (private-key-type)
          |  |  |           |        |        +--:(cleartext-private\
                                                                -key)
          |  |  |           |        |        |        {cleartext-\
                                                       private-keys}?
          |  |  |           |        |        |  +--rw cleartext-\
                                                         private-key?
          |  |  |           |        |        |          binary
          |  |  |           |        |        +--:(hidden-private-\
                                                                 key)
          |  |  |           |        |        |        {hidden-\
                                                       private-keys}?
          |  |  |           |        |        |  +--rw hidden-\
                                                         private-key?
          |  |  |           |        |        |          empty
          |  |  |           |        |        +--:(encrypted-private\
                                                                -key)
          |  |  |           |        |                 {encrypted-\
                                                       private-keys}?
          |  |  |           |        |           +--rw encrypted-\
                                                          private-key
          |  |  |           |        |              +--rw encrypted-\
                                                                   by
          |  |  |           |        |              +--rw encrypted-\
                                                         value-format
          |  |  |           |        |              |       \
                                                          identityref
          |  |  |           |        |              +--rw encrypted-\
                                                                value
          |  |  |           |        |                      binary
          |  |  |           |        +--:(central-keystore)
          |  |  |           |                 {central-keystore-\
                                          supported,asymmetric-keys}?
          |  |  |           |           +--rw central-keystore-\
                                                           reference?
          |  |  |           |                   ks:central-\
                                                   asymmetric-key-ref
          |  |  |           +--:(tls13-epsk)
          |  |  |                    {tlsc:client-ident-tls13-epsk}?
          |  |  |              +--rw tls13-epsk
          |  |  |                 +--rw (inline-or-keystore)
          |  |  |                 |  +--:(inline)
          |  |  |                 |  |        {inline-definitions-\
                                                          supported}?
          |  |  |                 |  |  +--rw inline-definition
          |  |  |                 |  |     +--rw key-format?
          |  |  |                 |  |     |       identityref
          |  |  |                 |  |     +--rw (key-type)
          |  |  |                 |  |        +--:(cleartext-\
                                                       symmetric-key)
          |  |  |                 |  |        |  +--rw cleartext-\
                                                       symmetric-key?
          |  |  |                 |  |        |          binary
          |  |  |                 |  |        |          {cleartext-\
                                                     symmetric-keys}?
          |  |  |                 |  |        +--:(hidden-symmetric-\
                                                                 key)
          |  |  |                 |  |        |        {hidden-\
                                                     symmetric-keys}?
          |  |  |                 |  |        |  +--rw hidden-\
                                                       symmetric-key?
          |  |  |                 |  |        |          empty
          |  |  |                 |  |        +--:(encrypted-\
                                                       symmetric-key)
          |  |  |                 |  |                 {encrypted-\
                                                     symmetric-keys}?
          |  |  |                 |  |           +--rw encrypted-\
                                                        symmetric-key
          |  |  |                 |  |              +--rw encrypted-\
                                                                   by
          |  |  |                 |  |              +--rw encrypted-\
                                                         value-format
          |  |  |                 |  |              |       \
                                                          identityref
          |  |  |                 |  |              +--rw encrypted-\
                                                                value
          |  |  |                 |  |                      binary
          |  |  |                 |  +--:(central-keystore)
          |  |  |                 |           {central-keystore-\
                                           supported,symmetric-keys}?
          |  |  |                 |     +--rw central-keystore-\
                                                           reference?
          |  |  |                 |             ks:central-symmetric\
                                                             -key-ref
          |  |  |                 +--rw external-identity
          |  |  |                 |       string
          |  |  |                 +--rw hash?
          |  |  |                 |       tlscmn:epsk-supported-hash
          |  |  |                 +--rw context?
          |  |  |                 |       string
          |  |  |                 +--rw target-protocol?
          |  |  |                 |       uint16
          |  |  |                 +--rw target-kdf?
          |  |  |                         uint16
          |  |  +--rw server-authentication
          |  |  |  +--rw (ref-or-explicit)?
          |  |  |     +--:(ref)
          |  |  |     |  +--rw credentials-reference?
          |  |  |     |          sys-tcs-plus:server-credentials-ref
          |  |  |     |          {credential-reference}?
          |  |  |     +--:(explicit)
          |  |  |        +--rw ca-certs!
          |  |  |        |  +--rw (inline-or-truststore)
          |  |  |        |     +--:(inline)
          |  |  |        |     |        {inline-definitions-\
                                                          supported}?
          |  |  |        |     |  +--rw inline-definition
          |  |  |        |     |     +--rw certificate* [name]
          |  |  |        |     |        +--rw name
          |  |  |        |     |        |       string
          |  |  |        |     |        +--rw cert-data
          |  |  |        |     |        |       trust-anchor-cert-cms
          |  |  |        |     |        +---n certificate-expiration
          |  |  |        |     |                {certificate-\
                                            expiration-notification}?
          |  |  |        |     |           +-- expiration-date
          |  |  |        |     |                   yang:date-and-time
          |  |  |        |     +--:(central-truststore)
          |  |  |        |              {central-truststore-\
                                             supported,certificates}?
          |  |  |        |        +--rw central-truststore-reference?
          |  |  |        |                ts:central-certificate-bag\
                                                                 -ref
          |  |  |        +--rw ee-certs!
          |  |  |        |  +--rw (inline-or-truststore)
          |  |  |        |     +--:(inline)
          |  |  |        |     |        {inline-definitions-\
                                                          supported}?
          |  |  |        |     |  +--rw inline-definition
          |  |  |        |     |     +--rw certificate* [name]
          |  |  |        |     |        +--rw name
          |  |  |        |     |        |       string
          |  |  |        |     |        +--rw cert-data
          |  |  |        |     |        |       trust-anchor-cert-cms
          |  |  |        |     |        +---n certificate-expiration
          |  |  |        |     |                {certificate-\
                                            expiration-notification}?
          |  |  |        |     |           +-- expiration-date
          |  |  |        |     |                   yang:date-and-time
          |  |  |        |     +--:(central-truststore)
          |  |  |        |              {central-truststore-\
                                             supported,certificates}?
          |  |  |        |        +--rw central-truststore-reference?
          |  |  |        |                ts:central-certificate-bag\
                                                                 -ref
          |  |  |        +--rw raw-public-keys!
          |  |  |        |       {tlsc:server-auth-raw-public-key}?
          |  |  |        |  +--rw (inline-or-truststore)
          |  |  |        |     +--:(inline)
          |  |  |        |     |        {inline-definitions-\
                                                          supported}?
          |  |  |        |     |  +--rw inline-definition
          |  |  |        |     |     +--rw public-key* [name]
          |  |  |        |     |        +--rw name
          |  |  |        |     |        |       string
          |  |  |        |     |        +--rw public-key-format
          |  |  |        |     |        |       identityref
          |  |  |        |     |        +--rw public-key
          |  |  |        |     |                binary
          |  |  |        |     +--:(central-truststore)
          |  |  |        |              {central-truststore-\
                                              supported,public-keys}?
          |  |  |        |        +--rw central-truststore-reference?
          |  |  |        |                ts:central-public-key-bag-\
                                                                  ref
          |  |  |        +--rw tls13-epsks?             empty
          |  |  |                {tlsc:server-auth-tls13-epsk}?
          |  |  +--rw hello-params {tlscmn:hello-params}?
          |  |     +--rw tls-versions
          |  |     |  +--rw min?   identityref
          |  |     |  +--rw max?   identityref
          |  |     +--rw cipher-suites
          |  |        +--rw cipher-suite*
          |  |                tlscsa:tls-cipher-suite-algorithm
          |  +--:(obfuscation)
          |     +--rw shared-secret?           string
          +--rw (source-type)?
          |  +--:(source-ip)
          |  |  +--rw source-ip?               inet:ip-address
          |  +--:(source-interface)
          |     +--rw source-interface?        if:interface-ref
          +--rw vrf-instance?
          |       -> /ni:network-instances/network-instance/name
          +--rw single-connection?             boolean
          +--rw timeout?                       uint16
          +--ro statistics
             +--ro discontinuity-time?    yang:date-and-time
             +--ro connection-opens?      yang:counter64
             +--ro connection-closes?     yang:counter64
             +--ro connection-aborts?     yang:counter64
             +--ro connection-failures?   yang:counter64
             +--ro connection-timeouts?   yang:counter64
             +--ro messages-sent?         yang:counter64
             +--ro messages-received?     yang:counter64
             +--ro errors-received?       yang:counter64
             +--ro sessions?              yang:counter64
             +--ro cert-errors?           yang:counter64
             +--ro rpk-errors?            yang:counter64
                     {tlsc:server-auth-raw-public-key}?
]]></artwork>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The document leverages data structures defined in <xref target="RFC9645"/>.</t>
      <t>Thanks to Joe Clarke and Tom Petch for the review and comments.</t>
      <t>Thanks to Reshad Rahman for the yangdoctors review.</t>
      <dl>
        <dt>Authors of RFC 9105:</dt>
        <dd>
          <t>Bo Wu</t>
        </dd>
        <dt/>
        <dd>
          <t>Guangying Zheng</t>
        </dd>
        <dt/>
        <dd>
          <t>Michael Wang</t>
        </dd>
        <dt>Acknowledgments from RFC 9105:</dt>
        <dd>
          <t>The authors wish to thank Alex Campbell, John Heasley, Ebben Aries,
 Alan DeKok, Joe Clarke, Tom Petch, Robert Wilton, and many others for
 their helpful comments and suggestions.</t>
        </dd>
      </dl>
    </section>
  </back>
  <!-- ##markdown-source:
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
RT0qXazOYcTI6Oh1/j+Mw1b2pUABAA==

-->

</rfc>
