<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.9 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-birkholz-rats-basic-yang-module-00" category="std">

  <front>
    <title abbrev="BRAT">YANG Module for Basic Challenge-Response-based Remote Attestation Procedures</title>

    <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="M." surname="Eckel" fullname="Michael Eckel">
      <organization abbrev="Huawei">Huawei Technologies</organization>
      <address>
        <postal>
          <street>Feldbergstrasse 78</street>
          <city>Darmstadt</city>
          <code>64293</code>
          <country>Germany</country>
        </postal>
        <email>michael.eckel@huawei.com</email>
      </address>
    </author>
    <author initials="S." surname="Bhandari" fullname="Shwetha Bhandari">
      <organization abbrev="Cisco">Cisco Systems</organization>
      <address>
        <email>shwethab@cisco.com</email>
      </address>
    </author>
    <author initials="B." surname="Sulzen" fullname="Bill Sulzen">
      <organization abbrev="Cisco">Cisco Systems</organization>
      <address>
        <email>bsulzen@cisco.com</email>
      </address>
    </author>
    <author initials="E." surname="Voit" fullname="Eric Voit">
      <organization abbrev="Cisco">Cisco Systems</organization>
      <address>
        <email>evoit@cisco.com</email>
      </address>
    </author>
    <author initials="G." surname="Fedorkow" fullname="Guy C. Fedorkow">
      <organization abbrev="Juniper">Juniper Networks</organization>
      <address>
        <postal>
          <street>10 Technology Park Drive</street>
          <city>Westford</city>
          <region>Massachusetts</region>
          <code>01886</code>
        </postal>
        <email>gfedorkow@juniper.de</email>
      </address>
    </author>

    <date year="2019" month="March" day="12"/>

    <area>Security</area>
    <workgroup>TBD</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document defines a YANG RPC and a minimal datastore tree required to retrieve attestation evidence about integrity measurements from a composite device with one or more roots of trust for reporting. Complementary measurement logs are also provided by the YANG RPC originating from one or more roots of trust of measurement. The module defined requires a TPM 2.0 and corresponding Trusted Software Stack included in the device components of the composite device the YANG server is running on.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>This document is based on the terminology defined in the <xref target="I-D.birkholz-attestation-terminology"/> and uses the interaction model and information elements defined in the <xref target="I-D.birkholz-reference-ra-interaction-model"/> document. The currently supported hardware security module (HWM) - sometimes also referred to as an embedded secure element(eSE) - is the Trusted Platform Module (TPM) 2.0 specified by the Trusted Computing Group (TCG). One ore more TPM 2.0 embedded in the components of a composite device - sometimes also referred to as an aggregate device - are required in order to use the YANG module defined in this document. A TPM 2.0 is used as a root of trust for reporting (RTR) in order to retrieve attestation evidence from a composite device. Additionally, it is used as a root of trust for measurement (RTM) in order to provide event logs - sometimes also referred to as measurement logs.</t>

<section anchor="requirements-notation" title="Requirements notation">

<t>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 RFC
2119, BCP 14 <xref target="RFC2119"/>.</t>

</section>
</section>
<section anchor="the-yang-module-for-basic-remote-attestation-procedures" title="The YANG Module for Basic Remote Attestation Procedures">

<t>One or more TPM 2.0 MUST be embedded in the composite device that is providing attestation evidence via the YANG module defined in this document. The ietf-basic-remote-attestation YANG module enables a composite device to take on the role of Claimant and Attester in accordance with the Remote Attestation Procedures (RATS) architecture <xref target="I-D.birkholz-attestation-terminology"/> and the corresponding challenge-response interaction model defined in the <xref target="I-D.birkholz-reference-ra-interaction-model"/> document. A fresh nonce with an appropriate amount of entropy MUST be supplied by the YANG client in order to enable a proof-of-freshness with respect to the attestation evidence provided by the attester running the YANG datastore. The functions of this YANG module are restricted to 0-1 TPM 2.0 per hardware component.</t>

<section anchor="tree-format" title="Tree format">

