/* autogenerated by embedmodel.py.  DO NOT EDIT */

#include <zebra.h>
#include "yang.h"

static const char model[] =
	"// SPDX-License-Identifier: BSD-3-Clause\n"
	"module ietf-key-chain {\n"
	"  yang-version 1.1;\n"
	"  namespace \"urn:ietf:params:xml:ns:yang:ietf-key-chain\";\n"
	"  prefix key-chain;\n"
	"\n"
	"  import ietf-yang-types {\n"
	"    prefix yang;\n"
	"  }\n"
	"  import ietf-netconf-acm {\n"
	"    prefix nacm;\n"
	"  }\n"
	"\n"
	"  organization\n"
	"    \"IETF RTGWG - Routing Area Working Group\";\n"
	"  contact\n"
	"    \"WG Web:   <https://datatracker.ietf.org/group/rtgwg>\n"
	"     WG List:  <mailto:rtgwg@ietf.org>\n"
	"\n"
	"     Editor: Acee Lindem\n"
	"             <mailto:acee@cisco.com>\n"
	"             Yingzhen Qu\n"
	"             <mailto:yingzhen.qu@huawei.com>\n"
	"             Derek Yeung\n"
	"             <mailto:derek@arrcus.com>\n"
	"             Ing-Wher Chen\n"
	"             <mailto:Ing-Wher_Chen@jabail.com>\n"
	"             Jeffrey Zhang\n"
	"             <mailto:zzhang@juniper.net>\";\n"
	"\n"
	"  description\n"
	"    \"This YANG module defines the generic configuration\n"
	"     data for key chains.  It is intended that the module\n"
	"     will be extended by vendors to define vendor-specific\n"
	"     key chain configuration parameters.\n"
	"\n"
	"     Copyright (c) 2017 IETF Trust and the persons identified as\n"
	"     authors of the code.  All rights reserved.\n"
	"\n"
	"     Redistribution and use in source and binary forms, with or\n"
	"     without modification, is permitted pursuant to, and subject\n"
	"     to the license terms contained in, the Simplified BSD License\n"
	"     set forth in Section 4.c of the IETF Trust\'s Legal Provisions\n"
	"     Relating to IETF Documents\n"
	"     (http://trustee.ietf.org/license-info).\n"
	"\n"
	"     This version of this YANG module is part of RFC 8177;\n"
	"     see the RFC itself for full legal notices.\";\n"
	"\n"
	"  reference \"RFC 8177\";\n"
	"\n"
	"  revision 2017-06-15 {\n"
	"    description\n"
	"      \"Initial RFC Revision\";\n"
	"    reference \"RFC 8177: YANG Data Model for Key Chains\";\n"
	"  }\n"
	"\n"
	"  feature hex-key-string {\n"
	"    description\n"
	"      \"Support hexadecimal key string.\";\n"
	"  }\n"
	"\n"
	"  feature accept-tolerance {\n"
	"    description\n"
	"      \"Support the tolerance or acceptance limit.\";\n"
	"  }\n"
	"\n"
	"  feature independent-send-accept-lifetime {\n"
	"    description\n"
	"      \"Support for independent send and accept key lifetimes.\";\n"
	"  }\n"
	"\n"
	"  feature crypto-hmac-sha-1-12 {\n"
	"    description\n"
	"      \"Support for TCP HMAC-SHA-1 12-byte digest hack.\";\n"
	"  }\n"
	"\n"
	"  feature cleartext {\n"
	"    description\n"
	"      \"Support for cleartext algorithm.  Usage is\n"
	"       NOT RECOMMENDED.\";\n"
	"  }\n"
	"\n"
	"  feature aes-cmac-prf-128 {\n"
	"    description\n"
	"      \"Support for AES Cipher-based Message Authentication\n"
	"       Code Pseudorandom Function.\";\n"
	"  }\n"
	"\n"
	"  feature aes-key-wrap {\n"
	"    description\n"
	"      \"Support for Advanced Encryption Standard (AES) Key Wrap.\";\n"
	"  }\n"
	"\n"
	"  feature replay-protection-only {\n"
	"    description\n"
	"      \"Provide replay protection without any authentication\n"
	"       as required by protocols such as Bidirectional\n"
	"       Forwarding Detection (BFD).\";\n"
	"  }\n"
	"  identity crypto-algorithm {\n"
	"    description\n"
	"      \"Base identity of cryptographic algorithm options.\";\n"
	"  }\n"
	"\n"
	"  identity hmac-sha-1-12 {\n"
	"    base crypto-algorithm;\n"
	"    if-feature \"crypto-hmac-sha-1-12\";\n"
	"    description\n"
	"      \"The HMAC-SHA1-12 algorithm.\";\n"
	"  }\n"
	"\n"
	"  identity aes-cmac-prf-128 {\n"
	"    base crypto-algorithm;\n"
	"    if-feature \"aes-cmac-prf-128\";\n"
	"    description\n"
	"      \"The AES-CMAC-PRF-128 algorithm - required by\n"
	"       RFC 5926 for TCP-AO key derivation functions.\";\n"
	"  }\n"
	"\n"
	"  identity md5 {\n"
	"    base crypto-algorithm;\n"
	"    description\n"
	"      \"The MD5 algorithm.\";\n"
	"  }\n"
	"\n"
	"  identity sha-1 {\n"
	"    base crypto-algorithm;\n"
	"    description\n"
	"      \"The SHA-1 algorithm.\";\n"
	"  }\n"
	"\n"
	"  identity hmac-sha-1 {\n"
	"    base crypto-algorithm;\n"
	"    description\n"
	"      \"HMAC-SHA-1 authentication algorithm.\";\n"
	"  }\n"
	"\n"
	"  identity hmac-sha-256 {\n"
	"    base crypto-algorithm;\n"
	"    description\n"
	"      \"HMAC-SHA-256 authentication algorithm.\";\n"
	"  }\n"
	"\n"
	"  identity hmac-sha-384 {\n"
	"    base crypto-algorithm;\n"
	"    description\n"
	"      \"HMAC-SHA-384 authentication algorithm.\";\n"
	"  }\n"
	"\n"
	"  identity hmac-sha-512 {\n"
	"    base crypto-algorithm;\n"
	"    description\n"
	"      \"HMAC-SHA-512 authentication algorithm.\";\n"
	"  }\n"
	"\n"
	"  identity cleartext {\n"
	"    base crypto-algorithm;\n"
	"    if-feature \"cleartext\";\n"
	"    description\n"
	"      \"cleartext.\";\n"
	"  }\n"
	"\n"
	"  identity replay-protection-only {\n"
	"    base crypto-algorithm;\n"
	"    if-feature \"replay-protection-only\";\n"
	"    description\n"
	"      \"Provide replay protection without any authentication as\n"
	"       required by protocols such as Bidirectional Forwarding\n"
	"       Detection (BFD).\";\n"
	"  }\n"
	"\n"
	"  typedef key-chain-ref {\n"
	"    type leafref {\n"
	"      path\n"
	"      \"/key-chain:key-chains/key-chain:key-chain/key-chain:name\";\n"
	"    }\n"
	"    description\n"
	"      \"This type is used by data models that need to reference\n"
	"       configured key chains.\";\n"
	"  }\n"
	"\n"
	"  grouping lifetime {\n"
	"    description\n"
	"      \"Key lifetime specification.\";\n"
	"    choice lifetime {\n"
	"      default \"always\";\n"
	"      description\n"
	"        \"Options for specifying key accept or send lifetimes\";\n"
	"      case always {\n"
	"        leaf always {\n"
	"          type empty;\n"
	"          description\n"
	"            \"Indicates key lifetime is always valid.\";\n"
	"        }\n"
	"      }\n"
	"      case start-end-time {\n"
	"        leaf start-date-time {\n"
	"          type yang:date-and-time;\n"
	"          description\n"
	"            \"Start time.\";\n"
	"        }\n"
	"        choice end-time {\n"
	"          default \"infinite\";\n"
	"          description\n"
	"            \"End-time setting.\";\n"
	"          case infinite {\n"
	"            leaf no-end-time {\n"
	"              type empty;\n"
	"              description\n"
	"                \"Indicates key lifetime end-time is infinite.\";\n"
	"            }\n"
	"          }\n"
	"          case duration {\n"
	"            leaf duration {\n"
	"              type uint32 {\n"
	"                range \"1..2147483646\";\n"
	"              }\n"
	"              units \"seconds\";\n"
	"              description\n"
	"                \"Key lifetime duration, in seconds\";\n"
	"            }\n"
	"          }\n"
	"          case end-date-time {\n"
	"            leaf end-date-time {\n"
	"              type yang:date-and-time;\n"
	"              description\n"
	"                \"End time.\";\n"
	"            }\n"
	"          }\n"
	"        }\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"\n"
	"  container key-chains {\n"
	"    description\n"
	"      \"All configured key-chains on the device.\";\n"
	"    list key-chain {\n"
	"      key \"name\";\n"
	"      description\n"
	"        \"List of key-chains.\";\n"
	"      leaf name {\n"
	"        type string;\n"
	"        description\n"
	"          \"Name of the key-chain.\";\n"
	"      }\n"
	"      leaf description {\n"
	"        type string;\n"
	"        description\n"
	"          \"A description of the key-chain\";\n"
	"      }\n"
	"      container accept-tolerance {\n"
	"        if-feature \"accept-tolerance\";\n"
	"        description\n"
	"          \"Tolerance for key lifetime acceptance (seconds).\";\n"
	"        leaf duration {\n"
	"          type uint32;\n"
	"          units \"seconds\";\n"
	"          default \"0\";\n"
	"          description\n"
	"            \"Tolerance range, in seconds.\";\n"
	"        }\n"
	"      }\n"
	"      leaf last-modified-timestamp {\n"
	"        type yang:date-and-time;\n"
	"        config false;\n"
	"        description\n"
	"          \"Timestamp of the most recent update to the key-chain\";\n"
	"      }\n"
	"      list key {\n"
	"        key \"key-id\";\n"
	"        description\n"
	"          \"Single key in key chain.\";\n"
	"        leaf key-id {\n"
	"          type uint64;\n"
	"          description\n"
	"            \"Numeric value uniquely identifying the key\";\n"
	"        }\n"
	"        container lifetime {\n"
	"          description\n"
	"            \"Specify a key\'s lifetime.\";\n"
	"          choice lifetime {\n"
	"            description\n"
	"              \"Options for specification of send and accept\n"
	"               lifetimes.\";\n"
	"            case send-and-accept-lifetime {\n"
	"              description\n"
	"                \"Send and accept key have the same lifetime.\";\n"
	"              container send-accept-lifetime {\n"
	"                description\n"
	"                  \"Single lifetime specification for both\n"
	"                   send and accept lifetimes.\";\n"
	"                uses lifetime;\n"
	"              }\n"
	"            }\n"
	"            case independent-send-accept-lifetime {\n"
	"              if-feature \"independent-send-accept-lifetime\";\n"
	"              description\n"
	"                \"Independent send and accept key lifetimes.\";\n"
	"              container send-lifetime {\n"
	"                description\n"
	"                  \"Separate lifetime specification for send\n"
	"                   lifetime.\";\n"
	"                uses lifetime;\n"
	"              }\n"
	"              container accept-lifetime {\n"
	"                description\n"
	"                  \"Separate lifetime specification for accept\n"
	"                   lifetime.\";\n"
	"                uses lifetime;\n"
	"              }\n"
	"            }\n"
	"          }\n"
	"        }\n"
	"        leaf crypto-algorithm {\n"
	"          type identityref {\n"
	"            base crypto-algorithm;\n"
	"          }\n"
	"          mandatory true;\n"
	"          description\n"
	"            \"Cryptographic algorithm associated with key.\";\n"
	"        }\n"
	"        container key-string {\n"
	"          description\n"
	"            \"The key string.\";\n"
	"          nacm:default-deny-all;\n"
	"          choice key-string-style {\n"
	"            description\n"
	"              \"Key string styles\";\n"
	"             case keystring {\n"
	"               leaf keystring {\n"
	"                type string;\n"
	"                description\n"
	"                  \"Key string in ASCII format.\";\n"
	"              }\n"
	"            }\n"
	"            case hexadecimal {\n"
	"              if-feature \"hex-key-string\";\n"
	"              leaf hexadecimal-string {\n"
	"                type yang:hex-string;\n"
	"                description\n"
	"                  \"Key in hexadecimal string format.  When compared\n"
	"                   to ASCII, specification in hexadecimal affords\n"
	"                   greater key entropy with the same number of\n"
	"                   internal key-string octets.  Additionally, it\n"
	"                   discourages usage of well-known words or\n"
	"                   numbers.\";\n"
	"              }\n"
	"            }\n"
	"          }\n"
	"        }\n"
	"        leaf send-lifetime-active {\n"
	"          type boolean;\n"
	"          config false;\n"
	"          description\n"
	"            \"Indicates if the send lifetime of the\n"
	"             key-chain key is currently active.\";\n"
	"           }\n"
	"        leaf accept-lifetime-active {\n"
	"          type boolean;\n"
	"          config false;\n"
	"          description\n"
	"            \"Indicates if the accept lifetime of the\n"
	"             key-chain key is currently active.\";\n"
	"        }\n"
	"      }\n"
	"    }\n"
	"    container aes-key-wrap {\n"
	"      if-feature \"aes-key-wrap\";\n"
	"      description\n"
	"        \"AES Key Wrap encryption for key-chain key-strings.  The\n"
	"         encrypted key-strings are encoded as hexadecimal key\n"
	"         strings using the hex-key-string leaf.\";\n"
	"      leaf enable {\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"Enable AES Key Wrap encryption.\";\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"}\n"
	"";

static struct yang_module_embed embed = {
	.mod_name = "ietf-key-chain",
	.mod_rev = "2017-06-15",
	.sub_mod_name = "",
	.sub_mod_rev = "",
	.data = model,
	.format = LYS_IN_YANG,
};

static void embed_register(void) __attribute__((_CONSTRUCTOR(2000)));
static void embed_register(void)
{
	yang_module_embed(&embed);
}
