Merge "Update YANG models for OpenFronthaul M-Plane."
[sim/o1-interface.git] / ntsimulator / deploy / o-ran-ru-fh / yang / ietf-crypto-types@2019-10-18.yang
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-crypto-types@2019-10-18.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-crypto-types@2019-10-18.yang
deleted file mode 100644 (file)
index c620734..0000000
+++ /dev/null
@@ -1,2173 +0,0 @@
-module ietf-crypto-types {
-  yang-version 1.1;
-  namespace "urn:ietf:params:xml:ns:yang:ietf-crypto-types";
-  prefix ct;
-
-  import ietf-yang-types {
-    prefix yang;
-    reference
-      "RFC 6991: Common YANG Data Types";
-  }
-
-  import ietf-netconf-acm {
-    prefix nacm;
-    reference
-      "RFC 8341: Network Configuration Access Control Model";
-  }
-
-  organization
-    "IETF NETCONF (Network Configuration) Working Group";
-  contact
-    "WG Web:   <http://datatracker.ietf.org/wg/netconf/>
-     WG List:  <mailto:netconf@ietf.org>
-     Author:   Kent Watsen <mailto:kent+ietf@watsen.net>
-     Author:   Wang Haiguang <wang.haiguang.shieldlab@huawei.com>";
-
-  description
-    "This module defines common YANG types for cryptographic
-     applications.
-
-     Copyright (c) 2019 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 Simplified
-     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
-     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC
-     itself for full legal notices.;
-
-     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.";
-
-  revision 2019-10-18 {
-    description
-      "Initial version";
-    reference
-      "RFC XXXX: Common YANG Data Types for Cryptography";
-  }
-
-  /**************************************/
-  /*   Identities for Hash Algorithms   */
-  /**************************************/
-
-  typedef hash-algorithm-t {
-    type union {
-      type uint16;
-      type enumeration {
-        enum NONE {
-          value 0;
-          description
-            "Hash algorithm is NULL.";
-        }
-        enum sha1 {
-          value 1;
-          status obsolete;
-          description
-            "The SHA1 algorithm.";
-          reference
-            "RFC 3174: US Secure Hash Algorithms 1 (SHA1).";
-        }
-        enum sha-224 {
-          value 2;
-          description
-            "The SHA-224 algorithm.";
-          reference
-            "RFC 6234: US Secure Hash Algorithms.";
-        }
-        enum sha-256 {
-          value 3;
-          description
-            "The SHA-256 algorithm.";
-          reference
-            "RFC 6234: US Secure Hash Algorithms.";
-        }
-        enum sha-384 {
-          value 4;
-          description
-            "The SHA-384 algorithm.";
-          reference
-            "RFC 6234: US Secure Hash Algorithms.";
-        }
-        enum sha-512 {
-          value 5;
-          description
-            "The SHA-512 algorithm.";
-          reference
-            "RFC 6234: US Secure Hash Algorithms.";
-        }
-        enum shake-128 {
-          value 6;
-          description
-            "The SHA3 algorithm with 128-bits output.";
-          reference
-            "National Institute of Standards and Technology,
-            SHA-3 Standard: Permutation-Based Hash and
-            Extendable-Output Functions, FIPS PUB 202, DOI
-            10.6028/NIST.FIPS.202, August 2015.";
-        }
-        enum shake-224 {
-          value 7;
-          description
-            "The SHA3 algorithm with 224-bits output.";
-          reference
-            "National Institute of Standards and Technology,
-            SHA-3 Standard: Permutation-Based Hash and
-            Extendable-Output Functions, FIPS PUB 202, DOI
-            10.6028/NIST.FIPS.202, August 2015.";
-        }
-        enum shake-256 {
-          value 8;
-          description
-            "The SHA3 algorithm with 256-bits output.";
-          reference
-            "National Institute of Standards and Technology,
-            SHA-3 Standard: Permutation-Based Hash and
-            Extendable-Output Functions, FIPS PUB 202, DOI
-            10.6028/NIST.FIPS.202, August 2015.";
-        }
-        enum shake-384 {
-          value 9;
-          description
-            "The SHA3 algorithm with 384-bits output.";
-          reference
-            "National Institute of Standards and Technology,
-            SHA-3 Standard: Permutation-Based Hash and
-            Extendable-Output Functions, FIPS PUB 202, DOI
-            10.6028/NIST.FIPS.202, August 2015.";
-        }
-        enum shake-512 {
-          value 10;
-          description
-            "The SHA3 algorithm with 384-bits output.";
-          reference
-            "National Institute of Standards and Technology,
-            SHA-3 Standard: Permutation-Based Hash and
-            Extendable-Output Functions, FIPS PUB 202, DOI
-            10.6028/NIST.FIPS.202, August 2015.";
-        }
-      }
-    }
-    default "0";
-    description
-      "The uint16 filed shall be set by individual protocol families
-       according to the hash algorithm value assigned by IANA. The
-       setting is optional and by default is 0.  The enumeration
-       filed is set to the selected hash algorithm.";
-  }
-
-  /***********************************************/
-  /*  Identities for Asymmetric Key Algorithms   */
-  /***********************************************/
-
-  typedef asymmetric-key-algorithm-t {
-    type union {
-      type uint16;
-      type enumeration {
-        enum NONE {
-          value 0;
-          description
-            "Asymetric key algorithm is NULL.";
-        }
-        enum rsa1024 {
-          value 1;
-          description
-            "The RSA algorithm using a 1024-bit key.";
-          reference
-            "RFC 8017: PKCS #1: RSA Cryptography
-             Specifications Version 2.2.";
-        }
-        enum rsa2048 {
-          value 2;
-          description
-            "The RSA algorithm using a 2048-bit key.";
-          reference
-            "RFC 8017:
-             PKCS #1: RSA Cryptography Specifications Version 2.2.";
-        }
-        enum rsa3072 {
-          value 3;
-          description
-            "The RSA algorithm using a 3072-bit key.";
-          reference
-            "RFC 8017:
-             PKCS #1: RSA Cryptography Specifications Version 2.2.";
-        }
-        enum rsa4096 {
-          value 4;
-          description
-            "The RSA algorithm using a 4096-bit key.";
-          reference
-            "RFC 8017:
-             PKCS #1: RSA Cryptography Specifications Version 2.2.";
-        }
-        enum rsa7680 {
-          value 5;
-          description
-            "The RSA algorithm using a 7680-bit key.";
-          reference
-            "RFC 8017:
-             PKCS #1: RSA Cryptography Specifications Version 2.2.";
-        }
-        enum rsa15360 {
-          value 6;
-          description
-            "The RSA algorithm using a 15360-bit key.";
-          reference
-            "RFC 8017:
-             PKCS #1: RSA Cryptography Specifications Version 2.2.";
-        }
-        enum secp192r1 {
-          value 7;
-          description
-            "The asymmetric algorithm using a NIST P192 Curve.";
-          reference
-            "RFC 6090:
-               Fundamental Elliptic Curve Cryptography Algorithms.
-             RFC 5480:
-                Elliptic Curve Cryptography Subject Public Key
-                Information.";
-        }
-        enum secp224r1 {
-          value 8;
-          description
-            "The asymmetric algorithm using a NIST P224 Curve.";
-          reference
-            "RFC 6090:
-               Fundamental Elliptic Curve Cryptography Algorithms.
-             RFC 5480:
-               Elliptic Curve Cryptography Subject Public Key
-               Information.";
-        }
-        enum secp256r1 {
-          value 9;
-          description
-            "The asymmetric algorithm using a NIST P256 Curve.";
-          reference
-            "RFC 6090:
-               Fundamental Elliptic Curve Cryptography Algorithms.
-             RFC 5480:
-               Elliptic Curve Cryptography Subject Public Key
-               Information.";
-        }
-        enum secp384r1 {
-          value 10;
-          description
-            "The asymmetric algorithm using a NIST P384 Curve.";
-          reference
-            "RFC 6090:
-               Fundamental Elliptic Curve Cryptography Algorithms.
-             RFC 5480:
-               Elliptic Curve Cryptography Subject Public Key
-               Information.";
-        }
-        enum secp521r1 {
-          value 11;
-          description
-            "The asymmetric algorithm using a NIST P521 Curve.";
-          reference
-            "RFC 6090:
-               Fundamental Elliptic Curve Cryptography Algorithms.
-             RFC 5480:
-               Elliptic Curve Cryptography Subject Public Key
-               Information.";
-        }
-        enum x25519 {
-          value 12;
-          description
-            "The asymmetric algorithm using a x.25519 Curve.";
-          reference
-            "RFC 7748:
-               Elliptic Curves for Security.";
-        }
-        enum x448 {
-          value 13;
-          description
-            "The asymmetric algorithm using a x.448 Curve.";
-          reference
-            "RFC 7748:
-               Elliptic Curves for Security.";
-        }
-      }
-    }
-    default "0";
-    description
-      "The uint16 filed shall be set by individual protocol
-       families according to the asymmetric key algorithm value
-       assigned by IANA. The setting is optional and by default
-       is 0.  The enumeration filed is set to the selected
-       asymmetric key algorithm.";
-  }
-
-  /*************************************/
-  /*   Identities for MAC Algorithms   */
-  /*************************************/
-
-  typedef mac-algorithm-t {
-    type union {
-      type uint16;
-      type enumeration {
-        enum NONE {
-          value 0;
-          description
-            "mac algorithm is NULL.";
-        }
-        enum hmac-sha1 {
-          value 1;
-          description
-            "Generating MAC using SHA1 hash function";
-          reference
-            "RFC 3174: US Secure Hash Algorithm 1 (SHA1)";
-        }
-        enum hmac-sha1-96 {
-          value 2;
-          description
-            "Generating MAC using SHA1 hash function";
-          reference
-            "RFC 2404: The Use of HMAC-SHA-1-96 within ESP and AH";
-        }
-        enum hmac-sha2-224 {
-          value 3;
-          description
-            "Generating MAC using SHA2 hash function";
-          reference
-            "RFC 6234: US Secure Hash Algorithms
-             (SHA and SHA-based HMAC and HKDF)";
-        }
-        enum hmac-sha2-256 {
-          value 4;
-          description
-            "Generating MAC using SHA2 hash function";
-          reference
-            "RFC 6234: US Secure Hash Algorithms
-             (SHA and SHA-based HMAC and HKDF)";
-        }
-        enum hmac-sha2-256-128 {
-          value 5;
-          description
-            "Generating a 256 bits MAC using SHA2 hash function and
-             truncate it to 128 bits";
-          reference
-            "RFC 4868: Using HMAC-SHA-256, HMAC-SHA-384,
-             and HMAC-SHA-512 with IPsec";
-        }
-        enum hmac-sha2-384 {
-          value 6;
-          description
-            "Generating a 384 bits MAC using SHA2 hash function";
-          reference
-            "RFC 6234: US Secure Hash Algorithms
-             (SHA and SHA-based HMAC and HKDF)";
-        }
-        enum hmac-sha2-384-192 {
-          value 7;
-          description
-            "Generating a 384 bits MAC using SHA2 hash function and
-             truncate it to 192 bits";
-          reference
-            "RFC 4868: Using HMAC-SHA-256, HMAC-SHA-384,
-             and HMAC-SHA-512 with IPsec";
-        }
-        enum hmac-sha2-512 {
-          value 8;
-          description
-            "Generating a 512 bits MAC using SHA2 hash function";
-          reference
-            "RFC 6234: US Secure Hash Algorithms
-             (SHA and SHA-based HMAC and HKDF)";
-        }
-        enum hmac-sha2-512-256 {
-          value 9;
-          description
-            "Generating a 512 bits MAC using SHA2 hash function and
-             truncate it to 256 bits";
-          reference
-            "RFC 4868: Using HMAC-SHA-256, HMAC-SHA-384,
-             and HMAC-SHA-512 with IPsec";
-        }
-        enum aes-128-gmac {
-          value 10;
-          description
-            "Generating 128-bit MAC using the Advanced Encryption
-             Standard (AES) Galois Message Authentication Code
-             (GMAC) as a mechanism to provide data origin
-             authentication.";
-          reference
-            "RFC 4543:
-               The Use of Galois Message Authentication Code (GMAC)
-               in IPsec ESP and AH";
-        }
-        enum aes-192-gmac {
-          value 11;
-          description
-            "Generating 192-bit MAC using the Advanced Encryption
-             Standard (AES) Galois Message Authentication Code
-             (GMAC) as a mechanism to provide data origin
-             authentication.";
-          reference
-            "RFC 4543:
-               The Use of Galois Message Authentication Code (GMAC)
-               in IPsec ESP and AH";
-        }
-        enum aes-256-gmac {
-          value 12;
-          description
-            "Generating 256-bit MAC using the Advanced Encryption
-             Standard (AES) Galois Message Authentication Code
-             (GMAC) as a mechanism to provide data origin
-             authentication.";
-          reference
-            "RFC 4543:
-               The Use of Galois Message Authentication Code (GMAC)
-               in IPsec ESP and AH";
-        }
-        enum aes-cmac-96 {
-          value 13;
-          description
-            "Generating 96-bit MAC using Advanced Encryption
-             Standard (AES) Cipher-based Message Authentication
-             Code (CMAC)";
-          reference
-            "RFC 4494:
-               The AES-CMAC Algorithm and its Use with IPsec";
-        }
-        enum aes-cmac-128 {
-          value 14;
-          description
-            "Generating 128-bit MAC using Advanced Encryption
-             Standard (AES) Cipher-based Message Authentication
-             Code (CMAC)";
-          reference
-            "RFC 4494:
-               The AES-CMAC Algorithm and its Use with IPsec";
-        }
-        enum sha1-des3-kd {
-          value 15;
-          description
-            "Generating MAC using triple DES encryption function";
-          reference
-            "RFC 3961:
-               Encryption and Checksum Specifications for Kerberos
-               5";
-        }
-      }
-    }
-    default "0";
-    description
-      "The uint16 filed shall be set by individual protocol
-       families according to the mac algorithm value assigned by
-       IANA. The setting is optional and by default is 0.  The
-       enumeration filed is set to the selected mac algorithm.";
-  }
-
-  /********************************************/
-  /*   Identities for Encryption Algorithms   */
-  /********************************************/
-
-  typedef encryption-algorithm-t {
-    type union {
-      type uint16;
-      type enumeration {
-        enum NONE {
-          value 0;
-          description
-            "Encryption algorithm is NULL.";
-        }
-        enum aes-128-cbc {
-          value 1;
-          description
-            "Encrypt message with AES algorithm in CBC mode with
-             a key length of 128 bits.";
-          reference
-            "RFC 3565: Use of the Advanced Encryption Standard (AES)
-             Encryption Algorithm in Cryptographic Message Syntax
-             (CMS)";
-        }
-        enum aes-192-cbc {
-          value 2;
-          description
-            "Encrypt message with AES algorithm in CBC mode with
-             a key length of 192 bits";
-          reference
-            "RFC 3565: Use of the Advanced Encryption Standard (AES)
-             Encryption Algorithm in Cryptographic Message Syntax
-             (CMS)";
-        }
-        enum aes-256-cbc {
-          value 3;
-          description
-            "Encrypt message with AES algorithm in CBC mode with
-             a key length of 256 bits";
-          reference
-            "RFC 3565: Use of the Advanced Encryption Standard (AES)
-             Encryption Algorithm in Cryptographic Message Syntax
-             (CMS)";
-        }
-        enum aes-128-ctr {
-          value 4;
-          description
-            "Encrypt message with AES algorithm in CTR mode with
-             a key length of 128 bits";
-          reference
-            "RFC 3686:
-               Using Advanced Encryption Standard (AES) Counter
-               Mode with IPsec Encapsulating Security Payload
-               (ESP)";
-        }
-        enum aes-192-ctr {
-          value 5;
-          description
-            "Encrypt message with AES algorithm in CTR mode with
-             a key length of 192 bits";
-          reference
-            "RFC 3686:
-               Using Advanced Encryption Standard (AES) Counter
-               Mode with IPsec Encapsulating Security Payload
-               (ESP)";
-        }
-        enum aes-256-ctr {
-          value 6;
-          description
-            "Encrypt message with AES algorithm in CTR mode with
-             a key length of 256 bits";
-          reference
-            "RFC 3686:
-               Using Advanced Encryption Standard (AES) Counter
-               Mode with IPsec Encapsulating Security Payload
-               (ESP)";
-        }
-        enum des3-cbc-sha1-kd {
-          value 7;
-          description
-            "Encrypt message with 3DES algorithm in CBC mode
-             with sha1 function for key derivation";
-          reference
-            "RFC 3961:
-               Encryption and Checksum Specifications for
-               Kerberos 5";
-        }
-        enum rc4-hmac {
-          value 8;
-          description
-            "Encrypt message with rc4 algorithm";
-          reference
-            "RFC 4757:
-               The RC4-HMAC Kerberos Encryption Types Used by
-               Microsoft Windows";
-        }
-        enum rc4-hmac-exp {
-          value 9;
-          description
-            "Encrypt message with rc4 algorithm that is exportable";
-          reference
-            "RFC 4757:
-               The RC4-HMAC Kerberos Encryption Types Used by
-               Microsoft Windows";
-        }
-      }
-    }
-    default "0";
-    description
-      "The uint16 filed shall be set by individual protocol
-       families according to the encryption algorithm value
-       assigned by IANA. The setting is optional and by default
-       is 0.  The enumeration filed is set to the selected
-       encryption algorithm.";
-  }
-
-  /****************************************************/
-  /*   Identities for Encryption and MAC Algorithms   */
-  /****************************************************/
-
-  typedef encryption-and-mac-algorithm-t {
-    type union {
-      type uint16;
-      type enumeration {
-        enum NONE {
-          value 0;
-          description
-            "Encryption and MAC algorithm is NULL.";
-          reference
-            "None";
-        }
-        enum aes-128-ccm {
-          value 1;
-          description
-            "Encrypt message with AES algorithm in CCM
-             mode with a key length of 128 bits; it can
-             also be used for generating MAC";
-          reference
-            "RFC 4309: Using Advanced Encryption Standard
-             (AES) CCM Mode with IPsec Encapsulating Security
-             Payload (ESP)";
-        }
-        enum aes-192-ccm {
-          value 2;
-          description
-            "Encrypt message with AES algorithm in CCM
-             mode with a key length of 192 bits; it can
-             also be used for generating MAC";
-          reference
-            "RFC 4309: Using Advanced Encryption Standard
-             (AES) CCM Mode with IPsec Encapsulating Security
-             Payload (ESP)";
-        }
-        enum aes-256-ccm {
-          value 3;
-          description
-            "Encrypt message with AES algorithm in CCM
-             mode with a key length of 256 bits; it can
-             also be used for generating MAC";
-          reference
-            "RFC 4309: Using Advanced Encryption Standard
-             (AES) CCM Mode with IPsec Encapsulating Security
-             Payload (ESP)";
-        }
-        enum aes-128-gcm {
-          value 4;
-          description
-            "Encrypt message with AES algorithm in GCM
-             mode with a key length of 128 bits; it can
-             also be used for generating MAC";
-          reference
-            "RFC 4106: The Use of Galois/Counter Mode (GCM)
-             in IPsec Encapsulating Security Payload (ESP)";
-        }
-        enum aes-192-gcm {
-          value 5;
-          description
-            "Encrypt message with AES algorithm in GCM
-             mode with a key length of 192 bits; it can
-             also be used for generating MAC";
-          reference
-            "RFC 4106: The Use of Galois/Counter Mode (GCM)
-             in IPsec Encapsulating Security Payload (ESP)";
-        }
-        enum aes-256-gcm {
-          value 6;
-          description
-            "Encrypt message with AES algorithm in GCM
-             mode with a key length of 256 bits; it can
-             also be used for generating MAC";
-          reference
-            "RFC 4106: The Use of Galois/Counter Mode (GCM)
-             in IPsec Encapsulating Security Payload (ESP)";
-        }
-        enum chacha20-poly1305 {
-          value 7;
-          description
-            "Encrypt message with chacha20 algorithm and generate
-             MAC with POLY1305; it can also be used for generating
-             MAC";
-          reference
-            "RFC 8439: ChaCha20 and Poly1305 for IETF Protocols";
-        }
-      }
-    }
-    default "0";
-    description
-      "The uint16 filed shall be set by individual protocol
-       families according to the encryption and mac algorithm value
-       assigned by IANA. The setting is optional and by default is
-       0.  The enumeration filed is set to the selected encryption
-       and mac algorithm.";
-  }
-
-  /******************************************/
-  /*   Identities for signature algorithm   */
-  /******************************************/
-
-  typedef signature-algorithm-t {
-    type union {
-      type uint16;
-      type enumeration {
-        enum NONE {
-          value 0;
-          description
-            "Signature algorithm is NULL";
-        }
-        enum dsa-sha1 {
-          value 1;
-          description
-            "The signature algorithm using DSA algorithm with SHA1
-             hash algorithm";
-          reference
-            "RFC 4253:
-               The Secure Shell (SSH) Transport Layer Protocol";
-        }
-        enum rsassa-pkcs1-sha1 {
-          value 2;
-          description
-            "The signature algorithm using RSASSA-PKCS1-v1_5 with
-             the SHA1 hash algorithm.";
-          reference
-            "RFC 4253:
-               The Secure Shell (SSH) Transport Layer Protocol";
-        }
-        enum rsassa-pkcs1-sha256 {
-          value 3;
-          description
-            "The signature algorithm using RSASSA-PKCS1-v1_5 with
-             the SHA256 hash algorithm.";
-          reference
-            "RFC 8332:
-               Use of RSA Keys with SHA-256 and SHA-512 in the
-               Secure Shell (SSH) Protocol
-             RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum rsassa-pkcs1-sha384 {
-          value 4;
-          description
-            "The signature algorithm using RSASSA-PKCS1-v1_5 with
-             the SHA384 hash algorithm.";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum rsassa-pkcs1-sha512 {
-          value 5;
-          description
-            "The signature algorithm using RSASSA-PKCS1-v1_5 with
-             the SHA512 hash algorithm.";
-          reference
-            "RFC 8332:
-               Use of RSA Keys with SHA-256 and SHA-512 in the
-               Secure Shell (SSH) Protocol
-             RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum rsassa-pss-rsae-sha256 {
-          value 6;
-          description
-            "The signature algorithm using RSASSA-PSS with mask
-             generation function 1 and SHA256 hash algorithm. If
-             the public key is carried in an X.509 certificate,
-             it MUST use the rsaEncryption OID";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum rsassa-pss-rsae-sha384 {
-          value 7;
-          description
-            "The signature algorithm using RSASSA-PSS with mask
-             generation function 1 and SHA384 hash algorithm. If
-             the public key is carried in an X.509 certificate,
-             it MUST use the rsaEncryption OID";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum rsassa-pss-rsae-sha512 {
-          value 8;
-          description
-            "The signature algorithm using RSASSA-PSS with mask
-             generation function 1 and SHA512 hash algorithm. If
-             the public key is carried in an X.509 certificate,
-             it MUST use the rsaEncryption OID";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum rsassa-pss-pss-sha256 {
-          value 9;
-          description
-            "The signature algorithm using RSASSA-PSS with mask
-             generation function 1 and SHA256 hash algorithm. If
-             the public key is carried in an X.509 certificate,
-             it MUST use the rsaEncryption OID";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum rsassa-pss-pss-sha384 {
-          value 10;
-          description
-            "The signature algorithm using RSASSA-PSS with mask
-             generation function 1 and SHA384 hash algorithm. If
-             the public key is carried in an X.509 certificate,
-             it MUST use the rsaEncryption OID";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum rsassa-pss-pss-sha512 {
-          value 11;
-          description
-            "The signature algorithm using RSASSA-PSS with mask
-             generation function 1 and SHA512 hash algorithm. If
-             the public key is carried in an X.509 certificate,
-             it MUST use the rsaEncryption OID";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum ecdsa-secp256r1-sha256 {
-          value 12;
-          description
-            "The signature algorithm using ECDSA with curve name
-             secp256r1 and SHA256 hash algorithm.";
-          reference
-            "RFC 5656:
-               Elliptic Curve Algorithm Integration in the Secure
-               Shell Transport Layer
-             RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum ecdsa-secp384r1-sha384 {
-          value 13;
-          description
-            "The signature algorithm using ECDSA with curve name
-             secp384r1 and SHA384 hash algorithm.";
-          reference
-            "RFC 5656:
-               Elliptic Curve Algorithm Integration in the Secure
-               Shell Transport Layer
-             RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum ecdsa-secp521r1-sha512 {
-          value 14;
-          description
-            "The signature algorithm using ECDSA with curve name
-             secp521r1 and SHA512 hash algorithm.";
-          reference
-            "RFC 5656:
-               Elliptic Curve Algorithm Integration in the Secure
-               Shell Transport Layer
-             RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum ed25519 {
-          value 15;
-          description
-            "The signature algorithm using EdDSA with curve x25519";
-          reference
-            "RFC 8032:
-               Edwards-Curve Digital Signature Algorithm (EdDSA)";
-        }
-        enum ed25519-cts {
-          value 16;
-          description
-            "The signature algorithm using EdDSA with curve x25519
-             with phflag = 0";
-          reference
-            "RFC 8032:
-               Edwards-Curve Digital Signature Algorithm (EdDSA)";
-        }
-        enum ed25519-ph {
-          value 17;
-          description
-            "The signature algorithm using EdDSA with curve x25519
-             with phflag = 1";
-          reference
-            "RFC 8032:
-               Edwards-Curve Digital Signature Algorithm (EdDSA)";
-        }
-        enum ed25519-sha512 {
-          value 18;
-          description
-            "The signature algorithm using EdDSA with curve x25519
-            and SHA-512 function";
-          reference
-            "RFC 8419:
-               Use of Edwards-Curve Digital Signature Algorithm
-               (EdDSA) Signatures in the Cryptographic Message
-               Syntax (CMS)";
-        }
-        enum ed448 {
-          value 19;
-          description
-            "The signature algorithm using EdDSA with curve x448";
-          reference
-            "RFC 8032:
-               Edwards-Curve Digital Signature Algorithm (EdDSA)";
-        }
-        enum ed448-ph {
-          value 20;
-          description
-            "The signature algorithm using EdDSA with curve x448
-             and with PH being SHAKE256(x, 64) and phflag being 1";
-          reference
-            "RFC 8032:
-               Edwards-Curve Digital Signature Algorithm (EdDSA)";
-        }
-        enum ed448-shake256 {
-          value 21;
-          description
-            "The signature algorithm using EdDSA with curve x448
-            and SHAKE-256 function";
-          reference
-            "RFC 8419:
-               Use of Edwards-Curve Digital Signature Algorithm
-               (EdDSA) Signatures in the Cryptographic Message
-               Syntax (CMS)";
-        }
-        enum ed448-shake256-len {
-          value 22;
-          description
-            "The signature algorithm using EdDSA with curve x448
-            and SHAKE-256 function and a customized hash output";
-          reference
-            "RFC 8419:
-               Use of Edwards-Curve Digital Signature Algorithm
-               (EdDSA) Signatures in the Cryptographic Message
-               Syntax (CMS)";
-        }
-        enum rsa-sha2-256 {
-          value 23;
-          description
-            "The signature algorithm using RSA with SHA2 function
-             for SSH protocol";
-          reference
-            "RFC 8332:
-             Use of RSA Keys with SHA-256 and SHA-512
-             in the Secure Shell (SSH) Protocol";
-        }
-        enum rsa-sha2-512 {
-          value 24;
-          description
-            "The signature algorithm using RSA with SHA2 function
-             for SSH protocol";
-          reference
-            "RFC 8332:
-             Use of RSA Keys with SHA-256 and SHA-512
-             in the Secure Shell (SSH) Protocol";
-        }
-        enum eccsi {
-          value 25;
-          description
-            "The signature algorithm using ECCSI signature as
-             defined in RFC 6507.";
-          reference
-            "RFC 6507:
-               Elliptic Curve-Based Certificateless Signatures
-               for Identity-based Encryption (ECCSI)";
-        }
-      }
-    }
-    default "0";
-    description
-      "The uint16 filed shall be set by individual protocol
-       families according to the signature algorithm value
-       assigned by IANA. The setting is optional and by default
-       is 0.  The enumeration filed is set to the selected
-       signature algorithm.";
-  }
-
-  /**********************************************/
-  /*   Identities for key exchange algorithms   */
-  /**********************************************/
-
-  typedef key-exchange-algorithm-t {
-    type union {
-      type uint16;
-      type enumeration {
-        enum NONE {
-          value 0;
-          description
-            "Key exchange algorithm is NULL.";
-        }
-        enum psk-only {
-          value 1;
-          description
-            "Using Pre-shared key for authentication and key
-             exchange";
-          reference
-            "RFC 4279:
-               Pre-Shared Key cipher suites for Transport Layer
-               Security (TLS)";
-        }
-        enum dhe-ffdhe2048 {
-          value 2;
-          description
-            "Ephemeral Diffie Hellman key exchange with 2048 bit
-             finite field";
-          reference
-            "RFC 7919:
-               Negotiated Finite Field Diffie-Hellman Ephemeral
-               Parameters for Transport Layer Security (TLS)";
-        }
-        enum dhe-ffdhe3072 {
-          value 3;
-          description
-            "Ephemeral Diffie Hellman key exchange with 3072 bit
-             finite field";
-          reference
-            "RFC 7919:
-               Negotiated Finite Field Diffie-Hellman Ephemeral
-               Parameters for Transport Layer Security (TLS)";
-        }
-        enum dhe-ffdhe4096 {
-          value 4;
-          description
-            "Ephemeral Diffie Hellman key exchange with 4096 bit
-             finite field";
-          reference
-            "RFC 7919:
-               Negotiated Finite Field Diffie-Hellman Ephemeral
-               Parameters for Transport Layer Security (TLS)";
-        }
-        enum dhe-ffdhe6144 {
-          value 5;
-          description
-            "Ephemeral Diffie Hellman key exchange with 6144 bit
-             finite field";
-          reference
-            "RFC 7919:
-               Negotiated Finite Field Diffie-Hellman Ephemeral
-               Parameters for Transport Layer Security (TLS)";
-        }
-        enum dhe-ffdhe8192 {
-          value 6;
-          description
-            "Ephemeral Diffie Hellman key exchange with 8192 bit
-             finite field";
-          reference
-            "RFC 7919:
-               Negotiated Finite Field Diffie-Hellman Ephemeral
-               Parameters for Transport Layer Security (TLS)";
-        }
-        enum psk-dhe-ffdhe2048 {
-          value 7;
-          description
-            "Key exchange using pre-shared key with Diffie-Hellman
-             key generation mechanism, where the DH group is
-             FFDHE2048";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum psk-dhe-ffdhe3072 {
-          value 8;
-          description
-            "Key exchange using pre-shared key with Diffie-Hellman
-             key generation mechanism, where the DH group is
-             FFDHE3072";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum psk-dhe-ffdhe4096 {
-          value 9;
-          description
-            "Key exchange using pre-shared key with Diffie-Hellman
-             key generation mechanism, where the DH group is
-             FFDHE4096";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum psk-dhe-ffdhe6144 {
-          value 10;
-          description
-            "Key exchange using pre-shared key with Diffie-Hellman
-             key generation mechanism, where the DH group is
-             FFDHE6144";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum psk-dhe-ffdhe8192 {
-          value 11;
-          description
-            "Key exchange using pre-shared key with Diffie-Hellman
-             key generation mechanism, where the DH group is
-             FFDHE8192";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum ecdhe-secp256r1 {
-          value 12;
-          description
-            "Ephemeral Diffie Hellman key exchange with elliptic
-             group over curve secp256r1";
-          reference
-            "RFC 8422:
-               Elliptic Curve Cryptography (ECC) Cipher Suites
-               for Transport Layer Security (TLS) Versions 1.2
-               and Earlier";
-        }
-        enum ecdhe-secp384r1 {
-          value 13;
-          description
-            "Ephemeral Diffie Hellman key exchange with elliptic
-             group over curve secp384r1";
-          reference
-            "RFC 8422:
-               Elliptic Curve Cryptography (ECC) Cipher Suites
-               for Transport Layer Security (TLS) Versions 1.2
-               and Earlier";
-        }
-        enum ecdhe-secp521r1 {
-          value 14;
-          description
-            "Ephemeral Diffie Hellman key exchange with elliptic
-             group over curve secp521r1";
-          reference
-            "RFC 8422:
-               Elliptic Curve Cryptography (ECC) Cipher Suites
-               for Transport Layer Security (TLS) Versions 1.2
-               and Earlier";
-        }
-        enum ecdhe-x25519 {
-          value 15;
-          description
-            "Ephemeral Diffie Hellman key exchange with elliptic
-             group over curve x25519";
-          reference
-            "RFC 8422:
-               Elliptic Curve Cryptography (ECC) Cipher Suites
-               for Transport Layer Security (TLS) Versions 1.2
-               and Earlier";
-        }
-        enum ecdhe-x448 {
-          value 16;
-          description
-            "Ephemeral Diffie Hellman key exchange with elliptic
-             group over curve x448";
-          reference
-            "RFC 8422:
-               Elliptic Curve Cryptography (ECC) Cipher Suites
-               for Transport Layer Security (TLS) Versions 1.2
-               and Earlier";
-        }
-        enum psk-ecdhe-secp256r1 {
-          value 17;
-          description
-            "Key exchange using pre-shared key with elliptic
-             group-based Ephemeral Diffie Hellman key exchange
-             over curve secp256r1";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum psk-ecdhe-secp384r1 {
-          value 18;
-          description
-            "Key exchange using pre-shared key with elliptic
-             group-based Ephemeral Diffie Hellman key exchange
-             over curve secp384r1";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum psk-ecdhe-secp521r1 {
-          value 19;
-          description
-            "Key exchange using pre-shared key with elliptic
-             group-based Ephemeral Diffie Hellman key exchange
-             over curve secp521r1";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum psk-ecdhe-x25519 {
-          value 20;
-          description
-            "Key exchange using pre-shared key with elliptic
-             group-based Ephemeral Diffie Hellman key exchange
-             over curve x25519";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum psk-ecdhe-x448 {
-          value 21;
-          description
-            "Key exchange using pre-shared key with elliptic
-             group-based Ephemeral Diffie Hellman key exchange
-             over curve x448";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum diffie-hellman-group14-sha1 {
-          value 22;
-          description
-            "Using DH group14 and SHA1 for key exchange";
-          reference
-            "RFC 4253:
-               The Secure Shell (SSH) Transport Layer Protocol";
-        }
-        enum diffie-hellman-group14-sha256 {
-          value 23;
-          description
-            "Using DH group14 and SHA-256 for key exchange";
-          reference
-            "RFC 8268:
-              More Modular Exponentiation (MODP) Diffie-Hellman (DH)
-              Key Exchange (KEX) Groups for Secure Shell (SSH)";
-        }
-        enum diffie-hellman-group15-sha512 {
-          value 24;
-          description
-            "Using DH group15 and SHA-512 for key exchange";
-          reference
-            "RFC 8268:
-              More Modular Exponentiation (MODP) Diffie-Hellman (DH)
-              Key Exchange (KEX) Groups for Secure Shell (SSH)";
-        }
-        enum diffie-hellman-group16-sha512 {
-          value 25;
-          description
-            "Using DH group16 and SHA-512 for key exchange";
-          reference
-            "RFC 8268:
-              More Modular Exponentiation (MODP) Diffie-Hellman (DH)
-              Key Exchange (KEX) Groups for Secure Shell (SSH)";
-        }
-        enum diffie-hellman-group17-sha512 {
-          value 26;
-          description
-            "Using DH group17 and SHA-512 for key exchange";
-          reference
-            "RFC 8268:
-              More Modular Exponentiation (MODP) Diffie-Hellman (DH)
-              Key Exchange (KEX) Groups for Secure Shell (SSH)";
-        }
-        enum diffie-hellman-group18-sha512 {
-          value 27;
-          description
-            "Using DH group18 and SHA-512 for key exchange";
-          reference
-            "RFC 8268:
-              More Modular Exponentiation (MODP) Diffie-Hellman (DH)
-              Key Exchange (KEX) Groups for Secure Shell (SSH)";
-        }
-        enum ecdh-sha2-secp256r1 {
-          value 28;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve ecp256r1 and using SHA2 for MAC generation";
-          reference
-            "RFC 6239:
-               Suite B Cryptographic Suites for Secure Shell (SSH)";
-        }
-        enum ecdh-sha2-secp384r1 {
-          value 29;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve ecp384r1 and using SHA2 for MAC generation";
-          reference
-            "RFC 6239:
-               Suite B Cryptographic Suites for Secure Shell (SSH)";
-        }
-        enum ecdh-x25519-x9.63-sha256 {
-          value 30;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.25519 and using ANSI x9.63 with SHA256 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-        enum ecdh-x25519-x9.63-sha384 {
-          value 31;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.25519 and using ANSI x9.63 with SHA384 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-        enum ecdh-x25519-x9.63-sha512 {
-          value 32;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.25519 and using ANSI x9.63 with SHA512 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-        enum ecdh-x25519-hkdf-sha256 {
-          value 33;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.25519 and using HKDF with SHA256 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-        enum ecdh-x25519-hkdf-sha384 {
-          value 34;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.25519 and using HKDF with SHA384 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-        enum ecdh-x25519-hkdf-sha512 {
-          value 35;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.25519 and using HKDF with SHA512 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-        enum ecdh-x448-x9.63-sha256 {
-          value 36;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.448 and using ANSI x9.63 with SHA256 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-        enum ecdh-x448-x9.63-sha384 {
-          value 37;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.448 and using ANSI x9.63 with SHA384 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-        enum ecdh-x448-x9.63-sha512 {
-          value 38;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.448 and using ANSI x9.63 with SHA512 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-        enum ecdh-x448-hkdf-sha256 {
-          value 39;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.448 and using HKDF with SHA256 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-        enum ecdh-x448-hkdf-sha384 {
-          value 40;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.448 and using HKDF with SHA384 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-        enum ecdh-x448-hkdf-sha512 {
-          value 41;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.448 and using HKDF with SHA512 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-
-        enum rsaes-oaep {
-          value 42;
-          description
-            "RSAES-OAEP combines the RSAEP and RSADP primitives with
-             the EME-OAEP encoding method";
-          reference
-            "RFC 8017:
-               PKCS #1:
-                 RSA Cryptography Specifications Version 2.2.";
-        }
-        enum rsaes-pkcs1-v1_5 {
-          value 43;
-          description
-            "RSAES-PKCS1-v1_5 combines the RSAEP and RSADP
-             primitives with the EME-PKCS1-v1_5 encoding method";
-          reference
-            "RFC 8017:
-               PKCS #1:
-                 RSA Cryptography Specifications Version 2.2.";
-        }
-      }
-    }
-    default "0";
-    description
-      "The uint16 filed shall be set by individual protocol
-       families according to the key exchange algorithm value
-       assigned by IANA. The setting is optional and by default
-       is 0.  The enumeration filed is set to the selected key
-       exchange algorithm.";
-  }
-
-  /********************************************/
-  /*   Identities for Key Format Structures   */
-  /********************************************/
-
-  /*** all key format types ****/
-
-  identity key-format-base {
-    description "Base key-format identity for all keys.";
-  }
-
-  identity public-key-format {
-    base "key-format-base";
-    description "Base key-format identity for public keys.";
-  }
-
-  identity private-key-format {
-    base "key-format-base";
-    description "Base key-format identity for private keys.";
-  }
-
-  identity symmetric-key-format {
-    base "key-format-base";
-    description "Base key-format identity for symmetric keys.";
-  }
-
-  /**** for private keys ****/
-
-  identity rsa-private-key-format {
-      base "private-key-format";
-      description "An RSAPrivateKey (from RFC 3447).";
-  }
-
-  identity ec-private-key-format {
-      base "private-key-format";
-      description "An ECPrivateKey (from RFC 5915)";
-  }
-
-  identity one-asymmetric-key-format {
-      base "private-key-format";
-      description "A OneAsymmetricKey (from RFC 5958).";
-  }
-
-  identity encrypted-private-key-format {
-      base "private-key-format";
-      description
-        "A CMS EncryptedData structure (RFC 5652)
-         containing a OneAsymmetricKey (RFC 5958).";
-   }
-
-  /**** for public keys ****/
-
-  identity ssh-public-key-format {
-      base "public-key-format";
-      description
-        "The public key format described by RFC 4716.";
-  }
-
-  identity subject-public-key-info-format {
-      base "public-key-format";
-      description
-        "A SubjectPublicKeyInfo (from RFC 5280).";
-  }
-
-  /**** for symmetric keys ****/
-
-  identity octet-string-key-format {
-      base "symmetric-key-format";
-      description "An OctetString from ASN.1.";
-        /*
-        // Knowing that it is an "OctetString" isn't really helpful.
-        // Knowing the length of the octet string would be helpful,
-        // as it relates to the algorithm's block size.  We may want
-        // to only (for now) use "one-symmetric-key-format" for
-        // symmetric keys...were the usability issues Juergen
-        // mentioned before only apply to asymmetric keys?
-        */
-  }
-
-  identity one-symmetric-key-format {
-      base "symmetric-key-format";
-      description "A OneSymmetricKey (from RFC6031).";
-  }
-
-  identity encrypted-symmetric-key-format {
-      base "symmetric-key-format";
-      description
-        "A CMS EncryptedData structure (RFC 5652)
-         containing a OneSymmetricKey (RFC 6031).";
-  }
-
-  /***************************************************/
-  /*   Typedefs for ASN.1 structures from RFC 5280   */
-  /***************************************************/
-
-  typedef x509 {
-    type binary;
-    description
-      "A Certificate structure, as specified in RFC 5280,
-       encoded using ASN.1 distinguished encoding rules (DER),
-       as specified in ITU-T X.690.";
-    reference
-      "RFC 5280:
-         Internet X.509 Public Key Infrastructure Certificate
-         and Certificate Revocation List (CRL) Profile
-       ITU-T X.690:
-         Information technology - ASN.1 encoding rules:
-         Specification of Basic Encoding Rules (BER),
-         Canonical Encoding Rules (CER) and Distinguished
-         Encoding Rules (DER).";
-  }
-
-  typedef crl {
-    type binary;
-    description
-      "A CertificateList structure, as specified in RFC 5280,
-       encoded using ASN.1 distinguished encoding rules (DER),
-       as specified in ITU-T X.690.";
-    reference
-      "RFC 5280:
-         Internet X.509 Public Key Infrastructure Certificate
-         and Certificate Revocation List (CRL) Profile
-       ITU-T X.690:
-         Information technology - ASN.1 encoding rules:
-         Specification of Basic Encoding Rules (BER),
-         Canonical Encoding Rules (CER) and Distinguished
-         Encoding Rules (DER).";
-  }
-
-  /***********************************************/
-  /*   Typedefs for ASN.1 structures from 5652   */
-  /***********************************************/
-
-  typedef cms {
-    type binary;
-    description
-      "A ContentInfo structure, as specified in RFC 5652,
-       encoded using ASN.1 distinguished encoding rules (DER),
-       as specified in ITU-T X.690.";
-    reference
-      "RFC 5652:
-         Cryptographic Message Syntax (CMS)
-       ITU-T X.690:
-         Information technology - ASN.1 encoding rules:
-         Specification of Basic Encoding Rules (BER),
-         Canonical Encoding Rules (CER) and Distinguished
-         Encoding Rules (DER).";
-  }
-  typedef data-content-cms {
-    type cms;
-    description
-      "A CMS structure whose top-most content type MUST be the
-       data content type, as described by Section 4 in RFC 5652.";
-    reference
-      "RFC 5652: Cryptographic Message Syntax (CMS)";
-  }
-
-  typedef signed-data-cms {
-    type cms;
-    description
-      "A CMS structure whose top-most content type MUST be the
-       signed-data content type, as described by Section 5 in
-       RFC 5652.";
-    reference
-      "RFC 5652: Cryptographic Message Syntax (CMS)";
-  }
-
-  typedef enveloped-data-cms {
-    type cms;
-    description
-      "A CMS structure whose top-most content type MUST be the
-       enveloped-data content type, as described by Section 6
-       in RFC 5652.";
-    reference
-      "RFC 5652: Cryptographic Message Syntax (CMS)";
-  }
-
-  typedef digested-data-cms {
-    type cms;
-    description
-      "A CMS structure whose top-most content type MUST be the
-       digested-data content type, as described by Section 7
-       in RFC 5652.";
-    reference
-      "RFC 5652: Cryptographic Message Syntax (CMS)";
-  }
-
-  typedef encrypted-data-cms {
-    type cms;
-    description
-      "A CMS structure whose top-most content type MUST be the
-       encrypted-data content type, as described by Section 8
-       in RFC 5652.";
-    reference
-      "RFC 5652: Cryptographic Message Syntax (CMS)";
-  }
-  typedef authenticated-data-cms {
-    type cms;
-    description
-      "A CMS structure whose top-most content type MUST be the
-       authenticated-data content type, as described by Section 9
-       in RFC 5652.";
-    reference
-      "RFC 5652: Cryptographic Message Syntax (CMS)";
-  }
-
-  /***************************************************/
-  /*   Typedefs for structures related to RFC 4253   */
-  /***************************************************/
-
-  typedef ssh-host-key {
-    type binary;
-    description
-      "The binary public key data for this SSH key, as
-       specified by RFC 4253, Section 6.6, i.e.:
-
-         string    certificate or public key format
-                   identifier
-         byte[n]   key/certificate data.";
-    reference
-      "RFC 4253: The Secure Shell (SSH) Transport Layer
-                 Protocol";
-  }
-
-  /*********************************************************/
-  /*   Typedefs for ASN.1 structures related to RFC 5280   */
-  /*********************************************************/
-
-  typedef trust-anchor-cert-x509 {
-    type x509;
-    description
-      "A Certificate structure that MUST encode a self-signed
-       root certificate.";
-  }
-
-  typedef end-entity-cert-x509 {
-    type x509;
-    description
-      "A Certificate structure that MUST encode a certificate
-       that is neither self-signed nor having Basic constraint
-       CA true.";
-  }
-
-  /*********************************************************/
-  /*   Typedefs for ASN.1 structures related to RFC 5652   */
-  /*********************************************************/
-
-  typedef trust-anchor-cert-cms {
-    type signed-data-cms;
-    description
-      "A CMS SignedData structure that MUST contain the chain of
-       X.509 certificates needed to authenticate the certificate
-       presented by a client or end-entity.
-
-       The CMS MUST contain only a single chain of certificates.
-       The client or end-entity certificate MUST only authenticate
-       to last intermediate CA certificate listed in the chain.
-
-       In all cases, the chain MUST include a self-signed root
-       certificate.  In the case where the root certificate is
-       itself the issuer of the client or end-entity certificate,
-       only one certificate is present.
-
-       This CMS structure MAY (as applicable where this type is
-       used) also contain suitably fresh (as defined by local
-       policy) revocation objects with which the device can
-       verify the revocation status of the certificates.
-
-       This CMS encodes the degenerate form of the SignedData
-       structure that is commonly used to disseminate X.509
-       certificates and revocation objects (RFC 5280).";
-    reference
-      "RFC 5280:
-         Internet X.509 Public Key Infrastructure Certificate
-         and Certificate Revocation List (CRL) Profile.";
-  }
-
-  typedef end-entity-cert-cms {
-    type signed-data-cms;
-    description
-      "A CMS SignedData structure that MUST contain the end
-       entity certificate itself, and MAY contain any number
-       of intermediate certificates leading up to a trust
-       anchor certificate.  The trust anchor certificate
-       MAY be included as well.
-
-       The CMS MUST contain a single end entity certificate.
-       The CMS MUST NOT contain any spurious certificates.
-
-       This CMS structure MAY (as applicable where this type is
-       used) also contain suitably fresh (as defined by local
-       policy) revocation objects with which the device can
-       verify the revocation status of the certificates.
-
-       This CMS encodes the degenerate form of the SignedData
-       structure that is commonly used to disseminate X.509
-       certificates and revocation objects (RFC 5280).";
-    reference
-      "RFC 5280:
-         Internet X.509 Public Key Infrastructure Certificate
-         and Certificate Revocation List (CRL) Profile.";
-  }
-
-  typedef ssh-public-key-type {  // DELETE?
-     type binary;
-     description
-       "The binary public key data for this SSH key, as
-        specified by RFC 4253, Section 6.6, i.e.:
-
-          string    certificate or public key format
-                    identifier
-          byte[n]   key/certificate data.";
-     reference
-       "RFC 4253: The Secure Shell (SSH) Transport
-                  Layer Protocol";
-  }
-
-  /**********************************************/
-  /*   Groupings for keys and/or certificates   */
-  /**********************************************/
-
-  grouping symmetric-key-grouping {
-    description
-      "A symmetric key and algorithm.";
-    leaf algorithm {
-      type encryption-algorithm-t;
-      mandatory true;
-      description
-        "The algorithm to be used when generating the key.";
-      reference
-        "RFC CCCC: Common YANG Data Types for Cryptography";
-    }
-    leaf key-format {
-      nacm:default-deny-write;
-      when "../key";
-      type identityref {
-        base symmetric-key-format;
-      }
-      description "Identifies the symmetric key's format.";
-    }
-    choice key-type {
-      mandatory true;
-      description
-        "Choice between key types.";
-      leaf key {
-        nacm:default-deny-all;
-        type binary;
-        //must "../key-format";  FIXME: remove comment if approach ok
-        description
-          "The binary value of the key.  The interpretation of
-           the value is defined by 'key-format'.  For example,
-           FIXME.";
-        reference
-          "RFC XXXX: FIXME";
-      }
-      leaf hidden-key {
-        nacm:default-deny-write;
-        type empty;
-        description
-          "A permanently hidden key.  How such keys are created
-           is outside the scope of this module.";
-      }
-    }
-  }
-
-  grouping public-key-grouping {
-    description
-      "A public key and its associated algorithm.";
-    leaf algorithm {
-      nacm:default-deny-write;
-      type asymmetric-key-algorithm-t;
-      mandatory true;
-      description
-        "Identifies the key's algorithm.";
-      reference
-        "RFC CCCC: Common YANG Data Types for Cryptography";
-    }
-    leaf public-key-format {
-      nacm:default-deny-write;
-      when "../public-key";
-      type identityref {
-        base public-key-format;
-      }
-      description "Identifies the key's format.";
-    }
-    leaf public-key {
-      nacm:default-deny-write;
-      type binary;
-      //must "../public-key-format"; FIXME: rm comment if approach ok
-      mandatory true;
-      description
-        "The binary value of the public key.  The interpretation
-         of the value is defined by 'public-key-format' field.";
-    }
-  }
-
-  grouping asymmetric-key-pair-grouping {
-    description
-      "A private key and its associated public key and algorithm.";
-    uses public-key-grouping;
-    leaf private-key-format {
-      nacm:default-deny-write;
-      when "../private-key";
-      type identityref {
-        base private-key-format;
-      }
-      description "Identifies the key's format.";
-    }
-    choice private-key-type {
-      mandatory true;
-      description
-        "Choice between key types.";
-      leaf private-key {
-        nacm:default-deny-all;
-        type binary;
-        //must "../private-key-format"; FIXME: rm comment if ok
-        description
-          "The value of the binary key.  The key's value is
-           interpreted by the 'private-key-format' field.";
-      }
-      leaf hidden-private-key {
-        nacm:default-deny-write;
-        type empty;
-        description
-          "A permanently hidden key.  How such keys are created
-           is outside the scope of this module.";
-      }
-    }
-  }
-
-  grouping trust-anchor-cert-grouping {
-    description
-      "A trust anchor certificate, and a notification for when
-       it is about to (or already has) expire.";
-    leaf cert {
-      nacm:default-deny-write;
-      type trust-anchor-cert-cms;
-      description
-        "The binary certificate data for this certificate.";
-      reference
-        "RFC YYYY: Common YANG Data Types for Cryptography";
-    }
-    notification certificate-expiration {
-      description
-        "A notification indicating that the configured certificate
-         is either about to expire or has already expired.  When to
-         send notifications is an implementation specific decision,
-         but it is RECOMMENDED that a notification be sent once a
-         month for 3 months, then once a week for four weeks, and
-         then once a day thereafter until the issue is resolved.";
-      leaf expiration-date {
-        type yang:date-and-time;
-        mandatory true;
-        description
-          "Identifies the expiration date on the certificate.";
-      }
-    }
-  }
-
-  grouping trust-anchor-certs-grouping {
-    description
-      "A list of trust anchor certificates, and a notification
-       for when one is about to (or already has) expire.";
-    leaf-list cert {
-      nacm:default-deny-write;
-      type trust-anchor-cert-cms;
-      description
-        "The binary certificate data for this certificate.";
-      reference
-        "RFC YYYY: Common YANG Data Types for Cryptography";
-    }
-    notification certificate-expiration {
-      description
-        "A notification indicating that the configured certificate
-         is either about to expire or has already expired.  When to
-         send notifications is an implementation specific decision,
-         but it is RECOMMENDED that a notification be sent once a
-         month for 3 months, then once a week for four weeks, and
-         then once a day thereafter until the issue is resolved.";
-      leaf expiration-date {
-        type yang:date-and-time;
-        mandatory true;
-        description
-          "Identifies the expiration date on the certificate.";
-      }
-    }
-  }
-
-  grouping end-entity-cert-grouping {
-    description
-      "An end entity certificate, and a notification for when
-       it is about to (or already has) expire.  Implementations
-       SHOULD assert that, where used, the end entity certificate
-       contains the expected public key.";
-    leaf cert {
-      nacm:default-deny-write;
-      type end-entity-cert-cms;
-      description
-        "The binary certificate data for this certificate.";
-      reference
-        "RFC YYYY: Common YANG Data Types for Cryptography";
-    }
-    notification certificate-expiration {
-      description
-        "A notification indicating that the configured certificate
-         is either about to expire or has already expired.  When to
-         send notifications is an implementation specific decision,
-         but it is RECOMMENDED that a notification be sent once a
-         month for 3 months, then once a week for four weeks, and
-         then once a day thereafter until the issue is resolved.";
-      leaf expiration-date {
-        type yang:date-and-time;
-        mandatory true;
-        description
-          "Identifies the expiration date on the certificate.";
-      }
-    }
-  }
-
-  grouping end-entity-certs-grouping {
-    description
-      "A list of end entity certificates, and a notification for
-       when one is about to (or already has) expire.";
-    leaf-list cert {
-      nacm:default-deny-write;
-      type end-entity-cert-cms;
-      description
-        "The binary certificate data for this certificate.";
-      reference
-        "RFC YYYY: Common YANG Data Types for Cryptography";
-    }
-    notification certificate-expiration {
-      description
-        "A notification indicating that the configured certificate
-         is either about to expire or has already expired.  When to
-         send notifications is an implementation specific decision,
-         but it is RECOMMENDED that a notification be sent once a
-         month for 3 months, then once a week for four weeks, and
-         then once a day thereafter until the issue is resolved.";
-      leaf expiration-date {
-        type yang:date-and-time;
-        mandatory true;
-        description
-          "Identifies the expiration date on the certificate.";
-      }
-    }
-  }
-
-  grouping asymmetric-key-pair-with-cert-grouping {
-    description
-      "A private/public key pair and an associated certificate.
-       Implementations SHOULD assert that certificates contain
-       the matching public key.";
-    uses asymmetric-key-pair-grouping;
-    uses end-entity-cert-grouping;
-    action generate-certificate-signing-request {
-      nacm:default-deny-all;
-      description
-        "Generates a certificate signing request structure for
-         the associated asymmetric key using the passed subject
-         and attribute values.  The specified assertions need
-         to be appropriate for the certificate's use.  For
-         example, an entity certificate for a TLS server
-         SHOULD have values that enable clients to satisfy
-         RFC 6125 processing.";
-      input {
-        leaf subject {
-          type binary;
-          mandatory true;
-          description
-            "The 'subject' field per the CertificationRequestInfo
-              structure as specified by RFC 2986, Section 4.1
-              encoded using the ASN.1 distinguished encoding
-              rules (DER), as specified in ITU-T X.690.";
-          reference
-            "RFC 2986:
-               PKCS #10: Certification Request Syntax
-                         Specification Version 1.7.
-             ITU-T X.690:
-               Information technology - ASN.1 encoding rules:
-               Specification of Basic Encoding Rules (BER),
-               Canonical Encoding Rules (CER) and Distinguished
-               Encoding Rules (DER).";
-        }
-        leaf attributes {
-          type binary; // FIXME: does this need to be mandatory?
-          description
-            "The 'attributes' field from the structure
-             CertificationRequestInfo as specified by RFC 2986,
-             Section 4.1 encoded using the ASN.1 distinguished
-             encoding rules (DER), as specified in ITU-T X.690.";
-          reference
-            "RFC 2986:
-               PKCS #10: Certification Request Syntax
-                         Specification Version 1.7.
-             ITU-T X.690:
-               Information technology - ASN.1 encoding rules:
-               Specification of Basic Encoding Rules (BER),
-               Canonical Encoding Rules (CER) and Distinguished
-               Encoding Rules (DER).";
-        }
-      }
-      output {
-        leaf certificate-signing-request {
-          type binary;
-          mandatory true;
-          description
-            "A CertificationRequest structure as specified by
-             RFC 2986, Section 4.2 encoded using the ASN.1
-             distinguished encoding rules (DER), as specified
-             in ITU-T X.690.";
-          reference
-            "RFC 2986:
-               PKCS #10: Certification Request Syntax
-                         Specification Version 1.7.
-             ITU-T X.690:
-               Information technology - ASN.1 encoding rules:
-               Specification of Basic Encoding Rules (BER),
-               Canonical Encoding Rules (CER) and Distinguished
-               Encoding Rules (DER).";
-        }
-      }
-    } // generate-certificate-signing-request
-  } // asymmetric-key-pair-with-cert-grouping
-
-  grouping asymmetric-key-pair-with-certs-grouping {
-    description
-      "A private/public key pair and associated certificates.
-       Implementations SHOULD assert that certificates contain
-       the matching public key.";
-    uses asymmetric-key-pair-grouping;
-    container certificates {
-      nacm:default-deny-write;
-      description
-        "Certificates associated with this asymmetric key.
-         More than one certificate supports, for instance,
-         a TPM-protected asymmetric key that has both IDevID
-         and LDevID certificates associated.";
-      list certificate {
-        key "name";
-        description
-          "A certificate for this asymmetric key.";
-        leaf name {
-          type string;
-          description
-            "An arbitrary name for the certificate.  If the name
-             matches the name of a certificate that exists
-             independently in <operational> (i.e., an IDevID),
-             then the 'cert' node MUST NOT be configured.";
-        }
-        uses end-entity-cert-grouping;
-      }
-    } // certificates
-    action generate-certificate-signing-request {
-      nacm:default-deny-all;
-      description
-        "Generates a certificate signing request structure for
-         the associated asymmetric key using the passed subject
-         and attribute values.  The specified assertions need
-         to be appropriate for the certificate's use.  For
-         example, an entity certificate for a TLS server
-         SHOULD have values that enable clients to satisfy
-         RFC 6125 processing.";
-      input {
-        leaf subject {
-          type binary;
-          mandatory true;
-          description
-            "The 'subject' field per the CertificationRequestInfo
-              structure as specified by RFC 2986, Section 4.1
-              encoded using the ASN.1 distinguished encoding
-              rules (DER), as specified in ITU-T X.690.";
-          reference
-            "RFC 2986:
-               PKCS #10: Certification Request Syntax
-                         Specification Version 1.7.
-             ITU-T X.690:
-               Information technology - ASN.1 encoding rules:
-               Specification of Basic Encoding Rules (BER),
-               Canonical Encoding Rules (CER) and Distinguished
-               Encoding Rules (DER).";
-        }
-        leaf attributes {
-          type binary; // FIXME: does this need to be mandatory?
-          description
-            "The 'attributes' field from the structure
-             CertificationRequestInfo as specified by RFC 2986,
-             Section 4.1 encoded using the ASN.1 distinguished
-             encoding rules (DER), as specified in ITU-T X.690.";
-          reference
-            "RFC 2986:
-               PKCS #10: Certification Request Syntax
-                         Specification Version 1.7.
-             ITU-T X.690:
-               Information technology - ASN.1 encoding rules:
-               Specification of Basic Encoding Rules (BER),
-               Canonical Encoding Rules (CER) and Distinguished
-               Encoding Rules (DER).";
-        }
-      }
-      output {
-        leaf certificate-signing-request {
-          type binary;
-          mandatory true;
-          description
-            "A CertificationRequest structure as specified by
-             RFC 2986, Section 4.2 encoded using the ASN.1
-             distinguished encoding rules (DER), as specified
-             in ITU-T X.690.";
-          reference
-            "RFC 2986:
-               PKCS #10: Certification Request Syntax
-                         Specification Version 1.7.
-             ITU-T X.690:
-               Information technology - ASN.1 encoding rules:
-               Specification of Basic Encoding Rules (BER),
-               Canonical Encoding Rules (CER) and Distinguished
-               Encoding Rules (DER).";
-        }
-      }
-    } // generate-certificate-signing-request
-  } // asymmetric-key-pair-with-certs-grouping
-}
\ No newline at end of file