<figure><artwork type="YANG"><![CDATA[
<CODE BEGINS>
module: ietf-basic-remote-attestation
  +--ro rats-support-structures
     +--ro supported-algos*            uint16
     +--ro tpms* [tpm_name]
     |  +--ro tpm_name              string
     |  +--ro tpm-physical-index?   int32 {ietfhw:entity-mib}?
     +--ro compute-nodes* [node-name]
     |  +--ro node-name              string
     |  +--ro node-physical-index?   int32 {ietfhw:entity-mib}?
     +--ro endorsement-certificates
        +--ro certificate* [tpm_name]
           +--ro tpm_name                   string
           +--ro tpm-physical-index?        int32 {ietfhw:entity-mib}?
           +--ro endorsement-certificate    binary

  rpcs:
    +---x tpm2-challenge-response-attestation
    |  +---w input
    |  |  +---w tpm2-attestation-challenge
    |  |  |  +---w pcr-list* []
    |  |  |  |  +---w pcr
    |  |  |  |     +---w pcr-indices*                  uint8
    |  |  |  |     +---w (algo-registry-type)
    |  |  |  |        +--:(tcg)
    |  |  |  |        |  +---w tcg-hash-algo-id?       uint16
    |  |  |  |        +--:(ietf)
    |  |  |  |           +---w ietf-ni-hash-algo-id?   uint8
    |  |  |  +---w nonce-value                   binary
    |  |  |  +---w (signature-identifier-type)
    |  |  |  |  +--:(TPM_ALG_ID)
    |  |  |  |  |  +---w TPM_ALG_ID-value?       uint16
    |  |  |  |  +--:(COSE_Algorithm)
    |  |  |  |     +---w COSE_Algorithm-value?   int32
    |  |  |  +---w (key-identifier)?
    |  |  |     +--:(public-key)
    |  |  |     |  +---w pub-key-id?             binary
    |  |  |     +--:(uuid)
    |  |  |        +---w uuid-value?             binary
    |  |  +---w tpm_name?                     string
    |  |  +---w tpm-physical-index?           int32 {ietfhw:entity-mib}?
    |  +--ro output
    |     +--ro tpm2-attestation-response* [tpm_name]
    |        +--ro tpm_name               string
    |        +--ro tpm-physical-index?    int32 {ietfhw:entity-mib}?
    |        +--ro up-time?               uint32
    |        +--ro node-name?             string
    |        +--ro node-physical-index?   int32 {ietfhw:entity-mib}?
    |        +--ro tpms-attest
    |        |  +--ro pcrdigest?                   binary
    |        |  +--ro tpms-attest-result?          binary
    |        |  +--ro tpms-attest-result-length?   uint32
    |        +--ro tpmt-signature?        binary
    +---x basic-trust-establishment
    |  +---w input
    |  |  +---w nonce-value                   binary
    |  |  +---w (signature-identifier-type)
    |  |  |  +--:(TPM_ALG_ID)
    |  |  |  |  +---w TPM_ALG_ID-value?       uint16
    |  |  |  +--:(COSE_Algorithm)
    |  |  |     +---w COSE_Algorithm-value?   int32
    |  |  +---w tpm_name?                     string
    |  |  +---w tpm-physical-index?           int32 {ietfhw:entity-mib}?
    |  |  +---w certificate-name?             string
    |  +--ro output
    |     +--ro attestation-certificates* [tpm_name]
    |        +--ro tpm_name                   string
    |        +--ro tpm-physical-index?        int32 {ietfhw:entity-mib}?
    |        +--ro up-time?                   uint32
    |        +--ro node-name?                 string
    |        +--ro node-physical-index?       int32 {ietfhw:entity-mib}?
    |        +--ro certificate-name?          string
    |        +--ro attestation-certificate?   ietfct:end-entity-cert-cms
    |        +--ro (key-identifier)?
    |           +--:(public-key)
    |           |  +--ro pub-key-id?          binary
    |           +--:(uuid)
    |              +--ro uuid-value?          binary
    +---x log-retrieval
       +---w input
       |  +---w log-selector* [node-name]
       |  |  +---w node-name                 string
       |  |  +---w node-physical-index?      int32 {ietfhw:entity-mib}?
       |  |  +---w (index-type)?
       |  |     +--:(last-entry)
       |  |     |  +---w last-entry-value?   binary
       |  |     +--:(index)
       |  |     |  +---w index-number?       uint64
       |  |     +--:(timestamp)
       |  |        +---w timestamp?          yang:date-and-time
       |  +---w log-type              identityref
       |  +---w pcr-list* []
       |  |  +---w pcr
       |  |     +---w pcr-indices*                  uint8
       |  |     +---w (algo-registry-type)
       |  |        +--:(tcg)
       |  |        |  +---w tcg-hash-algo-id?       uint16
       |  |        +--:(ietf)
       |  |           +---w ietf-ni-hash-algo-id?   uint8
       |  +---w log-entry-quantity?   uint16
       +--ro output
          +--ro system-event-logs
             +--ro node-data* [node-name]
                +--ro node-name              string
                +--ro node-physical-index?   int32 {ietfhw:entity-mib}?
                +--ro up-time?               uint32
                +--ro tpm-updated* [tpm_name]
                |  +--ro tpm_name              string
                |  +--ro tpm-physical-index?   int32 {ietfhw:entity-mib}?
                +--ro log-result
                   +--ro (log-type)
                      +--:(bios)
                      |  +--ro bios-event-logs
                      |     +--ro bios-event-entry* [event-number]
                      |        +--ro event-number    uint32
                      |        +--ro event-type?     uint32
                      |        +--ro pcr-index?      uint16
                      |        +--ro digest-list* []
                      |        |  +--ro (algo-registry-type)
                      |        |  |  +--:(tcg)
                      |        |  |  |  +--ro tcg-hash-algo-id?       uint16
                      |        |  |  +--:(ietf)
                      |        |  |     +--ro ietf-ni-hash-algo-id?   uint8
                      |        |  +--ro digest*                       binary
                      |        +--ro event-size?     uint32
                      |        +--ro event-data*     uint8
                      +--:(ima)
                         +--ro ima-event-logs
                            +--ro ima-event-entry* [event-number]
                               +--ro event-number               uint64
                               +--ro ima-template?              string
                               +--ro filename-hint?             string
                               +--ro filedata-hash?             binary
                               +--ro template-hash-algorithm?   string
                               +--ro template-hash?             binary
                               +--ro pcr-index?                 uint16
                               +--ro signature?                 binary
<CODE ENDS>
]]></artwork></figure>

