<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lopez-opsawg-yang-provenance-07" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title abbrev="yang-data-provenance">Applying COSE Signatures for YANG Data Provenance</title>
    <seriesInfo name="Internet-Draft" value="draft-lopez-opsawg-yang-provenance-07"/>
    <author initials="D." surname="Lopez" fullname="Diego Lopez">
      <organization>Telefonica</organization>
      <address>
        <email>diego.r.lopez@telefonica.com</email>
      </address>
    </author>
    <author initials="A." surname="Pastor" fullname="Antonio Pastor">
      <organization>Telefonica</organization>
      <address>
        <email>antonio.pastorperales@telefonica.com</email>
      </address>
    </author>
    <author initials="A." surname="Huang Feng" fullname="Alex Huang Feng">
      <organization>INSA-Lyon</organization>
      <address>
        <email>alex.huang-feng@insa-lyon.fr</email>
      </address>
    </author>
    <author initials="A." surname="Mendez" fullname="Ana Mendez">
      <organization>Telefonica</organization>
      <address>
        <email>ana.mendezperez@telefonica.com</email>
      </address>
    </author>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>
    <author initials="S." surname="Garcia" fullname="Sofia Garcia">
      <organization>UC3M</organization>
      <address>
        <email>sofia.garciarincon.practicas@telefonica.com</email>
      </address>
    </author>
    <date year="2025" month="April" day="24"/>
    <area>Operations and Management</area>
    <workgroup>Operations and Management Area Working Group</workgroup>
    <keyword>provenance</keyword>
    <keyword>signature</keyword>
    <keyword>COSE</keyword>
    <keyword>metadata</keyword>
    <abstract>
      <?line 79?>

