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

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

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="RFC9105"/> defines a YANG module ("ietf-system-tacacs-plus") that augments the System Management data model defined in <xref target="RFC7317"/> for the management of Terminal Access Controller Access-Control System Plus (TACACS+) clients. 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+ client, 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>
        </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
   router 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 the 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 the 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 following structure:</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)
       |     |  ...
       |     +--:(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>
      <t>Specifically, the module is designed to cover the following key requirements specified in <xref target="I-D.ietf-opsawg-tacacs-tls13"/>:</t>
      <ul spacing="normal">
        <li>
          <t>TLS 1.3 <xref target="RFC8446"/> <bcp14>MUST</bcp14> be used for transport.</t>
        </li>
        <li>
          <t>Earlier TLS versions TLS <bcp14>MUST NOT</bcp14> be used.</t>
        </li>
        <li>
          <t>The cipher suites offered or accepted <bcp14>SHOULD</bcp14> be configurable.</t>
        </li>
        <li>
          <t>Implementations <bcp14>MAY</bcp14> support Raw Public Keys and PSK.</t>
        </li>
        <li>
          <t>Implementations <bcp14>MUST</bcp14> support the ability to configure the server's domain name, so that it may be included in the TLS Server Name Indication (SNI) extension.</t>
        </li>
      </ul>
      <t>The following new data nodes are supported compared to <xref target="RFC9105"/>:</t>
      <dl>
        <dt>'client-credentials' and 'server-credentials':</dt>
        <dd>
          <t>Defines a set credentials that can be globally provisioned and then referenced under specific servers.</t>
        </dd>
        <dt>'domain-name':</dt>
        <dd>
          <t>Provides a domain name of the server per <xref section="3.3" sectionFormat="of" target="I-D.ietf-opsawg-tacacs-tls13"/>.</t>
        </dd>
        <dt>'sni-enabled':</dt>
        <dd>
          <t>Controls activation of Server Name Indication (SNI) (<xref section="3" sectionFormat="of" target="RFC6066"/>). This paramter can be used only if a domain name is provided.</t>
        </dd>
        <dt>'client-identity':</dt>
        <dd>
          <t>Specifies the identity credentials that the client may present when
establishing a connection to a server. Client identities can be configured at the top level and then referenced for specific server instances. Alternatively, client identities can be configured explicitely under each server instance.</t>
        </dd>
        <dt>'server-authentication':</dt>
        <dd>
          <t>Specifies how a client authenticates servers. Server credentials can be configured at the top level and then referenced for specific server instances. Alternatively, client identities can be configured explicitely under each server instance.</t>
        </dd>
        <dt>'hello-params':</dt>
        <dd>
          <t>Controls TLS versions and cipher suites.</t>
        </dd>
        <dt>'keepalives':</dt>
        <dd>
          <t>Providers a set of parameters for testing the aliveness of the server.</t>
        </dd>
        <dt>'discontinuity-time':</dt>
        <dd>
          <t>The time on the most recent occasion at which the client suffered a discontinuity.</t>
        </dd>
        <dt>'cert-errors':</dt>
        <dd>
          <t>Number of connection failures due to certificate issues.</t>
        </dd>
        <dt>'rpk-errors':</dt>
        <dd>
          <t>Number of RPK-related connection failures.</t>
        </dd>
      </dl>
    </section>
    <section anchor="tacacs-client-module">
      <name>TACACS+ Client Module</name>
      <t>This 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="RFC9257"/>, <xref target="RFC9258"/>, <xref target="RFC9258"/>, and <xref target="RFC6520"/>.</t>
      <sourcecode markers="true" name="ietf-system-tacacs-plus@2024-12-11.yang"><![CDATA[
module ietf-system-tacacs-plus {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-system-tacacs-plus";
  prefix sys-tcs-plus;

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

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

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

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

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

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

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

  revision 2024-12-11 {
    description
      "This revision adds TLS support";
    reference
      "RFC XXXX: A YANG 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+.";
  }

  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
      "tacacs-plus-server-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 base-statistics {
    description
      "Grouping for TACACS+ statistics attributes.";
    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.";
    }
  }

  grouping statistics {
    description
      "Grouping for TACACS+ statistics attributes.";
    leaf discontinuity-time {
      type yang:date-and-time;
      mandatory true;
      description
        "The time on the most recent occasion at which the TACACS+
         client suffered a discontinuity.";
    }
    uses base-statistics;
    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 the client identity using a certificate.";
    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 the client identity using a raw private
       key.";
    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 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 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.";
    reference
      "RFC 8446: The Transport Layer Security (TLS) Protocol
                 Version 1.3, Section 4.4.2";
    nacm:default-deny-write;
    choice auth-type {
      //default "certificate";
      //mandatory true;
      description
        "A choice amongst authentication types, of which one must
         be enabled and selected.";
      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 of explicit configuration.";
      case ref {
        description
          "Provides a reference.";
        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.";
        uses client-identity;
      }
    }
  }

  grouping server-authentication {
    description
      "Specifies how the 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 the 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 the 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 the TLS client can authenticate TLS servers
         using configured external PSKs.";
    }
  }

  grouping server-authentication-with-ref {
    description
      "Specifies how the 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.";
        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.";
        uses server-authentication;
      }
    }
  }

  grouping hello-params {
    description
      "Configurable parameters for the TLS hello message.";
    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 the TLS client may present when
         establishing a connection to a TLS server.";
      //uses client-identity;
      uses client-identity-with-ref;
    }
    container server-authentication {
      must 'ca-certs or ee-certs or raw-public-keys or tls13-epsks';
      description
        "Specifies how the TLS client can authenticate TLS servers.";
      //uses server-authentication;
      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 tls-grouping-reuse {
    description
      "A grouping for TLS with TLS1.2 and keepalive removed.";
    uses tlsc:tls-client-grouping {
      refine "client-identity/auth-type/tls12-psk" {
        if-feature "not tlsc:client-ident-tls12-psk";
      }
      refine "server-authentication/tls12-psks" {
        if-feature "not tlsc:server-auth-tls12-psk";
      }
      refine "hello-params/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 "hello-params/tls-versions/max" {
        must "not(derived-from-or-self(current(), "
           + "'tlscmn:tls12'))" {
          error-message
            "TLS 1.2 is not supported as max TLS version";
        }
      }
      refine "keepalives" {
        if-feature "not tlsc:tls-client-keepalives";
      }
    }
  }

  grouping tacacs-plus {
    description
      "Grouping for TACACS+ attributes.";
    container tacacs-plus {
      must "not(derived-from-or-self(../sys:authentication"
         + "/sys:user-authentication-order, '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 the TLS client may present when
           establishing a connection to a TLS server.
           A list of client credentials to be referenced.";
        nacm:default-deny-write;
        leaf id {
          type string;
          description
            "A credential identifier.";
        }
        uses client-identity;
      }
      list server-credentials {
        if-feature credential-reference;
        key "id";
        description
          "Identity credentials the TLS client may present when
           establishing a connection to a TLS server.";
        nacm:default-deny-write;
        leaf id {
          type string;
          description
            "A credential identifier.";
        }
        uses server-authentication;
      }
      list server {
        key "name";
        ordered-by user;
        description
          "List of TACACS+ servers used by the device.";
        leaf name {
          type string;
          description
            "An arbitrary name for the TACACS+ server.";
        }
        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.";
        }
        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";
        }
        leaf address {
          type inet:host;
          mandatory true;
          description
            "The address of the TACACS+ server.";
        }
        leaf port {
          type inet:port-number;
          default "49"; // to be replaced by TACACS-TLS-PORT
          description
            "The port number of TACACS+ Sserver port number.";
        }
        choice security {
          mandatory true;
          //default "tls";
          description
            "Security mechanism between TACACS+ client and server.";
          case tls {
            description
              "TLS is used.";
            uses tls-client;
            //uses client-identity-with-ref;
          }
          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 the outbound
                 TACACS+ packet.";
            }
          }
        }
        leaf vrf-instance {
          type leafref {
            path "/ni:network-instances/ni:network-instance/ni:name";
          }
          description
            "Specifies the VPN Routing and Forwarding (VRF) instance
             to use to communicate with the TACACS+ server.";
          reference
            "RFC 8529: YANG Data Model for Network Instances";
        }
        leaf single-connection {
          type boolean;
          default "false";
          description
            "Indicates whether the Single Connection Mode is enabled
             for the server. By default, the Single Connection Mode
             is disabled.";
        }
        leaf timeout {
          type uint16 {
            range "1..max";
          }
          units "seconds";
          default "5";
          description
            "The number of seconds 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 model.";
    uses tacacs-plus;
  }
}
]]></sourcecode>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This section is modeled after the template described in <xref section="3.7" sectionFormat="of" target="I-D.ietf-netmod-rfc8407bis"/>.</t>
      <t>The "ietf-ac-common" YANG module defines a data model that is