</section>
<section anchor="raw-format" title="Raw Format">

<figure><artwork type="YANG"><![CDATA[
<CODE BEGINS>
module ietf-basic-remote-attestation {
  namespace "urn:ietf:params:xml:ns:yang:ietf-basic-remote-attestation";
  prefix "yang-brat";
  
  import ietf-yang-types {
    prefix yang;
  }
  import ietf-hardware {
      prefix ietfhw;
  }
  import ietf-crypto-types {
      prefix ietfct;
  }
  
  organization
   "Fraunhofer SIT";
  contact
   "Henk Birkholz
    Fraunhofer Institute for Secure Information Technology
    Email: henk.birkholz@sit.fraunhofer.de";
  description
    "A YANG module to enable a TPM 2.0 based remote attestation
     procedure.
     Copyright (C) Fraunhofer SIT (2018).";
  revision "2018-06-15" {
  description
    "Initial version";
  reference
    "draft-birkholz-yang-basic-remote-attestation";
  }
  
  grouping hash-algo {
    description
      "A selector for the hashing algorithm";
    choice algo-registry-type {
      mandatory true;
      description
        "Unfortunately, both IETF and TCG have registries here.
        Choose your weapon wisely.";
      case tcg {
        description
          "you chose the east door, the tcg space opens up to
          you.";
        leaf tcg-hash-algo-id {
          type uint16;
          description
            "This is an index referencing the TCG Algorithm
            Registry based on TPM_ALG_ID.";
        }
      }
      case ietf {
        description
          "you chose the west door, the ietf space opens up to
          you.";
        leaf ietf-ni-hash-algo-id {
          type uint8;
          description
            "This is an index referencing the Named Information
             Hash Algorithm Registry.";
        }
      }
    }
  }
  
  grouping hash {
    description
      "The hash value including hash-algo identifer";
    list hash-digests {
      description
        "The list of hashes.";
      container hash-digest {
        description
          "A hash value based on a hash algorithm registered by an
          SDO.";
        uses hash-algo;
        leaf hash-value {
          type binary;
          description
            "The binary representaion of the hash value.";
        }
      }
    }
  }
  
  grouping nonce {
    description
      "A nonce to show freshness and counter replays.";
    leaf nonce-value {
      type binary;
      mandatory true;
      description
        "This nonce SHOULD be generated via a registered
        cryptographic-strength algorithm. In consequence, the length
        of the nonce depends on the hash algorithm used. The algorithm
        used in this case is independent from the hash algorithm used to
        create the hash-value in the response of the attestor.";
    }
  }
  
  grouping pcr-selection {
    description
      "A Verifier can request one or more PCR values uses its
      individually created AC. The corresponding selection filter is
      represented in this grouping. Requesting a PCR value that is not in 
      scope of the AC used, detailed exposure via error msg should be
      avoided.";
    list pcr-list {
      description
        "For each PCR in this list an individual list of banks (hash-algo)
        can be requested. It depends on the datastore, if every bank in 
        this grouping is included per PCR (crude), or if each requested
        bank set is returned for each PCR individually (elegant).";
      container pcr {
        description
          "The composite of a PCR number and corresponding bank numbers.";
        leaf-list pcr-indices {
           type uint8;
           description
             "The number of the PCR. At the moment this is limited
             32";
        }
        uses hash-algo;
      }
    }
  }
  
  grouping pcr-selector {
    description
      "A Verifier can request the generation of an attestation
      certificate (a signed public attestation key
      (non-migratable, tpm-resident) wrt one or more PCR values.
      The corresponding creation input is represented in this grouping.
      Requesting a PCR value that is not supported results in an error,
      detailed exposure via error msg should be avoided.";
    list pcr-list {
      description
        "For each PCR in this list an individual hash-algo can be
        requested.";
      container pcr {
        description
          "The composite of a PCR number and corresponding bank numbers.";
        leaf-list pcr-index {
           type uint8;
           description
             "The numbers of the PCRs that are associated with
             the created key. At the moment the highest number is 32";
        }
        uses hash-algo;
      }
    }
  }
  
  grouping signature-scheme {
    description
      "The signature scheme used to sign the evidence.";
    choice signature-identifier-type {
      mandatory true;
      description
        "There are multiple ways to reference a signature type.
        This used to select the signature algo to sign the quote
        information response.";
      case TPM_ALG_ID {
        description
          "This references the indices of table 9 in the TPM 2.0 structure specification.";
        leaf TPM_ALG_ID-value {
          type uint16;
          description
            "The TPM Algo ID.";
        }
      }
      case COSE_Algorithm {
        description
          "This references the IANA COSE Algorithms Registry indices. Every index of this
          registry to be used must be mapable to a TPM_ALG_ID value.";
        leaf COSE_Algorithm-value {
          type int32;
          description
            "The TPM Algo ID.";
        }
      }
    }
  }
  
  grouping attestation-key-identifier {
    description
      "A selector for a suitable key identifier.";
    choice key-identifier {
      description
        "Identifier for the attestation key to use for signing
        attestation evidence.";
      case public-key {
        leaf pub-key-id {
          type binary;
          description
            "The value of the identifier for the public key.";
        }
      }
      case uuid {
        description
          "Use a YANG agent generated (and maintained) attestation
          key UUID.";
        leaf uuid-value {
          type binary;
          description
            "The UUID identifying the corresponding public key.";
        }
      }
    }
  }
  
 grouping tpm-name {
   description
     "In a system with multiple-TPMs get the data from a specific TPM
      identified by the name and physical-index.";
   leaf tpm_name {
      type string;
      description
      "Name of the TPM or All";
   }
   leaf tpm-physical-index {
       if-feature ietfhw:entity-mib;
       type int32 {
            range "1..2147483647";
       }
       config false;
       description
            "The entPhysicalIndex for the TPM.";
        reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalIndex";
     }
 }
 grouping compute-node {
   description
     "In a distributed system with multiple compute nodes
      this is the node identified by name and physical-index.";
   leaf node-name {
      type string;
      description
      "Name of the compute node or All";
   }
   leaf node-physical-index {
       if-feature ietfhw:entity-mib;
       type int32 {
            range "1..2147483647";
       }
       config false;
       description
            "The entPhysicalIndex for the compute node.";
        reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalIndex";
     }
 }
 grouping node-uptime {
   description
     "Uptime in seconds of the node.";
   leaf up-time {
     type uint32;
     description
     "Uptime in seconds of this node reporting its data";
   }
 }
  identity log-type {
    description
      "The type of logs available.";
  }

  identity bios {
    base log-type;
    description
      "Measurement log created by the BIOS/UEFI.";
  }

  identity ima {
    base log-type;
    description
      "Measurement log created by IMA.";
  }

  grouping log-identifier {
    description
      "Identifier for type of log to be retrieved.";
    leaf log-type {
      type identityref {
        base log-type;
      }
      mandatory true;
      description
        "The corresponding measurement log type identity.";
    }
  }


grouping boot-event-log {
  description
    "Defines an event log corresponding to the event that extended the PCR";
  leaf event-number {
      type uint32;
      description
  "Unique event number of this event";
  }
  leaf event-type {
      type uint32;
      description
  "log event type";
  }
  leaf pcr-index {
     type uint16;
     description
 "Defines the PCR index that this event extended";
  }
  list digest-list {
    description "Hash of event data";
    uses hash-algo;
    leaf-list digest {
      type binary;
      description
      "The hash of the event data";
    }
  }
   leaf event-size {
     type uint32;
     description
     "Size of the event data";
   }
   leaf-list event-data {
     type uint8;
     description
     "the event data size determined by event-size";
   }
}

 grouping ima-event {
   description
     "Defines an hash log extend event for IMA measurements";
   leaf event-number {
       type uint64;
       description
  "Unique number for this event for sequencing";
     }
   leaf ima-template {
     type string;
     description
     "Name of the template used for event logs
     for e.g. ima, ima-ng";
   }
   leaf filename-hint {
       type string;
       description
   "File that was measured";
   }
   leaf filedata-hash {
       type binary;
       description
    "Hash of filedata";
   }
  leaf template-hash-algorithm {
    type string;
    description
     "Algorithm used for template-hash";
   }
   leaf template-hash {
  type binary;
  description
   " hash(filedata-hash, filename-hint)";
   }
   leaf pcr-index {
      type uint16;
      description
  "Defines the PCR index that this event extended";
   }
   leaf signature {
     type binary;
     description
     "The file signature";
   }
 }

  grouping bios-event-log {
    description
    "Measurement log created by the BIOS/UEFI.";
    list bios-event-entry {
      key event-number;
       description
       "Ordered list of TCG described event log
        that extended the PCRs in the order they
        were logged";
        uses boot-event-log;
     }
  }

  grouping ima-event-log {
    list ima-event-entry {
      key event-number;
      description
      "Ordered list of ima event logs by event-number";
       uses ima-event;
    }
    description
      "Measurement log created by IMA.";
  }

  grouping event-logs {
    description
      "A selector for the log and its type.";
    choice log-type {
      mandatory true;
      description
        "Event log type determines the event logs content.";

      case bios {
        description
          "BIOS/UEFI event logs";
        container bios-event-logs {
          description
            "This is an index referencing the TCG Algorithm
            Registry based on TPM_ALG_ID.";
          uses bios-event-log;
        }
      }
      case ima {
        description
          "IMA event logs";
        container ima-event-logs {
          description
            "This is an index referencing the TCG Algorithm
            Registry based on TPM_ALG_ID.";
          uses ima-event-log;
        }
      }
    }
  }


  rpc tpm2-challenge-response-attestation {
    description
      "This RPC accepts the input for TSS commands of the managed device.
      ComponentIndex from the hardware manager YANG module to refer to 
      dedicated TPM in composite devices, e.g. smart NICs, is still a 
      TODO.";
    input {
      container tpm2-attestation-challenge {
        description
          "This container includes every information element defined
           in the reference challenge-response interaction model for
           remote attestation. Corresponding values are based on
           TPM 2.0 structure definitions";
        uses pcr-selection;
        uses nonce;
        uses signature-scheme;
        uses attestation-key-identifier;
      }
      uses tpm-name;
    }
    output {
      list tpm2-attestation-response {
        key tpm_name;
        description
          "The binary output of TPM2b_Quote. An TPMS_ATTEST structure
          including a length, encapsulated in a signature";
        uses tpm-name;
        uses node-uptime;
        uses compute-node;
        container tpms-attest {
          leaf pcrdigest {
            type binary;
            description
              "split out value of TPMS_QUOTE_INFO for convenience";
          }
          leaf tpms-attest-result {
            type binary;
            description
              "The complete TPM generate structure including signature.";
          }
          leaf tpms-attest-result-length {
            type uint32;
            description
              "Length of attest result provided by the TPM structure.";
          }
          description
            "A composite of value and length and list of selected
            pcrs (original name: [type]attested)";
        }
        leaf tpmt-signature {
          type binary;
          description
             "Split out value of the signature for convenience. TODO: check for length values that complent binary value data node leafs.";
        }
      }
    }
  }
  
  rpc basic-trust-establishment {
    description
      "This RPC creates a tpm-resident, non-migratable key to be used
      in TPM_Quote commands, an attestation certificate.";
    input {
      uses nonce;
      uses signature-scheme;
      uses tpm-name;
      leaf certificate-name {
         type string;
         description
         "An arbitrary name for the identity certificate chain requested.";
      }
    }
    output {
    list attestation-certificates {
      key tpm_name;
      description
        "Attestation Certificate data from a TPM identified by the TPM name";
      uses tpm-name;
      uses node-uptime;
      uses compute-node;
      leaf certificate-name {
         type string;
         description
         "An arbitrary name for this identity certificate or certificate chain.";
      }      
      leaf attestation-certificate {
        description
          "The binary signed certificate chain data for this identity certificate.";
        type ietfct:end-entity-cert-cms;
      }
      uses attestation-key-identifier;
    }
    }
  }
  
  rpc log-retrieval {
    description
      "Logs Entries are either identified via indices or via providing
      the last line received. The number of lines returned can be limited.
      The type of log is a choice that can be
      augmented.";
    input {
      list log-selector {
        key node-name;
        description
         "Selection of log entries to be reported.";
        uses compute-node;
        choice index-type {
          description
             "Last log entry received, log index number, or timestamp.";

          case last-entry {
            description
              "The last entry of the log already retrieved.";
            leaf last-entry-value {
              description
              "Content of an log event which matches 1:1 with a 
              unique event record contained within the log.  Log 
              entries subsequent to this will be passed to the 
              requestor.  Note: if log entry values are not unique, 
              this MUST return an error.";
              type binary;
            }
          }
          case index {
            description
              "Numeric index of the last log entry retrieved, or zero.";
            leaf index-number {
              description
              "The numeric index number of a log entry.  Zero means 
              to start at the beginning of the log.   Entries
              subsequent to this will be passed to the 
              requestor.";
              type uint64;
            }
          }
          case timestamp {
            leaf timestamp {
              type yang:date-and-time;
              description
                "Timestamp from which to start the extraction.  The next
                log entry subsequent to this timestamp is to be sent.";
            }
            description
              "Timestamp from which to start the extraction.";
          }
        }
      }
      uses log-identifier;
      uses pcr-selection;
      leaf log-entry-quantity {
        type uint16;
        description
         "The number of log entries to be returned. If omitted, it 
         means all of them.";
      }
    } 
    output {
      container system-event-logs {
         description
         "The requested data of the measurement event logs";
         list node-data {
           key node-name;
           description
           "Event logs of a node in a distributed system
            identified by the node name";
           uses compute-node;
           uses node-uptime;
           list tpm-updated {
             key tpm_name;
             description
             "TPM these events may have recorded data in";
             uses tpm-name;
           }
           container log-result {
             description
             "The requested entries of the corresponding log.";
             uses event-logs;
           }
         }
       }
     }
   }
  container rats-support-structures {
    leaf-list supported-algos {
      type uint16;
      description
        "Supported TPM_ALG_ID values for the TPM in question.
        Will include ComponentIndex soon.";
    }
  list tpms {
      key tpm_name;
      uses tpm-name;
      description
        "A list of TPMs in this composite
         device that rats can be conducted with.";
    }
  list compute-nodes {
      key node-name;
      uses compute-node;
      description
        "A list names of hardware components in this composite
         device that rats can be conducted with.";
   }
   container endorsement-certificates {
      list certificate {
        key tpm_name;
        uses tpm-name;
        description
          "The TPM's endorsement-certificate.";
        leaf endorsement-certificate {
          type binary;
          mandatory true;
          description
            "The signed pulic endorsement key (EK) and corresponding claims
             (EK Certificate). In a TPM 2.0 the EK Certificate resides in a
             well-defined NVRAM location by the TPM vednor.";
        }
      }
    description
      "Basic information elements to enable RATS.";
    }
  config false;
  }
}
<CODE ENDS>
]]></artwork></figure>

</section>
</section>
<section anchor="iana-considerations" title="IANA considerations">

<t>This document will include requests to IANA:</t>

<t>To be defined yet.</t>

</section>
<section anchor="security-considerations" title="Security Considerations">

<t>There are always some.</t>

</section>
<section anchor="acknowledgements" title="Acknowledgements">

<t>Not yet.</t>

</section>
<section anchor="change-log" title="Change Log">

<t>Changes from version 00 to version 01:</t>

<t><list style="symbols">
  <t>Addressed author’s comments</t>
  <t>Extended complementary details about attestation-certificates</t>
  <t>Relabeled chunk-size to log-entry-quantity</t>
  <t>Relabeled location with compute-node or tpm-name where appropriate</t>
  <t>Added a valid entity-mib physical-index to compute-node and tpm-name to map it back to hardware inventory</t>
  <t>Relabeled name  to tpm_name</t>
  <t>Removed event-string in last-entry</t>
</list></t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<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="I-D.ietf-netconf-crypto-types">
<front>
<title>Common YANG Data Types for Cryptography</title>

<author initials='K' surname='Watsen' fullname='Kent Watsen'>
    <organization />
</author>

<author initials='H' surname='Wang' fullname='HAIGUANG Wang'>
    <organization />
</author>

<date month='March' day='9' year='2019' />

<abstract><t>This document defines YANG identities, typedefs, the groupings useful for cryptographic applications.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-netconf-crypto-types-05' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-netconf-crypto-types-05.txt' />
</reference>



<reference anchor="I-D.birkholz-reference-ra-interaction-model">
<front>
<title>Reference Interaction Model for Challenge-Response-based Remote Attestation</title>

<author initials='H' surname='Birkholz' fullname='Henk Birkholz'>
    <organization />
</author>

<author initials='M' surname='Eckel' fullname='Michael Eckel'>
    <organization />
</author>

<date month='January' day='2' year='2019' />

<abstract><t>This document defines an interaction model for a basic remote attestation procedure.  Additionally, the required information elements are illustrated.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-birkholz-reference-ra-interaction-model-01' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-birkholz-reference-ra-interaction-model-01.txt' />
</reference>




    </references>

    <references title='Informative References'>





<reference anchor="I-D.birkholz-attestation-terminology">
<front>
<title>Reference Terminology for Remote Attestation Procedures</title>

<author initials='H' surname='Birkholz' fullname='Henk Birkholz'>
    <organization />
</author>

<author initials='M' surname='Wiseman' fullname='Monty Wiseman'>
    <organization />
</author>

<author initials='H' surname='Tschofenig' fullname='Hannes Tschofenig'>
    <organization />
</author>

<date month='July' day='2' year='2018' />

<abstract><t>This document is intended to illustrate and remediate the impedance mismatch of terms related to remote attestation procedures used in different domains today.  New terms defined by this document provide a consolidated basis to support future work on attestation procedures in the IETF and beyond.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-birkholz-attestation-terminology-02' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-birkholz-attestation-terminology-02.txt' />
</reference>




    </references>



  </back>

<!-- ##markdown-source:
H4sIAG7xhlwAA9U9a3PbRpLf+SumlA+RcgJPsh3HYa7WoWXZ0Z0lOaKc1N7W
lgsEhiRWIMDgIZnJOr/9unvegwEfjiu7x0rFFDDT093Tz5meYRRFgyZrcj5i
fx1fvWaXZdrmnM3Kir2I6yxhZ4s4z3kx59ENr1dlUfNoGtc8ZTd8WTacjZuG
103cZGXB3lZlwtO24vUgnk4rfj9iL27Gt4O0TIp4CUOkVTxromlW3S3K/Neo
ipsaoWVJtI6LebSkwaOTk8HDfMRuX7wcAOQifR/nZQG9m6rlg2xV0be6eXRy
8u3Jo0Fc8XjEJjxpq6xZD+4eRuyiaHhV8CZ6ieMNkrgZMVY36WCVjQaMNWUy
YmtAEh6WVVPxWa3/Xi/Nn4O4bRZlNRpELCvg2Q9D9kKiDk0FRT/w4s5+WlaA
+asqbotFOeMVm1zcwlPFjc4LvoyzfMQWAGWo2PJ9nTXDmW45TDkiBmhyIONm
wQGXporrmrNvvoY3SZkCHl8+ffLo26+/xL+BCyP2Mq6WwLy0oRZt0VTw8DWv
lnGxVvRcDtl5csdzTcxllixinuunRMwPbfzAM3bLk0VR5uU8I0YpisRbQ8lS
gBhyBPH9gt4Ok3JpkfCK5+mUV3NNxTOXisf7UTGBWVmAlMRVpgmZLB54s4jt
F0TLWVYnJZus64YvbSrouSGiFt2n3yf4nNCXg70Yskmb/8oLPdSLLM/Ns31G
mdbUqzvI+ZD9VGaNHuK8Aj2UT/YZgN9Dny7410OYgrSs7soHPcTrds3OnOc0
0H+3RbYCYb3izQO8sMeSr8xo85ns/P0/xCtXcE9PjAit2du4umMvq+ye67n+
GcwImJ3UCMPJ6bNnT1EYKj4H8wLyCfISJ4u25k1TD4oS5KABEKjTN6/OHp2e
fotfL6KXw4w3swgsQFIWsyip1qumjJr1iteqgbFBHHSMFwkHaxRlaDjiBI0Z
GiMOZJGN6jxHTgyyYmaj4ICNjVmMoO8yE4RLeHGVLLKGJw3YSoQ0iKIIOIsa
kTSDwe0iqxkYzXbJi4alfJYVvGaxsNA3b88YSDX8CUCzZZyzNG7iuikrzpDX
wK1f2qwCC92U8L2pMn7PmYUPyEWWIsUwYtk2DImbo+1kSx7XgBGOWrNZVS5h
EBCcVQkWiQMe9xl0esiaBQN7DBLCljhoVZbQvJwJq0yuo+IrMKxZMR+yM+if
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
RGKBD1XD5Pbi18dwiMH/AQQLMoIOdAAA

-->

</rfc>