<t>This document defines a mechanism based on COSE signatures to provide and verify the provenance of YANG data, so it is possible to verify the origin and integrity of a dataset, even when those data are going to be processed and/or applied in workflows where a crypto-enabled data transport directly from the original data stream is not available. As the application of evidence-based OAM automation and the use of tools such as AI/ML grow, provenance validation becomes more relevant in all scenarios. The use of compact signatures facilitates the inclusion of provenance strings in any YANG schema requiring them.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://dr2lopez.github.io/yang-provenance/draft-lopez-opsawg-yang-provenance.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-lopez-opsawg-yang-provenance/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Operations and Management Area Working Group Working Group mailing list (<eref target="mailto:opsawg@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/opsawg/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/opsawg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/dr2lopez/yang-provenance"/>.</t>
    </note>
  </front>
  <middle>
    <?line 83?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>OAM automation, generally based on closed-loop principles, requires at least two datasets to be used. Using the common terms in Control Theory, we need those from the plant (the network device or segment under control) and those to be used as reference (the desired values of the relevant data). The usual automation behavior compares these values and takes a decision, by whatever the method (algorithmic, rule-based, an AI model tuned by ML...) to decide on a control action according to this comparison. Assurance of the origin and integrity of these datasets, what we refer in this document as "provenance", becomes essential to guarantee a proper behavior of closed-loop automation.</t>
      <t>When datasets are made available as an online data flow, provenance can be assessed by properties of the data transport protocol, as long as some kind of cryptographic protocol is used for source authentication, with TLS, SSH and IPsec as the main examples. But when these datasets are stored, go through some pre-processing or aggregation stages, or even cryptographic data transport is not available, provenance must be assessed by other means.</t>
      <t>The original use case for this provenance mechanism is associated with <xref target="YANGmanifest"/>, in order to provide a proof of the origin and integrity of the provided metadata, and therefore the examples in this document use the modules described there, but it soon became clear that it could be extended to any YANG datamodel to support provenance evidence. An analysis of other potential use cases suggested the interest of defining an independent, generally applicable mechanism.</t>
      <t>Provenance verification by signatures incorporated in YANG data can be applied to any data processing pipeline, whether they rely on an online flow or use some kind of data store, such as data lakes or time-series databases. The application of recorded data for ML training or validation constitute the most relevant examples of these scenarios.</t>
      <t>This document provides a mechanism for including digital signatures within YANG data. It applies COSE <xref target="RFC9052"/> to make the signature compact and reduce the resources required for calculating it. This mechanism is applicable to any serialization of the YANG data supporting a clear method for canonicalization, but this document considers three base ones: CBOR, JSON and XML.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>The term "data provenance" refers to a documented trail accounting for the origin of a piece of data and where it has moved from to where it is presently. The signature mechanism provided here can be recursively applied to allow this accounting for YANG data.</t>
    </section>
    <section anchor="defining-provenance-elements">
      <name>Defining Provenance Elements</name>
      <t>The provenance for a given YANG element <bcp14>MUST</bcp14> be convened by a leaf element, containing the COSE signature bitstring built according to the procedure defined below in this section. The provenance leaf <bcp14>MUST</bcp14> be of type provenance-signature, defined as follows:</t>
      <artwork><![CDATA[
typedef provenance-signature {
     type binary;
     description
      "The provenance-signature type represents a digital signature
       corresponding to the associated YANG element. The signature is based
       on COSE and generated using a canonicalized version of the
       associated element.";
     reference
      "RFC 9052: CBOR Object Signing and Encryption (COSE): Structures and Process
       draft-lopez-opsawg-yang-provenance";
}
]]></artwork>
      <section anchor="provenance-signature-strings">
        <name>Provenance Signature Strings</name>
        <t>Provenance signature strings are COSE single signature messages with [nil] payload, according to COSE conventions and registries, and with the following structure (as defined by <xref section="4.2" sectionFormat="comma" target="RFC9052"/>):</t>
        <artwork><![CDATA[
COSE_Sign1 = [
protected /algorithm-identifier, kid, serialization-method/
unprotected /algorithm-parameters/
signature /using as external data the content of the YANG
           (meta-)data without the signature leaf/
]
]]></artwork>
        <t>The COSE_Sign1 procedure yields a bitstring when building the signature and expects a bitstring for checking it, hence the proposed type for provenance signature leaves. The structure of the COSE_Sign1 consists of:</t>
        <ul spacing="normal">
          <li>
            <t>The algorithm-identifier, which <bcp14>MUST</bcp14> follow COSE conventions and registries.</t>
          </li>
          <li>
            <t>The kid (Key ID), to be locally agreed, used and interpreted by the signer and the signature validator. URIs <xref target="RFC3986"/> and RFC822-style <xref target="RFC5322"/> identifiers are typical values to be used as kid.</t>
          </li>
          <li>
            <t>The serialization-method, a string identifying the YANG serialization in use. It <bcp14>MUST</bcp14> be one of the three possible values "xml" (for XML serialization <xref target="RFC7950"/>), "json" (for JSON serialization <xref target="RFC7951"/>) or "cbor" (for CBOR serialization <xref target="RFC9254"/>).</t>
          </li>
          <li>
            <t>The value algorithm-parameters, which <bcp14>MUST</bcp14> follow the COSE conventions for providing relevant parameters to the signing algorithm.</t>
          </li>
          <li>
            <t>The signature for the YANG element provenance is being established for, to be produced and verified according to the procedure described below for each one of the enclosing methods for the provenance string described below.</t>
          </li>
        </ul>
      </section>
      <section anchor="signature-and-verification-procedures">
        <name>Signature and Verification Procedures</name>
        <t>To keep a concise signature and avoid the need for wrapping YANG constructs in COSE envelopes, the whole signature <bcp14>MUST</bcp14> be built and verified by means of externally supplied data, as defined in <xref section="4.3" sectionFormat="comma" target="RFC9052"/>, with a [nil] payload.</t>
        <t>The byte strings to be used as input to the signature and verification procedures <bcp14>MUST</bcp14> be built by:</t>
        <ul spacing="normal">
          <li>
            <t>Selecting the exact YANG content to be used, according to the corresponding enclosing methods.</t>
          </li>
          <li>
            <t>Applying the corresponding canonicalization method as described in the following section.</t>
          </li>
        </ul>
      </section>
      <section anchor="canonicalization">
        <name>Canonicalization</name>
        <t>Signature generation and verification require a canonicalization method to be applied, that depends on the serialization used. According to the three types of serialization defined, the following canonicalization methods <bcp14>MUST</bcp14> be applied:</t>
        <ul spacing="normal">
          <li>
            <t>For CBOR, length-first core deterministic encoding, as defined by <xref target="RFC8949"/>.</t>
          </li>
          <li>
            <t>For JSON, JSON Canonicalization Scheme (JCS), as defined by <xref target="RFC8785"/>.</t>
          </li>
          <li>
            <t>For XML, Exclusive XML Canonicalization 1.0, as defined by <xref target="XMLSig"/>.</t>
          </li>
        </ul>
      </section>
      <section anchor="provenance-signature-yang-module">
        <name>Provenance-Signature YANG Module</name>
        <t>This module defines a provenance-signature type to be used in other YANG modules.</t>
        <sourcecode markers="true" name="ietf-yang-provenance@2024-02-28.yang"><![CDATA[
module ietf-yang-provenance {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-yang-provenance";
  prefix iyangprov;

  organization "IETF OPSAWG (Operations and Management Area Working Group)";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>

     Authors:  Alex Huang Feng
               <mailto:alex.huang-feng@insa-lyon.fr>
               Diego Lopez
               <mailto:diego.r.lopez@telefonica.com>
               Antonio Pastor
               <mailto:antonio.pastorperales@telefonica.com>
               Henk Birkholz
               <mailto:henk.birkholz@sit.fraunhofer.de>";

  description
    "Defines a binary provenance-signature type to be used in other YANG
    modules.

    Copyright (c) 2024 IETF Trust and the persons identified as
    authors of the code.  All rights reserved.

    Redistribution and use in source and binary forms, with or without
    modification, is permitted pursuant to, and subject to the license
    terms contained in, the Revised BSD License set forth in Section
    4.c of the IETF Trust's Legal Provisions Relating to IETF Documents
    (https://trustee.ietf.org/license-info).

    This version of this YANG module is part of RFC XXXX; see the RFC
    itself for full legal notices.";

  revision 2024-02-28 {
    description
      "First revision";
    reference
      "RFC XXXX: Applying COSE Signatures for YANG Data Provenance";
  }

  typedef provenance-signature {
    type binary;
    description
      "The provenance-signature type represents a digital signature
      corresponding to the associated YANG element. The signature is based
      on COSE and generated using a canonicalized version of the
      associated element.";
    reference
      "RFC XXXX: Applying COSE Signatures for YANG Data Provenance";
  }
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="enclosing-methods">
      <name>Enclosing Methods</name>
      <t>Once defined the procedures for generating and verifying the provenance signature string, let's consider how these signatures can be integrated with the associated YANG data by enclosing the signature in the data structure. This document considers four different enclosing methods, suitable for different stages of the YANG schema and usage patterns of the YANG data. The enclosing method defines not only how the provenance signature string is combined with the signed YANG data but also the specific procedure for selecting the specific YANG content to be processed when signing and verifying.</t>
      <t>Appendix A includes a set of exmaples of the different enclosing methods, applied to the same YANG fragment, to illustrate their use.</t>
      <section anchor="including-a-provenance-leaf-in-a-yang-element">
        <name>Including a Provenance Leaf in a YANG Element</name>
        <t>This enclosing method requires a specific element in the YANG schema defining the element to be signed (the enclosing element), and thus implies considering provenance signatures when creating the corresponding YANG module, or the update of existing modules willing to support this provenance enclosing method.</t>
        <t>When using this enclosing method, a provenance-signature leaf <bcp14>MAY</bcp14> appear at any position in the enclosing element, but only one such leaf <bcp14>MUST</bcp14> be defined for the enclosing element. If the enclosing element contains other non-leaf elements, they <bcp14>MAY</bcp14> provide their own provenance-signature leaf, according to the same rule. In this case, the provenance-signature leaves in the children elements are applicable to the specific child element where they are enclosed, while the provenance-signature leaf enclosed in the top-most element is applicable to the whole element contents, including the children provenance-signature leaf themselves. This allows for recursive provenance validation, data aggregation, and the application of provenance verification of relevant children elements at different stages of any data processing pipeline.</t>
        <t>The specific YANG content to be processed <bcp14>SHALL</bcp14> be generated by taking the whole enclosing element and eliminiating the leaf containing the provenance signature string.</t>
        <t>As example, let us consider the two modules proposed in <xref target="YANGmanifest"/>. For the platform-manifest module, the provenance for a platform would be provided by the optional platform-provenance leaf shown below:</t>
        <artwork><![CDATA[
module: ietf-platform-manifest
  +--ro platforms
     +--ro platform* [id]
       +--ro id                      string
       +--ro name?                   string
       +--ro vendor?                 string
       +--ro vendor-pen?             uint32
       +--ro software-version?       string
       +--ro software-flavor?        string
       +--ro os-version?             string
       +--ro os-type?                string
       +--ro platform-provenance?    provenance-signature
       +--ro yang-push-streams
       |  +--ro stream* [name]
       |     +--ro name
       |     +--ro description?
       +--ro yang-library
       + . . .
       .
       .
       .
]]></artwork>
        <t>For data collections, the provenance of each one would be provided by the optional collector-provenance leaf, as shown below:</t>
        <artwork><![CDATA[
module: ietf-data-collection-manifest
  +--ro data-collections
     +--ro data-collection* [platform-id]
     +--ro platform-id
     |       -> /p-mf:platforms/platform/id
     +--ro collector-provenance?   provenance-signature
     +--ro yang-push-subscriptions
       +--ro subscription* [id]
         +--ro id
         |      sn:subscription-id
         +
         .
         .
         .
     + . . .
     |
     .
     .
     .
]]></artwork>
        <t>Note how, in the two examples, the element bearing the provenance signature appears at different positions in the enclosing element. And note that, for processing the element for signature generation and verification, the signature element <bcp14>MUST</bcp14> be eliminated from the enclosing element before applying the corresponding canonicalization method.</t>
        <t>Note that, in application of the recursion mechanism described above, a provenance element could be included at the top of any of the collections, supporting the verification of the provenance of the collection itself (as provided by a specific collector), without interfering with the verification of the provenance of each of the collection elements. As an example, in the case of the platform manifests it would look like:</t>
        <artwork><![CDATA[
module: ietf-platform-manifest
  +--ro platforms
     +--ro platform-collection-provenance? provenance-signature
     +--ro platform* [id]
       +--ro platform-provenance?          provenance-signature
       +--ro id                            string
       +--ro name?                         string
       +--ro vendor?                       string
       + . . .
       .
       .
       .
]]></artwork>
        <t>Note here that, to generate the YANG content to be processed in the case of the collection the provenance leafs of the indivual elements <bcp14>SHALL NOT</bcp14> be eliminated, as it <bcp14>SHALL</bcp14> be the case when generating the YANG content to be processed for each individual element in the collection.</t>
      </section>
      <section anchor="including-a-provenance-signature-in-netconf-event-notifications-and-yang-push-notifications">
        <name>Including a Provenance Signature in NETCONF Event Notifications and YANG-Push Notifications</name>
        <t>The signature mechanism proposed in this document <bcp14>MAY</bcp14> be used with NETCONF Event Notifications <xref target="RFC5277"/> and YANG-Push <xref target="RFC8641"/> to sign the generated notifications directly from the publisher nodes. The signature is added to the header of the Notification along with the eventTime leaf.</t>
        <t>The YANG content to be processed <bcp14>MUST</bcp14> consist of the content of the notificationContent element.</t>
        <t>The following sections define the YANG module augmenting the ietf-notification module.</t>
        <section anchor="yang-tree-diagram">
          <name>YANG Tree Diagram</name>
          <t>The following is the YANG tree diagram <xref target="RFC8340"/> for the ietf-notification-provenance augmentation within the ietf-notification.</t>
          <artwork><![CDATA[
module: ietf-notification-provenance

  augment-structure /inotif:notification:
    +-- notification-provenance?   iyangprov:provenance-signature
]]></artwork>
          <t>And the following is the full YANG tree diagram for the notification.</t>
          <artwork><![CDATA[
module: ietf-notification

  structure notification:
    +-- eventTime                             yang:date-and-time
    +-- inotifprov:notification-provenance?   iyangprov:provenance-signature
]]></artwork>
        </section>
        <section anchor="yang-module">
          <name>YANG Module</name>
          <t>The module augments ietf-notification module <xref target="I-D.ahuang-netconf-notif-yang"/> adding the signature leaf in the notification header.</t>
          <sourcecode markers="true" name="ietf-notification-provenance@2024-02-28.yang"><![CDATA[
module ietf-notification-provenance {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-notification-provenance";
  prefix inotifprov;

  import ietf-notification {
    prefix inotif;
    reference
      "draft-ahuang-netconf-notif-yang: NETCONF Event Notification YANG";
  }
  import ietf-yang-provenance {
    prefix iyangprov;
    reference
      "RFC XXXX: Applying COSE Signatures for YANG Data Provenance";
  }
  import ietf-yang-structure-ext {
    prefix sx;
    reference
      "RFC 8791: YANG Data Structure Extensions";
  }

  organization "IETF OPSAWG (Operations and Management Area Working Group)";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>

     Authors:  Alex Huang Feng
               <mailto:alex.huang-feng@insa-lyon.fr>
               Diego Lopez
               <mailto:diego.r.lopez@telefonica.com>
               Antonio Pastor
               <mailto:antonio.pastorperales@telefonica.com>
               Henk Birkholz
               <mailto:henk.birkholz@sit.fraunhofer.de>";

  description
    "Defines a binary provenance-signature type to be used in other YANG
    modules.

    Copyright (c) 2024 IETF Trust and the persons identified as
    authors of the code.  All rights reserved.

    Redistribution and use in source and binary forms, with or without
    modification, is permitted pursuant to, and subject to the license
    terms contained in, the Revised BSD License set forth in Section
    4.c of the IETF Trust's Legal Provisions Relating to IETF Documents
    (https://trustee.ietf.org/license-info).

    This version of this YANG module is part of RFC XXXX; see the RFC
    itself for full legal notices.";

  revision 2024-02-28 {
    description
      "First revision";
    reference
      "RFC XXXX: Applying COSE Signatures for YANG Data Provenance";
  }

  sx:augment-structure "/inotif:notification" {
    leaf notification-provenance {
      type iyangprov:provenance-signature;
      description
        "COSE signature of the content of the Notification for
        provenance verification.";
    }
  }
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="including-provenance-as-metadata-in-yang-instance-data">
        <name>Including Provenance as Metadata in YANG Instance Data</name>
        <t>Provenance signature strings can be included as part of the metadata in YANG instance data files, as defined in <xref target="RFC9195"/> for data at rest. The augmented YANG tree diagram including the provenance signature is as follows:</t>
        <artwork><![CDATA[
module: ietf-yang-instance-data-provenance
  augment-structure instance-data-set:
    +--provenance-string?   provenance-signature
]]></artwork>
        <t>The provenance signature string in this enclosing method applies to whole content-data element in instance-data-set, independently of whether those data contain other provenance signature strings by applying other enclosing methods.</t>
        <t>The specific YANG content to be processed <bcp14>SHALL</bcp14> be generated by taking the contents of the content-data element and applying the corresponding canonicalization method.</t>
        <section anchor="yang-module-1">
          <name>YANG Module</name>
          <dl>
            <dt>This module defines the provenance signature element to be included as metadata of a YANG data instance.</dt>
            <dd>
              <t>YANG module derived from <xref target="RFC9195"/>, named "ietf-yang-instance-data-provenance"</t>
            </dd>
          </dl>
        </section>
      </section>
      <section anchor="including-provenance-in-yang-annotations">
        <name>Including Provenance in YANG Annotations</name>
        <t>The use of annotations as defined in <xref target="RFC7952"/> seems a natural enclosing method, dealing with the provenance signature string as metadata and not requiring modification of existing YANG schemas.The provenance-string annotation is defined as follows:</t>
        <artwork><![CDATA[
 md:annotation provenance-string {
       type provenance-signature;
       description
         "This annotation contains a digital signature corresponding
          to the YANG element in which it appears.";
     }
]]></artwork>
        <t>The specific YANG content to be processed <bcp14>SHALL</bcp14> be generated by eliminating the provenance-string (encoded according to what is described in Section 5 of <xref target="RFC7952"/>) from the element it applies to, before invoking the corresponding canonicalization method. In application of the general recursion principle for provenance signature strings, any other provenance strings within the element to which the provenance-string applies <bcp14>SHALL</bcp14> be left as they appear, whatever the enclosing method used for them.</t>
        <section anchor="yang-module-2">
          <name>YANG Module</name>
          <t>This module defines a metadata annotation to include a provenance signature for a YANG element.</t>
          <sourcecode markers="true" name="ietf-provenance-annotation@2024-06-30.yang"><![CDATA[
module yang-provenance-metadata {
     yang-version 1.1;
     namespace "http://telefonica.com/temporary-ns-yangpmd";
     prefix "ypmd";
     import ietf-yang-types {
       prefix "yang";
     }
     import ietf-yang-metadata {
       prefix "md";
     }
     organization "IETF OPSAWG (Operations and Management Area Working Group)";
     contact
       "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
        WG List:  <mailto:opsawg@ietf.org>

        Authors: Diego Lopez
                 <mailto:diego.r.lopez@telefonica.com>
                 Alex Huang Feng
                 <mailto:alex.huang-feng@insa-lyon.fr>
                 Antonio Pastor
                 <mailto:antonio.pastorperales@telefonica.com>
                 Henk Birkholz
                 <mailto:henk.birkholz@sit.fraunhofer.de>";
        description
        "Defines a binary provenance-signature type to be used in YANG
         metadata annotations

         Copyright (c) 2024 IETF Trust and the persons identified as
         authors of the code.  All rights reserved.

         Redistribution and use in source and binary forms, with or without
         modification, is permitted pursuant to, and subject to the license
         terms contained in, the Revised BSD License set forth in Section
         4.c of the IETF Trust's Legal Provisions Relating to IETF Documents
         (https://trustee.ietf.org/license-info).

         This version of this YANG module is part of RFC XXXX; see the RFC
         itself for full legal notices.";

     revision 2024-02-28 {
        description
        "First revision";
        reference
        "RFC XXXX: Applying COSE Signatures for YANG Data Provenance";
     }
     md:annotation provenance-string {
       type yang:provenance-signature;
       description
         "This annotation contains the provenance signature for
          the YANG element associated with it";
     }
}
]]></sourcecode>
          <t>TBD: Provide a final URL for the "ypmd" prefix.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The provenance assessment mechanism described in this document relies on COSE <xref target="RFC9052"/> and the deterministic encoding or canonicalization procedures described by <xref target="RFC8949"/>, <xref target="RFC8785"/> and <xref target="XMLSig"/>. The security considerations made in these references are fully applicable here.</t>
      <t>The verification step depends on the association of the kid (Key ID) with the proper public key. This is a local matter for the verifier and its specification is out of the scope of this document. The use of certificates, PKI mechanisms, or any other secure distribution of id-public key mappings is <bcp14>RECOMMENDED</bcp14>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="ietf-xml-registry">
        <name>IETF XML Registry</name>
        <t>This document registers the following URIs in the "IETF XML Registry" <xref target="RFC3688"/>:</t>
        <artwork><![CDATA[
  URI: urn:ietf:params:xml:ns:yang:ietf-yang-provenance
  Registrant Contact: The IESG.
  XML: N/A; the requested URI is an XML namespace.
]]></artwork>
        <artwork><![CDATA[
  URI: urn:ietf:params:xml:ns:yang:ietf-notification-provenance
  Registrant Contact: The IESG.
  XML: N/A; the requested URI is an XML namespace.
]]></artwork>
      </section>
      <section anchor="yang-module-name">
        <name>YANG Module Name</name>
        <t>This document registers the following YANG modules in the "YANG Module Names" registry <xref target="RFC6020"/>:</t>
        <artwork><![CDATA[
  name: ietf-yang-provenance
  namespace: urn:ietf:params:xml:ns:yang:ietf-yang-provenance
  prefix: iyangprov
  reference: RFC XXXX
]]></artwork>
        <artwork><![CDATA[
  name: ietf-notification-provenance
  namespace: urn:ietf:params:xml:ns:yang:ietf-notification-provenance
  prefix: inotifprov
  reference: RFC XXXX
]]></artwork>
        <t>TBD: Others? At least for the two additional enclosing methods (instance files and annotations)</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>An open-source reference implementation, written in Java, is available at <eref target="https://github.com/tefiros/cose-provenance">https://github.com/tefiros/cose-provenance</eref>. This implementation has been used to generate the examples in the appendix of this document, and was first demonstrated at the IETF 122 Hackathon. Work is ongoing to explore its integration with other open-source YANG modules.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC5277">
          <front>
            <title>NETCONF Event Notifications</title>
            <author fullname="S. Chisholm" initials="S." surname="Chisholm"/>
            <author fullname="H. Trevino" initials="H." surname="Trevino"/>
            <date month="July" year="2008"/>
            <abstract>
              <t>This document defines mechanisms that provide an asynchronous message notification delivery service for the Network Configuration protocol (NETCONF). This is an optional capability built on top of the base NETCONF definition. This document defines the capabilities and operations necessary to support this service. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5277"/>
          <seriesInfo name="DOI" value="10.17487/RFC5277"/>
        </reference>
        <reference anchor="RFC5322">
          <front>
            <title>Internet Message Format</title>
            <author fullname="P. Resnick" initials="P." role="editor" surname="Resnick"/>
            <date month="October" year="2008"/>
            <abstract>
              <t>This document specifies the Internet Message Format (IMF), a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages. This specification is a revision of Request For Comments (RFC) 2822, which itself superseded Request For Comments (RFC) 822, "Standard for the Format of ARPA Internet Text Messages", updating it to reflect current practice and incorporating incremental changes that were specified in other RFCs. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5322"/>
          <seriesInfo name="DOI" value="10.17487/RFC5322"/>
        </reference>
        <reference anchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
        <reference anchor="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="RFC7951">
          <front>
            <title>JSON Encoding of Data Modeled with YANG</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>This document defines encoding rules for representing configuration data, state data, parameters of Remote Procedure Call (RPC) operations or actions, and notifications defined using YANG as JavaScript Object Notation (JSON) text.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7951"/>
          <seriesInfo name="DOI" value="10.17487/RFC7951"/>
        </reference>
        <reference anchor="RFC7952">
          <front>
            <title>Defining and Using Metadata with YANG</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>This document defines a YANG extension that allows for defining metadata annotations in YANG modules. The document also specifies XML and JSON encoding of annotations and other rules for annotating instances of YANG data nodes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7952"/>
          <seriesInfo name="DOI" value="10.17487/RFC7952"/>
        </reference>
        <reference anchor="RFC8340">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution of the YANG language.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="215"/>
          <seriesInfo name="RFC" value="8340"/>
          <seriesInfo name="DOI" value="10.17487/RFC8340"/>
        </reference>
        <reference anchor="RFC8641">
          <front>
            <title>Subscription to YANG Notifications for Datastore Updates</title>
            <author fullname="A. Clemm" initials="A." surname="Clemm"/>
            <author fullname="E. Voit" initials="E." surname="Voit"/>
            <date month="September" year="2019"/>
            <abstract>
              <t>This document describes a mechanism that allows subscriber applications to request a continuous and customized stream of updates from a YANG datastore. Providing such visibility into updates enables new capabilities based on the remote mirroring and monitoring of configuration and operational state.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8641"/>
          <seriesInfo name="DOI" value="10.17487/RFC8641"/>
        </reference>
        <reference anchor="RFC8785">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
            <author fullname="B. Jordan" initials="B." surname="Jordan"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
              <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9195">
          <front>
            <title>A File Format for YANG Instance Data</title>
            <author fullname="B. Lengyel" initials="B." surname="Lengyel"/>
            <author fullname="B. Claise" initials="B." surname="Claise"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>There is a need to document data defined in YANG models at design time, implementation time, or when a live server is unavailable. This document specifies a standard file format for YANG instance data, which follows the syntax and semantics of existing YANG models and annotates it with metadata.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9195"/>
          <seriesInfo name="DOI" value="10.17487/RFC9195"/>
        </reference>
        <reference anchor="RFC9254">
          <front>
            <title>Encoding of Data Modeled with YANG in the Concise Binary Object Representation (CBOR)</title>
            <author fullname="M. Veillette" initials="M." role="editor" surname="Veillette"/>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov"/>
            <author fullname="A. Pelov" initials="A." surname="Pelov"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>YANG (RFC 7950) is a data modeling language used to model configuration data, state data, parameters and results of Remote Procedure Call (RPC) operations or actions, and notifications.</t>
              <t>This document defines encoding rules for YANG in the Concise Binary Object Representation (CBOR) (RFC 8949).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9254"/>
          <seriesInfo name="DOI" value="10.17487/RFC9254"/>
        </reference>
        <reference anchor="I-D.ahuang-netconf-notif-yang">
          <front>
            <title>YANG model for NETCONF Event Notifications</title>
            <author fullname="Alex Huang Feng" initials="A. H." surname="Feng">
              <organization>INSA-Lyon</organization>
            </author>
            <author fullname="Pierre Francois" initials="P." surname="Francois">
              <organization>INSA-Lyon</organization>
            </author>
            <author fullname="Thomas Graf" initials="T." surname="Graf">
              <organization>Swisscom</organization>
            </author>
            <author fullname="Benoît Claise" initials="B." surname="Claise">
              <organization>Huawei</organization>
            </author>
            <date day="18" month="June" year="2024"/>
            <abstract>
              <t>   This document defines the structure of NETCONF Event Notification in
   a YANG model to be used in NETCONF environments.  The definition of
   this YANG model allows the encoding of NETCONF Event Notifications in
   YANG compatible encodings such as JSON and CBOR.


              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ahuang-netconf-notif-yang-05"/>
        </reference>
        <reference anchor="XMLSig" target="https://www.w3.org/TR/xmldsig-core2/">
          <front>
            <title>XML Signature Syntax and Processing Version 2.0</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7223">
          <front>
            <title>A YANG Data Model for Interface Management</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="May" year="2014"/>
            <abstract>
              <t>This document defines a YANG data model for the management of network interfaces. It is expected that interface-type-specific data models augment the generic interfaces data model defined in this document. The data model includes configuration data and state data (status information and counters for the collection of statistics).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7223"/>
          <seriesInfo name="DOI" value="10.17487/RFC7223"/>
        </reference>
        <reference anchor="YANGmanifest">
          <front>
            <title>A Data Manifest for Contextualized Telemetry Data</title>
            <author fullname="Benoît Claise" initials="B." surname="Claise">
              <organization>Huawei</organization>
            </author>
            <author fullname="Jean Quilbeuf" initials="J." surname="Quilbeuf">
              <organization>Huawei</organization>
            </author>
            <author fullname="Diego Lopez" initials="D." surname="Lopez">
              <organization>Telefonica I+D</organization>
            </author>
            <author fullname="Ignacio Dominguez Martinez-Casanueva" initials="I. D." surname="Martinez-Casanueva">
              <organization>Telefonica I+D</organization>
            </author>
            <author fullname="Thomas Graf" initials="T." surname="Graf">
              <organization>Swisscom</organization>
            </author>
            <date day="3" month="March" year="2025"/>
            <abstract>
              <t>   Network platforms use Model-driven Telemetry, such as YANG-Push, to
   continuously stream information, including both counters and state
   information.  This document describes the metadata that ensure that
   the collected data can be interpreted correctly.  This document
   specifies the data manifest, composed of two YANG data models (the
   platform manifest and the data collection manifest).  These YANG
   modules are specified at the network (e.g. controller) level to
   provide a model that encompasses several network platforms.  The data
   manifest must be streamed and stored along with the data, up to the
   collection and analytics systems in order to keep the collected data
   fully exploitable by the data scientists and relevant tools.
   Additionally, this document proposes an augmentation of the YANG-Push
   model to include the actual collection period, in case it differs
   from the configured collection period.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-collected-data-manifest-06"/>
        </reference>
      </references>
    </references>
    <?line 589?>

<section numbered="false" anchor="appendix-a-examples-of-application-of-the-different-enclosing-methods">
      <name>Appendix A. Examples of Application of the Different Enclosing Methods</name>
      <section numbered="false" anchor="xml">
        <name>XML</name>
        <t>Let us consider the following YANG instance, corresponding to a monitoring interface statement, as defined in <xref target="RFC7223"/>:</t>
        <artwork><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<interfaces-state xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
    <interface>
        <name>GigabitEthernet1</name>
        <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
            ianaift:ethernetCsmacd</type>
        <admin-status>up</admin-status>
        <oper-status>up</oper-status>
        <last-change>2024-02-03T11:22:41.081+00:00</last-change>
        <if-index>1</if-index>
        <phys-address>0c:00:00:37:d6:00</phys-address>
        <speed>1000000000</speed>
        <statistics>
            <discontinuity-time>2024-02-03T11:20:38+00:00</discontinuity-time>
            <in-octets>8157</in-octets>
            <in-unicast-pkts>94</in-unicast-pkts>
            <in-broadcast-pkts>0</in-broadcast-pkts>
            <in-multicast-pkts>0</in-multicast-pkts>
            <in-discards>0</in-discards>
            <in-errors>0</in-errors>
            <in-unknown-protos>0</in-unknown-protos>
            <out-octets>89363</out-octets>
            <out-unicast-pkts>209</out-unicast-pkts>
            <out-broadcast-pkts>0</out-broadcast-pkts>
            <out-multicast-pkts>0</out-multicast-pkts>
            <out-discards>0</out-discards>
            <out-errors>0</out-errors>
        </statistics>
    </interface>
</interfaces-state>
]]></artwork>
        <t>Applying the first enclosing method, a provenance leaf at the top element (named "signature-string" in this case") would be included and produce the following output:</t>
        <artwork><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<interfaces-state xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
    <signature-string>
0oRRowNjeG1sBGdlYzIua2V5ASag9lhAvzyFP5HP0nONaqTRxKmSqerrDS6CQXJSK+5NdprzQZLf0QsHtAi2pxzbuDJDy9kZoy1JTvNaJmMxGTLdm4ktug==
    </signature-string>
    <interface>
        <name>GigabitEthernet1</name>
        <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
            ianaift:ethernetCsmacd</type>
        <admin-status>up</admin-status>
        <oper-status>up</oper-status>
        <last-change>2024-02-03T11:22:41.081+00:00</last-change>
        <if-index>1</if-index>
        <phys-address>0c:00:00:37:d6:00</phys-address>
        <speed>1000000000</speed>
        <statistics>
            <discontinuity-time>2024-02-03T11:20:38+00:00</discontinuity-time>
            <in-octets>8157</in-octets>
            <in-unicast-pkts>94</in-unicast-pkts>
            <in-broadcast-pkts>0</in-broadcast-pkts>
            <in-multicast-pkts>0</in-multicast-pkts>
            <in-discards>0</in-discards>
            <in-errors>0</in-errors>
            <in-unknown-protos>0</in-unknown-protos>
            <out-octets>89363</out-octets>
            <out-unicast-pkts>209</out-unicast-pkts>
            <out-broadcast-pkts>0</out-broadcast-pkts>
            <out-multicast-pkts>0</out-multicast-pkts>
            <out-discards>0</out-discards>
            <out-errors>0</out-errors>
        </statistics>
    </interface>
</interfaces-state>
]]></artwork>
        <t>The second enclosing method would translate into a notification including the "notification-provenance" element as follows:</t>
        <artwork><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
    <eventTime>2024-02-03T11:37:25.94Z</eventTime>
    <notification-provenance>
0oRRowNjeG1sBGdlYzIua2V5ASag9lhADiPn3eMRclCAnMlauYyD5yKFvYeXipf4oAmQW5DUREizL59Xs5erOerbryu8vs+A8YOl8AhlAUFzvThffcKPZg==
    </notification-provenance>
    <push-update xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-push">
        <subscription-id>2147483648</subscription-id>
        <datastore-contents-xml>
            <interfaces-state xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
                <interface>
                    <name>GigabitEthernet1</name>
                    <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
                        ianaift:ethernetCsmacd</type>
                    <admin-status>up</admin-status>
                    <oper-status>up</oper-status>
                    <last-change>2024-02-03T11:22:41.081+00:00</last-change>
                    <if-index>1</if-index>
                    <phys-address>0c:00:00:37:d6:00</phys-address>
                    <speed>1000000000</speed>
                    <statistics>
                        <discontinuity-time>2024-02-03T11:20:38+00:00</discontinuity-time>
                        <in-octets>8157</in-octets>
                        <in-unicast-pkts>94</in-unicast-pkts>
                        <in-broadcast-pkts>0</in-broadcast-pkts>
                        <in-multicast-pkts>0</in-multicast-pkts>
                        <in-discards>0</in-discards>
                        <in-errors>0</in-errors>
                        <in-unknown-protos>0</in-unknown-protos>
                        <out-octets>89363</out-octets>
                        <out-unicast-pkts>209</out-unicast-pkts>
                        <out-broadcast-pkts>0</out-broadcast-pkts>
                        <out-multicast-pkts>0</out-multicast-pkts>
                        <out-discards>0</out-discards>
                        <out-errors>0</out-errors>
                    </statistics>
                </interface>
            </interfaces-state>
        </datastore-contents-xml>
    </push-update>
</notification>
]]></artwork>
        <t>The third enclosing method, applicable if the instance is to be stored as YANG instance data at rest, by adding the corresponding metadata, would produce a results as shown below:</t>
        <artwork><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<instance-data-set xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-instance-data">
  <name>atRestYANG</name>
  <content-schema></content-schema>
  <revision>
    <date>2024-11-03</date>
    <description>For demos</description>
  </revision>
  <description>Sample for demonstrating provenance signatures</description>
  <contact>diego.r.lopez@telefonica.com</contact>
  <provenance-string>
0oRRowNjeG1sBGdlYzIua2V5ASag9lhAWff+fMbfNChKUYZ52UTOBmAlYPFe4vlZOLyZeW0CU7/2OutDeMCG28+m3rm58jqLjKbcueKLFq8qFJb4mvPY+Q==
  </provenance-string>
  <content-data>
   <interfaces-state xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
    <interface>
        <name>GigabitEthernet1</name>
        <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
            ianaift:ethernetCsmacd</type>
        <admin-status>up</admin-status>
        <oper-status>up</oper-status>
        <last-change>2024-02-03T11:22:41.081+00:00</last-change>
        <if-index>1</if-index>
        <phys-address>0c:00:00:37:d6:00</phys-address>
        <speed>1000000000</speed>
        <statistics>
            <discontinuity-time>2024-02-03T11:20:38+00:00</discontinuity-time>
            <in-octets>8157</in-octets>
            <in-unicast-pkts>94</in-unicast-pkts>
            <in-broadcast-pkts>0</in-broadcast-pkts>
            <in-multicast-pkts>0</in-multicast-pkts>
            <in-discards>0</in-discards>
            <in-errors>0</in-errors>
            <in-unknown-protos>0</in-unknown-protos>
            <out-octets>89363</out-octets>
            <out-unicast-pkts>209</out-unicast-pkts>
            <out-broadcast-pkts>0</out-broadcast-pkts>
            <out-multicast-pkts>0</out-multicast-pkts>
            <out-discards>0</out-discards>
            <out-errors>0</out-errors>
        </statistics>
    </interface>
   </interfaces-state>
 </content-data>
</instance-data-set>
]]></artwork>
        <t>Finally, using the fourth enclosing method, the YANG instance would incorporate the corresponding provenance metadata as an annotation:</t>
        <artwork><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<interfaces-state xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"
xmlns:ypmd="http://telefonica.com/temporary-ns-yangpmd"
ypmd:provenance-string=
"0oRRowNjeG1sBGdlYzIua2V5ASag9lhAzen3Bm9AZoyXuetpoTB70SzZqKVxeuOMW099sm+NXSqCfnqBKfXeuqDNEkuEr+E0XiAso986fbAHQCHbAJMOhw==">
    <interface>
        <name>GigabitEthernet1</name>
        <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
            ianaift:ethernetCsmacd</type>
        <admin-status>up</admin-status>
        <oper-status>up</oper-status>
        <last-change>2024-02-03T11:22:41.081+00:00</last-change>
        <if-index>1</if-index>
        <phys-address>0c:00:00:37:d6:00</phys-address>
        <speed>1000000000</speed>
        <statistics>
            <discontinuity-time>2024-02-03T11:20:38+00:00</discontinuity-time>
            <in-octets>8157</in-octets>
            <in-unicast-pkts>94</in-unicast-pkts>
            <in-broadcast-pkts>0</in-broadcast-pkts>
            <in-multicast-pkts>0</in-multicast-pkts>
            <in-discards>0</in-discards>
            <in-errors>0</in-errors>
            <in-unknown-protos>0</in-unknown-protos>
            <out-octets>89363</out-octets>
            <out-unicast-pkts>209</out-unicast-pkts>
            <out-broadcast-pkts>0</out-broadcast-pkts>
            <out-multicast-pkts>0</out-multicast-pkts>
            <out-discards>0</out-discards>
            <out-errors>0</out-errors>
        </statistics>
    </interface>
</interfaces-state>
]]></artwork>
      </section>
      <section numbered="false" anchor="json">
        <name>JSON</name>
        <t>Let us consider the following YANG instance, corresponding to the same monitoring interface statement, with JSON serialization:</t>
        <artwork><![CDATA[
{
  "ietf-interfaces:interfaces-state": {
    "interface": {
      "name": "GigabitEthernet1",
      "iana-if-type:type": "ianaift:ethernetCsmacd",
      "admin-status": "up",
      "oper-status": "up",
      "last-change": "2024-02-03T11:22:41.081+00:00",
      "if-index": 1,
      "phys-address": "0c:00:00:37:d6:00",
      "speed": 1000000000,
      "statistics": {
        "discontinuity-time": "2024-02-03T11:20:38+00:00",
        "in-octets": 8157,
        "in-unicast-pkts": 94,
        "in-broadcast-pkts": 0,
        "in-multicast-pkts": 0,
        "in-discards": 0,
        "in-errors": 0,
        "in-unknown-protos": 0,
        "out-octets": 89363,
        "out-unicast-pkts": 209,
        "out-broadcast-pkts": 0,
        "out-multicast-pkts": 0,
        "out-discards": 0,
        "out-errors": 0
      }
    }
  }
}
]]></artwork>
        <t>Applying the first enclosing method, a provenance leaf at the top element (named "provenance-string" in this case") would be included and produce the following output:</t>
        <artwork><![CDATA[
{
  "ietf-interfaces:interfaces-state" : {
    "interface" : {
      "name" : "GigabitEthernet1",
      "iana-if-type:type" : "ianaift:ethernetCsmacd",
      "admin-status" : "up",
      "oper-status" : "up",
      "last-change" : "2024-02-03T11:22:41.081+00:00",
      "if-index" : 1,
      "phys-address" : "0c:00:00:37:d6:00",
      "speed" : 1000000000,
      "statistics" : {
        "discontinuity-time" : "2024-02-03T11:20:38+00:00",
        "in-octets" : 8157,
        "in-unicast-pkts" : 94,
        "in-broadcast-pkts" : 0,
        "in-multicast-pkts" : 0,
        "in-discards" : 0,
        "in-errors" : 0,
        "in-unknown-protos" : 0,
        "out-octets" : 89363,
        "out-unicast-pkts" : 209,
        "out-broadcast-pkts" : 0,
        "out-multicast-pkts" : 0,
        "out-discards" : 0,
        "out-errors" : 0
      }
    },
    "provenance-string" : "0oRRowNjeG1sBGdlYzIua2V5ASag9lhAnC4dNl5VSxkVCv8IOaiIhD7ymVZJ8Ol1NFH0GZ7bhe+CrnLTOyPazKl2PK33ZqkUGwZo0HmlkPOiAb1okaCZIw=="
  }
}
]]></artwork>
        <t>The second enclosing method would translate into a notification including the "notification-provenance" element. For RESTCONF it would be as follows:</t>
        <artwork><![CDATA[
{
  "ietf-restconf:notification" : {
    "eventTime" : "2013-12-21T00:01:00Z",
    "ietf-yang-push:push-update": {
      "subscription-id": 2147483648,
      "datastore-contents": {
        "ietf-interfaces:interfaces-state": {
          "interface": [ {
              "name": "GigabitEthernet1",
              "type": "ianaift:ethernetCsmacd",
              "admin-status": "up",
              "oper-status": "up",
              "last-change": "2024-02-03T11:22:41.081+00:00",
              "if-index": 1,
              "phys-address": "0c:00:00:37:d6:00",
              "speed": 1000000000,
              "statistics": {
                "discontinuity-time": "2024-02-03T11:20:38+00:00",
                "in-octets": 8157,
                "in-unicast-pkts": 94,
                "in-broadcast-pkts": 0,
                "in-multicast-pkts": 0,
                "in-discards": 0,
                "in-errors": 0,
                "in-unknown-protos": 0,
                "out-octets": 89363,
                "out-unicast-pkts": 209,
                "out-broadcast-pkts": 0,
                "out-multicast-pkts": 0,
                "out-discards": 0,
                "out-errors": 0
              }
            }
          ]
        }
      }
    },
    "notification-provenance" : "0oRRowNjeG1sBGdlYzIua2V5ASag9lhArfYIbXGXjjg5wMF+xJnYGm0NV3ULe2triP4gT7GFeikK19g1N3gNXD5ZZbCn03aN68PgIEl+dglQ6/mobLeEvg=="
  }
}
]]></artwork>
        <t>And for NETCONF:</t>
        <artwork><![CDATA[
{
  "ietf-notification:notification" : {
    "eventTime" : "2023-02-10T08:00:11.22Z",
    "ietf-yang-push:push-update" : {
      "id" : 1011,
      "datastore-contents" : {
        "ietf-interfaces:interfaces" : [ {
          "interface" : {
            "name": "GigabitEthernet1",
              "iana-if-type:type": "ianaift:ethernetCsmacd",
              "admin-status": "up",
              "oper-status": "up",
              "last-change": "2024-02-03T11:22:41.081+00:00",
              "if-index": 1,
              "phys-address": "0c:00:00:37:d6:00",
              "speed": 1000000000,
              "statistics": {
                "discontinuity-time": "2024-02-03T11:20:38+00:00",
                "in-octets": 8157,
                "in-unicast-pkts": 94,
                "in-broadcast-pkts": 0,
                "in-multicast-pkts": 0,
                "in-discards": 0,
                "in-errors": 0,
                "in-unknown-protos": 0,
                "out-octets": 89363,
                "out-unicast-pkts": 209,
                "out-broadcast-pkts": 0,
                "out-multicast-pkts": 0,
                "out-discards": 0,
                "out-errors": 0
              }
          }
        } ]
      }
    },
    "notification-provenance" : "0oRRowNjeG1sBGdlYzIua2V5ASag9lhAvkE8Y0Od9zRLM/sNlJtau07xuO3zDArCnUhaKJpS6erVUL0MflWm7zby//k4BBQ2zBiBO6LDouoaiuGGj6EwiQ=="
  }
}
]]></artwork>
        <t>The third enclosing method, applicable if the instance is to be stored as YANG instance data at rest, by adding the corresponding metadata, would produce a results as shown below:</t>
        <artwork><![CDATA[
{
  "ietf-yang-instance-data:instance-data-set" : {
    "name" : "interfaces-labTID-status",
    "contact" : "sofia.garciarincon.practicas@telefonica.com",
    "timestamp" : "Thu Jul 18 11:42:06 CEST 2024",
    "content-data" : {
      "ietf-interfaces:interfaces-state": {
        "interface": {
          "name": "GigabitEthernet1",
          "iana-if-type:type": "ianaift:ethernetCsmacd",
          "admin-status": "up",
          "oper-status": "up",
          "last-change": "2024-02-03T11:22:41.081+00:00",
          "if-index": 1,
          "phys-address": "0c:00:00:37:d6:00",
          "speed": 1000000000,
          "statistics": {
            "discontinuity-time": "2024-02-03T11:20:38+00:00",
            "in-octets": 8157,
            "in-unicast-pkts": 94,
            "in-broadcast-pkts": 0,
            "in-multicast-pkts": 0,
            "in-discards": 0,
            "in-errors": 0,
            "in-unknown-protos": 0,
            "out-octets": 89363,
            "out-unicast-pkts": 209,
            "out-broadcast-pkts": 0,
            "out-multicast-pkts": 0,
            "out-discards": 0,
            "out-errors": 0
          }
        }
      }
    },
    "provenance-string" : "0oRRowNjeG1sBGdlYzIua2V5ASag9lhAmop/c7wMcjRmiSPVy65F/N6O21dsGkjGQjIDRizhu3WMwi9Je+VUf5sqwlhSwQCdv5u7mRXa6Pd9dhCwdxdRCA=="
  }
}
]]></artwork>
        <t>Finally, using the fourth enclosing method, the YANG instance would incorporate the corresponding provenance metadata as an annotation:</t>
        <artwork><![CDATA[
{
  "ietf-interfaces:interfaces-state" : {
    "interface" : {
      "name" : "GigabitEthernet1",
      "iana-if-type:type" : "ianaift:ethernetCsmacd",
      "admin-status" : "up",
      "oper-status" : "up",
      "last-change" : "2024-02-03T11:22:41.081+00:00",
      "if-index" : 1,
      "phys-address" : "0c:00:00:37:d6:00",
      "speed" : 1000000000,
      "statistics" : {
        "discontinuity-time" : "2024-02-03T11:20:38+00:00",
        "in-octets" : 8157,
        "in-unicast-pkts" : 94,
        "in-broadcast-pkts" : 0,
        "in-multicast-pkts" : 0,
        "in-discards" : 0,
        "in-errors" : 0,
        "in-unknown-protos" : 0,
        "out-octets" : 89363,
        "out-unicast-pkts" : 209,
        "out-broadcast-pkts" : 0,
        "out-multicast-pkts" : 0,
        "out-discards" : 0,
        "out-errors" : 0
      }
    },
    "@ypmd:provenance-string" : "0oRRowNjeG1sBGdlYzIua2V5ASag9lhAM/Dx3HVc4GL91jmuU5nWgcmOPPVpARLJkWo5wwQYvGFJpKMXTkjAtArPp8v6Sl1ZD1qHimKMhAoHLMHVxBtrcA=="
  }
}
]]></artwork>
      </section>
      <section numbered="false" anchor="cbor">
        <name>CBOR</name>
        <t>TBD, as the reference implementation evolves.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This document is based on work partially funded by the EU H2020 project SPIRS (grant 952622), and the EU Horizon Europe projects PRIVATEER (grant 101096110), HORSE (grant 101096342), MARE (grant 101191436), ACROSS (grant 101097122) and CYBERNEMO (grant 101168182).</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
m3JbJnWX9Rv9CB6ivoXv5awmLldUCVOltkmvtsXDvDJNK5lKE8tPJ+k7Q1Nm
Xxk6EF8t1JjGCKVehCpN/dDUfNhWTjmm9Un3YWWtD9NXmnUMouEFMjm9VjDe
VBHqvmgZpFxCDdR59itTBqHAzrr92pY2KNCw39tilX+vpCj/RohN/rmtdjLv
UyWDk0HFk3mZmQ6omkyBhRPKK4qCAnOmlKoCfCGfi1MQ6iqCvyhRJIfAfl6m
yGoSzwpEnmVlnj1S6NljpZ4tEPvsO1Pu2Q8IPpsr+WwV0WfLZJ8tE/6CQS+T
frZU/NlS+WfLFEC+gBaX/CspLvkXGR3A5ioBtoIWYCuogYIeFk/MUgQF74yp
2apAlCuSWWScJX5TsL/unvsb77sPt+/377ZPLhzvZHSwNRu///xm+8Jvnh+9
bhx/3uqN+Iv9KDi9vphdOt/e+q3Lt2trn7/e3hzffw4br8f+7eWF1+k1w1tn
//MJ+k2mgvp/nE0gLqC/OuyKC9D0nbE9ns8zSNURBt9z+QGGItJ7/1JSmmvV
Zqvaal6jgDRBRj5LISnbG+ZtY1/BhC2ZDXI0LXr7XAtwfsfCNuIrQyctCSmA
+t16Ra+XQildckUUpcsvQFMpl89FVbrID6GrdPYFKEu/XB1t6SrzUVdapBh9
6fc/jsLSWc1FY2aRBajMLLYIzJjlFmEas1wxtDFLFKE2e+Dz0ZsutwjFWYUW
oTmr4EqEWIburIJLSFGI9tTf99K8b+mV9OqpbRbmKssVjEM0+HTS+3j88cuX
4cb92dGLhzfBp+Nx4/z92s0pb4GRuVwfXm8dH3Hv9m1zZ9g8XxuefzzY+Py5
tx801pzzze3L4cmh/8Id+u826+Owd8oP74YZ44A3s+Kmm7yvMqeXrXStFXVz
aw2lp9m4bmyjBDebtVZrFfVsQkxPgqpmc5E2ZiuqYyz4+zxdzLKq4RGK+Ed8
W135SSs/aeUnrfxTtHL6+bvWyT9PE9/dHm5/aly4O9+uTs/q8bn/JnGmja2H
6cXat4NOtB/cjJy3bybdTR69vzltnA38D+Otb71ZvX67vrf3rvVtz9u72Dw9
CKeh402Pj79sHt577wpg+v/I9JbUWOTTUNq5zTnDbugwgoGbfad3fXKgNJ5c
O5m2QWXjcOA5taET9T38RRV4VZtE8BLZLZPvoaqjBoEGxxNq4Ho0ZW+mPmtu
M9Aj6612Y5Ptg7dCV2+YPao9RtsuPQbyF0ZM06kvszA/bF2WWZYlVuXHLcpc
a/JIS7LEiiyyIH/SeiyxHCtYjVUsxirWYrGlWGQlVrEQS63DSpZhJauwkkVY
Yg3mWwJD8//EwMw4nNT7W/dn/S9XY697+X62uXFUP9+8aDXd+Pj2y/G7LycH
V9630XTtw9m9t/OGv3h/M9iIv977o+79u333bmO6Nb766GxeujvuaP/efXCv
9jsZjf/fKkHhKTL8FBl+igz/BZHh34qzalZSQ2f1g4e11+/768enO80v4+nN
RvBh2B9fXF6+n3SuTt/cfgg37u/ffbo7PnozeXv28fr2SyfpRJeT7bvNrt/8
fND8+tobvz0bdcLXp2ev3z/sJVE/q4Z++YXt711cFe9TX+8dVOR9nHMvI2H8
LqQfjaWLTTp9XFGfu+I3TAqbta+8Ub8Jj5c93eOlH3i3moeqkQ2mgfHzioc3
7DWIQgP1Gl1F1708ueqyZ0O6p2dno7XZaj1Pf3cWi4eR9w2aPZzivVCqXswu
r07ed64PD69U5Waj2djZbDYbUP/1xVX30H6xto4Nn3WuzOfNneb62iY87+xf
XXS7Vo2tJgyFRrL/ae/w6vzw7MKsubnd3G49r5X+L8mw5qjlqQAA

-->

</rfc>
