<?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-01" 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-01"/>
    <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="11"/>
    <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</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 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 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
]]></artwork>
      <t>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</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>'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>
      </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 statistics {
    description
      "Grouping for TACACS+ statistics attributes.";
    container statistics {
      config false;
      description
        "A collection of server-related statistics objects.";
      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 Mode was enabled, a single
           TCP connection may contain multiple TACACS+ sessions.";
      }
    }
  }

  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 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;
          description
            "Security mechanism between TACACS+ client and server.
             This is modeled as a YANG 'choice' so that it can be
             augmented by a YANG module in a backwards-compatible
             manner.";
          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="18" month="November" 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-15"/>
        </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="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 1127?>

<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 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 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
]]></artwork>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The document leverages data structures defined in <xref target="RFC9645"/>.</t>
      <t>Thanks toJoe Clarke and Tom Petch for the review and comments.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
2ebtz8/W9ebN0Z4o+PdKr+vLEt6sdXGpJkiF0MaY+Hf5+mNS99BfgyS+vdH+
iKhnfTZVw1vbor3+4LJrDa5E55ZH9rpY3NSwWqpjz+r+DfHbmbT6MbY7bmdo
mbt9cB2SeHb5+yNyw7joZ3LruPg2g9bCRf1xHXpsuGZ+wrGxNqrWwkU9m6oh
bgjzOs3XI5pvgksNV13PbtScd9dCwvX89UFC/Xy/OR6GG8/vAOyJR0vQ9To9
YXUv4g0MremI7IOLG9W9pqlET2MgeE8gnrjwnjU/uGHi60NQf28otOpomNHl
/eurZ0MIvnD1nlV1bTd6vT8E1hDMvhYEjYmKbd8UinoQzo0IzL7zoj18ob2u
ftxohnX6UHllG0PnOvFoiGS4Hil9icc6ydEazN8HgPppRFZs1I3mcMB1sHCG
dg1cgpsYWeY7I7Amf9JTO1Hgreo7YNCvrfZTCNef0tZuVBMqrccaWvD/6rn8
6rkUz/+/nkv2BXkuzT9u13PJjAlyq55LZn1dn03ZF+O5NP+4Rc8lM0b29jyX
zPq6tueSfUGeS/O5Xc+leL4Az+UnwUU/63kuPwUum3ounfe34LnUzxfguXSe
deT7Vwu28ekM9nDRUM9ntj7rZ9NaC+un5wG2JiBN59laGt3QUtLve1tK5nvZ
2VuylMz3m1hKtZ40nrrrU1l96ivzvG27Z/L61GWOfbAx8f2nv3oi8eEG1fE1
nFReRNTTQ1y31r++jbOW2HVx8Z9D/BzGgYtLNeGvp5ZfkyQfbso4uCkm6zYO
3Oo14+B2Zqx+rm8VXHNM2U1qe97jo/0RuVFcjKfDKvgMuPS2CppwUT8/h1XQ
hMNtWAVNuKhnnWVmA6tAv9fP9awC5jnSu9a8ZbdqFZhoqMd32veanNHLPBBP
w9nhNXrhnGlob8o6YtwDfPeJ484m1QHkT9ep+vHkNVqyTxz3bQkPMfez59oa
sU6fNF5Z/sEu/oWepXBPad/+WQrnOLdb8IPH/vWcxfJWZH1t31qnb8XqrY35
GvauiX3nqdjOzlfntHpX6SsUvC05x2l7N9d6urZP652HbTuBqOfzxtu5SKwV
bNfQB9Z2XrcJStcZyaZ6+vEdmVxzrnUd/m3BYY0Tl509aTsafANWRru+0nCK
34v0V3n6VZ76mvsqT/XzVZ5+laee5A3duPfP7uCF8VU0ryuam7NPdPb9c0tm
J1Jv7WZ7Odg62l5bjnV5wL4cwcU6cm204PDJBFctE8dNuJt7CC5Pcg/x9NzQ
6JfxQ9eXnis+n2eBuIpKQFikY/Olp6aJcYAXVNIlZp5SupVFkmKX2qaCVTy8
7FFcDn+ynEF/i1UC652vmLfkdw0l1YOEKMIxdtCsFoTzsyxPytnCrk8TKZtM
V4W8p8/+rFGwLqs0B7khh8q2uFvem7mC2pTfk2VTOhFdoJ7LhBKYJMvAvfC+
Dhsv7JyGUV0ssHoTqpxuKZmO9cvayi1qmrfZP3Wgw3L/A2u4tt65s96X+8W5
r92mgbyr3akmbzNvSv7iuB3FwZ7q3m5bWoivFQ5BtuSpmuCka8o7UR/c66gY
zbOCy5prVQwnIF83qTgNk/kqF22uVVGSsGfFBfBfeMYxEVBqkH2NijmPeHLO
47595Hme5fVqfSrCAJC0qzFHraJ9J/phhLfNznksLmIfvB+LlEE8/vNwGs4L
PpSX7cVZtKI77eYcpCp2TNzXqa/eK9y7XfEGS3nveZi+w2sr/1fG2dE8zN9x
uvHzbbZgr3kZzeiSS3H54nnCL+Qt1wt5M+X/AzUUZnrMCwEA

-->

</rfc>