designed to be accessed via YANG-based management protocols, such as
NETCONF <xref target="RFC6241"/> and RESTCONF <xref target="RFC8040"/>. These protocols have to
use a secure transport layer (e.g., SSH <xref target="RFC4252"/>, TLS <xref target="RFC8446"/>, and
QUIC <xref target="RFC9000"/>) and have to use mutual authentication.</t>
      <t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/>
   provides the means to restrict access for particular NETCONF or
   RESTCONF users to a preconfigured subset of all available NETCONF or
   RESTCONF protocol operations and content.</t>
      <t>There are a number of data nodes defined in this YANG module that are
   writable/creatable/deletable (i.e., config true, which is the
   default).  These data nodes may be considered 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.
   Specifically, the following subtrees and data nodes have particular
   sensitivities/vulnerabilities:</t>
      <dl>
        <dt>/system/tacacs-plus/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>/system/tacacs-plus/server/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>
      </dl>
      <t>Some of the readable data nodes in this YANG module may be considered
   sensitive or vulnerable in some network environments.  It is thus
   important to control read access (e.g., via get, get-config, or
   notification) to these data nodes.  Specifically, the following
subtrees and data nodes have particular sensitivities/vulnerabilities:</t>
      <artwork><![CDATA[
 'xxx':
 :  xxxx.
]]></artwork>
      <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="RFC9645."/> for information as to which nodes may
   be considered sensitive or vulnerable in network environments.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to update the following URI in the "ns" subregistry within
   the "IETF XML Registry" <xref target="RFC3688"/>:</t>
      <artwork><![CDATA[
   URI:  urn:ietf:params:xml:ns:yang:ietf-system-tacacs-plus
   Registrant Contact:  The IESG.
   XML:  N/A; the requested URI is an XML namespace.
]]></artwork>
      <t>IANA is requested to register the following YANG module in the "YANG Module
   Names" registry <xref target="RFC6020"/> within the "YANG Parameters" registry group:</t>
      <artwork><![CDATA[
   Name:  ietf-system-tacacs-plus
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-system-tacacs-plus
   Prefix:  sys-tcs-plus
   Maintained by IANA?  N
   Reference:  RFC XXXX
]]></artwork>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7317">
          <front>
            <title>A YANG Data Model for System Management</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="August" year="2014"/>
            <abstract>
              <t>This document defines a YANG data model for the configuration and identification of some common system properties within a device containing a Network Configuration Protocol (NETCONF) server. This document also includes data node definitions for system identification, time-of-day management, user management, DNS resolver configuration, and some protocol operations for system management.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7317"/>
          <seriesInfo name="DOI" value="10.17487/RFC7317"/>
        </reference>
        <reference anchor="I-D.ietf-opsawg-tacacs-tls13">
          <front>
            <title>Terminal Access Controller Access-Control System Plus (TACACS+) over TLS 1.3</title>
            <author fullname="Thorsten Dahm" initials="T." surname="Dahm">
         </author>
            <author fullname="John Heasley" initials="J." surname="Heasley">
              <organization>NTT</organization>
            </author>
            <author fullname="dcmgash@cisco.com" initials="" surname="dcmgash@cisco.com">
              <organization>Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Andrej Ota" initials="A." surname="Ota">
              <organization>Google Inc.</organization>
            </author>
            <date day="12" month="December" year="2024"/>
            <abstract>
              <t>   The Terminal Access Controller Access-Control System Plus (TACACS+)
   Protocol provides device administration for routers, network access
   servers and other networked computing devices via one or more
   centralized TACACS+ Servers.  This document adds Transport Layer
   Security (TLS 1.3) support to TACACS+ and obsoletes former inferior
   security mechanisms.

   This document updates RFC8907.


              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-tacacs-tls13-16"/>
        </reference>
        <reference anchor="RFC8342">
          <front>
            <title>Network Management Datastore Architecture (NMDA)</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder"/>
            <author fullname="P. Shafer" initials="P." surname="Shafer"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="R. Wilton" initials="R." surname="Wilton"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>Datastores are a fundamental concept binding the data models written in the YANG data modeling language to network management protocols such as the Network Configuration Protocol (NETCONF) and RESTCONF. This document defines an architectural framework for datastores based on the experience gained with the initial simpler model, addressing requirements that were not well supported in the initial model. This document updates RFC 7950.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8342"/>
          <seriesInfo name="DOI" value="10.17487/RFC8342"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC6066">
          <front>
            <title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <date month="January" year="2011"/>
            <abstract>
              <t>This document provides specifications for existing TLS extensions. It is a companion document for RFC 5246, "The Transport Layer Security (TLS) Protocol Version 1.2". The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6066"/>
          <seriesInfo name="DOI" value="10.17487/RFC6066"/>
        </reference>
        <reference anchor="RFC6991">
          <front>
            <title>Common YANG Data Types</title>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document introduces a collection of common data types to be used with the YANG data modeling language. This document obsoletes RFC 6021.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6991"/>
          <seriesInfo name="DOI" value="10.17487/RFC6991"/>
        </reference>
        <reference anchor="RFC8341">
          <front>
            <title>Network Configuration Access Control Model</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. This document defines such an access control model.</t>
              <t>This document obsoletes RFC 6536.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="91"/>
          <seriesInfo name="RFC" value="8341"/>
          <seriesInfo name="DOI" value="10.17487/RFC8341"/>
        </reference>
        <reference anchor="RFC8343">
          <front>
            <title>A YANG Data Model for Interface Management</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document defines a YANG data model for the management of network interfaces. It is expected that interface-type-specific data models augment the generic interfaces data model defined in this document. The data model includes definitions for configuration and system state (status information and counters for the collection of statistics).</t>
              <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t>
              <t>This document obsoletes RFC 7223.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8343"/>
          <seriesInfo name="DOI" value="10.17487/RFC8343"/>
        </reference>
        <reference anchor="RFC8529">
          <front>
            <title>YANG Data Model for Network Instances</title>
            <author fullname="L. Berger" initials="L." surname="Berger"/>
            <author fullname="C. Hopps" initials="C." surname="Hopps"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <author fullname="D. Bogdanovic" initials="D." surname="Bogdanovic"/>
            <author fullname="X. Liu" initials="X." surname="Liu"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>This document defines a network instance module. This module can be used to manage the virtual resource partitioning that may be present on a network device. Examples of common industry terms for virtual resource partitioning are VPN Routing and Forwarding (VRF) instances and Virtual Switch Instances (VSIs).</t>
              <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8529"/>
          <seriesInfo name="DOI" value="10.17487/RFC8529"/>
        </reference>
        <reference anchor="RFC9640">
          <front>
            <title>YANG Data Types and Groupings for Cryptography</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="October" year="2024"/>
            <abstract>
              <t>This document presents a YANG 1.1 (RFC 7950) module defining identities, typedefs, and groupings useful to cryptographic applications.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9640"/>
          <seriesInfo name="DOI" value="10.17487/RFC9640"/>
        </reference>
        <reference anchor="RFC9641">
          <front>
            <title>A YANG Data Model for a Truststore</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="October" year="2024"/>
            <abstract>
              <t>This document presents a YANG module for configuring bags of certificates and bags of public keys that can be referenced by other data models for trust. Notifications are sent when certificates are about to expire.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9641"/>
          <seriesInfo name="DOI" value="10.17487/RFC9641"/>
        </reference>
        <reference anchor="RFC9642">
          <front>
            <title>A YANG Data Model for a Keystore</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="October" year="2024"/>
            <abstract>
              <t>This document presents a YANG module called "ietf-keystore" that enables centralized configuration of both symmetric and asymmetric keys. The secret value for both key types may be encrypted or hidden. Asymmetric keys may be associated with certificates. Notifications are sent when certificates are about to expire.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9642"/>
          <seriesInfo name="DOI" value="10.17487/RFC9642"/>
        </reference>
        <reference anchor="RFC9645">
          <front>
            <title>YANG Groupings for TLS Clients and TLS Servers</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="October" year="2024"/>
            <abstract>
              <t>This document presents four YANG 1.1 modules -- three IETF modules and one supporting IANA module.</t>
              <t>The three IETF modules are "ietf-tls-common", "ietf-tls-client", and "ietf-tls-server". The "ietf-tls-client" and "ietf-tls-server" modules are the primary productions of this work, supporting the configuration and monitoring of TLS clients and servers.</t>
              <t>The IANA module is "iana-tls-cipher-suite-algs". This module defines YANG enumerations that provide support for an IANA-maintained algorithm registry.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9645"/>
          <seriesInfo name="DOI" value="10.17487/RFC9645"/>
        </reference>
        <reference anchor="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="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="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="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="RFC8907">
          <front>
            <title>The Terminal Access Controller Access-Control System Plus (TACACS+) Protocol</title>
            <author fullname="T. Dahm" initials="T." surname="Dahm"/>
            <author fullname="A. Ota" initials="A." surname="Ota"/>
            <author fullname="D.C. Medway Gash" initials="D.C." surname="Medway Gash"/>
            <author fullname="D. Carrel" initials="D." surname="Carrel"/>
            <author fullname="L. Grant" initials="L." surname="Grant"/>
            <date month="September" year="2020"/>
            <abstract>
              <t>This document describes the Terminal Access Controller Access-Control System Plus (TACACS+) protocol, which is widely deployed today to provide Device Administration for routers, network access servers, and other networked computing devices via one or more centralized servers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8907"/>
          <seriesInfo name="DOI" value="10.17487/RFC8907"/>
        </reference>
        <reference anchor="RFC8340">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution of the YANG language.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="215"/>
          <seriesInfo name="RFC" value="8340"/>
          <seriesInfo name="DOI" value="10.17487/RFC8340"/>
        </reference>
        <reference anchor="I-D.ietf-netmod-rfc8407bis">
          <front>
            <title>Guidelines for Authors and Reviewers of Documents Containing YANG Data Models</title>
            <author fullname="Andy Bierman" initials="A." surname="Bierman">
              <organization>YumaWorks</organization>
            </author>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization>Orange</organization>
            </author>
            <author fullname="Qin Wu" initials="Q." surname="Wu">
              <organization>Huawei</organization>
            </author>
            <date day="13" month="November" year="2024"/>
            <abstract>
              <t>   This memo provides guidelines for authors and reviewers of
   specifications containing YANG modules, including IANA-maintained
   modules.  Recommendations and procedures are defined, which are
   intended to increase interoperability and usability of Network
   Configuration Protocol (NETCONF) and RESTCONF protocol
   implementations that utilize YANG modules.  This document obsoletes
   RFC 8407.

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

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

