module iana-ssh-encryption-algs {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs";
  prefix sshea;

  organization
    "Internet Assigned Numbers Authority (IANA)";

  contact
    "Postal: ICANN
             12025 Waterfront Drive, Suite 300
             Los Angeles, CA  90094-2536
             United States of America
     Tel:    +1 310 301 5800
     Email:  iana@iana.org";

  description
    "This module defines identities for the encryption algorithms
     defined in the 'Encryption Algorithm Names' sub-registry of the
     'Secure Shell (SSH) Protocol Parameters' registry maintained
     by IANA.

     Copyright (c) 2022 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).

     The initial version of this YANG module is part of RFC EEEE
     (https://www.rfc-editor.org/info/rfcEEEE); see the RFC
     itself for full legal notices.";

  revision 2022-06-16 {
    description
      "Reflects contents of the encryption algorithms registry
       on June 16, 2022.";
    reference
      "RFC EEEE: YANG Groupings for SSH Clients and SSH Servers";
  }

  // Typedefs

  typedef encryption-algorithm-ref {
    type identityref {
      base "encryption-alg-base";
    }
    description
      "A reference to a SSH encryption algorithm identifier.";
  }

  // Identities

  identity encryption-alg-base {
    description
      "Base identity used to identify encryption algorithms.";
  }

  identity triple-des-cbc { // YANG IDs cannot begin with a number
    base encryption-alg-base;
    description
      "3DES-CBC";
    reference
      "RFC 4253:
         The Secure Shell (SSH) Transport Layer Protocol";
  }

  identity blowfish-cbc {
    base encryption-alg-base;
    description
      "BLOWFISH-CBC";
    reference
      "RFC 4253:
         The Secure Shell (SSH) Transport Layer Protocol";
  }

  identity twofish256-cbc {
    base encryption-alg-base;
    description
      "TWOFISH256-CBC";
    reference
      "RFC 4253:
         The Secure Shell (SSH) Transport Layer Protocol";
  }

  identity twofish-cbc {
    base encryption-alg-base;
    description
      "TWOFISH-CBC";
    reference
      "RFC 4253:
         The Secure Shell (SSH) Transport Layer Protocol";
  }

  identity twofish192-cbc {
    base encryption-alg-base;
    description
      "TWOFISH192-CBC";
    reference
      "RFC 4253:
         The Secure Shell (SSH) Transport Layer Protocol";
  }
  identity twofish128-cbc {
    base encryption-alg-base;
    description
      "TWOFISH128-CBC";
    reference
      "RFC 4253:
         The Secure Shell (SSH) Transport Layer Protocol";
  }

  identity aes256-cbc {
    base encryption-alg-base;
    description
      "AES256-CBC";
    reference
      "RFC 4253:
         The Secure Shell (SSH) Transport Layer Protocol";
  }

  identity aes192-cbc {
    base encryption-alg-base;
    description
      "AES192-CBC";
    reference
      "RFC 4253:
         The Secure Shell (SSH) Transport Layer Protocol";
  }

  identity aes128-cbc {
    base encryption-alg-base;
    status deprecated;
    description
      "AES128-CBC";
    reference
      "RFC 4253:
         The Secure Shell (SSH) Transport Layer Protocol";
  }

  identity serpent256-cbc {
    base encryption-alg-base;
    description
      "SERPENT256-CBC";
    reference
      "RFC 4253:
         The Secure Shell (SSH) Transport Layer Protocol";
  }

  identity serpent192-cbc {
    base encryption-alg-base;
    description
      "SERPENT192-CBC";
    reference
      "RFC 4253:
         The Secure Shell (SSH) Transport Layer Protocol";
  }

  identity serpent128-cbc {
    base encryption-alg-base;
    description
      "SERPENT128-CBC";
    reference
      "RFC 4253:
         The Secure Shell (SSH) Transport Layer Protocol";
  }

  identity arcfour {
    base encryption-alg-base;
    status obsolete;
    description
      "ARCFOUR";
    reference
      "RFC 8758:
         Deprecating RC4 in Secure Shell (SSH)";
  }

  identity idea-cbc {
    base encryption-alg-base;
    description
      "IDEA-CBC";
    reference
      "RFC 4253:
         The Secure Shell (SSH) Transport Layer Protocol";
  }

  identity cast128-cbc {
    base encryption-alg-base;
    description
      "CAST128-CBC";
    reference
      "RFC 4253:
         The Secure Shell (SSH) Transport Layer Protocol";
  }

  identity none {
    base encryption-alg-base;
    description
      "NONE";
    reference
      "RFC 4253:
         The Secure Shell (SSH) Transport Layer Protocol";
  }

  identity des-cbc {
    base encryption-alg-base;
    status obsolete;
    description
      "DES-CBC";
    reference
      "FIPS 46-3:
         Data Encryption Standard (DES)";
  }

  identity arcfour128 {
    base encryption-alg-base;
    status obsolete;
    description
      "ARCFOUR128";
    reference
      "RFC 8758:
         Deprecating RC4 in Secure Shell (SSH)";
  }

  identity arcfour256 {
    base encryption-alg-base;
    status obsolete;
    description
      "ARCFOUR256";
    reference
      "RFC 8758:
         Deprecating RC4 in Secure Shell (SSH)";
  }

  identity aes128-ctr {
    base encryption-alg-base;
    status deprecated;
    description
      "AES128-CTR";
    reference
      "RFC 4344:
         The Secure Shell (SSH) Transport Layer Encryption Modes";
  }

  identity aes192-ctr {
    base encryption-alg-base;
    description
      "AES192-CTR";
    reference
      "RFC 4344:
         The Secure Shell (SSH) Transport Layer Encryption Modes";
  }

  identity aes256-ctr {
    base encryption-alg-base;
    description
      "AES256-CTR";
    reference
      "RFC 4344:
         The Secure Shell (SSH) Transport Layer Encryption Modes";
  }

  identity triple-des-ctr { // YANG IDs cannot begin with a number
    base encryption-alg-base;
    description
      "3DES-CTR";
    reference
      "RFC 4344:
         The Secure Shell (SSH) Transport Layer Encryption Modes";
  }

  identity blowfish-ctr {
    base encryption-alg-base;
    description
      "BLOWFISH-CTR";
    reference
      "RFC 4344:
         The Secure Shell (SSH) Transport Layer Encryption Modes";
  }

  identity twofish128-ctr {
    base encryption-alg-base;
    description
      "TWOFISH128-CTR";
    reference
      "RFC 4344:
         The Secure Shell (SSH) Transport Layer Encryption Modes";
  }

  identity twofish192-ctr {
    base encryption-alg-base;
    description
      "TWOFISH192-CTR";
    reference
      "RFC 4344:
         The Secure Shell (SSH) Transport Layer Encryption Modes";
  }

  identity twofish256-ctr {
    base encryption-alg-base;
    description
      "TWOFISH256-CTR";
    reference
      "RFC 4344:
         The Secure Shell (SSH) Transport Layer Encryption Modes";
  }

  identity serpent128-ctr {
    base encryption-alg-base;
    description
      "SERPENT128-CTR";
    reference
      "RFC 4344:
         The Secure Shell (SSH) Transport Layer Encryption Modes";
  }

  identity serpent192-ctr {
    base encryption-alg-base;
    description
      "SERPENT192-CTR";
    reference
      "RFC 4344:
         The Secure Shell (SSH) Transport Layer Encryption Modes";
  }

  identity serpent256-ctr {
    base encryption-alg-base;
    description
      "SERPENT256-CTR";
    reference
      "RFC 4344:
         The Secure Shell (SSH) Transport Layer Encryption Modes";
  }

  identity idea-ctr {
    base encryption-alg-base;
    description
      "IDEA-CTR";
    reference
      "RFC 4344:
         The Secure Shell (SSH) Transport Layer Encryption Modes";
  }

  identity cast128-ctr {
    base encryption-alg-base;
    description
      "CAST128-CTR";
    reference
      "RFC 4344:
         The Secure Shell (SSH) Transport Layer Encryption Modes";
  }

  identity aead-aes-128-gcm {
    base encryption-alg-base;
    description
      "AEAD_AES_128_GCM";
    reference
      "RFC 5647:
         AES Galois Counter Mode for the
         Secure Shell Transport Layer Protocol";
  }

  identity aead-aes-256-gcm {
    base encryption-alg-base;
    description
      "AEAD_AES_256_GCM";
    reference
      "RFC 5647:
         AES Galois Counter Mode for the
         Secure Shell Transport Layer Protocol";
  }

  // Protocol-accessible Nodes

  container supported-algorithms {
    config false;
    description
      "A container for a list of encryption algorithms
       supported by the server.";
    leaf-list supported-algorithm {
      type encryption-algorithm-ref;
      description
        "A encryption algorithm supported by the server.";
    }
  }

}
