ietf-pot-profile

This module contains a collection of YANG definitions for proof of transit configuration parameters. The model is meant for proo...

  • Version: 2020-09-08

    ietf-pot-profile@2020-09-08


    
      module ietf-pot-profile {
    
        yang-version 1.1;
    
        namespace
          "urn:ietf:params:xml:ns:yang:ietf-pot-profile";
    
        prefix pot;
    
        import ietf-netconf-acm {
          prefix nacm;
          reference
            "RFC 8341: Network Configuration Access Control Model";
    
    
        }
    
        organization "IETF SFC Working Group";
    
        contact
          "WG Web:   <https://tools.ietf.org/wg/sfc/>
               WG List:  <mailto:sfc@ietf.org>
               Author  : Frank Brockners <fbrockne@cisco.com>
               Author  : Shwetha Bhandari <shwethab@cisco.com>
               Author  : Tal Mizrahi <tal.mizrahi.phd@gmail.com>";
    
        description
          "This module contains a collection of YANG
          definitions for proof of transit configuration
          parameters. The model is meant for proof of
          transit and is targeted for communicating the
          POT-Profile between a controller and nodes
          participating in proof of transit.
    
          Copyright (c) 2020 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).
    
          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 "2020-09-08" {
          description "Initial revision.";
          reference
            "RFC XXXX: Proof of Transit";
    
        }
    
    
        typedef profile-index-range {
          type int32 {
            range "0 .. 1";
          }
          description
            "Range used for the profile index. Currently restricted to
           0 or 1 to identify the odd or even profiles.";
        }
    
        grouping pot-profile {
          description
            "A grouping for proof of transit profiles.";
          list pot-profile-list {
            key "pot-profile-index";
            ordered-by user;
            description "A set of pot profiles.";
            leaf pot-profile-index {
              type profile-index-range;
              mandatory true;
              description
                "Proof of transit profile index.";
            }
    
            leaf status {
              type boolean;
              default "false";
              description
                "True if this profile is currently active.
               Will be used by the first hop of the path or chain.
               Other nodes will not use this field.";
            }
    
            leaf prime-number {
              nacm:default-deny-all;
              type uint64;
              mandatory true;
              description
                "Prime number used for module math computation";
            }
    
            leaf secret-share {
              nacm:default-deny-all;
              type uint64;
              mandatory true;
              description
                "Share of the secret of polynomial-1 used
               in computation for the node. If POLY-1
               is defined by points (x1_i, y1_i) with
               i=0,..k, then for node i, the secret-share
               will be y1_i.";
            }
    
            leaf public-polynomial {
              type uint64;
              mandatory true;
              description
                "Public polynomial value for the node.
               If POLY-2 is defined by points (x2_i, y2_i)
               with i=0,..k, then for node i,
               the secret-share will be y2_i.";
            }
    
            leaf lpc {
              type uint64;
              mandatory true;
              description
                "Lagrange Polynomial Coefficient";
            }
    
            leaf validator {
              type boolean;
              default "false";
              description
                "True if the node is a verifier node";
            }
    
            leaf validator-key {
              nacm:default-deny-all;
              type uint64;
              description
                "The validator-key represents the secret.
               The secret is the constant coefficient of
               POLY-1(z). If POLY-1(z) =
               a_0 + a_1*z + a_2*z^2+..+a_k*z^k,
               then the SECRET would be a_0.";
            }
    
            leaf bitmask {
              type uint64;
              default '4294967295';
              description
                "Number of bits as mask used in controlling
               the size of the random value generation.
               32-bits of mask is default.";
            }
    
            uses opot-profile;
          }  // list pot-profile-list
        }  // grouping pot-profile
    
        grouping opot-profile {
          description
            "Grouping containing OPoT related data.";
          container opot-masks {
            must
              "count(downstream-mask) = count(upstream-mask)";
            description
              "Masking information for OPoT support.";
            leaf-list downstream-mask {
              type uint64;
              max-elements 2;
              description
                "Secret stream used to demask the PoT metadata.
           The mask is used between nodes adjacent in the path
           and MUST have a length equal to the sum of the ones
           of RND and CML.";
            }
    
            leaf-list upstream-mask {
              type uint64;
              max-elements 2;
              description
                "Secret stream used to mask the PoT metadata.
           The mask is used between nodes adjacent in the path
           and MUST have a length equal to the sum of the ones
           of RND and CML.";
            }
          }  // container opot-masks
        }  // grouping opot-profile
    
        container pot-profiles {
          description
            "A group of proof of transit profiles.";
          list pot-profile-set {
            key "pot-profile-name";
            ordered-by user;
            description
              "Set of proof of transit profiles that group parameters
             required to classify and compute proof of transit
             metadata at a node";
            leaf pot-profile-name {
              type string;
              mandatory true;
              description
                "Unique identifier for each proof of transit profile";
            }
    
            uses pot-profile;
          }  // list pot-profile-set
        }  // container pot-profiles
      }  // module ietf-pot-profile
    

© 2023 YumaWorks, Inc. All rights reserved.