<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>
    </section>
  </back>
  <!-- ##markdown-source:
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
8Y/zBQd1X9cRjK9bnbwG0/jnkfrcZfbTO71Uy1vzcOcA0syVk6EjUIPV5FNr
GWkSfByfO1JSCMf0y8T6MrHs58vEuoWJ5RyN95UwgJuPH3eR/uynoEb9RjOw
3+TzXM34Kayfd9Q3mvZ07U/DmgYbfGrONMjUxJjGAY1S3WuyKn2WDblsTGXQ
5QTWLXzpsZnAAUo+DeObkrLhY108KMYJIyEF1z01xcdCH20Sqi/263nV5M7Y
hkcdh+FVRLZpMQrc0yq8+ttyN/iOTTTpk3NeayXbPjPhK6+YlkrOYdo6K80s
y2QQLZ36TTqiJ3jCdRNUg0V7XInUDaTDXgn1SfW8oZAejEDqnl+WKanjZ/IF
S380tRInsa+pAgssKp4ToaUys9eZfjXUH6FV6SZOh8CK1olJxzLXpyddkc8+
MOTPwPq1CQobtW2vfWs02xw1/cO63hxT7YlCOMR6UxcYd4Kti4ueIBqhjTEJ
Bwf7Y+I69m9AklBItT8i8lmfTeXwOpHdmw8uu9HgCnTueGRvisVtDaulcfas
Ho6j382kVY8RJbmboWV+1OEmJAkkB/RH5JZxUc/4znEJxZDWwkX+cRN6bLhm
fsKxseJba+Ein03VED/zeZ3m3UTo2+BSw8PXsxuOz+9GSPgOwz5IyJ8fNsfD
8P6F/YY98WjJ1V6nJ8x1Pt7C0Jr+yz64+Mnga5pK9DTmj/cEEkgn71nzo59d
vj4E+feGQstFw0xK719fPhtCCGW596yqavtJ7/0hsIYc+LUgKExkSvymUOSD
cG5FYPadF+1ZD+111eMnQazTB+3Mbcy468SjIQHiZqQMnVfWSY7WPQB9AMif
RkLGRt1oziJcBwtvaNfAJbqNkWWhrQVr8ic9zkaEYNXQvoR+bbVvXrj5lLaC
WE2otO6GaMH/i+fyi+eSP///ei7ZZ+S5NP+4W88lMybInXoumfV1fTZln43n
0vzjDj2XzBjZu/NcMuvr2p5L9hl5Ls3nbj2X/PkMPJefBBf1rOe5/BS4bOq5
9N7fgedSPZ+B59J71pHvXyzYxqcz2cNHQz5/sPXpbmlrLayenvvemoA0bYNr
aXRDS0m9720pme9FZ+/IUjLfb2IpOT1p3KzXp7L81FfmBdv2t/L1qcs8+2Bj
4oc3jfVE4uMtquNrOKmCiMinh7hurX9zG2ctsevjEt6++EcYBz4uesLfTC2/
IUk+3pZxcFtM1m0c+NUd4+BuZqx6bm4V3HBM2W1qe8Fdp/0RuVVcjKfDKvgD
cOltFTThIn/+EVZBEw53YRU04SKfdZaZDawC9V49N7MKWGAn8Frzlt2pVWCi
IZ/QJuEbckYv84A/DVuO1+iFtxWivSlrZ3IP8N0blTublPuWP12n3F3Na7Rk
b1Tu2xLufe5nz7U1Ym1aabx0/qNd/DPdS+Fv7r77vRTeLnC/4MeA/RvYwhWs
yPravk6n78TqdcZ8DXvXxL5zM21n5/X2rt5V+gqFYEveLtzezbVuyu3Teuce
3U4g8vlj8+18JNZKtmvoA2vb5tsEpWtrZVM99YR2Wq4517r2DLfgsMZGzc6e
tO0ovgUro11f+VN4838Q6S/y9Is8DTX3RZ6q54s8/SJPA2c+dOPe/1CIIIwv
onld0dx8aEVn3/9oyexl6q3dbC8HW0fba8uxLg/Y5yO4WMcRHS04fDLB5Rzg
cRvu5h6CK3AmCH96BjT6HRSi6gvPVTqfFxG/wYpDWOQj82WgpolxhPda0t1n
gVKqlUWWY5fapoJVPH7fo7gY/mw5g/5WqwzWu1CxYMlvGkrKBwlRxSPsoFkt
iufnRZnVs4VdnyZSMZ6uKnG9n/1ZoWDdcWkOcsPRK9v8SvrgyRXUpvieLZuO
E1EF3LNM6ACTbBmJA1JaYOM9n9M4ccUCc5uQ5VRL2XSkXjorN695UU7VbfXP
POiw3H/HGm679666Dx4Z417zbtOg6cgYcQl60+EvntuRb+zR133b0oJ/nWQV
OmyzfIXbHbEF+tiqa6rKugNRsUxzKR2osriH9dGDjorJvKhSUXOtivEYhPMm
FadxNl+VvM21Kgr696y4AOaNz1M8fCg3xmyNimWapNmFPFaou2JalkXpVutT
EQaARKXDWT2Ig3Ydb/bZWhXL5btAvdaK8umhFNs3xh8leBfvPJ3wa+oHH0b8
ZKR08pfhNJ5X6VBcRTgpkhXd+DdPATYOAb/NVF1MWPk33+L9nuJW+Dh/R5d6
/o8iZcfzuHyX0oWob4sFe53WyYzuAOV3U15k6aW4BHwhLu78fw5NOPdvEwEA

-->

</rfc>
