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


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>

<rfc ipr="trust200902" docName="draft-ietf-teep-protocol-24" category="std" consensus="true" submissionType="IETF" tocDepth="4" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="TEEP Protocol">Trusted Execution Environment Provisioning (TEEP) Protocol</title>

    <author fullname="Hannes Tschofenig">
      <organization abbrev="H-BRS">University of Applied Sciences Bonn-Rhein-Sieg</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>hannes.tschofenig@gmx.net</email>
      </address>
    </author>
    <author initials="M." surname="Pei" fullname="Mingliang Pei">
      <organization>Broadcom</organization>
      <address>
        <postal>
          <street></street>
          <city></city>
          <region></region>
          <code></code>
          <country>US</country>
        </postal>
        <email>mingliang.pei@broadcom.com</email>
      </address>
    </author>
    <author initials="D." surname="Wheeler" fullname="David Wheeler">
      <organization>Amazon</organization>
      <address>
        <postal>
          <street></street>
          <city></city>
          <region></region>
          <code></code>
          <country>US</country>
        </postal>
        <email>davewhee@amazon.com</email>
      </address>
    </author>
    <author initials="D." surname="Thaler" fullname="Dave Thaler">
      <organization>Microsoft</organization>
      <address>
        <postal>
          <street></street>
          <city></city>
          <region></region>
          <code></code>
          <country>US</country>
        </postal>
        <email>dave.thaler.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="A." surname="Tsukamoto" fullname="Akira Tsukamoto">
      <organization>Openchip &amp; Software Technologies, S.L.</organization>
      <address>
        <postal>
          <street></street>
          <city></city>
          <region></region>
          <code></code>
          <country>ES</country>
        </postal>
        <email>akira.tsukamoto@gmail.com</email>
      </address>
    </author>

    <date year="2026"/>

    <area>Security</area>
    <workgroup>TEEP</workgroup>
    <keyword>Trusted Execution Environment</keyword>

    <abstract>


<?line 106?>

<t>This document specifies a protocol that installs, updates, and deletes
Trusted Components in a device with a Trusted Execution
Environment (TEE).  This specification defines an interoperable
protocol for managing the lifecycle of Trusted Components.</t>



    </abstract>



  </front>

  <middle>


<?line 114?>

<section anchor="introduction"><name>Introduction</name>

<t>The Trusted Execution Environment (TEE) concept has been designed to
 separate a regular operating system, also referred to as a Rich Execution
 Environment (REE), from security-sensitive applications. In a TEE
ecosystem, device vendors may use different operating systems in the
REE and may use different types of TEEs. When Trusted Component Developers or
 Device Administrators use Trusted Application Managers (TAMs) to
 install, update, and delete Trusted Applications and their dependencies on a wide range
 of devices with potentially different TEEs, then an interoperability
 need arises.</t>

<t>This document specifies the protocol for communicating between a TAM
and a TEEP Agent.</t>

<t>The Trusted Execution Environment Provisioning (TEEP) architecture
document <xref target="RFC9397"/> provides design
guidance and introduces the
necessary terminology.</t>

</section>
<section anchor="terminology"><name>Terminology</name>

<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 BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
<?line -6?></t>

<t>This specification reuses the terminology defined in <xref target="RFC9397"/>.</t>

<t>As explained in Section 4.4 of that document, the TEEP protocol treats
each Trusted Application (TA), any dependencies the TA has, and personalization data as separate
components that are expressed in SUIT manifests, and a SUIT manifest
might contain or reference multiple binaries (see <xref target="I-D.ietf-suit-manifest"/>
for more details).</t>

<t>As such, the term Trusted Component (TC) in this document refers to a
set of binaries expressed in a SUIT manifest, to be installed in
a TEE.  Note that a Trusted Component may include one or more TAs
and/or configuration data and keys needed by a TA to operate correctly.</t>

<t>Each Trusted Component is uniquely identified by a SUIT Component Identifier
(see <xref target="I-D.ietf-suit-manifest"/> Section 8.7.2.2).</t>

<t>Attestation related terms, such as Evidence and Attestation Results,
are as defined in <xref target="RFC9334"/>.</t>

</section>
<section anchor="messages"><name>Message Overview</name>

<t>The TEEP protocol consists of messages exchanged between a TAM
and a TEEP Agent.
The TEEP protocol is transport-agnostic; bindings to specific transports
are defined in separate companion specifications.
Deployments MAY use a single TAM or multiple TAMs; local policy
determines which TAMs are permitted to manage a given device. Since
single TAM deployments are more likely, we assume them as a default.
The messages are encoded in CBOR and designed to provide end-to-end security.
TEEP protocol messages are signed by the endpoints, i.e., the TAM and the
TEEP Agent, but Trusted
Applications may also be encrypted and signed by a Trusted Component Developer or
Device Administrator.
The TEEP protocol not only uses
CBOR but also the respective security wrapper, namely COSE <xref target="RFC9052"/>. Furthermore, for software updates the SUIT
manifest format <xref target="I-D.ietf-suit-manifest"/> is used, and
for attestation the Entity Attestation Token (EAT) <xref target="RFC9711"/>
format is supported although other attestation formats are also permitted.</t>

<t>This specification defines five messages: QueryRequest, QueryResponse,
Update, Success, and Error.</t>

<t>A TAM queries a device's current state with a QueryRequest message.
A TEEP Agent will, after authenticating and authorizing the request, report
attestation information, list all Trusted Components, and provide information about supported
algorithms and extensions in a QueryResponse message. An error message is
returned if the request
could not be processed. A TAM will process the QueryResponse message and
determine
whether to initiate subsequent message exchanges to install, update, or delete Trusted
Applications.
As discussed in <xref target="agent"/>, a QueryResponse can also be sent unsolicited when the
contents of the corresponding QueryRequest are already known and do not vary per message.</t>

<figure><artwork><![CDATA[
  +------------+           +-------------+
  | TAM        |           |TEEP Agent   |
  +------------+           +-------------+

    QueryRequest ------->

                           QueryResponse

                 <-------     or

                             Error
]]></artwork></figure>

<t>With the Update message a TAM can instruct a TEEP Agent to install and/or
delete one or more Trusted Components.
The TEEP Agent will process the message, determine whether the TAM is authorized
and whether the
Trusted Component has been signed by an authorized Trusted Component Signer.
A Success message is returned when the operation has been completed successfully,
or an Error message
otherwise.</t>

<figure><artwork><![CDATA[
 +------------+           +-------------+
 | TAM        |           |TEEP Agent   |
 +------------+           +-------------+

             Update  ---->

                            Success

                    <----    or

                            Error
]]></artwork></figure>

</section>
<section anchor="detailmsg"><name>Detailed Messages Specification</name>

<t>TEEP messages are protected by the COSE_Sign1 or COSE_Sign structure as described in <xref target="teep-ciphersuite"/>.
The TEEP protocol messages are described in CDDL format <xref target="RFC8610"/> below.
The complete CDDL definitions for all messages appear in Appendix C; the snippets in this
section focus on the fields discussed.</t>

<figure><sourcecode type="cddl-teep-message"><![CDATA[
teep-message = $teep-message-type .within teep-message-framework

teep-message-framework = [
  type: $teep-type / $teep-type-extension,
  options: { * teep-option },
  * any; further elements, e.g., for data-item-requested
]

teep-option = (uint => any)

; messages defined below:
$teep-message-type /= query-request
$teep-message-type /= query-response
$teep-message-type /= update
$teep-message-type /= success
$teep-message-type /= error

; message type numbers, in one byte which could take a
; number from 0 to 23
$teep-type /= (0..23)
TEEP-TYPE-query-request = 1
TEEP-TYPE-query-response = 2
TEEP-TYPE-update = 3
TEEP-TYPE-success = 5
TEEP-TYPE-error = 6
; value 4 is reserved for future use; registries are
; intentionally sparse and values are not required to be contiguous.
]]></sourcecode></figure>

<section anchor="creating-and-validating-teep-messages"><name>Creating and Validating TEEP Messages</name>

<section anchor="creating-a-teep-message"><name>Creating a TEEP message</name>

<t>To create a TEEP message, the following steps are performed.</t>

<t><list style="numbers" type="1">
  <t>Create a TEEP message according to the description below and populate
  it with the respective content.  TEEP messages sent by TAMs (QueryRequest
  and Update) can include a "token".
  The TAM can decide, in any implementation-specific way, whether to include a token
  in a message.  The initial token value generated by a TAM MUST be produced
  using a cryptographically secure random source.  Subsequent token values
  MUST be different for each message the TAM creates.</t>
  <t>Create a COSE header containing the desired set of header
  parameters.  The COSE header MUST be valid per the <xref target="RFC9052"/> specification.</t>
  <t>Create a COSE_Sign1 or COSE_Sign object
  using the TEEP message as the COSE_Sign1 or COSE_Sign Payload; all
  steps specified in <xref target="RFC9052"/> for creating a
  COSE_Sign1 or COSE_Sign object MUST be followed.</t>
</list></t>

</section>
<section anchor="validation"><name>Validating a TEEP Message</name>

<t>When a TEEP message is received (see the ProcessTeepMessage conceptual API
defined in Section 6.2.1 of <xref target="RFC9397"/>),
the following validation steps are performed. If any of
the listed steps fail, then the TEEP message MUST be rejected.</t>

<t><list style="numbers" type="1">
  <t>Verify that the received message is a valid CBOR object.</t>
  <t>Verify that the message contains a COSE_Sign1 or COSE_Sign structure.</t>
  <t>Verify that the resulting COSE header includes only parameters
  and values whose syntax and semantics are both understood and
  supported or that are specified as being ignored when not
  understood.</t>
  <t>Follow the steps specified in Section 4 of <xref target="RFC9052"/> ("Signing Objects") for
  validating a COSE_Sign1 or COSE_Sign object. The COSE_Sign1 or COSE_Sign payload is the content
  of the TEEP message.</t>
  <t>Verify that the TEEP message is a valid CBOR map and verify the fields of
  the
  TEEP message according to this specification.</t>
</list></t>

</section>
</section>
<section anchor="queryrequest-message"><name>QueryRequest Message</name>

<t>A QueryRequest message is used by the TAM to learn
information from the TEEP Agent, such as
the features supported by the TEEP Agent, including
cipher suites and protocol versions. Additionally,
the TAM can selectively request data items from the
TEEP Agent by using the data-item-requested parameter. Currently,
the following features are supported:</t>

<t><list style="symbols">
  <t>Request for attestation information of the TEEP Agent,</t>
  <t>Listing supported extensions,</t>
  <t>Querying installed Trusted Components, and</t>
  <t>Request for logging information in SUIT Reports.</t>
</list></t>

<t>Like other TEEP messages, the QueryRequest message is
signed, and the relevant CDDL snippet is shown below.</t>

<figure><sourcecode type="cddl-query-request"><![CDATA[
query-request = [
  type: TEEP-TYPE-query-request,
  options: {
    ? token => bstr .size (8..64),
    ? supported-freshness-mechanisms => [ + $freshness-mechanism ],
    ? challenge => bstr .size (8..512),
    ? versions => [ + version ],
    ? attestation-payload-format => text,
    ? attestation-payload => bstr,
    ? suit-reports => [ + bstr .cbor
             (SUIT_Report_Protected / SUIT_Report_Unprotected) ],
    * $$query-request-extensions,
    * $$teep-option-extensions
  },
  supported-teep-cipher-suites: [ + $teep-cipher-suite ],
  supported-suit-cose-profiles: [ + $suit-cose-profile ],
  data-item-requested: uint .bits data-item-requested
]

version = uint .size 4
ext-info = uint .size 4

; data items as bitmaps
data-item-requested = &(
  attestation: 0,
  trusted-components: 1,
  extensions: 2,
  suit-reports: 3,
)
]]></sourcecode></figure>

<t>The message has the following fields:</t>

<dl newline="true">
  <dt>type</dt>
  <dd>
    <t>The value of (1) corresponds to a QueryRequest message sent from the TAM to
the TEEP Agent.</t>
  </dd>
  <dt>token</dt>
  <dd>
    <t>The value in the token parameter is used to match responses to requests,
such as to look up any implementation-specific state it might have saved about
that request, or to ignore responses to older QueryRequest messages before
some configuration changes were made that affected their content.
This is particularly useful when a TAM issues multiple concurrent requests
to a TEEP Agent. The token MUST be present if and only if the attestation bit is clear in
the data-item-requested value (i.e., the attestation bit, which is bit 0 in the bitmap, is not set).
When the attestation bit is
clear then a challenge will be included, which offers replay protection
capabilities. The size of the token is at least 8 bytes
(64 bits) and maximum of 64 bytes. The first usage of a token
generated by a TAM MUST be randomly created.
Subsequent token values MUST be different for each request message
to distinguish the correct response from multiple requests.
The token value MUST NOT be used for other purposes, such as a TAM to
identify the devices and/or a device to identify TAMs or Trusted Components.
The TAM SHOULD set an expiration time for each token to facilitate cleanup of  stale request state, and MUST ignore any messages with expired tokens. Implementations without explicit token management (e.g., simple TAMs that process requests synchronously  and do not maintain state) may not need explicit token expiration.
The TAM MUST expire the token value after receiving the first response
containing the token value and ignore any subsequent messages that have the same token
value. Implementations SHOULD use a timeout mechanism (see <xref target="tam"/>) to eventually
discard unanswered requests that have been awaiting responses for an excessive duration.</t>
  </dd>
  <dt>supported-teep-cipher-suites</dt>
  <dd>
    <t>The supported-teep-cipher-suites parameter lists the TEEP cipher suites
supported by the TAM. Details
about the cipher suite encoding can be found in <xref target="teep-ciphersuite"/>.</t>
  </dd>
  <dt>supported-suit-cose-profiles</dt>
  <dd>
    <t>The supported-suit-cose-profiles parameter lists the SUIT profiles
supported by the TAM for parsing SUIT Reports. Details
about the cipher suite encoding can be found in <xref target="eat-suit-ciphersuite"/>.</t>
  </dd>
  <dt>data-item-requested</dt>
  <dd>
    <t>The data-item-requested parameter indicates what information the TAM requests from the TEEP
Agent in the form of a bitmap.
</t>

    <dl>
      <dt>attestation (1):</dt>
      <dd>
        <t>With this value the TAM requests the TEEP Agent to return an attestation payload,
whether Evidence (e.g., an EAT) or an Attestation Result, in the response.</t>
      </dd>
      <dt>trusted-components (2):</dt>
      <dd>
        <t>With this value the TAM queries the TEEP Agent for all installed Trusted Components.</t>
      </dd>
      <dt>extensions (4):</dt>
      <dd>
        <t>With this value the TAM queries the TEEP Agent for supported capabilities
and extensions, which allows a TAM to discover the capabilities of a TEEP
Agent implementation.</t>
      </dd>
      <dt>suit-reports (8):</dt>
      <dd>
        <t>With this value the TAM requests the TEEP Agent to return SUIT Reports
in the response.</t>
      </dd>
    </dl>

    <t>Further values may be added in the future.</t>
  </dd>
  <dt>supported-freshness-mechanisms</dt>
  <dd>
    <t>The supported-freshness-mechanisms parameter lists the freshness mechanism(s) supported by the TAM.
Details about the encoding can be found in <xref target="freshness-mechanisms"/>.
If this parameter is absent, it means only the nonce mechanism is supported.
It MUST be absent if the attestation bit is clear.</t>
  </dd>
  <dt>challenge</dt>
  <dd>
    <t>The challenge field is an optional parameter used for ensuring the freshness of
attestation Evidence returned with a QueryResponse message. It MUST be absent if
the attestation bit is clear or the Passport model (see <xref target="RFC9334"/>) is used.
When a challenge is
provided in the QueryRequest and Evidence in the form of an EAT is returned with a QueryResponse message
then the challenge contained in the QueryRequest MUST be used to generate the EAT,
by copying the challenge into the eat_nonce claim (Section 4.1 of <xref target="RFC9711"/>) if
the nonce-based freshness mechanism is used for attestation Evidence.  For more details about freshness
of Evidence see <xref target="freshness-mechanisms"/>.
</t>

    <t>If any format other than EAT is used, it is up to that
format to define the use of the challenge field.</t>
  </dd>
  <dt>versions</dt>
  <dd>
    <t>The versions parameter enumerates the TEEP protocol version(s) supported by the TAM.
A value of 0 refers to the version of the TEEP protocol defined in this document.
If this field is not present, it is to be treated the same as if
it contained only version 0.</t>
  </dd>
  <dt>attestation-payload-format</dt>
  <dd>
    <t>The attestation-payload-format parameter indicates the IANA Media Type of the
attestation-payload parameter, where media type parameters are permitted after
the media type.  For protocol version 0, the absence of this parameter indicates that
the format is "application/eat+cwt; eat_profile=urn:ietf:rfc:rfcXXXX" (see <xref target="RFC9782"/>
for further discussion).
(RFC-editor: upon RFC publication, replace XXXX above with the RFC number
of this document.)
It MUST be present if the attestation-payload parameter
is present and the format is not an EAT in CWT format with the profile
defined below in <xref target="eat"/>.</t>
  </dd>
  <dt>attestation-payload</dt>
  <dd>
    <t>The attestation-payload parameter contains Evidence or an Attestation Result
for the TEEP Agent to use to perform attestation of the TAM.
If the attestation-payload-format parameter is absent,
the attestation payload contained in this parameter MUST be
an Entity Attestation Token following the encoding
defined in <xref target="RFC9711"/>.  See <xref target="attestation"/> for further discussion.</t>
  </dd>
  <dt>suit-reports</dt>
  <dd>
    <t>If present, the suit-reports parameter contains a set of TAM SUIT Reports related
to “boot” time (including the start of an executable in an OS context), as defined
by SUIT_Report in Section 4 of <xref target="I-D.ietf-suit-report"/>.
SUIT Reports are encoded as CBOR byte strings containing either SUIT_Report_Protected
or SUIT_Report_Unprotected. When a SUIT Report includes its own COSE
protection (via signatures or MACs), the cryptographic key used MUST be distinct
from the key used for the TEEP message's COSE security wrapper since otherwise its authenticity relies on the TEEP message's signature/MAC keys without adding any additional security.
SUIT Reports can be useful in QueryRequest messages to
pass additional information about the TAM to the TEEP Agent without depending on a Verifier including
the relevant information in the TAM's Attestation Results.</t>
  </dd>
</dl>

</section>
<section anchor="query-response"><name>QueryResponse Message</name>

<t>The QueryResponse message is the successful response by the TEEP Agent after
receiving a QueryRequest message.  As discussed in <xref target="agent"/>, it can also be sent
unsolicited if the contents of the QueryRequest are already known and do not vary
per message.</t>

<t>Like other TEEP messages, the QueryResponse message is
signed, and the relevant CDDL snippet is shown below.</t>

<figure><sourcecode type="cddl-query-response"><![CDATA[
query-response = [
  type: TEEP-TYPE-query-response,
  options: {
    ? token => bstr .size (8..64),
    ? selected-version => version,
    ? attestation-payload-format => text,
    ? attestation-payload => bstr,
    ? suit-reports => [ + bstr .cbor
             (SUIT_Report_Protected / SUIT_Report_Unprotected) ],
    ? tc-list => [ + system-property-claims ],
    ? requested-tc-list => [ + requested-tc-info ],
    ? unneeded-manifest-list => [ + SUIT_Component_Identifier ],
    ? ext-list => [ + ext-info ],
    * $$query-response-extensions,
    * $$teep-option-extensions
  }
]

requested-tc-info = {
  component-id => SUIT_Component_Identifier,
  ? tc-manifest-sequence-number => uint,
  ? have-binary => bool
}
]]></sourcecode></figure>

<t>The QueryResponse message has the following fields:</t>

<dl newline="true">
  <dt>type</dt>
  <dd>
    <t>The value of (2) corresponds to a QueryResponse message sent from the TEEP Agent
to the TAM.</t>
  </dd>
  <dt>token</dt>
  <dd>
    <t>The value in the token parameter is used to match responses to requests. The
value MUST correspond to the value received with the QueryRequest message
if one was present, and MUST be absent if no token was present in the
QueryRequest.</t>
  </dd>
  <dt>selected-version</dt>
  <dd>
    <t>The selected-version parameter indicates the TEEP protocol version selected by the
TEEP Agent. The absence of this parameter indicates the same as if it
was present with a value of 0.  Version values are defined by Standards Track
RFCs; this document does not create a separate IANA registry for versions.</t>
  </dd>
  <dt>attestation-payload-format</dt>
  <dd>
    <t>The attestation-payload-format parameter indicates the IANA Media Type of the
attestation-payload parameter, where media type parameters are permitted after
the media type.  For protocol version 0, the absence of this parameter indicates that
the format is "application/eat+cwt; eat_profile=urn:ietf:rfc:rfcXXXX" (see <xref target="RFC9782"/>
for further discussion).
(RFC-editor: upon RFC publication, replace XXXX above with the RFC number
of this document.)
It MUST be present if the attestation-payload parameter
is present and the format is not an EAT in CWT format with the profile
defined below in <xref target="eat"/>.</t>
  </dd>
  <dt>attestation-payload</dt>
  <dd>
    <t>The attestation-payload parameter contains Evidence or an Attestation Result.  This parameter
MUST be present if the QueryResponse is sent in response to a QueryRequest
with the attestation bit set.  If the attestation-payload-format parameter is absent,
the attestation payload contained in this parameter MUST be
an Entity Attestation Token following the encoding
defined in <xref target="RFC9711"/>.  See <xref target="attestation"/> for further discussion.</t>
  </dd>
  <dt>suit-reports</dt>
  <dd>
    <t>If present, the suit-reports parameter contains a set of "boot" (including
starting an executable in an OS context) time SUIT Reports
as defined by SUIT_Report in Section 4 of <xref target="I-D.ietf-suit-report"/>,
encoded as CBOR byte strings containing either SUIT_Report_Protected or
SUIT_Report_Unprotected. When protected, SUIT reports use COSE as discussed
in <xref target="eat-suit-ciphersuite"/>.
If a token parameter was present in the QueryRequest
message the QueryResponse message is in response to,
the suit-report-nonce field MUST be present in the SUIT Report with a
value matching the token parameter in the QueryRequest
message.  SUIT Reports can be useful in QueryResponse messages to
pass information to the TAM without depending on a Verifier including
the relevant information in Attestation Results.</t>
  </dd>
  <dt>tc-list</dt>
  <dd>
    <t>The tc-list parameter enumerates the Trusted Components installed on the device
in the form of system-property-claims objects, as defined in Section 4 of <xref target="I-D.ietf-suit-report"/>. The system-property-claims can
be used to learn device identifying information and TEE identifying information
for distinguishing which Trusted Components to install in the TEE.
This parameter MUST be present if the
QueryResponse is sent in response to a QueryRequest with the
trusted-components bit set.</t>
  </dd>
  <dt>requested-tc-list</dt>
  <dd>
    <t>The requested-tc-list parameter enumerates the Trusted Components that are
not currently installed in the TEE, but which are requested to be installed,
for example by an installer of an Untrusted Application that has a TA
as a dependency, or by a Trusted Application that has another Trusted
Component as a dependency.  Requested Trusted Components are expressed in
the form of requested-tc-info objects.
A TEEP Agent can get this information from the RequestTA conceptual API
defined in <xref target="RFC9397"/> Section 6.2.1.</t>
  </dd>
  <dt>unneeded-manifest-list</dt>
  <dd>
    <t>The unneeded-manifest-list parameter enumerates the SUIT manifests whose components are
currently installed in the TEE, but which are no longer needed by any
other application.  The TAM can use this information in determining
whether a SUIT manifest can be unlinked.  Each unneeded SUIT manifest is identified
by its SUIT Manifest Component ID (note that this is the Component ID for the manifest
itself, which is different from the Component ID of a component installed by the manifest,
see <xref target="I-D.ietf-suit-trust-domains"/> for more discussion).
A TEEP Agent can get this information from the UnrequestTA conceptual API
defined in <xref target="RFC9397"/> Section 6.2.1.</t>
  </dd>
  <dt>ext-list</dt>
  <dd>
    <t>The ext-list parameter lists the supported extensions. This document does not
define any extensions.  This parameter MUST be present if the
QueryResponse is sent in response to a QueryRequest with the
extensions bit set.</t>
  </dd>
</dl>

<t>The requested-tc-info message has the following fields:</t>

<dl newline="true">
  <dt>component-id</dt>
  <dd>
    <t>A SUIT Component Identifier; see <xref target="RFC9124"/>.</t>
  </dd>
  <dt>tc-manifest-sequence-number</dt>
  <dd>
    <t>The minimum suit-manifest-sequence-number value from a SUIT manifest for
the Trusted Component.  If not present, indicates that any sequence number will do.</t>
  </dd>
  <dt>have-binary</dt>
  <dd>
    <t>If present with a value of true, indicates that the TEEP Agent already has
the Trusted Component binary and only needs an Update message with a SUIT manifest
that authorizes installing it.  If have-binary is true, the
tc-manifest-sequence-number field MUST be present.</t>
  </dd>
</dl>

<section anchor="attestation"><name>Evidence and Attestation Results</name>

<t>Section 7 of <xref target="RFC9397"/> lists information that may appear
in Evidence depending on the circumstance.  However, the Evidence is
opaque to the TEEP protocol and there are no formal requirements on the contents
of Evidence.</t>

<t>TAMs consume Attestation Results and do need enough information therein to
make decisions on how to remediate a TEE that is out of compliance, or update a TEE
that is requesting an authorized change.  To do so, the information in
Section 7 of <xref target="RFC9397"/> is often required depending on the policy.</t>

<t>Attestation Results SHOULD use Entity Attestation Tokens (EATs) to use a standardized
format and to reduce TAM implementation complexity. Use of any other format, such as a widely
implemented format for a specific processor vendor, is permitted when standardized EAT
support is not available or when proprietary formats provide essential functionality,
but this increases the complexity of the TAM by requiring it to understand
the format for each such format rather than only the common EAT format and is not
recommended for interoperable deployments. Deployments that choose a non-EAT format
SHOULD document the format and pre-configure both the TAM and TEEP Agent accordingly;
otherwise interoperability across vendors is likely to be reduced.</t>

<t>When an EAT is used, the following claims can be used to meet those
requirements, whether these claims appear in Attestation Results, or in Evidence
for the Verifier to use when generating Attestation Results of some form:</t>

<texttable>
      <ttcol align='left'>Requirement</ttcol>
      <ttcol align='left'>Claim</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>Freshness proof</c>
      <c>nonce</c>
      <c>Section 4.1 of <xref target="RFC9711"/></c>
      <c>Device unique identifier</c>
      <c>ueid</c>
      <c>Section 4.2.1 of <xref target="RFC9711"/></c>
      <c>Vendor of the device</c>
      <c>oemid</c>
      <c>Section 4.2.3 of <xref target="RFC9711"/></c>
      <c>Class of the device</c>
      <c>hwmodel</c>
      <c>Section 4.2.4 of <xref target="RFC9711"/></c>
      <c>TEE hardware type</c>
      <c>hwversion</c>
      <c>Section 4.2.5 of <xref target="RFC9711"/></c>
      <c>TEE hardware version</c>
      <c>hwversion</c>
      <c>Section 4.2.5 of <xref target="RFC9711"/></c>
      <c>TEE firmware type</c>
      <c>manifests</c>
      <c>Section 4.2.15 of <xref target="RFC9711"/></c>
      <c>TEE firmware version</c>
      <c>manifests</c>
      <c>Section 4.2.15 of <xref target="RFC9711"/></c>
</texttable>

<t>The "manifests" claim (see Section 4.2.15 of <xref target="RFC9711"/>) should include
information about the TEEP Agent as well as any of its dependencies such as firmware.</t>

</section>
</section>
<section anchor="update-msg-def"><name>Update Message</name>

<t>The Update message is used by a TAM to install and/or delete one or more Trusted
Components via the TEEP Agent.  It can also be used to pass a successful
Attestation Report back to the TEEP Agent when the TAM is configured as
an intermediary between the TEEP Agent and a Verifier, as shown in <xref target="fig-arch"/>,
where the Attestation Result passed back to the Attester can be used
as a so-called "passport" (see Section 5.1 of <xref target="RFC9334"/>)
that can be presented to other Relying Parties.</t>

<figure title="Example use of TEEP and Attestation." anchor="fig-arch"><artwork><![CDATA[
         +---------------+
         |   Verifier    |
         +---------------+
               ^    | Attestation
      Evidence |    v   Result
         +---------------+
         |     TAM /     |
         | Relying Party |
         +---------------+
 QueryResponse ^    |    Update
   (Evidence)  |    | (Attestation
               |    v    Result)
         +---------------+             +---------------+
         |  TEEP Agent   |------------>|     Other     |
         |  / Attester   | Attestation | Relying Party |
         +---------------+    Result   +---------------+
]]></artwork></figure>

<t>Like other TEEP messages, the Update message is
signed, and the relevant CDDL snippet is shown below.</t>

<figure><sourcecode type="cddl-update"><![CDATA[
update = [
  type: TEEP-TYPE-update,
  options: {
    ? token => bstr .size (8..64),
    ? unneeded-manifest-list => [ + SUIT_Component_Identifier ],
    ? manifest-list => [ + bstr .cbor SUIT_Envelope ],
    ? attestation-payload-format => text,
    ? attestation-payload => bstr,
    ? err-code => err-code-values,
    ? err-msg => text .size (1..128),
    ? err-lang => text .size (1..35),
    * $$update-extensions,
    * $$teep-option-extensions
  }
]
]]></sourcecode></figure>

<t>The Update message has the following fields:</t>

<dl newline="true">
  <dt>type</dt>
  <dd>
    <t>The value of (3) corresponds to an Update message sent from the TAM to
the TEEP Agent. In case of successful processing, a Success
message is returned by the TEEP Agent. In case of an error, an Error message
is returned. Note that the Update message
is used for initial Trusted Component installation as well as for updates
and deletes.</t>
  </dd>
  <dt>token</dt>
  <dd>
    <t>The value in the token field is used to match responses to requests.</t>
  </dd>
  <dt>unneeded-manifest-list</dt>
  <dd>
    <t>The unneeded-manifest-list parameter enumerates the SUIT manifests to be unlinked.
Each unneeded SUIT manifest is identified by its SUIT Manifest Component ID.
The SUIT manifest processor MAY execute uninstall section in the manifest. See
Section 7 of <xref target="I-D.ietf-suit-trust-domains"/> for more information about the 
suit-uninstall Command Sequence.</t>
  </dd>
  <dt>manifest-list</dt>
  <dd>
    <t>The manifest-list field is used to convey one or multiple SUIT manifests
to install.  A manifest is
a bundle of metadata about a Trusted Component, such as where to
find the code, the devices to which it applies, and cryptographic
information protecting the manifest. The manifest may also convey personalization
data. Trusted Component binaries and personalization data can be signed and encrypted
by the same Trusted Component Signer. Other combinations are, however, possible as well. For example,
it is also possible for the TAM to sign and encrypt the personalization data
and to let the Trusted Component Developer sign and/or encrypt the Trusted Component binary.</t>
  </dd>
  <dt>attestation-payload-format</dt>
  <dd>
    <t>The attestation-payload-format parameter indicates the IANA Media Type of the
attestation-payload parameter, where media type parameters are permitted after
the media type.  The absence of this parameter indicates that
the format is "application/eat+cwt; eat_profile=urn:ietf:rfc:rfcXXXX" (see <xref target="RFC9782"/>
for further discussion).
(RFC-editor: upon RFC publication, replace XXXX above with the RFC number
of this document.)
It MUST be present if the attestation-payload parameter
is present and the format is not an EAT in CWT format with the profile
defined in <xref target="eat"/>.</t>
  </dd>
  <dt>attestation-payload</dt>
  <dd>
    <t>The attestation-payload parameter contains an Attestation Result. If the
attestation-payload-format parameter is absent, the attestation payload
contained in this parameter MUST be an Entity Attestation Token following
the encoding defined in <xref target="RFC9711"/>.  See <xref target="attestation"/> for further
discussion.</t>
  </dd>
  <dt>err-code</dt>
  <dd>
    <t>The err-code parameter contains one of the error codes listed in the
<xref target="error-message-def"/>, which describes the reasons for the error when
performing QueryResponse in the TAM.  The value 0 is reserved and MUST NOT be used.</t>
  </dd>
  <dt>err-msg</dt>
  <dd>
    <t>The err-msg parameter is human-readable diagnostic text that MUST be encoded
using UTF-8 <xref target="RFC3629"/> in Net-Unicode format <xref target="RFC5198"/> with a maximum of 128 bytes.</t>
  </dd>
  <dt>err-lang</dt>
  <dd>
    <t>The err-lang parameter is an optional RFC 5646 <xref target="RFC5646"/> language tag identifying the
language of the <spanx style="verb">err-msg</spanx> text.  When present, implementations MUST use the
language tag to aid human operators in interpreting diagnostic text.  The
err-msg field SHOULD be formatted in the language indicated by this tag.
If the indicated language is not supported, implementations MAY ignore the
tag and treat <spanx style="verb">err-msg</spanx> as opaque text, but MUST still process <spanx style="verb">err-code</spanx>.</t>
  </dd>
</dl>

<t>Note that an Update message carrying one or more SUIT manifests will inherently
involve multiple signatures, one by the TAM in the TEEP message and one from
a Trusted Component Signer inside each manifest.  This is intentional as they
are for different purposes.</t>

<t>The TAM is what authorizes
apps to be installed, updated, and deleted on a given TEE and so the TEEP
signature is checked by the TEEP Agent at protocol message processing time.
(This same TEEP security wrapper is also used on messages like QueryRequest
so that Agents only send potentially sensitive data such as Evidence to
trusted TAMs.)</t>

<t>The Trusted Component signer, on the other hand, is what authorizes the
Trusted Component to actually run, so the manifest signature could be
checked at install time, load (or run) time, or both, and this checking is
done by the TEE independent of whether TEEP is used or some other update
mechanism.
See Section 5 of <xref target="RFC9397"/> for further discussion.</t>

<t>The Update message has a SUIT_Envelope containing SUIT manifests. Following
are some example scenarios using SUIT manifests in the Update Message.</t>

<section anchor="directtam"><name>Scenario 1: Having one SUIT Manifest pointing to a URI of a Trusted Component Binary</name>

<t>In this scenario, a SUIT Manifest has a URI pointing to a Trusted Component Binary.</t>

<t>A Trusted Component Developer creates a new Trusted Component Binary and hosts it
at a Trusted Component Developer's URI. Then, the Trusted Component Developer
generates an associated SUIT manifest with the filename "tc-uuid" that contains
the URI. The filename "tc-uuid" is used in Scenario 3 later.</t>

<t>The TAM receives the latest SUIT manifest from the Trusted Component Developer,
and the URI it contains cannot be changed by the TAM since the SUIT manifest is
signed by the Trusted Component Developer.</t>

<t><xref target="fig-tc"/> shows the exchange graphically.</t>

<t>Pros:</t>

<t><list style="symbols">
  <t>The Trusted Component Developer can ensure that the intact Trusted Component
Binary is downloaded by devices</t>
  <t>The TAM does not have to send large Update messages containing the Trusted
Component Binary</t>
</list></t>

<t>Cons:</t>

<t><list style="symbols">
  <t>The Trusted Component Developer must host the Trusted Component Binary server</t>
  <t>The device must fetch the Trusted Component Binary in another connection
after receiving an Update message</t>
  <t>A device's IP address and therefore location may be revealed to the Trusted
Component Binary server</t>
</list></t>

<figure title="URI of the Trusted Component Binary." anchor="fig-tc"><artwork><![CDATA[
    +------------+           +-------------+
    | TAM        |           | TEEP Agent  |
    +------------+           +-------------+

             Update  ---->

    +=================== teep-protocol(TAM) ==================+
    | TEEP_Message([                                          |
    |   TEEP-TYPE-update,                                     |
    |   options: {                                            |
    |     manifest-list: [                                    |
    |       += suit-manifest "tc-uuid" (TC Developer) ======+ |
    |       | SUIT_Envelope({                               | |
    |       |   manifest: {                                 | |
    |       |     install: {                                | |
    |       |       override-parameters: {                  | |
    |       |         uri: "https://example.org/tc-uuid.ta" | |
    |       |       },                                      | |
    |       |       fetch                                   | |
    |       |     }                                         | |
    |       |   }                                           | |
    |       | })                                            | |
    |       +===============================================+ |
    |     ]                                                   |
    |   }                                                     |
    | ])                                                      |
    +=========================================================+

    and then,

    +-------------+          +--------------+
    | TEEP Agent  |          | TC Developer |
    +-------------+          +--------------+

                     <----

      fetch "https://example.org/tc-uuid.ta"

          +======= tc-uuid.ta =======+
          | 48 65 6C 6C 6F 2C 20 ... |
          +==========================+
]]></artwork></figure>

<t>For the full SUIT Manifest example binary, see <xref target="suit-uri"/>.</t>

</section>
<section anchor="scenario-2-having-a-suit-manifest-include-the-trusted-component-binary"><name>Scenario 2: Having a SUIT Manifest include the Trusted Component Binary</name>

<t>In this scenario, the SUIT manifest contains the entire Trusted Component
Binary as an integrated payload (see <xref target="I-D.ietf-suit-manifest"/> Section 7.5).</t>

<t>A Trusted Component Developer delegates the task of delivering the Trusted
Component Binary to the TAM inside the SUIT manifest. The Trusted Component
Developer creates a SUIT manifest and embeds the Trusted Component Binary,
which is referenced in the suit-integrated-payload element containing the
fragment-only reference "#tc", in the envelope. The Trusted Component Developer
transmits the entire bundle to the TAM.</t>

<t>The TAM serves the SUIT manifest containing the Trusted Component Binary to
the device in an Update message.</t>

<t><xref target="fig-tc-integrated"/> shows the exchange graphically.</t>

<t>Pros:</t>

<t><list style="symbols">
  <t>The device can obtain the Trusted Component Binary and the SUIT manifest
in one Update message.</t>
  <t>The Trusted Component Developer does not have to host a server to deliver
the Trusted Component Binary to devices.</t>
</list></t>

<t>Cons:</t>

<t><list style="symbols">
  <t>The TAM must host the Trusted Component Binary rather than delegating
storage to the Trusted Component Developer.</t>
  <t>The TAM must deliver Trusted Component Binaries in Update messages, which
increases the size of the Update message.</t>
</list></t>

<figure title="Integrated Payload with Trusted Component Binary." anchor="fig-tc-integrated"><artwork><![CDATA[
    +------------+           +-------------+
    | TAM        |           | TEEP Agent  |
    +------------+           +-------------+

             Update  ---->

      +=========== teep-protocol(TAM) ============+
      | TEEP_Message([                            |
      |   TEEP-TYPE-update,                       |
      |   options: {                              |
      |     manifest-list: [                      |
      |       +== suit-manifest(TC Developer) ==+ |
      |       | SUIT_Envelope({                 | |
      |       |   manifest: {                   | |
      |       |     install: {                  | |
      |       |       override-parameters: {    | |
      |       |         uri: "#tc"              | |
      |       |       },                        | |
      |       |       fetch                     | |
      |       |     }                           | |
      |       |   },                            | |
      |       |   "#tc": h'48 65 6C 6C ...'     | |
      |       | })                              | |
      |       +=================================+ |
      |     ]                                     |
      |   }                                       |
      | ])                                        |
      +===========================================+
]]></artwork></figure>

<t>For the full SUIT Manifest example binary, see <xref target="suit-integrated"/>.</t>

</section>
<section anchor="scenario-3-supplying-personalization-data-for-the-trusted-component-binary"><name>Scenario 3: Supplying Personalization Data for the Trusted Component Binary</name>

<t>In this scenario, Personalization Data is associated with the Trusted Component
Binary "tc-uuid" from Scenario 1.</t>

<t>The Trusted Component Developer places encrypted Personalization Data in the
SUIT manifest, and it will be delivered by the TAM. The SUIT manifest processor
decrypts it, then stores it in a file named "config.json", and then installs
the dependency component.</t>

<t>The TAM delivers the SUIT manifest of the Personalization Data which depends
on the Trusted Component Binary from Scenario 1.</t>

<t><xref target="fig-pers-data"/> shows the exchange graphically.</t>

<figure title="Encrypted Personalization Data." anchor="fig-pers-data"><artwork><![CDATA[
    +------------+           +-------------+
    | TAM        |           | TEEP Agent  |
    +------------+           +-------------+

             Update  ---->

      +================== teep-protocol(TAM) ======================+
      | TEEP_Message([                                             |
      |   TEEP-TYPE-update,                                        |
      |   options: {                                               |
      |     manifest-list: [                                       |
      |       +========= suit-manifest(TC Developer) ============+ |
      |       | SUIT_Envelope({                                  | |
      |       |   manifest: {                                    | |
      |       |     common: {                                    | |
      |       |       dependencies: {                            | |
      |       |         dependency-prefix 1: {                   | |
      |       |           [tc-uuid, 'suit']                      | |
      |       |         }                                        | |
      |       |       }                                          | |
      |       |       components: [                              | |
      |       |         ['config.json']                          | |
      |       |       ]                                          | |
      |       |     },                                           | |
      |       |     dependency-resolution: {                     | |
      |       |       override-parameters: {                     | |
      |       |         uri: "https://example.org/tc-uuid"       | |
      |       |       },                                         | |
      |       |       fetch                                      | |
      |       |     },                                           | |
      |       |     install: {                                   | |
      |       |       set-component-index 0,                     | |
      |       |       override-parameters: {                     | |
      |       |         content: h'48FE0794...'                  | |
      |       |         encryption-info: << ... >>               | |
      |       |       },                                         | |
      |       |       write,                                     | |
      |       |       set-component-index 1,                     | |
      |       |       process-dependency                         | |
      |       |     }                                            | |
      |       |   }                                              | |
      |       | })                                               | |
      |       +==================================================+ |
      |     ]                                                      |
      |   }                                                        |
      | ])                                                         |
      +============================================================+
]]></artwork></figure>

<t>For the full SUIT Manifest example binary, see <xref target="suit-personalization"/>.</t>

</section>
</section>
<section anchor="success-message"><name>Success Message</name>

<t>The Success message is used by the TEEP Agent to return a success in
response to an Update message.</t>

<t>Like other TEEP messages, the Success message is
signed, and the relevant CDDL snippet is shown below.</t>

<figure><sourcecode type="cddl-success"><![CDATA[
success = [
  type: TEEP-TYPE-success,
  options: {
    ? token => bstr .size (8..64),
    ? msg => text .size (1..128),
    ? suit-reports => [ + bstr .cbor
             (SUIT_Report_Protected / SUIT_Report_Unprotected) ],
    * $$success-extensions,
    * $$teep-option-extensions
  }
]
]]></sourcecode></figure>

<t>The Success message has the following fields:</t>

<dl newline="true">
  <dt>type</dt>
  <dd>
    <t>The value of (5) corresponds to a Success message sent from the TEEP Agent to the
TAM.</t>
  </dd>
  <dt>token</dt>
  <dd>
    <t>The value in the token parameter is used to match responses to requests.
It MUST match the value of the token parameter in the Update
message the Success is in response to, if one was present.  If none was
present, the token MUST be absent in the Success message.</t>
  </dd>
  <dt>msg</dt>
  <dd>
    <t>The msg parameter contains optional diagnostics information encoded in
UTF-8 <xref target="RFC3629"/> using Net-Unicode form <xref target="RFC5198"/> with max 128 bytes
returned by the TEEP Agent.</t>
  </dd>
  <dt>suit-reports</dt>
  <dd>
    <t>If present, the suit-reports parameter contains a set of SUIT Reports
as defined in Section 4 of <xref target="I-D.ietf-suit-report"/>, encoded as CBOR byte strings
containing either SUIT_Report_Protected or SUIT_Report_Unprotected. When a SUIT Report
includes its own COSE protection (signatures or MACs), the cryptographic key used
MUST be distinct from the key used for the TEEP message's COSE security wrapper.
If a token parameter was present in the Update
message the Success message is in response to,
the suit-report-nonce field MUST be present in the SUIT Report with a
value matching the token parameter in the Update
message.</t>
  </dd>
</dl>

</section>
<section anchor="error-message-def"><name>Error Message</name>

<t>The Error message is used by the TEEP Agent to return an error in
response to a message from the TAM.</t>

<t>Like other TEEP messages, the Error message is
signed, and the relevant CDDL snippet is shown below.</t>

<figure><sourcecode type="cddl-error"><![CDATA[
error = [
  type: TEEP-TYPE-error,
  options: {
     ? token => bstr .size (8..64),
     ? err-msg => text .size (1..128),
     ? err-lang => text .size (1..35),
     ? supported-teep-cipher-suites => [ + $teep-cipher-suite ],
     ? supported-freshness-mechanisms => [ + $freshness-mechanism ],
     ? supported-suit-cose-profiles => [ + $suit-cose-profile ],
     ? challenge => bstr .size (8..512),
     ? versions => [ + version ],
     ? suit-reports => [ + bstr .cbor
             (SUIT_Report_Protected / SUIT_Report_Unprotected) ],
     * $$error-extensions,
     * $$teep-option-extensions
  },
  err-code: err-code-values
]

; The err-code parameter, uint (1..23)
ERR_PERMANENT_ERROR = 1
ERR_UNSUPPORTED_EXTENSION = 2
ERR_UNSUPPORTED_FRESHNESS_MECHANISMS = 3
ERR_UNSUPPORTED_MSG_VERSION = 4
ERR_UNSUPPORTED_CIPHER_SUITES = 5
ERR_BAD_CERTIFICATE = 6
ERR_ATTESTATION_REQUIRED = 7
ERR_UNSUPPORTED_SUIT_REPORT = 8
ERR_CERTIFICATE_EXPIRED = 9
ERR_TEMPORARY_ERROR = 10
ERR_MANIFEST_PROCESSING_FAILED = 17

err-code-values = ERR_PERMANENT_ERROR
         / ERR_UNSUPPORTED_EXTENSION
         / ERR_UNSUPPORTED_FRESHNESS_MECHANISMS
         / ERR_UNSUPPORTED_MSG_VERSION
         / ERR_UNSUPPORTED_CIPHER_SUITES
         / ERR_BAD_CERTIFICATE
         / ERR_ATTESTATION_REQUIRED
         / ERR_UNSUPPORTED_SUIT_REPORT
         / ERR_CERTIFICATE_EXPIRED
         / ERR_TEMPORARY_ERROR
         / ERR_MANIFEST_PROCESSING_FAILED
]]></sourcecode></figure>

<t>The Error message has the following fields:</t>

<dl newline="true">
  <dt>type</dt>
  <dd>
    <t>The value of (6) corresponds to an Error message sent from the TEEP Agent to the TAM.</t>
  </dd>
  <dt>token</dt>
  <dd>
    <t>The value in the token parameter is used to match responses to requests.
It MUST match the value of the token parameter in the
message the Success is in response to, if one was present.  If none was
present, the token MUST be absent in the Error message.</t>
  </dd>
  <dt>err-msg</dt>
  <dd>
    <t>The err-msg parameter is human-readable diagnostic text that MUST be encoded
using UTF-8 <xref target="RFC3629"/> using Net-Unicode form <xref target="RFC5198"/> with max 128 bytes.</t>
  </dd>
  <dt>err-lang</dt>
  <dd>
    <t>The err-lang parameter is an optional RFC 5646 <xref target="RFC5646"/> language tag identifying the
language of the <spanx style="verb">err-msg</spanx> text. When present, implementations SHOULD use the
language tag to aid human operators in interpreting diagnostic text. The
err-msg field SHOULD be formatted in the language indicated by this tag.
If the indicated language is not supported, implementations MAY ignore the
tag and treat <spanx style="verb">err-msg</spanx> as opaque text, but MUST still process <spanx style="verb">err-code</spanx>.</t>
  </dd>
  <dt>supported-teep-cipher-suites</dt>
  <dd>
    <t>The supported-teep-cipher-suites parameter lists the TEEP cipher suite(s) supported by the TEEP Agent.
Details about the cipher suite encoding can be found in <xref target="teep-ciphersuite"/>.
This otherwise optional parameter MUST be returned if err-code is ERR_UNSUPPORTED_CIPHER_SUITES.</t>
  </dd>
  <dt>supported-freshness-mechanisms</dt>
  <dd>
    <t>The supported-freshness-mechanisms parameter lists the freshness mechanism(s) supported by the TEEP Agent.
Details about the encoding can be found in <xref target="freshness-mechanisms"/>.
This otherwise optional parameter MUST be returned if err-code is ERR_UNSUPPORTED_FRESHNESS_MECHANISMS.</t>
  </dd>
  <dt>supported-suit-cose-profiles</dt>
  <dd>
    <t>The supported-suit-cose-profiles parameter lists the SUIT profiles
supported by the TEEP Agent. Details
about the cipher suite encoding can be found in <xref target="eat-suit-ciphersuite"/>.
This otherwise optional parameter MUST be returned if err-code is ERR_UNSUPPORTED_SUIT_REPORT.</t>
  </dd>
  <dt>challenge</dt>
  <dd>
    <t>The challenge field is an optional parameter used for ensuring the freshness of
attestation Evidence included with a QueryRequest message.
When a challenge is provided in the Error message and Evidence in the form of an EAT is
returned with a QueryRequest message then the challenge contained in the Error message
MUST be used to generate the EAT, by copying the challenge value into the eat_nonce claim, as described in the
EAT profile <xref target="eat"/>, if the nonce-based freshness mechanism is used.
For more details see <xref target="freshness-mechanisms"/>.
</t>

    <t>If any format other than EAT is used, it is up to that
format to define the use of the challenge field.</t>
  </dd>
  <dt>versions</dt>
  <dd>
    <t>The versions parameter enumerates the TEEP protocol version(s) supported by the TEEP
Agent. This otherwise optional parameter MUST be returned if err-code is ERR_UNSUPPORTED_MSG_VERSION.</t>
  </dd>
  <dt>suit-reports</dt>
  <dd>
    <t>If present, the suit-reports parameter contains a set of SUIT Reports
as defined in Section 4 of <xref target="I-D.ietf-suit-report"/>, encoded as CBOR byte strings
containing either protected or unprotected SUIT Report payloads. When a SUIT Report
includes its own COSE protection (signatures or MACs), the cryptographic key used
MUST be distinct from the key used for the TEEP message's COSE security wrapper.
If a token parameter was present in the Update message the Error message is in response to,
the suit-report-nonce field MUST be present in the SUIT Report with a
value matching the token parameter in the Update
message.</t>
  </dd>
  <dt>err-code</dt>
  <dd>
    <t>The err-code parameter contains one of the error codes listed below.
The value 0 is reserved and MUST NOT be used.
Only selected values are applicable to each message.
Note that error codes are restricted to the range (0..23) to permit
encoding as single-byte CBOR unsigned integers. Error code values 0, 11-16,
and 18-22 are currently unassigned and reserved for future use.
Error code 0 is intentionally reserved to prevent accidental use.
Extensions that define new error codes SHOULD constrain values to this range;
however, implementations that receive unrecognized error code values greater than 23
SHOULD handle them gracefully, treating them as unknown errors.</t>
  </dd>
</dl>

<t>This specification defines the following initial error messages:</t>

<dl newline="true">
  <dt>ERR_PERMANENT_ERROR (1)</dt>
  <dd>
    <t>The received TEEP
message contained incorrect fields or fields that are inconsistent with
other fields.
For diagnosis purposes it is RECOMMENDED to identify the failure reason
in the error message field.
A TEEP implementation receiving this error might refuse to communicate further with
the problematic TEEP message sender, by silently dropping any TEEP messages
received, for some period of time until it has reason to believe
it is worth trying again, but it should take care not to give up on
communication.  In contrast, ERR_TEMPORARY_ERROR is an indication
that a more aggressive retry is warranted.</t>
  </dd>
  <dt>ERR_UNSUPPORTED_EXTENSION (2)</dt>
  <dd>
    <t>The TEEP implementation does not support an extension included in the
TEEP message it received.
For diagnosis purposes it is RECOMMENDED to identify the unsupported
extension in the error message field.
A TAM implementation receiving this error might retry sending the last message it sent to
the sender of this error, without using any TEEP extensions.</t>
  </dd>
  <dt>ERR_UNSUPPORTED_FRESHNESS_MECHANISMS (3)</dt>
  <dd>
    <t>The TEEP Agent does not
support any freshness algorithm mechanisms in the request message.
A TAM receiving this error might retry the request using a different
set of supported freshness mechanisms in the request message.</t>
  </dd>
  <dt>ERR_UNSUPPORTED_MSG_VERSION (4)</dt>
  <dd>
    <t>The TEEP implementation does not
support the TEEP protocol version indicated in the received message.
A TAM receiving this error might retry the request using a different
TEEP protocol version.</t>
  </dd>
  <dt>ERR_UNSUPPORTED_CIPHER_SUITES (5)</dt>
  <dd>
    <t>The TEEP Agent does not
support any cipher suites indicated in the request message.
A TAM receiving this error might retry the request using a different
set of supported cipher suites in the request message.</t>
  </dd>
  <dt>ERR_BAD_CERTIFICATE (6)</dt>
  <dd>
    <t>Processing of a certificate failed. For diagnosis purposes it is
RECOMMENDED to include information about the failing certificate
in the error message field.  For example, the certificate was of an
unsupported type, or the certificate was revoked by its signer.
A TEEP implementation receiving this error might attempt to use an alternate certificate.</t>
  </dd>
  <dt>ERR_ATTESTATION_REQUIRED (7)</dt>
  <dd>
    <t>Indicates that the TEEP implementation sending this error requires
attestation of the TEEP implementation receiving this error.</t>
  </dd>
  <dt>ERR_UNSUPPORTED_SUIT_REPORT (8)</dt>
  <dd>
    <t>Indicates that the TEEP Agent does not support the suit-cose-profile of
the SUIT Reports which was sent by the TAM. The TEEP Agent must report the
error code ERR_UNSUPPORTED_SUIT_REPORT supplying the
supported-suit-cose-profiles.</t>
  </dd>
  <dt>ERR_CERTIFICATE_EXPIRED (9)</dt>
  <dd>
    <t>A certificate has expired or is not currently
valid.
A TEEP implementation receiving this error might attempt to renew its certificate
before using it again.</t>
  </dd>
  <dt>ERR_TEMPORARY_ERROR (10)</dt>
  <dd>
    <t>A miscellaneous
temporary error, such as a memory allocation failure, occurred while processing the TEEP message.
A TEEP implementation receiving this error might retry the last message it sent to the sender
of this error at some later point, which is up to the implementation.</t>
  </dd>
  <dt>ERR_MANIFEST_PROCESSING_FAILED (17)</dt>
  <dd>
    <t>The TEEP Agent encountered one or more manifest processing failures.
If the suit-reports parameter is present, it contains the failure details.
A TAM receiving this error might still attempt to install or update
other components that do not depend on the failed manifest.</t>
  </dd>
</dl>

<t>New error codes should be added sparingly, not for every implementation
error.  That is the intent of the err-msg field, which can be used to
provide details meaningful to humans.  New error codes should only be
added if the TAM is expected to do something behaviorally different upon
receipt of the error message, rather than just logging the event.
Hence, each error code is responsible for saying what the
behavioral difference is expected to be.</t>

</section>
</section>
<section anchor="eat"><name>EAT Profile</name>

<t>The TEEP protocol operates between a TEEP Agent and a TAM.  While
the TEEP protocol does not require use of EAT, use of EAT is encouraged and
<xref target="query-response"/> explicitly defines a way to carry an Entity Attestation Token
in a QueryResponse.</t>

<t>As noted in <xref target="attestation"/>, Evidence is opaque to the TAM, while Attestation
Results are processed by the TAM in its role as the Relying Party. Although
Attestation Results required by a TAM are logically separate from the TEEP
protocol, this section defines requirements for building a compliant TAM
that uses EATs for Attestation Results.</t>

<t>Section 6 of <xref target="RFC9711"/> defines the requirement for
Entity Attestation Token profiles.  This section defines an EAT profile
for use with TEEP.</t>

<t><list style="symbols">
  <t>profile-label: The profile-label for this specification is the URI</t>
</list></t>
<t>&lt;urn:ietf:rfc:rfcXXXX&gt;.
(RFC-editor: upon RFC publication, replace XXXX with the RFC number
of this document.)</t>

<t><list style="symbols">
  <t>Use of JSON, CBOR, or both: CBOR only.</t>
  <t>CBOR Map and Array Encoding: Only definite length arrays and maps.</t>
  <t>CBOR String Encoding: Only definite-length strings are allowed.</t>
  <t>CBOR Preferred Serialization: Encoders must use preferred serialization,
and decoders need not accept non-preferred serialization.</t>
  <t>CBOR Tags: CBOR Tags are not used.</t>
  <t>COSE/JOSE Protection: See <xref target="eat-suit-ciphersuite"/>.</t>
  <t>COSE/JOSE Algorithms: See <xref target="eat-suit-ciphersuite"/>.</t>
  <t>Detached EAT Bundle Support: DEB use is permitted.</t>
  <t>Key Identification: COSE Key ID (kid) is used, where
the key ID is the hash of a public key (where the public key may be
used as a raw public key, or in a certificate) as specified in
<xref target="RFC9679"/>.  See <xref target="attestation-result-tam"/>
and <xref target="attestation-result-agent"/> for
discussion on the choice of hash algorithm.</t>
  <t>Endorsement Identification: Optional, but semantics are the same
as in Verification Key Identification.</t>
  <t>Freshness: See <xref target="freshness-mechanisms"/> for details.  When the
eat_nonce claim is used, the value is a single bstr.</t>
  <t>Claims Requirements:
  <list style="symbols">
      <t>The following claims are required: ueid, oemid,
hwmodel, hwversion, manifests, and cnf.  See <xref target="attestation"/> for discussion.  Other claims are optional.</t>
      <t>See <xref target="freshness-mechanisms"/> for discussion affecting whether the
eat_nonce claim is used.</t>
      <t>The sw-name claim for a Trusted
Component holds the URI of the SUIT manifest for that component.</t>
      <t>The manifests claim uses a SUIT manifest, where the manifest
body contains a SUIT_Reference as defined in Section 4 of
<xref target="I-D.ietf-suit-report"/>, and the content type is as defined
in <xref target="I-D.ietf-suit-report"/>.</t>
    </list></t>
</list></t>

<t>A TAM implementation might simply accept a TEEP Agent as trustworthy based on a
successful Attestation Result, and if not then attempt to update the TEEP Agent
and all of its dependencies.  This logic is simple but it might result in updating
some components that do not need to be updated.</t>

<t>An alternate TAM implementation might use any Additional Claims to determine whether
the TEEP Agent or any of its dependencies are trustworthy, and only update the
specific components that are out of date.</t>

<section anchor="relationship-to-ar4si"><name>Relationship to AR4SI</name>

<t><xref target="I-D.ietf-rats-ar4si"/> defines an EAT profile for arbitrary Relying Parties
to use with Attestation Results.  However the TAM as a Relying Party needs specific
claims that are not required in the AR4SI profile, and so needs its own more
specific profile.</t>

<t>In some deployments, a TAM can be used as an intermediary between Verifier and a
TEEP Agent acting as an Attester in the Passport model or acting as a Relying
Party in the Background Check Model of <xref target="RFC9334"/>.  This is depicted in the
example in Figure 1.  In such a case, both profiles need to be obtained from the
Verifier: one for use by the TAM itself, and the other to pass on to the TEEP
Agent.</t>

<t>When the TAM and Verifier are combined into the same implementation, obtaining
both profiles can be straightforward, but when they are on different machines,
the situation is more complex, especially if Nonces are used to ensure freshness
of Evidence. There are thus several such cases:</t>

<t><list style="numbers" type="1">
  <t>The protocol between the TAM and the Verifier (which is outside
the scope of TEEP itself) allows requesting multiple Attestation Results from
the same Evidence.  In this case, the TAM can request both EAT profiles be
returned.</t>
  <t>The protocol between the TAM and the Verifier only allows requesting one
Attestation Result format, but the Evidence freshness mechanism does not use
Nonces.  In this case, the TAM can send the same Evidence in two separate
requests, each requesting a different EAT profile for the Attestation Results.</t>
  <t>The protocol between the TAM and the Verifier only allows requesting one
Attestation Result format, and the Evidence freshness mechanism uses Nonces.
In this case, it is simpler to not have the TAM be an intermediary, since
the Verifier will require a separate Nonce for each Attestation Result, but
have the Attester or Relying Party contact the Verifier directly to get
Attestation Results in the AR4SI profile.</t>
</list></t>

</section>
</section>
<section anchor="tags"><name>Mapping of TEEP Message Parameters to CBOR Labels</name>

<t>In COSE, arrays and maps use strings, negative integers, and unsigned
integers as their keys. Integers are used for compactness of
encoding. Since the word "key" is mainly used in its other meaning, as a
cryptographic key, this specification uses the term "label" for this usage
as a map key.</t>

<t>Message parameter labels are current defined only in the range [0..23] to permit
encoding as single-byte CBOR unsigned integers, providing compact message representation.
Currently, labels 0, 5, and 22 are unassigned and reserved for future use.
Extensions that define new message parameters SHOULD constrain label values to this range.
If future standards require additional messages beyond this range, implementations
SHOULD be designed to handle gracefully any unrecognized labels, treating them
as unknown optional parameters without failing to process the message.</t>

<t>This specification uses the following mapping:</t>

<texttable>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Label</ttcol>
      <c>supported-teep-cipher-suites</c>
      <c>1</c>
      <c>challenge</c>
      <c>2</c>
      <c>versions</c>
      <c>3</c>
      <c>supported-suit-cose-profiles</c>
      <c>4</c>
      <c>selected-version</c>
      <c>6</c>
      <c>attestation-payload</c>
      <c>7</c>
      <c>tc-list</c>
      <c>8</c>
      <c>ext-list</c>
      <c>9</c>
      <c>manifest-list</c>
      <c>10</c>
      <c>msg</c>
      <c>11</c>
      <c>err-msg</c>
      <c>12</c>
      <c>attestation-payload-format</c>
      <c>13</c>
      <c>requested-tc-list</c>
      <c>14</c>
      <c>unneeded-manifest-list</c>
      <c>15</c>
      <c>component-id</c>
      <c>16</c>
      <c>tc-manifest-sequence-number</c>
      <c>17</c>
      <c>have-binary</c>
      <c>18</c>
      <c>suit-reports</c>
      <c>19</c>
      <c>token</c>
      <c>20</c>
      <c>supported-freshness-mechanisms</c>
      <c>21</c>
      <c>err-lang</c>
      <c>22</c>
      <c>err-code</c>
      <c>23</c>
</texttable>

<t>The following CDDL description is used:</t>

<figure><sourcecode type="cddl-label"><![CDATA[
; labels of mapkey for teep message parameters, uint (0..23)
supported-teep-cipher-suites = 1
challenge = 2
versions = 3
supported-suit-cose-profiles = 4
selected-version = 6
attestation-payload = 7
tc-list = 8
ext-list = 9
manifest-list = 10
msg = 11
err-msg = 12
attestation-payload-format = 13
requested-tc-list = 14
unneeded-manifest-list = 15
component-id = 16
tc-manifest-sequence-number = 17
have-binary = 18
suit-reports = 19
token = 20
supported-freshness-mechanisms = 21
err-lang = 22
err-code = 23
]]></sourcecode></figure>

</section>
<section anchor="behavior-specification"><name>Behavior Specification</name>

<t>Behavior is specified in terms of the conceptual APIs defined in
Section 6.2.1 of <xref target="RFC9397"/>.</t>

<section anchor="tam"><name>TAM Behavior</name>

<t>When the ProcessConnect API is invoked, the TAM sends a QueryRequest message.</t>

<t>When the ProcessTeepMessage API is invoked, the TAM first does validation
as specified in <xref target="validation"/>, and drops the message if it is not valid.
It may also do additional implementation specific actions such as logging the results
or attempting to update the TEEP Agent to a version that does not send invalid messages.
Otherwise, it proceeds as follows.</t>

<t>If the message includes a token, it can be used to
match the response to a request previously sent by the TAM.
The TAM MUST expire the token value after receiving the first response
from the device that has a valid signature and ignore any subsequent messages that have the same token
value.  The token value MUST NOT be used for other purposes, such as a TAM to
identify the devices and/or a device to identify TAMs or Trusted Components.</t>

<t>A TAM implementation that sends multiple concurrent requests to a TEEP Agent
needs to track outstanding requests and their associated tokens. To prevent
unbounded storage of token state, a TAM MUST implement a timeout mechanism
to eventually discard unanswered requests and their tokens. This timeout SHOULD be
configurable, with a recommended minimum duration of several hours to account for
scenarios where devices may take considerable time to process updates and resolve
dependencies (as noted in <xref target="tam"/>, such processing may take hours or longer).
A TAM MAY also implement a per-device maximum storage limit for outstanding requests,
reusing tokens for new requests once the per-device limit is reached (after discarding
the oldest outstanding request).</t>

<section anchor="handling-a-queryresponse-message"><name>Handling a QueryResponse Message</name>

<t>If a QueryResponse message is received, the TAM verifies the presence of any parameters
required based on the data-items-requested in the QueryRequest, and also validates that
the nonce in any SUIT Report matches the token sent in the QueryRequest message if a token
was present.  If these requirements are not met, the TAM drops the message and sends an
Update message containing an appropriate err-code and err-msg.  It may also do
additional implementation specific actions such as logging the results.  If the requirements
are met, processing continues as follows.</t>

<t>If a QueryResponse message is received that contains an attestation-payload, the TAM
checks whether it contains Evidence or an Attestation Result by inspecting the attestation-payload-format
parameter.  The media type defined in <xref target="eat"/> indicates an Attestation Result, though future
extensions might also indicate other Attestation Result formats in the future. Any other unrecognized
value indicates Evidence.  If it contains an Attestation Result, processing continues as in
<xref target="attestation-result-tam"/>.</t>

<t>If the QueryResponse is instead determined to contain Evidence, the TAM passes
the Evidence (via some mechanism out of scope of this document) to an attestation Verifier
(see <xref target="RFC9334"/>)
to determine whether the Agent is in a trustworthy state.  Once the TAM receives an Attestation
Result from the Verifier, processing continues as in <xref target="attestation-result-tam"/>.</t>

<section anchor="attestation-result-tam"><name>Handling an Attestation Result</name>

<t>The Attestation Result must first be validated as follows:</t>

<t><list style="numbers" type="1">
  <t>Verify that the Attestation Result was signed by a Verifier that the TAM trusts.</t>
  <t>Verify that the Attestation Result contains a "cnf" claim (as defined in Section 3.1 of <xref target="RFC8747"/>) where
the key ID is the hash of the TEEP Agent public key used to verify the signature on the TEEP message,
and the hash is computed using the digest algorithm specified by one of the SUIT profiles
supported by the TAM.  <vspace blankLines='1'/>
See Sections 3.4 and Section 6 of <xref target="RFC8747"/> for more discussion.</t>
</list></t>

<t>Note: The proof-of-possession functionality for the Attestation Result may not be supported by every attestation technology or may not be enabled for use in every deployment.</t>

<t>Based on the results of attestation (if any), any SUIT Reports,
and the lists of installed, requested,
and unneeded Trusted Components reported in the QueryResponse, the TAM
determines, in any implementation specific manner, which Trusted Components
need to be installed, updated, or deleted, if any.  There are typically three cases:</t>

<t><list style="numbers" type="1">
  <t>Attestation failed. This indicates that the rest of the information in the QueryResponse
cannot necessarily be trusted, as the TEEP Agent may not be healthy (or at least up to date).
In this case, the TAM might attempt to use TEEP to update any Trusted Components (e.g., firmware,
the TEEP Agent itself, etc.) needed to get the TEEP Agent back into an up-to-date state that
would allow attestation to succeed.  If the TAM does not have permission to update such components
(this can happen if different TAMs manage different components in the device), the TAM instead
responds with an Update message containing an appropriate err-msg, and err-code set to ERR_ATTESTATION_REQUIRED.</t>
  <t>Attestation succeeded (so the QueryResponse information can be accepted as valid), but the set
of Trusted Components needs to be updated based on TAM policy changes or requests from the TEEP Agent.</t>
  <t>Attestation succeeded, and no changes are needed.</t>
</list></t>

<t>If any Trusted Components need to be installed, updated, or deleted,
the TAM sends an Update message containing SUIT Manifests with command
sequences to do the relevant installs, updates, or deletes.
It is important to note that the TEEP Agent's
Update Procedure requires resolving and installing any dependencies
indicated in the manifest, which may take some time, and the resulting Success
or Error message is generated only after completing the Update Procedure.
Hence, depending on the freshness mechanism in use, the TAM may need to
store data (e.g., a nonce) for some time.  For example, if a mobile device
needs an unmetered connection to download a dependency, it may take
hours or longer before the device has sufficient access.  A different
freshness mechanism, such as timestamps, might be more appropriate in such
cases.</t>

<t>If no Trusted Components need to be installed, updated, or deleted, but the QueryResponse included
Evidence, the TAM MAY (e.g., based on attestation-payload-format parameters received from the TEEP Agent
in the QueryResponse) still send an Update message with no SUIT Manifests, to pass the Attestation
Result back to the TEEP Agent.</t>

</section>
</section>
<section anchor="handling-a-success-or-error-message"><name>Handling a Success or Error Message</name>

<t>If a Success or Error message is received containing one or more SUIT Reports, the TAM also validates that
the nonce in any SUIT Report matches the token sent in the Update message,
and drops the message if it does not match.  Otherwise, the TAM handles
the update in any implementation specific way, such as updating any locally
cached information about the state of the TEEP Agent, or logging the results.</t>

<t>If an Error message is received with the error code ERR_ATTESTATION_REQUIRED, it indicates that the TEEP Agent is requesting attestation of the TAM.
In this case, the TAM MUST send another QueryRequest with an attestation-payload and optionally a suit-report to the TEEP Agent.</t>

<t>If any other Error message is received, the TAM can handle it in any implementation
specific way, but <xref target="error-message-def"/> provides recommendations for such handling.</t>

</section>
</section>
<section anchor="agent"><name>TEEP Agent Behavior</name>

<t>When the RequestTA API is invoked, the TEEP Agent first checks whether the
requested TA is already installed.  If it is already installed, the
TEEP Agent passes no data back to the caller.  Otherwise,
if the TEEP Agent chooses to initiate the process of requesting the indicated
TA, it determines (in any implementation specific way) the TAM URI based on
any TAM URI provided by the RequestTA caller and any local configuration,
and passes back the TAM URI to connect to.  It MAY also pass back a
QueryResponse message if all of the following conditions are true:</t>

<t><list style="symbols">
  <t>The last QueryRequest message received from that TAM contained no token or challenge,</t>
  <t>The ProcessError API was not invoked for that TAM since the last QueryResponse
message was received from it, and</t>
  <t>The public key or certificate of the TAM is cached and not expired.</t>
</list></t>

<t>When the RequestPolicyCheck API is invoked, the TEEP Agent decides
whether to initiate communication with any trusted TAMs (e.g., it might
choose to do so for a given TAM unless it detects that it has already
communicated with that TAM recently). If so, it passes back a TAM URI
to connect to.  If the TEEP Agent has multiple TAMs it needs to connect
with, it just passes back one, with the expectation that
RequestPolicyCheck API will be invoked to retrieve each one successively
until there are no more and it can pass back no data at that time.
Thus, once a TAM URI is returned, the TEEP Agent can remember that it has
already initiated communication with that TAM.</t>

<t>When the ProcessError API is invoked, the TEEP Agent can handle it in
any implementation specific way, such as logging the error or
using the information in future choices of TAM URI.</t>

<t>When the ProcessTeepMessage API is invoked, the Agent first does validation
as specified in <xref target="validation"/>, and if it is not valid then the Agent
responds with an Error message.
Otherwise, processing continues as follows based on the type of message.</t>

<section anchor="handling-a-queryrequest-message"><name>Handling a QueryRequest Message</name>

<t>When a QueryRequest message is received, it is processed as follows.</t>

<t>If the TEEP Agent requires attesting the TAM and the QueryRequest message did not
contain an attestation-payload, the TEEP Agent MUST send an Error Message
with the error code ERR_ATTESTATION_REQUIRED supplying the supported-freshness-mechanisms and challenge if needed.
Otherwise, processing continues as follows.</t>

<t>If the TEEP Agent requires attesting the TAM and the QueryRequest message did
contain an attestation-payload, the TEEP Agent checks whether it contains Evidence or an
Attestation Result by inspecting the attestation-payload-format
parameter.  The media type defined in <xref target="eat"/> indicates an Attestation Result, though future
extensions might also indicate other Attestation Result formats in the future. Any other unrecognized
value indicates Evidence.  If it contains an Attestation Result, processing continues as in
<xref target="attestation-result-agent"/>.</t>

<t>If the QueryRequest is instead determined to contain Evidence, the TEEP Agent passes
the Evidence (via some mechanism out of scope of this document) to an attestation Verifier
(see <xref target="RFC9334"/>)
to determine whether the TAM is in a trustworthy state.  Once the TEEP Agent receives an Attestation
Result from the Verifier, processing continues as in <xref target="attestation-result-agent"/>.</t>

<t>The TEEP Agent MAY also use (in any implementation specific way) any SUIT Reports in the
QueryRequest in determining whether it trusts the TAM.  If a SUIT Report
uses a suit-cose-profile that the TEEP Agent does not support, then the TEEP
Agent MUST send an Error Message with the error code ERR_UNSUPPORTED_SUIT_REPORT supplying
the supported-suit-cose-profiles.  Otherwise, processing continues as follows.</t>

<t>Once the Attestation Result is handled, or if the TEEP Agent does not require attesting the TAM,
the Agent responds with a
QueryResponse message if all fields were understood, or an Error message
if any error was encountered.</t>

<section anchor="attestation-result-agent"><name>Handling an Attestation Result</name>

<t>The Attestation Result must first be validated as follows:</t>

<t><list style="numbers" type="1">
  <t>Verify that the Attestation Result was signed by a Verifier that the TEEP Agent trusts.</t>
  <t>Verify that the Attestation Result contains a "cnf" claim (as defined in Section 3.1 of <xref target="RFC8747"/>) where
the key ID is the hash of the TAM public key used to verify the signature on the TEEP message,
and the hash is computed using the Digest Algorithm specified by one of the SUIT profiles
supported by the TEEP Agent.  <vspace blankLines='1'/>
See Sections 3.4 and Section 6 of <xref target="RFC8747"/> for more discussion.</t>
</list></t>

</section>
</section>
<section anchor="handling-an-update-message"><name>Handling an Update Message</name>

<t>When an Update message is received, the Agent attempts to unlink any
SUIT manifests listed in the unneeded-manifest-list field of the message,
and responds with an Error message if any error was encountered.
If the unneeded-manifest-list was empty, or no error was encountered processing it,
the Agent attempts to update
the Trusted Components specified in the SUIT manifests
by following the Update Procedure specified
in <xref target="I-D.ietf-suit-manifest"/>, and responds with a Success message if
all SUIT manifests were successfully installed, or an Error message
if any error was encountered.
It is important to note that the
Update Procedure requires resolving and installing any dependencies
indicated in the manifest, which may take some time, and the Success
or Error message is generated only after completing the Update Procedure.</t>

</section>
</section>
</section>
<section anchor="ciphersuite"><name>Cipher Suites</name>

<t>TEEP requires algorithms for various purposes:</t>

<t><list style="symbols">
  <t>Algorithms for signing TEEP messages exchanged between the TEEP Agent and the TAM.</t>
  <t>Algorithms for signing EAT-based Evidence sent by the Attester via the TEEP Agent and the TAM to the Verifier.</t>
  <t>Algorithms for encrypting EAT-based Evidence sent by the TEEP Agent to the TAM. (The TAM will decrypt the encrypted Evidence and will forward it to the Verifier.)</t>
  <t>Algorithms for signing and optionally encrypting SUIT reports sent by the TEEP Agent to the TAM.</t>
  <t>Algorithms for signing and optionally encrypting SUIT manifests sent by the Trusted Component Signer to the TEEP Agent.</t>
</list></t>

<t>Further details are provided for the protection of TEEP messages, SUIT Reports, and EATs.</t>

<section anchor="teep-ciphersuite"><name>TEEP Messages</name>

<t>The TEEP protocol uses COSE for protection of TEEP messages in both directions.
To negotiate cryptographic mechanisms and algorithms, the TEEP protocol defines the following cipher suite structure,
which is used to specify an ordered set of operations (e.g., sign) done as part of composing a TEEP message.
Although this specification only specifies the use of signing and relies on payload encryption to protect sensitive
information, future extensions might specify support for encryption and/or MAC operations if needed.</t>

<figure><sourcecode type="cddl-cipher-suite"><![CDATA[
; teep-cipher-suites
$teep-cipher-suite /= teep-cipher-suite-sign1-ed25519
$teep-cipher-suite /= teep-cipher-suite-sign1-esp256

;The following two cipher suites have only a single operation each.
;Other cipher suites may be defined to have multiple operations.
;It is mandatory for TAM to support them, and optional
;to support any additional ones that use COSE_Sign_Tagged, or other
;signing, encryption, or MAC algorithms.

teep-operation-sign1-ed25519 = [ cose-sign1, cose-alg-ed25519 ]
teep-operation-sign1-esp256  = [ cose-sign1, cose-alg-esp256 ]

teep-cipher-suite-sign1-ed25519 = [ teep-operation-sign1-ed25519 ]
teep-cipher-suite-sign1-esp256  = [ teep-operation-sign1-esp256 ]

;Mandatory for TAM and TEEP Agent to support the following COSE
;operations, and optional to support additional ones such as
;COSE_Sign_Tagged, COSE_Encrypt0_Tagged, etc.

cose-sign1 = 18      ; CoAP Content-Format value

;Mandatory for TAM to support the following, and optional to
;implement any additional algorithms from the IANA COSE Algorithms
;registry.

cose-alg-esp256  = -9   ; ECDSA using P-256 curve and SHA-256
cose-alg-ed25519 = -19  ; EdDSA using Ed25519 curve
]]></sourcecode></figure>

<t>Each operation in a given cipher suite has two elements:</t>

<t><list style="symbols">
  <t>a COSE-type defined in Section 2 of <xref target="RFC9052"/> that identifies the type of operation, and</t>
  <t>a specific cryptographic algorithm as defined in the COSE Algorithms registry <xref target="COSE.Algorithm"/> to be used to perform that operation.</t>
</list></t>

<t>A TAM MUST support both of the cipher suites defined above.  A TEEP Agent MUST support at least
one of the two but can choose which one.  For example, a TEEP Agent might
choose a given cipher suite if it has hardware support for it.
A TAM or TEEP Agent MAY also support any other algorithms in the COSE Algorithms
registry in addition to the mandatory ones listed above.  It MAY also support use
with COSE_Sign or other COSE types in additional cipher suites.</t>

<t>Any cipher suites without confidentiality protection can only be added if the
associated specification includes a discussion of security considerations and
applicability, since manifests may carry sensitive information. For example,
Section 6 of <xref target="RFC9397"/> permits implementations that
terminate transport security inside the TEE and if the transport security
provides confidentiality then additional encryption might not be needed in
the manifest for some use cases. For most use cases, however, manifest
confidentiality will be needed to protect sensitive fields from the TAM as
discussed in Section 9.8 of <xref target="RFC9397"/>.</t>

<t>The cipher suites defined above do not do encryption at the TEEP layer, but
permit encryption of the SUIT payload using a mechanism such as <xref target="I-D.ietf-suit-firmware-encryption"/>.
See <xref target="security"/> and <xref target="eat-suit-ciphersuite"/> for more discussion of specific payloads.</t>

<t>For the initial QueryRequest message, unless the TAM has more specific knowledge about the TEEP Agent
(e.g., if the QueryRequest is sent in response to some underlying transport message that contains a hint),
the message does not use COSE_Sign1 with one of the above cipher suites, but instead uses COSE_Sign with multiple signatures,
one for each algorithm used in any of the cipher suites listed in the supported-teep-cipher-suites
parameter of the QueryRequest, so that a TEEP Agent supporting any one of them can verify a signature.
If the TAM does have specific knowledge about which cipher suite the TEEP Agent supports,
it MAY instead use that cipher suite with the QueryRequest.</t>

<t>For an Error message with code ERR_UNSUPPORTED_CIPHER_SUITES, the TEEP Agent MUST
protect it with any of the cipher suites mandatory for the TAM.</t>

<t>For all other TEEP messages between the TAM and TEEP Agent,
the selected TEEP cipher suite MUST be used in both directions.</t>

</section>
<section anchor="eat-suit-ciphersuite"><name>EATs and SUIT Reports</name>

<t>TEEP uses COSE for confidentiality of EATs and SUIT Reports sent by a TEEP Agent.
The TEEP Agent obtains a signed EAT and then SHOULD encrypt it using the TAM
as the recipient, unless the transport layer provides sufficient confidentiality
protection or the TEEP Agent's deployment environment does not permit access to
the TAM's public key. A SUIT Report is created by a SUIT processor, which
is part of the TEEP Agent itself. The TEEP Agent is therefore in control of signing
the SUIT Report and SHOULD encrypt it for the same reasons, to protect sensitive
information from intermediate processors and transport mechanisms. Again, the TAM is the recipient of the encrypted
content. For content-key distribution Ephemeral-Static Diffie-Hellman (ES-DH) is used
in this specification. See Section 8.5.5 and Appendix B of <xref target="RFC9052"/> for more details.
(If <xref target="I-D.ietf-suit-firmware-encryption"/> is used, it is also the same as discussed in
Section 6.2 of that document.)</t>

<t>ES-DH is a scheme that provides public key encryption given
a recipient's public key. Hence, the TEEP Agent needs to be in possession of the public
key of the TAM. See Section 5 of <xref target="RFC9397"/> for more discussion of TAM keys used by the
TEEP Agent. There are multiple variants of this scheme; this document uses the
variant specified in Section 8.5.5 of <xref target="RFC9052"/>.</t>

<t>The following two layer structure is used:</t>

<t><list style="symbols">
  <t>Layer 0: Has a content encrypted with the Content Encryption Key (CEK), a symmetric key.
For encrypting SUIT Reports and EATs the content MUST NOT be detached.</t>
  <t>Layer 1: Uses the AES Key Wrap algorithm to encrypt the randomly generated CEK with the
Key Encryption Key (KEK) derived with ES-DH, whereby the resulting symmetric key is fed
into the HKDF-based key derivation function.</t>
</list></t>

<t>As a result, the two layers combine ES-DH with AES-KW and HKDF.</t>

<t>This document reuses the CDDL defined in Section 6.2.3 of
<xref target="I-D.ietf-suit-firmware-encryption"/> and the context information structure defined in
Section 6.2.4 of <xref target="I-D.ietf-suit-firmware-encryption"/> although with an important modification.
The COSE_KDF_Context.SuppPubInfo.other value MUST be set to "SUIT Report Encryption" when a
SUIT Report is encrypted and MUST be set to "EAT Encryption" when an EAT is encrypted. The
COSE_KDF_Context.SuppPubInfo.other field captures the protocol in which the ES-DH content key
distribution algorithm is used.</t>

<t>This specification defines cipher suites for confidentiality protection of EATs and
SUIT Reports. The TAM MUST support each cipher suite defined below, based on definitions in
<xref target="I-D.ietf-suit-mti"/>.  A TEEP Agent MUST support at least one of the cipher
suites below but can choose which one.  For example, a TEEP Agent might
choose a given cipher suite if it has hardware support for it.
A TAM or TEEP Agent MAY also support other algorithms in the COSE Algorithms registry.
It MAY also support use with COSE_Encrypt or other COSE types in additional cipher suites.</t>

<figure><sourcecode type="cddl-suit-cose-profile"><![CDATA[
; suit-cose-profile
$suit-cose-profile /= suit-sha256-esp256-ecdh-a128ctr
$suit-cose-profile /= suit-sha256-ed25519-ecdh-a128ctr
$suit-cose-profile /= suit-sha256-esp256-ecdh-a128gcm
$suit-cose-profile /= suit-sha256-ed25519-ecdh-chacha-poly
]]></sourcecode></figure>

</section>
</section>
<section anchor="freshness-mechanisms"><name>Attestation Freshness Mechanisms</name>

<t>A freshness mechanism determines how a TAM can tell whether an attestation payload provided
in a QueryResponse is fresh.  There are multiple ways this can be done
as discussed in Section 10 of <xref target="RFC9334"/>.</t>

<t>Each freshness mechanism is identified with an integer value, which corresponds to
an IANA registered freshness mechanism (see the IANA Considerations section of
<xref target="I-D.ietf-rats-reference-interaction-models"/>).
This document uses the following freshness mechanisms which may be added to in the
future by TEEP extensions:</t>

<figure><sourcecode type="cddl-freshness"><![CDATA[
; freshness-mechanisms
FRESHNESS_NONCE = 0
FRESHNESS_TIMESTAMP = 1

$freshness-mechanism /= FRESHNESS_NONCE
$freshness-mechanism /= FRESHNESS_TIMESTAMP
]]></sourcecode></figure>

<t>An implementation MUST support the Nonce mechanism and MAY support additional
mechanisms.</t>

<t>In the Nonce mechanism, the attestation payload MUST include a nonce provided
in the QueryRequest challenge if the Background Check model is used, or in
the QueryRequest token if the Passport model is used.  The timestamp mechanism uses a timestamp
determined via mechanisms outside the TEEP protocol,
and the challenge is only needed in the QueryRequest message
if a challenge is needed in generating the attestation payload for reasons other
than freshness.</t>

<t>If a TAM supports multiple freshness mechanisms that require different challenge
formats, the QueryRequest message can currently only send one such challenge.
This situation is expected to be rare, but should it occur, the TAM can
choose to prioritize one of them and exclude the other from the
supported-freshness-mechanisms in the QueryRequest, and resend the QueryRequest
with the other mechanism if an ERR_UNSUPPORTED_FRESHNESS_MECHANISMS Error
is received that indicates the TEEP Agent supports the other mechanism.</t>

</section>
<section anchor="security"><name>Security Considerations</name>

<t>This section summarizes the security considerations discussed in this
specification:</t>

<dl newline="true">
  <dt>Cryptographic Algorithms</dt>
  <dd>
    <t>TEEP protocol messages exchanged between the TAM and the TEEP Agent
are protected using COSE. This specification relies on the
cryptographic algorithms provided by COSE.  Public key based
authentication is used by the TEEP Agent to authenticate the TAM
and vice versa.</t>
  </dd>
  <dt>Attestation</dt>
  <dd>
    <t>A TAM relies on signed Attestation Results provided by a Verifier,
either obtained directly using a mechanism outside the TEEP protocol
(by using some mechanism to pass Evidence obtained in the attestation payload of
a QueryResponse, and getting back the Attestation Results), or indirectly
via the TEEP Agent forwarding the Attestation Results in the attestation
payload of a QueryResponse. See the security considerations of the
specific mechanism in use (e.g., EAT) for more discussion.
</t>

    <t>An impersonation attack, where one TEEP Agent attempts to use the attestation
payload of another TEEP Agent, can be prevented using a proof-of-possession
approach.  The "cnf" claim is mandatory in the EAT profile for EAT for this
purpose.  See Section 6 of <xref target="RFC8747"/> and <xref target="attestation-result-tam"/> and
<xref target="attestation-result-agent"/> of this document
for more discussion.</t>
  </dd>
  <dt>Trusted Component Binaries</dt>
  <dd>
    <t>Each Trusted Component binary is signed by a Trusted Component Signer. It is the responsibility of the
TAM to relay only verified Trusted Components from authorized Trusted Component Signers.  Delivery of
a Trusted Component to the TEEP Agent is then the responsibility of the TAM,
using the security mechanisms provided by the TEEP
protocol.  To protect the Trusted Component binary, the SUIT manifest format is used and
it offers a variety of security features, including digital
signatures and content encryption, if a SUIT mechanism such as <xref target="I-D.ietf-suit-firmware-encryption"/>
is used.</t>
  </dd>
  <dt>Personalization Data</dt>
  <dd>
    <t>A Trusted Component Signer or TAM can supply personalization data along with a Trusted Component.
This data is also protected by a SUIT manifest. Personalization data is signed and encrypted
by a Trusted Component Signer, if a SUIT mechanism such as <xref target="I-D.ietf-suit-firmware-encryption"/>
is used.</t>
  </dd>
  <dt>TEEP Broker</dt>
  <dd>
    <t>As discussed in Section 6 of <xref target="RFC9397"/>,
the TEEP protocol typically relies on a TEEP Broker to relay messages
between the TAM and the TEEP Agent.  When the TEEP Broker is
compromised, it can drop messages, delay the delivery of messages,
and replay messages, but it cannot modify those messages. (A replay
would be, however, detected by the TEEP Agent.) A compromised TEEP
Broker could reorder messages in an attempt to install an old
version of a Trusted Component. Information in the manifest ensures that TEEP
Agents are protected against such downgrade attacks based on
features offered by the manifest itself.</t>
  </dd>
  <dt>Replay Protection</dt>
  <dd>
    <t>The TEEP protocol supports replay protection as follows.
The transport protocol under the TEEP protocol might provide replay
protection, but may be terminated in the TEEP Broker which is not trusted
by the TEEP Agent and so the TEEP protocol does replay protection itself.
If attestation of the TAM is used, the attestation freshness mechanism
provides replay protection for attested QueryRequest messages.
If non-attested QueryRequest messages are replayed, the TEEP Agent will generate
QueryResponse or Error messages, but the REE can already conduct Denial of Service
attacks against the TEE and/or the TAM even without the TEEP protocol.
QueryResponse messages have replay protection via attestation freshness mechanism,
or the token field in the message if attestation is not used.
Update messages have replay protection via the suit-manifest-sequence-number
(see Section 8.4.2 of <xref target="I-D.ietf-suit-manifest"/>).
Error and Success messages have replay protection via SUIT Reports and/or the token
field in the message, where a TAM can detect which message it is in response to.</t>
  </dd>
  <dt>Trusted Component Signer Compromise</dt>
  <dd>
    <t>A TAM is responsible for vetting Trusted Components before distributing them to TEEP Agents.
It is RECOMMENDED to provide a way to
update the trust anchor store used by the TEE, for example using
a firmware update mechanism such as <xref target="I-D.ietf-rats-concise-ta-stores"/>.  Thus, if a Trusted Component
Signer is later compromised, the TAM can update the trust anchor
store used by the TEE, for example using a firmware update mechanism.</t>
  </dd>
  <dt>CA Compromise</dt>
  <dd>
    <t>The CA issuing certificates to a TEE or a Trusted Component Signer might get compromised.
It is RECOMMENDED to provide a way to update the trust anchor store used by the TEE, for example
by using a firmware update mechanism, Concise TA Stores <xref target="I-D.ietf-rats-concise-ta-stores"/>, Trust
Anchor Management Protocol (TAMP) <xref target="RFC5934"/> or a similar mechanism. If the CA issuing 
certificates to devices gets compromised then these devices will be rejected by a
TAM, if revocation is available to the TAM.</t>
  </dd>
  <dt>TAM Certificate Expiry</dt>
  <dd>
    <t>The integrity and the accuracy of the
clock within the TEE determines the ability to determine an expired
TAM certificate, if certificates are used.</t>
  </dd>
  <dt>Compromised Time Source</dt>
  <dd>
    <t>As discussed above, certificate validity checks rely on comparing
validity dates to the current time, which relies on having a trusted
source of time, such as <xref target="RFC8915"/>.  A compromised time source could
thus be used to subvert such validity checks.</t>
  </dd>
</dl>

<section anchor="operational"><name>Operational Considerations</name>

<t>This section summarizes operational and management guidance for
deployments using the TEEP protocol.  It complements the general
operational guidelines in the IETF operations-area document <xref target="I-D.ietf-opsawg-rfc5706bis"/>
and refers implementers to the architecture and conceptual APIs in
<xref target="RFC9397"/> for configuration and management points.</t>

<t><list style="symbols">
  <t>Configuration and placement: Protocol-specific configuration is
typically performed in the TAM, the TEEP Agent, and any Verifier used
by the TAM.  See the conceptual APIs in <xref target="RFC9397"/> for the
configuration points exposed by implementations (e.g., which
Trusted Components to manage, trust anchors, and per-device state).</t>
  <t>Token lifecycle and state management: Tokens are used to match
requests and responses and to provide limited replay protection.  The
guidance in this document requires random initial tokens and
non-reuse; implementers MUST ensure bounded storage of outstanding
tokens (timeouts, per-device caps) and MUST expire tokens after the
first valid response.  Operational deployments SHOULD tune token
timeouts to accommodate device processing time (see <xref target="tam"/>).</t>
  <t>Key and certificate lifecycle: Operators MUST run procedures for
certificate and key issuance, rollover, revocation, and timely
renewal.  Implementations SHOULD support certificate status checks
and have clear behavior when certificates are expired or revoked
(see err-code behaviors such as ERR_CERTIFICATE_EXPIRED and
ERR_BAD_CERTIFICATE).</t>
  <t>Logging, monitoring, and diagnostics: Implementations SHOULD log
operational events, but MUST avoid placing sensitive data (e.g., raw
Evidence, private keys) into logs.  Diagnostic fields, such as
<spanx style="verb">err-msg</spanx> (optionally accompanied by <spanx style="verb">err-lang</spanx>), are intended for
human operators; logs should capture structured error codes and
minimal diagnostic text to aid incident response.</t>
  <t>Rate limiting and DoS protection: Implementations SHOULD apply
rate limits and backoff policies to mitigate malformed or
high-volume requests.  Agents SHOULD limit the size and number of
concurrent manifests processed and protect local resources (CPU,
memory, storage) from exhausting.</t>
  <t>Time synchronization: Accurate device time is important for
certificate validity checks and for some attestation freshness
mechanisms.  Operators SHOULD ensure devices maintain adequate
time synchronization.</t>
  <t>Privacy and data minimization Attestation results, SUIT reports,
and system-property-claims can contain identifying information.  Do
not expose such data to unauthorised parties; apply least-privilege
principles when requesting or returning attestation or component
lists.</t>
  <t>Upgrade and rollback procedures: Manifest processing can be
disruptive.  Operators SHOULD plan for safe upgrade and rollback
procedures, including verification of manifests prior to execution,
mechanisms for retry, and consideration of partial failure modes.</t>
  <t>Transport and deployment-specific concerns: TEEP is transport
agnostic; operators MUST ensure the chosen transport provides
adequate confidentiality, integrity, authentication, and replay
protection.  See the HTTP binding draft <xref target="I-D.ietf-teep-otrp-over-http"/>
for transport-specific operational details when that binding is used.</t>
  <t>Scaling and batching: Large-scale deployments SHOULD consider
batching updates and asynchronous workflows to avoid overwhelming
devices or management servers.  Unsolicited messages and polling
behavior should be chosen to balance timeliness and operational
load.</t>
  <t>Emergency recovery: Provide procedures for emergency recovery,
including factory-reset processes, certificate revocation handling,
and operational steps for devices that become non-responsive after
updates.</t>
</list></t>

<t>Where operational considerations are covered by other documents (for
example, the TEEP architecture <xref target="RFC9397"/>), implementers SHOULD follow
the guidance in those documents as applicable.</t>

</section>
</section>
<section anchor="transport"><name>Transport Considerations</name>

<t>This specification defines the TEEP protocol as a set of messages to be exchanged
between a TAM and a TEEP Agent.  However, this specification is transport-agnostic
and does not mandate use of a specific transport protocol.  The TEEP protocol messages
are signed and can be optionally encrypted at the protocol layer, providing end-to-end
security independent of the underlying transport.</t>

<t>Companion specifications define how TEEP messages are transported over specific
protocols. For example, <xref target="I-D.ietf-teep-otrp-over-http"/> defines how TEEP messages
are transported over HTTP/HTTPS. TEEP transport specifications MUST provide the
following information:</t>

<t><list style="symbols">
  <t>Whether the transport provides reliability guarantees and ordered delivery</t>
  <t>How message loss and retransmission are handled</t>
  <t>Recovery mechanisms for mid-transaction transport failures</t>
  <t>How the transport handles duplicate messages and idempotency</t>
  <t>How transport-layer errors are reported to the TEEP Agent and TAM</t>
</list></t>

<t>Implementations SHOULD use a transport that provides authentication of the
remote endpoint and confidentiality protection of messages in flight, or
provide these protections at the TEEP protocol layer.  As discussed in
<xref target="RFC9397"/>, the TEEP protocol uses end-to-end cryptographic protection
via COSE to ensure that messages cannot
be modified by intermediaries, such as the TEEP Broker.</t>

<t>The token field in TEEP messages (present in QueryRequest and Update messages)
is used for request-response matching. As described in <xref target="tam"/>, the token MUST
be unique among outstanding requests for a given device at a given TAM, but
tokens MAY be reused for new requests once the previous request has received
a response or timed out. Token reuse across multiple devices or TAMs is permitted
but not required; implementations MAY choose to make tokens globally unique
for audit or logging purposes.</t>

</section>
<section anchor="privacy"><name>Privacy Considerations</name>

<t>Depending on
the properties of the attestation mechanism, it is possible to
uniquely identify a device based on information in the
attestation payload or in the certificate used to sign the
attestation payload.  This uniqueness may raise privacy concerns. To lower the privacy implications, the TEEP Agent MUST present its
attestation payload only to an authenticated and authorized TAM and, when using
an EAT, it SHOULD use encryption as discussed in <xref target="RFC9711"/> unless the transport
layer provides sufficient confidentiality protection. Encryption is particularly
important since confidentiality is not provided by the TEEP protocol itself and
the transport protocol under the TEEP protocol might be implemented
outside of any TEE. If any mechanism other than EAT is used, that
mechanism MUST specify how privacy is provided.</t>

<t>Since SUIT Reports can also contain sensitive information, a TEEP Agent
SHOULD also encrypt SUIT Reports as discussed in <xref target="eat-suit-ciphersuite"/>, particularly
when they contain device identifiers or other sensitive operational data.</t>

<t>In addition, in the usage scenario discussed in <xref target="directtam"/>, a device
reveals its IP address to the Trusted Component Binary server.  This
can reveal to that server at least a clue as to its location, which
might be sensitive information in some cases.</t>

<t>EATs and SUIT Reports from a TAM can also be present in
a QueryRequest. Typically, the ability to uniquely identify a TAM
is less of a concern than it is for TEEP Agents, but where confidentiality
is a concern for the TAM, such EATs and SUIT Reports SHOULD be encrypted
just like ones from TEEP Agents.</t>

</section>
<section anchor="IANA"><name>IANA Considerations</name>

<section anchor="media-type-registration"><name>Media Type Registration</name>

<t>IANA is requested to assign a media type for
application/teep+cbor.</t>

<dl>
  <dt>Type name:</dt>
  <dd>
    <t>application</t>
  </dd>
  <dt>Subtype name:</dt>
  <dd>
    <t>teep+cbor</t>
  </dd>
  <dt>Required parameters:</dt>
  <dd>
    <t>none</t>
  </dd>
  <dt>Optional parameters:</dt>
  <dd>
    <t>none</t>
  </dd>
  <dt>Encoding considerations:</dt>
  <dd>
    <t>Same as encoding considerations of
application/cbor.</t>
  </dd>
  <dt>Security considerations:</dt>
  <dd>
    <t>See Security Considerations Section of this document.</t>
  </dd>
  <dt>Interoperability considerations:</dt>
  <dd>
    <t>Same as interoperability
considerations of application/cbor as specified in <xref target="RFC8949"/>.</t>
  </dd>
  <dt>Published specification:</dt>
  <dd>
    <t>This document.</t>
  </dd>
  <dt>Applications that use this media type:</dt>
  <dd>
    <t>TEEP protocol implementations</t>
  </dd>
  <dt>Fragment identifier considerations:</dt>
  <dd>
    <t>N/A</t>
  </dd>
  <dt>Additional information:</dt>
  <dd>
    <t><list style="symbols">
      <t>Deprecated alias names for this type: N/A</t>
      <t>Magic number(s): N/A</t>
      <t>File extension(s): N/A</t>
      <t>Macintosh file type code(s): N/A</t>
    </list></t>
  </dd>
  <dt>Person to contact for further information:</dt>
  <dd>
    <t>teep@ietf.org</t>
  </dd>
  <dt>Intended usage:</dt>
  <dd>
    <t>COMMON</t>
  </dd>
  <dt>Restrictions on usage:</dt>
  <dd>
    <t>none</t>
  </dd>
  <dt>Author:</dt>
  <dd>
    <t>See the "Authors' Addresses" section of this document</t>
  </dd>
  <dt>Change controller:</dt>
  <dd>
    <t>IETF</t>
  </dd>
</dl>

</section>
<section anchor="teep-message-type-registry"><name>TEEP Message Type Registry</name>

<t>IANA is requested to create a new registry titled "TEEP Message Types" within the TEEP
registry.  The registry has the following format:</t>

<texttable>
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>0</c>
      <c>(Reserved)</c>
      <c>This document</c>
      <c>1</c>
      <c>TEEP-TYPE-query-request</c>
      <c>This document</c>
      <c>2</c>
      <c>TEEP-TYPE-query-response</c>
      <c>This document</c>
      <c>3</c>
      <c>TEEP-TYPE-update</c>
      <c>This document</c>
      <c>4</c>
      <c>(Reserved)</c>
      <c>This document</c>
      <c>5</c>
      <c>TEEP-TYPE-success</c>
      <c>This document</c>
      <c>6</c>
      <c>TEEP-TYPE-error</c>
      <c>This document</c>
      <c>7-23</c>
      <c>(Reserved for future use)</c>
      <c>This document</c>
</texttable>

<t>Registry values are not required to be contiguous; reserved values allow future
extensions without renumbering.</t>

<t>Registration procedures are as follows:</t>

<t><list style="symbols">
  <t>0-12: Standards Action</t>
  <t>13-23: Specification Required</t>
</list></t>

</section>
<section anchor="data-item-requested-bitmap-registry"><name>data-item-requested Bitmap Registry</name>

<t>IANA is requested to create a registry titled "TEEP data-item-requested Bits" within the TEEP
registry. The registry has the following format:</t>

<texttable>
      <ttcol align='left'>Bit</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>0</c>
      <c>attestation</c>
      <c>TAM requests attestation payload</c>
      <c>This document</c>
      <c>1</c>
      <c>trusted-components</c>
      <c>TAM queries installed Trusted Components</c>
      <c>This document</c>
      <c>2</c>
      <c>extensions</c>
      <c>TAM queries supported extensions</c>
      <c>This document</c>
      <c>3</c>
      <c>suit-reports</c>
      <c>TAM requests SUIT Reports</c>
      <c>This document</c>
      <c>4-31</c>
      <c>(Reserved for future use)</c>
      <c>&#160;</c>
      <c>This document</c>
</texttable>

<t>Registration procedures are as follows:</t>

<t><list style="symbols">
  <t>0-23: Standards Action</t>
  <t>24-31: Specification Required</t>
</list></t>

</section>
<section anchor="teep-error-code-registry"><name>TEEP Error Code Registry</name>

<t>IANA is requested to create a registry titled "TEEP Error Codes" within the TEEP
registry. The registry has the following format:</t>

<texttable>
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>0</c>
      <c>(Reserved)</c>
      <c>Reserved to prevent accidental use</c>
      <c>This document</c>
      <c>1</c>
      <c>ERR_PERMANENT_ERROR</c>
      <c>Incorrect or inconsistent fields</c>
      <c>This document</c>
      <c>2</c>
      <c>ERR_UNSUPPORTED_EXTENSION</c>
      <c>Unsupported extension in message</c>
      <c>This document</c>
      <c>3</c>
      <c>ERR_UNSUPPORTED_FRESHNESS_MECHANISMS</c>
      <c>Unsupported freshness mechanism</c>
      <c>This document</c>
      <c>4</c>
      <c>ERR_UNSUPPORTED_MSG_VERSION</c>
      <c>Unsupported TEEP protocol version</c>
      <c>This document</c>
      <c>5</c>
      <c>ERR_UNSUPPORTED_CIPHER_SUITES</c>
      <c>Unsupported cipher suites</c>
      <c>This document</c>
      <c>6</c>
      <c>ERR_BAD_CERTIFICATE</c>
      <c>Certificate processing failed</c>
      <c>This document</c>
      <c>7</c>
      <c>ERR_ATTESTATION_REQUIRED</c>
      <c>Attestation is required</c>
      <c>This document</c>
      <c>8</c>
      <c>ERR_UNSUPPORTED_SUIT_REPORT</c>
      <c>Unsupported SUIT Report profile</c>
      <c>This document</c>
      <c>9</c>
      <c>ERR_CERTIFICATE_EXPIRED</c>
      <c>Certificate has expired or is invalid</c>
      <c>This document</c>
      <c>10</c>
      <c>ERR_TEMPORARY_ERROR</c>
      <c>Temporary error (e.g., memory allocation)</c>
      <c>This document</c>
      <c>11-16</c>
      <c>(Reserved for future use)</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>17</c>
      <c>ERR_MANIFEST_PROCESSING_FAILED</c>
      <c>Manifest processing failure</c>
      <c>This document</c>
      <c>18-22</c>
      <c>(Reserved for future use)</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>23</c>
      <c>(Reserved)</c>
      <c>Reserved for future use</c>
      <c>&#160;</c>
</texttable>

<t>Note: Error codes are constrained to the range 0-23 to permit encoding as single-byte
CBOR unsigned integers.</t>

<t>Registration procedures are as follows:</t>

<t><list style="symbols">
  <t>1-10, 17: Standards Action</t>
  <t>11-16, 18-23: Reserved for future use by Specification Required</t>
</list></t>

</section>
<section anchor="teep-cbor-label-registry"><name>TEEP CBOR Label Registry</name>

<t>IANA is requested to create a registry titled "TEEP CBOR Labels" within the TEEP registry. The registry has the following format:
Label values are not required to be contiguous; gaps are reserved for future use.</t>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>0</c>
      <c>(Reserved)</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>1</c>
      <c>supported-teep-cipher-suites</c>
      <c>array</c>
      <c>This document</c>
      <c>2</c>
      <c>challenge</c>
      <c>bstr</c>
      <c>This document</c>
      <c>3</c>
      <c>versions</c>
      <c>array</c>
      <c>This document</c>
      <c>4</c>
      <c>supported-suit-cose-profiles</c>
      <c>array</c>
      <c>This document</c>
      <c>5</c>
      <c>(Reserved)</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>6</c>
      <c>selected-version</c>
      <c>uint</c>
      <c>This document</c>
      <c>7</c>
      <c>attestation-payload</c>
      <c>bstr</c>
      <c>This document</c>
      <c>8</c>
      <c>tc-list</c>
      <c>array</c>
      <c>This document</c>
      <c>9</c>
      <c>ext-list</c>
      <c>array</c>
      <c>This document</c>
      <c>10</c>
      <c>manifest-list</c>
      <c>array</c>
      <c>This document</c>
      <c>11</c>
      <c>msg</c>
      <c>text</c>
      <c>This document</c>
      <c>12</c>
      <c>err-msg</c>
      <c>text</c>
      <c>This document</c>
      <c>13</c>
      <c>attestation-payload-format</c>
      <c>text</c>
      <c>This document</c>
      <c>14</c>
      <c>requested-tc-list</c>
      <c>array</c>
      <c>This document</c>
      <c>15</c>
      <c>unneeded-manifest-list</c>
      <c>array</c>
      <c>This document</c>
      <c>16</c>
      <c>component-id</c>
      <c>SUIT_Component_Identifier</c>
      <c>This document</c>
      <c>17</c>
      <c>tc-manifest-sequence-number</c>
      <c>uint</c>
      <c>This document</c>
      <c>18</c>
      <c>have-binary</c>
      <c>bool</c>
      <c>This document</c>
      <c>19</c>
      <c>suit-reports</c>
      <c>array</c>
      <c>This document</c>
      <c>20</c>
      <c>token</c>
      <c>bstr</c>
      <c>This document</c>
      <c>21</c>
      <c>supported-freshness-mechanisms</c>
      <c>array</c>
      <c>This document</c>
      <c>22</c>
      <c>(Reserved)</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>23</c>
      <c>err-code</c>
      <c>uint</c>
      <c>This document</c>
      <c>2-255</c>
      <c>(Reserved for future use)</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>256-</c>
      <c>(Reserved for future use)</c>
      <c>&#160;</c>
      <c>&#160;</c>
</texttable>

<t>Note: Labels are not constrained to a specific range.</t>

<t>Registration procedures are as follows:</t>

<t><list style="symbols">
  <t>0-255:: Standards Action</t>
  <t>256 and above: Specification Required</t>
</list></t>

</section>
<section anchor="teep-cipher-suite-registry"><name>TEEP Cipher Suite Registry</name>

<t>IANA is requested to create a registry titled "TEEP Cipher Suites" within the TEEP
registry. The registry has the following format:</t>

<texttable>
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>0</c>
      <c>teep-cipher-suite-sign1-ed25519</c>
      <c>This document</c>
      <c>1</c>
      <c>teep-cipher-suite-sign1-esp256</c>
      <c>This document</c>
      <c>2-255</c>
      <c>(Reserved for future use)</c>
      <c>&#160;</c>
</texttable>

<t>Registration procedures are as follows:</t>

<t><list style="symbols">
  <t>0-23: Standards Action</t>
  <t>24-255: Specification Required</t>
</list></t>

<t>Any new cipher suites MUST provide authentication, integrity, and SHOULD provide
confidentiality protection.</t>

</section>
<section anchor="teep-freshness-mechanism-registry"><name>TEEP Freshness Mechanism Registry</name>

<t>IANA is requested to create a registry titled "TEEP Freshness Mechanisms" within the TEEP
registry. The registry has the following format:</t>

<texttable>
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>0</c>
      <c>FRESHNESS_NONCE</c>
      <c>This document</c>
      <c>1</c>
      <c>FRESHNESS_TIMESTAMP</c>
      <c>This document</c>
      <c>2-255</c>
      <c>(Reserved for future use)</c>
      <c>&#160;</c>
</texttable>

<t>Registration procedures are as follows:</t>

<t><list style="symbols">
  <t>0-23: Standards Action</t>
  <t>24-255: Specification Required</t>
</list></t>

</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC3629">
  <front>
    <title>UTF-8, a transformation format of ISO 10646</title>
    <author fullname="F. Yergeau" initials="F." surname="Yergeau"/>
    <date month="November" year="2003"/>
    <abstract>
      <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems. The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo. UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values. This memo obsoletes and replaces RFC 2279.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="63"/>
  <seriesInfo name="RFC" value="3629"/>
  <seriesInfo name="DOI" value="10.17487/RFC3629"/>
</reference>
<reference anchor="RFC5646">
  <front>
    <title>Tags for Identifying Languages</title>
    <author fullname="A. Phillips" initials="A." role="editor" surname="Phillips"/>
    <author fullname="M. Davis" initials="M." role="editor" surname="Davis"/>
    <date month="September" year="2009"/>
    <abstract>
      <t>This document describes the structure, content, construction, and semantics of language tags for use in cases where it is desirable to indicate the language used in an information object. It also describes how to register values for use in language tags and the creation of user-defined extensions for private interchange. 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="47"/>
  <seriesInfo name="RFC" value="5646"/>
  <seriesInfo name="DOI" value="10.17487/RFC5646"/>
</reference>
<reference anchor="RFC5198">
  <front>
    <title>Unicode Format for Network Interchange</title>
    <author fullname="J. Klensin" initials="J." surname="Klensin"/>
    <author fullname="M. Padlipsky" initials="M." surname="Padlipsky"/>
    <date month="March" year="2008"/>
    <abstract>
      <t>The Internet today is in need of a standardized form for the transmission of internationalized "text" information, paralleling the specifications for the use of ASCII that date from the early days of the ARPANET. This document specifies that format, using UTF-8 with normalization and specific line-ending sequences. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5198"/>
  <seriesInfo name="DOI" value="10.17487/RFC5198"/>
</reference>
<reference anchor="RFC8747">
  <front>
    <title>Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="L. Seitz" initials="L." surname="Seitz"/>
    <author fullname="G. Selander" initials="G." surname="Selander"/>
    <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <date month="March" year="2020"/>
    <abstract>
      <t>This specification describes how to declare in a CBOR Web Token (CWT) (which is defined by RFC 8392) that the presenter of the CWT possesses a particular proof-of-possession key. Being able to prove possession of a key is also sometimes described as being the holder-of-key. This specification provides equivalent functionality to "Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)" (RFC 7800) but using Concise Binary Object Representation (CBOR) and CWTs rather than JavaScript Object Notation (JSON) and JSON Web Tokens (JWTs).</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8747"/>
  <seriesInfo name="DOI" value="10.17487/RFC8747"/>
</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="RFC9679">
  <front>
    <title>CBOR Object Signing and Encryption (COSE) Key Thumbprint</title>
    <author fullname="K. Isobe" initials="K." surname="Isobe"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <author fullname="O. Steele" initials="O." surname="Steele"/>
    <date month="December" year="2024"/>
    <abstract>
      <t>This specification defines a method for computing a hash value over a CBOR Object Signing and Encryption (COSE) Key. It specifies which fields within the COSE Key structure are included in the cryptographic hash computation, the process for creating a canonical representation of these fields, and how to hash the resulting byte sequence. The resulting hash value, referred to as a "thumbprint", can be used to identify or select the corresponding key.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9679"/>
  <seriesInfo name="DOI" value="10.17487/RFC9679"/>
</reference>
<reference anchor="RFC9711">
  <front>
    <title>The Entity Attestation Token (EAT)</title>
    <author fullname="L. Lundblade" initials="L." surname="Lundblade"/>
    <author fullname="G. Mandyam" initials="G." surname="Mandyam"/>
    <author fullname="J. O'Donoghue" initials="J." surname="O'Donoghue"/>
    <author fullname="C. Wallace" initials="C." surname="Wallace"/>
    <date month="April" year="2025"/>
    <abstract>
      <t>An Entity Attestation Token (EAT) provides an attested claims set that describes the state and characteristics of an entity, a device such as a smartphone, an Internet of Things (IoT) device, network equipment, or such. This claims set is used by a relying party, server, or service to determine the type and degree of trust placed in the entity.</t>
      <t>An EAT is either a CBOR Web Token (CWT) or a JSON Web Token (JWT) with attestation-oriented claims.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9711"/>
  <seriesInfo name="DOI" value="10.17487/RFC9711"/>
</reference>
<reference anchor="RFC9397">
  <front>
    <title>Trusted Execution Environment Provisioning (TEEP) Architecture</title>
    <author fullname="M. Pei" initials="M." surname="Pei"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <author fullname="D. Thaler" initials="D." surname="Thaler"/>
    <author fullname="D. Wheeler" initials="D." surname="Wheeler"/>
    <date month="July" year="2023"/>
    <abstract>
      <t>A Trusted Execution Environment (TEE) is an environment that enforces the following: any code within the environment cannot be tampered with, and any data used by such code cannot be read or tampered with by any code outside the environment. This architecture document discusses the motivation for designing and standardizing a protocol for managing the lifecycle of Trusted Applications running inside such a TEE.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9397"/>
  <seriesInfo name="DOI" value="10.17487/RFC9397"/>
</reference>
<reference anchor="RFC8610">
  <front>
    <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
    <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
    <author fullname="C. Vigano" initials="C." surname="Vigano"/>
    <author fullname="C. Bormann" initials="C." surname="Bormann"/>
    <date month="June" year="2019"/>
    <abstract>
      <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8610"/>
  <seriesInfo name="DOI" value="10.17487/RFC8610"/>
</reference>

<reference anchor="I-D.ietf-suit-manifest">
   <front>
      <title>A Concise Binary Object Representation (CBOR)-based Serialization Format for the Software Updates for Internet of Things (SUIT) Manifest</title>
      <author fullname="Brendan Moran" initials="B." surname="Moran">
         <organization>Arm Limited</organization>
      </author>
      <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
      </author>
      <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname="Koen Zandberg" initials="K." surname="Zandberg">
         <organization>Inria</organization>
      </author>
      <author fullname="Øyvind Rønningstad" initials="O." surname="Rønningstad">
         <organization>Nordic Semiconductor</organization>
      </author>
      <date day="28" month="May" year="2025"/>
      <abstract>
	 <t>   This specification describes the format of a manifest.  A manifest is
   a bundle of metadata about code/data obtained by a recipient (chiefly
   the firmware for an Internet of Things (IoT) device), where to find
   the code/data, the devices to which it applies, and cryptographic
   information protecting the manifest.  Software updates and Trusted
   Invocation both tend to use sequences of common operations, so the
   manifest encodes those sequences of operations, rather than declaring
   the metadata.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-suit-manifest-34"/>
   
</reference>

<reference anchor="I-D.ietf-suit-mti">
   <front>
      <title>Cryptographic Algorithms for Internet of Things (IoT) Devices</title>
      <author fullname="Brendan Moran" initials="B." surname="Moran">
         <organization>Arm Limited</organization>
      </author>
      <author fullname="Øyvind Rønningstad" initials="O." surname="Rønningstad">
         <organization>Nordic Semiconductor</organization>
      </author>
      <author fullname="Akira Tsukamoto" initials="A." surname="Tsukamoto">
         <organization>Openchip &amp; Software Technologies, S.L.</organization>
      </author>
      <date day="22" month="July" year="2025"/>
      <abstract>
	 <t>   The SUIT manifest, as defined in &quot;A Manifest Information Model for
   Firmware Updates in Internet of Things (IoT) Devices&quot; (RFC 9124),
   provides a flexible and extensible format for describing how firmware
   and software updates are to be fetched, verified, decrypted, and
   installed on resource-constrained devices.  To ensure the security of
   these update processes, the manifest relies on cryptographic
   algorithms for functions such as digital signature verification,
   integrity checking, and confidentiality.

   This document defines cryptographic algorithm profiles for use with
   the Software Updates for Internet of Things (SUIT) manifest.  These
   profiles specify sets of algorithms to promote interoperability
   across implementations.

   Given the diversity of IoT deployments and the evolving cryptographic
   landscape, algorithm agility is essential.  This document groups
   algorithms into named profiles to accommodate varying levels of
   device capabilities and security requirements.  These profiles
   support the use cases laid out in the SUIT architecture, published in
   &quot;A Firmware Update Architecture for Internet of Things&quot; (RFC 9019).

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-suit-mti-23"/>
   
</reference>

<reference anchor="I-D.ietf-suit-trust-domains">
   <front>
      <title>Software Update for the Internet of Things (SUIT) Manifest Extensions for Multiple Trust Domain</title>
      <author fullname="Brendan Moran" initials="B." surname="Moran">
         <organization>Arm Limited</organization>
      </author>
      <author fullname="Ken Takayama" initials="K." surname="Takayama">
         <organization>SECOM CO., LTD.</organization>
      </author>
      <date day="22" month="July" year="2025"/>
      <abstract>
	 <t>   A device has more than one trust domain when it enables delegation of
   different rights to mutually distrusting entities for use for
   different purposes or Components in the context of firmware or
   software update.  This specification describes extensions to the
   Software Update for the Internet of Things (SUIT) Manifest format for
   use in deployments with multiple trust domains.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-suit-trust-domains-12"/>
   
</reference>

<reference anchor="I-D.ietf-suit-report">
   <front>
      <title>Secure Reporting of SUIT Update Status</title>
      <author fullname="Brendan Moran" initials="B." surname="Moran">
         <organization>Arm Limited</organization>
      </author>
      <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         <organization>Fraunhofer SIT</organization>
      </author>
      <date day="9" month="December" year="2025"/>
      <abstract>
	 <t>   The Software Update for the Internet of Things (SUIT) manifest
   provides a way for many different update and boot workflows to be
   described by a common format.  This document specifies a lightweight
   feedback mechanism that allows a developer in possession of a
   manifest to reconstruct the decisions made and actions performed by a
   manifest processor.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-suit-report-18"/>
   
</reference>

<reference anchor="COSE.Algorithm" target="https://www.iana.org/assignments/cose/cose.xhtml#algorithms">
  <front>
    <title>COSE Algorithms</title>
    <author >
      <organization>IANA</organization>
    </author>
    <date year="n.d."/>
  </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 title='Informative References' anchor="sec-informative-references">




<reference anchor="I-D.ietf-suit-firmware-encryption">
   <front>
      <title>Encrypted Payloads in SUIT Manifests</title>
      <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
      </author>
      <author fullname="Russ Housley" initials="R." surname="Housley">
         <organization>Vigil Security, LLC</organization>
      </author>
      <author fullname="Brendan Moran" initials="B." surname="Moran">
         <organization>Arm Limited</organization>
      </author>
      <author fullname="David Brown" initials="D." surname="Brown">
         <organization>Linaro</organization>
      </author>
      <author fullname="Ken Takayama" initials="K." surname="Takayama">
         <organization>SECOM CO., LTD.</organization>
      </author>
      <date day="8" month="December" year="2025"/>
      <abstract>
	 <t>   This document specifies techniques for encrypting software, firmware,
   machine learning models, and personalization data by utilizing the
   IETF SUIT manifest.  Key agreement is provided by ephemeral-static
   (ES) Diffie-Hellman (DH) and AES Key Wrap (AES-KW).  ES-DH uses
   public key cryptography while AES-KW uses a pre-shared key.
   Encryption of the plaintext is accomplished with conventional
   symmetric key cryptography.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-suit-firmware-encryption-26"/>
   
</reference>

<reference anchor="I-D.ietf-rats-ar4si">
   <front>
      <title>Attestation Results for Secure Interactions</title>
      <author fullname="Eric Voit" initials="E." surname="Voit">
         <organization>Cisco Systems</organization>
      </author>
      <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname="Thomas Hardjono" initials="T." surname="Hardjono">
         <organization>MIT</organization>
      </author>
      <author fullname="Thomas Fossati" initials="T." surname="Fossati">
         <organization>Linaro</organization>
      </author>
      <author fullname="Vincent Scarlata" initials="V." surname="Scarlata">
         <organization>Intel</organization>
      </author>
      <date day="15" month="August" year="2025"/>
      <abstract>
	 <t>   This document defines reusable Attestation Result information
   elements.  When these elements are offered to Relying Parties as
   Evidence, different aspects of Attester trustworthiness can be
   evaluated.  Additionally, where the Relying Party is interfacing with
   a heterogeneous mix of Attesting Environment and Verifier types,
   consistent policies can be applied to subsequent information exchange
   between each Attester and the Relying Party.

   This document also defines two serialisations of the proposed
   information model, utilising CBOR and JSON.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-rats-ar4si-09"/>
   
</reference>

<reference anchor="I-D.ietf-rats-reference-interaction-models">
   <front>
      <title>Reference Interaction Models for Remote Attestation Procedures</title>
      <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname="Michael Eckel" initials="M." surname="Eckel">
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname="Wei Pan" initials="W." surname="Pan">
         <organization>Huawei Technologies</organization>
      </author>
      <author fullname="Eric Voit" initials="E." surname="Voit">
         <organization>Cisco Systems</organization>
      </author>
      <date day="5" month="November" year="2025"/>
      <abstract>
	 <t>   This document describes interaction models for remote attestation
   procedures (RATS) [RFC9334].  Three conveying mechanisms --
   Challenge/Response, Uni-Directional, and Streaming Remote Attestation
   -- are illustrated and defined.  Analogously, a general overview
   about the information elements typically used by corresponding
   conveyance protocols are highlighted.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-rats-reference-interaction-models-15"/>
   
</reference>

<reference anchor="I-D.ietf-teep-otrp-over-http">
   <front>
      <title>HTTP Transport for Trusted Execution Environment Provisioning: Agent Initiated Communication</title>
      <author fullname="Dave Thaler" initials="D." surname="Thaler">
         <organization>Microsoft</organization>
      </author>
      <date day="27" month="March" year="2023"/>
      <abstract>
	 <t>   The Trusted Execution Environment Provisioning (TEEP) Protocol is
   used to manage code and configuration data in a Trusted Execution
   Environment (TEE).  This document specifies the HTTP transport for
   TEEP communication where a Trusted Application Manager (TAM) service
   is used to manage code and data in TEEs on devices that can initiate
   communication to the TAM.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-teep-otrp-over-http-15"/>
   
</reference>

<reference anchor="I-D.ietf-opsawg-rfc5706bis">
   <front>
      <title>Guidelines for Considering Operations and Management in IETF Specifications</title>
      <author fullname="Benoît Claise" initials="B." surname="Claise">
         <organization>Everything OPS</organization>
      </author>
      <author fullname="Joe Clarke" initials="J." surname="Clarke">
         <organization>Cisco</organization>
      </author>
      <author fullname="Adrian Farrel" initials="A." surname="Farrel">
         <organization>Old Dog Consulting</organization>
      </author>
      <author fullname="Samier Barguil" initials="S." surname="Barguil">
         <organization>Nokia</organization>
      </author>
      <author fullname="Carlos Pignataro" initials="C." surname="Pignataro">
         <organization>Blue Fern Consulting</organization>
      </author>
      <author fullname="Ran Chen" initials="R." surname="Chen">
         <organization>ZTE</organization>
      </author>
      <date day="17" month="December" year="2025"/>
      <abstract>
	 <t>   New Protocols or Protocol Extensions are best designed with due
   consideration of the functionality needed to operate and manage them.
   Retrofitting operations and management considerations is suboptimal.
   The purpose of this document is to provide guidance to authors and
   reviewers on what operational and management aspects should be
   addressed when defining New Protocols or Protocol Extensions.

   This document obsoletes RFC 5706, replacing it completely and
   updating it with new operational and management techniques and
   mechanisms.  It also updates RFC 2360 to obsolete mandatory MIB
   creation and introduces a requirement to include an &quot;Operational
   Considerations&quot; section in new RFCs in the IETF Stream.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-rfc5706bis-01"/>
   
</reference>
<reference anchor="RFC9782">
  <front>
    <title>Entity Attestation Token (EAT) Media Types</title>
    <author fullname="L. Lundblade" initials="L." surname="Lundblade"/>
    <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
    <author fullname="T. Fossati" initials="T." surname="Fossati"/>
    <date month="May" year="2025"/>
    <abstract>
      <t>The payloads used in Remote ATtestation procedureS (RATS) may require an associated media type for their conveyance, for example, when the payloads are used in RESTful APIs.</t>
      <t>This memo defines media types to be used for Entity Attestation Tokens (EATs).</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9782"/>
  <seriesInfo name="DOI" value="10.17487/RFC9782"/>
</reference>

<reference anchor="I-D.ietf-rats-concise-ta-stores">
   <front>
      <title>Concise TA Stores (CoTS)</title>
      <author fullname="Carl Wallace" initials="C." surname="Wallace">
         <organization>Red Hound Software</organization>
      </author>
      <author fullname="Russ Housley" initials="R." surname="Housley">
         <organization>Vigil Security, LLC</organization>
      </author>
      <author fullname="Thomas Fossati" initials="T." surname="Fossati">
         <organization>arm</organization>
      </author>
      <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
         <organization>arm</organization>
      </author>
      <date day="5" month="December" year="2023"/>
      <abstract>
	 <t>   Trust anchor (TA) stores may be used for several purposes in the
   Remote Attestation Procedures (RATS) architecture including verifying
   endorsements, reference values, digital letters of approval,
   attestations, or public key certificates.  This document describes a
   Concise Reference Integrity Manifest (CoRIM) extension that may be
   used to convey optionally constrained trust anchor stores containing
   optionally constrained trust anchors in support of these purposes.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-rats-concise-ta-stores-02"/>
   
</reference>
<reference anchor="RFC8915">
  <front>
    <title>Network Time Security for the Network Time Protocol</title>
    <author fullname="D. Franke" initials="D." surname="Franke"/>
    <author fullname="D. Sibold" initials="D." surname="Sibold"/>
    <author fullname="K. Teichel" initials="K." surname="Teichel"/>
    <author fullname="M. Dansarie" initials="M." surname="Dansarie"/>
    <author fullname="R. Sundblad" initials="R." surname="Sundblad"/>
    <date month="September" year="2020"/>
    <abstract>
      <t>This memo specifies Network Time Security (NTS), a mechanism for using Transport Layer Security (TLS) and Authenticated Encryption with Associated Data (AEAD) to provide cryptographic security for the client-server mode of the Network Time Protocol (NTP).</t>
      <t>NTS is structured as a suite of two loosely coupled sub-protocols. The first (NTS Key Establishment (NTS-KE)) handles initial authentication and key establishment over TLS. The second (NTS Extension Fields for NTPv4) handles encryption and authentication during NTP time synchronization via extension fields in the NTP packets, and holds all required state only on the client via opaque cookies.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8915"/>
  <seriesInfo name="DOI" value="10.17487/RFC8915"/>
</reference>
<reference anchor="RFC5934">
  <front>
    <title>Trust Anchor Management Protocol (TAMP)</title>
    <author fullname="R. Housley" initials="R." surname="Housley"/>
    <author fullname="S. Ashmore" initials="S." surname="Ashmore"/>
    <author fullname="C. Wallace" initials="C." surname="Wallace"/>
    <date month="August" year="2010"/>
    <abstract>
      <t>This document describes a transport independent protocol for the management of trust anchors (TAs) and community identifiers stored in a trust anchor store. The protocol makes use of the Cryptographic Message Syntax (CMS), and a digital signature is used to provide integrity protection and data origin authentication. The protocol can be used to manage trust anchor stores containing trust anchors represented as Certificate, TBSCertificate, or TrustAnchorInfo objects. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5934"/>
  <seriesInfo name="DOI" value="10.17487/RFC5934"/>
</reference>
<reference anchor="RFC9334">
  <front>
    <title>Remote ATtestation procedureS (RATS) Architecture</title>
    <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
    <author fullname="D. Thaler" initials="D." surname="Thaler"/>
    <author fullname="M. Richardson" initials="M." surname="Richardson"/>
    <author fullname="N. Smith" initials="N." surname="Smith"/>
    <author fullname="W. Pan" initials="W." surname="Pan"/>
    <date month="January" year="2023"/>
    <abstract>
      <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9334"/>
  <seriesInfo name="DOI" value="10.17487/RFC9334"/>
</reference>
<reference anchor="RFC9124">
  <front>
    <title>A Manifest Information Model for Firmware Updates in Internet of Things (IoT) Devices</title>
    <author fullname="B. Moran" initials="B." surname="Moran"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
    <date month="January" year="2022"/>
    <abstract>
      <t>Vulnerabilities with Internet of Things (IoT) devices have raised the need for a reliable and secure firmware update mechanism that is also suitable for constrained devices. Ensuring that devices function and remain secure over their service lifetime requires such an update mechanism to fix vulnerabilities, update configuration settings, and add new functionality.</t>
      <t>One component of such a firmware update is a concise and machine-processable metadata document, or manifest, that describes the firmware image(s) and offers appropriate protection. This document describes the information that must be present in the manifest.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9124"/>
  <seriesInfo name="DOI" value="10.17487/RFC9124"/>
</reference>



    </references>

</references>


<?line 2328?>

<section numbered="no" anchor="a-contributors"><name>A. Contributors</name>

<t>We would like to thank Brian Witten (Symantec), Tyler Kim (Solacia), Nick Cook (Arm), and  Minho Yoo (IoTrust) for their contributions
to the Open Trust Protocol (OTrP), which influenced the design of this specification.</t>

</section>
<section numbered="no" anchor="b-acknowledgements"><name>B. Acknowledgements</name>

<t>We would like to thank Eve Schooler for the suggestion of the protocol name.</t>

<t>We would like to thank Kohei Isobe (TRASIO/SECOM), Ken Takayama (SECOM),
Kuniyasu Suzaki (TRASIO/AIST), Tsukasa Oi (TRASIO), and Yuichi Takita (SECOM)
for their valuable implementation feedback.</t>

<t>We would also like to thank Carsten Bormann and Henk Birkholz for their help with the CDDL.</t>

<t>Finally, we would like to thank the following IESG members for their review feedback: Sean Turner, Paul Kyzivat, Scott Hollenbeck, Luigi Iannone, Paul Wouters, and Yoshifumi Nishida</t>

</section>
<section numbered="no" anchor="c-complete-cddl"><name>C. Complete CDDL</name>

<t>Valid TEEP messages adhere to the following CDDL data definitions,
except that <spanx style="verb">SUIT_Envelope</spanx> and <spanx style="verb">SUIT_Component_Identifier</spanx> are
specified in <xref target="I-D.ietf-suit-manifest"/>.</t>

<t>This section is informative and merely summarizes the normative CDDL
snippets in the body of this document.</t>

<figure><sourcecode type="CDDL"><![CDATA[
teep-message = $teep-message-type .within teep-message-framework

teep-message-framework = [
  type: $teep-type / $teep-type-extension,
  options: { * teep-option },
  * any; further elements, e.g., for data-item-requested
]

teep-option = (uint => any)

; messages defined below:
$teep-message-type /= query-request
$teep-message-type /= query-response
$teep-message-type /= update
$teep-message-type /= success
$teep-message-type /= error

; message type numbers, in one byte which could take a
; number from 0 to 23
$teep-type /= (0..23)
TEEP-TYPE-query-request = 1
TEEP-TYPE-query-response = 2
TEEP-TYPE-update = 3
TEEP-TYPE-success = 5
TEEP-TYPE-error = 6
; value 4 is reserved for future use; registries are
; intentionally sparse and values are not required to be contiguous.

query-request = [
  type: TEEP-TYPE-query-request,
  options: {
    ? token => bstr .size (8..64),
    ? supported-freshness-mechanisms => [ + $freshness-mechanism ],
    ? challenge => bstr .size (8..512),
    ? versions => [ + version ],
    ? attestation-payload-format => text,
    ? attestation-payload => bstr,
    ? suit-reports => [ + bstr .cbor
             (SUIT_Report_Protected / SUIT_Report_Unprotected) ],
    * $$query-request-extensions,
    * $$teep-option-extensions
  },
  supported-teep-cipher-suites: [ + $teep-cipher-suite ],
  supported-suit-cose-profiles: [ + $suit-cose-profile ],
  data-item-requested: uint .bits data-item-requested
]

version = uint .size 4
ext-info = uint .size 4

; data items as bitmaps
data-item-requested = &(
  attestation: 0,
  trusted-components: 1,
  extensions: 2,
  suit-reports: 3,
)

; teep-cipher-suites
$teep-cipher-suite /= teep-cipher-suite-sign1-ed25519
$teep-cipher-suite /= teep-cipher-suite-sign1-esp256

;The following two cipher suites have only a single operation each.
;Other cipher suites may be defined to have multiple operations.
;It is mandatory for TAM to support them, and optional
;to support any additional ones that use COSE_Sign_Tagged, or other
;signing, encryption, or MAC algorithms.

teep-operation-sign1-ed25519 = [ cose-sign1, cose-alg-ed25519 ]
teep-operation-sign1-esp256  = [ cose-sign1, cose-alg-esp256 ]

teep-cipher-suite-sign1-ed25519 = [ teep-operation-sign1-ed25519 ]
teep-cipher-suite-sign1-esp256  = [ teep-operation-sign1-esp256 ]

;Mandatory for TAM and TEEP Agent to support the following COSE
;operations, and optional to support additional ones such as
;COSE_Sign_Tagged, COSE_Encrypt0_Tagged, etc.

cose-sign1 = 18      ; CoAP Content-Format value

;Mandatory for TAM to support the following, and optional to
;implement any additional algorithms from the IANA COSE Algorithms
;registry.

cose-alg-esp256  = -9   ; ECDSA using P-256 curve and SHA-256
cose-alg-ed25519 = -19  ; EdDSA using Ed25519 curve

; suit-cose-profile
$suit-cose-profile /= suit-sha256-esp256-ecdh-a128ctr
$suit-cose-profile /= suit-sha256-ed25519-ecdh-a128ctr
$suit-cose-profile /= suit-sha256-esp256-ecdh-a128gcm
$suit-cose-profile /= suit-sha256-ed25519-ecdh-chacha-poly

; freshness-mechanisms
FRESHNESS_NONCE = 0
FRESHNESS_TIMESTAMP = 1

$freshness-mechanism /= FRESHNESS_NONCE
$freshness-mechanism /= FRESHNESS_TIMESTAMP

query-response = [
  type: TEEP-TYPE-query-response,
  options: {
    ? token => bstr .size (8..64),
    ? selected-version => version,
    ? attestation-payload-format => text,
    ? attestation-payload => bstr,
    ? suit-reports => [ + bstr .cbor
             (SUIT_Report_Protected / SUIT_Report_Unprotected) ],
    ? tc-list => [ + system-property-claims ],
    ? requested-tc-list => [ + requested-tc-info ],
    ? unneeded-manifest-list => [ + SUIT_Component_Identifier ],
    ? ext-list => [ + ext-info ],
    * $$query-response-extensions,
    * $$teep-option-extensions
  }
]

requested-tc-info = {
  component-id => SUIT_Component_Identifier,
  ? tc-manifest-sequence-number => uint,
  ? have-binary => bool
}

update = [
  type: TEEP-TYPE-update,
  options: {
    ? token => bstr .size (8..64),
    ? unneeded-manifest-list => [ + SUIT_Component_Identifier ],
    ? manifest-list => [ + bstr .cbor SUIT_Envelope ],
    ? attestation-payload-format => text,
    ? attestation-payload => bstr,
    ? err-code => err-code-values,
    ? err-msg => text .size (1..128),
    ? err-lang => text .size (1..35),
    * $$update-extensions,
    * $$teep-option-extensions
  }
]

success = [
  type: TEEP-TYPE-success,
  options: {
    ? token => bstr .size (8..64),
    ? msg => text .size (1..128),
    ? suit-reports => [ + bstr .cbor
             (SUIT_Report_Protected / SUIT_Report_Unprotected) ],
    * $$success-extensions,
    * $$teep-option-extensions
  }
]

error = [
  type: TEEP-TYPE-error,
  options: {
     ? token => bstr .size (8..64),
     ? err-msg => text .size (1..128),
     ? err-lang => text .size (1..35),
     ? supported-teep-cipher-suites => [ + $teep-cipher-suite ],
     ? supported-freshness-mechanisms => [ + $freshness-mechanism ],
     ? supported-suit-cose-profiles => [ + $suit-cose-profile ],
     ? challenge => bstr .size (8..512),
     ? versions => [ + version ],
     ? suit-reports => [ + bstr .cbor
             (SUIT_Report_Protected / SUIT_Report_Unprotected) ],
     * $$error-extensions,
     * $$teep-option-extensions
  },
  err-code: err-code-values
]

; The err-code parameter, uint (1..23)
ERR_PERMANENT_ERROR = 1
ERR_UNSUPPORTED_EXTENSION = 2
ERR_UNSUPPORTED_FRESHNESS_MECHANISMS = 3
ERR_UNSUPPORTED_MSG_VERSION = 4
ERR_UNSUPPORTED_CIPHER_SUITES = 5
ERR_BAD_CERTIFICATE = 6
ERR_ATTESTATION_REQUIRED = 7
ERR_UNSUPPORTED_SUIT_REPORT = 8
ERR_CERTIFICATE_EXPIRED = 9
ERR_TEMPORARY_ERROR = 10
ERR_MANIFEST_PROCESSING_FAILED = 17

err-code-values = ERR_PERMANENT_ERROR
         / ERR_UNSUPPORTED_EXTENSION
         / ERR_UNSUPPORTED_FRESHNESS_MECHANISMS
         / ERR_UNSUPPORTED_MSG_VERSION
         / ERR_UNSUPPORTED_CIPHER_SUITES
         / ERR_BAD_CERTIFICATE
         / ERR_ATTESTATION_REQUIRED
         / ERR_UNSUPPORTED_SUIT_REPORT
         / ERR_CERTIFICATE_EXPIRED
         / ERR_TEMPORARY_ERROR
         / ERR_MANIFEST_PROCESSING_FAILED

; labels of mapkey for teep message parameters, uint (0..23)
supported-teep-cipher-suites = 1
challenge = 2
versions = 3
supported-suit-cose-profiles = 4
selected-version = 6
attestation-payload = 7
tc-list = 8
ext-list = 9
manifest-list = 10
msg = 11
err-msg = 12
attestation-payload-format = 13
requested-tc-list = 14
unneeded-manifest-list = 15
component-id = 16
tc-manifest-sequence-number = 17
have-binary = 18
suit-reports = 19
token = 20
supported-freshness-mechanisms = 21
err-lang = 22
err-code = 23
]]></sourcecode></figure>

</section>
<section numbered="no" anchor="d-examples-of-diagnostic-notation-and-binary-representation"><name>D. Examples of Diagnostic Notation and Binary Representation</name>

<t>This section includes some examples with the following assumptions:</t>

<t><list style="symbols">
  <t>The device will have two TCs with the following SUIT Component Identifiers:
  <list style="symbols">
      <t>[ 0x000102030405060708090a0b0c0d0e0f ]</t>
      <t>[ 0x100102030405060708090a0b0c0d0e0f ]</t>
    </list></t>
  <t>SUIT manifest-list is set empty only for example purposes (see Appendix E
for actual manifest examples)</t>
</list></t>

<section numbered="no" anchor="d1-queryrequest-message"><name>D.1. QueryRequest Message</name>

<section numbered="no" anchor="d11-cbor-diagnostic-notation"><name>D.1.1. CBOR Diagnostic Notation</name>

<figure><artwork><![CDATA[
/ query-request = /
[
  / type: / 1 / TEEP-TYPE-query-request /,
  / options: /
  {
    / token / 20 : h'A0A1A2A3A4A5A6A7A8A9AAABACADAEAF',
    / versions / 3 : [ 0 ]  / 0 is current TEEP Protocol /
  },
  / supported-teep-cipher-suites: / [
    [ [ 18, -9 ] ] / Sign1 using ESP256 /,
    [ [ 18, -19 ] ] / Sign1 using Ed25519 /
  ],
  / supported-suit-cose-profiles: / [
    [-16, -9, -29, -65534] / suit-sha256-esp256-ecdh-a128ctr /,
    [-16, -19, -29, -65534] / suit-sha256-ed25519-ecdh-a128ctr /,
    [-16, -9, -29, 1]      / suit-sha256-esp256-ecdh-a128gcm /,
    [-16, -19, -29, 24]     / suit-sha256-ed25519-ecdh-chacha-poly /
  ],
  / data-item-requested: / 3 / attestation | trusted-components /
]
]]></artwork></figure>

</section>
<section numbered="no" anchor="d12-cbor-binary-representation"><name>D.1.2. CBOR Binary Representation</name>

<figure><artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

85                  # array(5)
   01               # unsigned(1) / TEEP-TYPE-query-request /
   A2               # map(2)
      14            # unsigned(20) / token: /
      50            # bytes(16)
         A0A1A2A3A4A5A6A7A8A9AAABACADAEAF
      03            # unsigned(3) / versions: /
      81            # array(1) / [ 0 ] /
         00         # unsigned(0)
   82               # array(2) / supported-teep-cipher-suites /
      81            # array(1)
         82         # array(2)
            12      # unsigned(18) / cose-sign1 /
            28      # negative(8) / -9 = cose-alg-esp256 /
      81            # array(1)
         82         # array(2)
            12      # unsigned(18) / cose-sign1 /
            32      # negative(18) / -19 = cose-alg-ed25519 /
   84               # array(4) / supported-suit-cose-profiles /
      84            # array(4) / suit-sha256-esp256-ecdh-a128ctr /,
         2f         # negative(15) / -16 = SHA-256 /
         28         # negative(8) / -9 = ESP256 /
         38 1C      # negative(28) / -29 = ECDH-ES + A128KW /
         39 fffd    # negative(65533) / -65534 = A128CTR /
      84            # array(4) / suit-sha256-ed25519-ecdh-a128ctr /
         2f         # negative(15) / -16 = SHA-256 /
         32         # negative(18) / -19 = Ed25519 /
         38 1C      # negative(28) / -29 = ECDH-ES + A128KW /
         39 fffd    # negative(65533) / -65534 = A128CTR /
      84            # array(4) / suit-sha256-esp256-ecdh-a128gcm /
         2f         # negative(15) / -16 = SHA-256 /
         28         # negative(6) / -9 = ESP256 /
         38 1C      # negative(28) / -29 = ECDH-ES + A128KW /
         01         # unsigned(1) / A128GCM /
      84            # array(4) / suit-sha256-ed25519-ecdh-chacha-\
                                                               poly /
         2f         # negative(15) / -16 = SHA-256 /
         32         # negative(18) / Ed25519 /
         38 1C      # negative(28) / -29 = ECDH-ES + A128KW /
         18 18      # unsigned(24) / 24 = ChaCha20/Poly1305 /
   03               # unsigned(3) / attestation | trusted-\
                                                         components /
]]></artwork></figure>

</section>
</section>
<section numbered="no" anchor="d2-entity-attestation-token"><name>D.2. Entity Attestation Token</name>

<t>This is shown below in CBOR diagnostic form.  Only the payload signed by
COSE is shown.</t>

<section numbered="no" anchor="d21-cbor-diagnostic-notation"><name>D.2.1. CBOR Diagnostic Notation</name>

<figure><artwork><![CDATA[
/ eat-claim-set = /
{
    / cnf /          8: {
                         / kid /
                         3 : h'ba7816bf8f01cfea414140de5dae2223'
                             h'b00361a396177a9cb410ff61f20015ad'
                        },
    / eat_nonce /   10: h'948f8860d13a463e8e',
    / ueid /       256: h'0198f50a4ff6c05861c8860d13a638ea',
    / oemid /      258: h'894823', / IEEE OUI format OEM ID /
    / hwmodel /    259: h'549dcecc8b987c737b44e40f7c635ce8'
                          / Hash of chip model name /,
    / hwversion /  260: ["1.3.4", 1], / Multipart numeric  /
    / manifests /  273: [
                          [ 60,
                             / application/cbor, TO BE REPLACED /
                             / with the format value for a /
                            / SUIT_Reference once one is allocated /
                            {
                              / SUIT_Reference /
                              / suit-report-manifest-uri /
                              1: "https://example.com/manifest.cbor",
                              / suit-report-manifest-digest /
                              0:[
                                / algorithm-id /
                                -16 / "sha256" /,
                                / digest-bytes /
                                h'a7fd6593eac32eb4be578278e6540c5c'
                                h'09cfd7d4d234973054833b2b93030609'
                                ]
                            }
                          ]
                        ]
}
]]></artwork></figure>

</section>
</section>
<section numbered="no" anchor="d3-queryresponse-message"><name>D.3. QueryResponse Message</name>

<section numbered="no" anchor="d31-cbor-diagnostic-notation"><name>D.3.1. CBOR Diagnostic Notation</name>

<figure><artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

/ query-response = /
[
  / type: / 2 / TEEP-TYPE-query-response /,
  / options: /
  {
    / token / 20 : h'A0A1A2A3A4A5A6A7A8A9AAABACADAEAF',
    / selected-version / 6 : 0,
    / attestation-payload / 7 : h'' / empty only for example \
                                                           purpose /,
    / tc-list / 8 : [
      {
        / system-component-id / 0 : [ h'\
                                   0102030405060708090A0B0C0D0E0F' ],
        / suit-parameter-image-digest / 3: << [
          / suit-digest-algorithm-id / -16 / SHA256 /,
          / suit-digest-bytes / h'\
    A7FD6593EAC32EB4BE578278E6540C5C09CFD7D4D234973054833B2B93030609'
            / SHA256 digest of tc binary /
        ] >>
      }
    ]
  }
]
]]></artwork></figure>

</section>
<section numbered="no" anchor="d32-cbor-binary-representation"><name>D.3.2. CBOR Binary Representation</name>

<figure><artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

82                  # array(2)
   02               # unsigned(2) / TEEP-TYPE-query-response /
   A4               # map(4)
      14            # unsigned(20) / token: /
      50            # bytes(16)
         A0A1A2A3A4A5A6A7A8A9AAABACADAEAF
      06            # unsigned(6) / selected-version: /
      00            # unsigned(0)
      07            # unsigned(7) / attestation-payload: /
      40            # bytes(0)
                    # ""
      08            # unsigned(8) / tc-list: /
      81            # array(1)
         A2         # map(2)
            00      # unsigned(0) / system-component-id: /
            81      # array(1)
               4F   # bytes(15)
                  0102030405060708090A0B0C0D0E0F
            03      # unsigned(3) / suit-parameter-image-digest: /
            58 24   # bytes(36)
               \
822F5820A7FD6593EAC32EB4BE578278E6540C5C09CFD7D4D234973054833B2B9303\
                                                                 0609
]]></artwork></figure>

</section>
</section>
<section numbered="no" anchor="d4-update-message"><name>D.4. Update Message</name>

<section numbered="no" anchor="d41-cbor-diagnostic-notation"><name>D.4.1. CBOR Diagnostic Notation</name>

<figure><artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

/ update = /
[
  / type: / 3 / TEEP-TYPE-update /,
  / options: /
  {
    / token / 20 : h'A0A1A2A3A4A5A6A7A8A9AAABACADAEAF',
    / manifest-list / 10 : [
      <<
        / SUIT_Envelope / {
          / suit-authentication-wrapper / 2: << [
            << [
              / suit-digest-algorithm-id: / -16 / suit-cose-alg-\
                                                            sha256 /,
              / suit-digest-bytes: / h'\
    DB601ADE73092B58532CA03FBB663DE49532435336F1558B49BB622726A2FEDD'
            ] >>,
            << / COSE_Sign1_Tagged / 18( [
              / protected: / << {
                / algorithm-id / 1: -7 / ES256 /
              } >>,
              / unprotected: / {},
              / payload: / null,
              / signature: / h'\
5B2D535A2B6D5E3C585C1074F414DA9E10BD285C99A33916DADE3ED38812504817AC\
        48B62B8E984EC622785BD1C411888BE531B1B594507816B201F6F28579A4'
            ] ) >>
          ] >>,
          / suit-manifest / 3: << {
            / suit-manifest-version / 1: 1,
            / suit-manifest-sequence-number / 2: 3,
            / suit-common / 3: << {
              / suit-components / 2: [
                [
                  h'544545502D446576696365',           / "TEEP-\
                                                            Device" /
                  h'5365637572654653',                 / "SecureFS" /
                  h'8D82573A926D4754935332DC29997F74', / tc-uuid /
                  h'7461'                              / "ta" /
                ]
              ],
              / suit-common-sequence / 4: << [
                / suit-directive-override-parameters / 20, {
                  / suit-parameter-vendor-identifier / 1: h'\
                                   C0DDD5F15243566087DB4F5B0AA26C2F',
                  / suit-parameter-class-identifier / 2: h'\
                                   DB42F7093D8C55BAA8C5265FC5820F4E',
                  / suit-parameter-image-digest / 3: << [
                    / suit-digest-algorithm-id: / -16 / suit-cose-\
                                                        alg-sha256 /,
                    / suit-digest-bytes: / h'\
    8CF71AC86AF31BE184EC7A05A411A8C3A14FD9B77A30D046397481469468ECE8'
                  ] >>,
                  / suit-parameter-image-size / 14: 20
                },
                / suit-condition-vendor-identifier / 1, 15,
                / suit-condition-class-identifier / 2, 15
              ] >>
            } >>,
            / suit-install / 9: << [
              / suit-directive-override-parameters / 20, {
                / suit-parameter-uri / 21: "https://example.org/\
                             8d82573a-926d-4754-9353-32dc29997f74.ta"
              },
              / suit-directive-fetch / 21, 15,
              / suit-condition-image-match / 3, 15
            ] >>
          } >>
        }
      >>
    ] / array of bstr wrapped SUIT_Envelope /
  }
]
]]></artwork></figure>

</section>
<section numbered="no" anchor="d42-cbor-binary-representation"><name>D.4.2. CBOR Binary Representation</name>

<figure><artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

82                  # array(2)
   03               # unsigned(3) / TEEP-TYPE-update /
   A2               # map(2)
      14            # unsigned(20) / token: /
      50            # bytes(16)
         A0A1A2A3A4A5A6A7A8A9AAABACADAEAF
      0A            # unsigned(10) / manifest-list: /
      81            # array(1)
         59 014E    # bytes(336)
            A2025873825824822F5820DB601ADE73092B58532CA03FBB663DE495
            \
         32435336F1558B49BB622726A2FEDD584AD28443A10126A0F658405B2D53
            \
         5A2B6D5E3C585C1074F414DA9E10BD285C99A33916DADE3ED38812504817
            \
         AC48B62B8E984EC622785BD1C411888BE531B1B594507816B201F6F28579
            \
         A40358D4A401010203035884A20281844B544545502D4465766963654853
            \
         65637572654653508D82573A926D4754935332DC29997F74427461045854
            \
         8614A40150C0DDD5F15243566087DB4F5B0AA26C2F0250DB42F7093D8C55
            \
         BAA8C5265FC5820F4E035824822F58208CF71AC86AF31BE184EC7A05A411
            \
         A8C3A14FD9B77A30D046397481469468ECE80E14010F020F0958458614A1
            \
         15783B68747470733A2F2F6578616D706C652E6F72672F38643832353733
            \
         612D393236642D343735342D393335332D3332646332393939376637342E
            7461150F030F
]]></artwork></figure>

</section>
</section>
<section numbered="no" anchor="d5-success-message"><name>D.5. Success Message</name>

<section numbered="no" anchor="d51-cbor-diagnostic-notation"><name>D.5.1. CBOR Diagnostic Notation</name>

<figure><artwork><![CDATA[
/ teep-success = /
[
  / type: / 5 / TEEP-TYPE-teep-success /,
  / options: /
  {
    / token / 20 : h'A0A1A2A3A4A5A6A7A8A9AAABACADAEAF'
  }
]
]]></artwork></figure>

</section>
<section numbered="no" anchor="d52-cbor-binary-representation"><name>D.5.2. CBOR Binary Representation</name>

<figure><artwork><![CDATA[
82                  # array(2)
   05               # unsigned(5) / TEEP-TYPE-teep-success /
   A1               # map(1)
      14            # unsigned(20) / token: /
      50            # bytes(16)
         A0A1A2A3A4A5A6A7A8A9AAABACADAEAF
]]></artwork></figure>

</section>
</section>
<section numbered="no" anchor="d6-error-message"><name>D.6. Error Message</name>

<section numbered="no" anchor="d61-cbor-diagnostic-notation"><name>D.6.1. CBOR Diagnostic Notation</name>

<figure><artwork><![CDATA[
/ teep-error = /
[
  / type: / 6 / TEEP-TYPE-teep-error /,
  / options: /
  {
    / token / 20 : h'A0A1A2A3A4A5A6A7A8A9AAABACADAEAF',
    / err-msg / 12 : "disk-full"
  },
  / err-code: / 17 / ERR_MANIFEST_PROCESSING_FAILED /
]
]]></artwork></figure>

</section>
<section numbered="no" anchor="d62-cbor-binary-representation"><name>D.6.2. CBOR binary Representation</name>

<figure><artwork><![CDATA[
83                  # array(3)
   06               # unsigned(6) / TEEP-TYPE-teep-error /
   A2               # map(2)
      14            # unsigned(20) / token: /
      50            # bytes(16)
         A0A1A2A3A4A5A6A7A8A9AAABACADAEAF
      0C            # unsigned(12) / err-msg: /
      69            # text(9)
         6469736B2D66756C6C # "disk-full"
   11               # unsigned(17) / ERR_MANIFEST_PROCESSING_FAILED /
]]></artwork></figure>

</section>
</section>
</section>
<section numbered="no" anchor="suit-examples"><name>E. Examples of SUIT Manifests</name>

<t>This section shows some examples of SUIT manifests described in <xref target="update-msg-def"/>.</t>

<t>The examples are signed using the following ECDSA secp256r1 key with SHA256 as the digest function.</t>

<t>COSE_Sign1 Cryptographic Key:</t>

<figure><artwork><![CDATA[
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgApZYjZCUGLM50VBC
CjYStX+09jGmnyJPrpDLTz/hiXOhRANCAASEloEarguqq9JhVxie7NomvqqL8Rtv
P+bitWWchdvArTsfKktsCYExwKNtrNHXi9OB3N+wnAUtszmR23M4tKiW
-----END PRIVATE KEY-----
]]></artwork></figure>

<t>The corresponding public key can be used to verify these examples:</t>

<figure><artwork><![CDATA[
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhJaBGq4LqqvSYVcYnuzaJr6qi/Eb
bz/m4rVlnIXbwK07HypLbAmBMcCjbazR14vTgdzfsJwFLbM5kdtzOLSolg==
-----END PUBLIC KEY-----
]]></artwork></figure>

<section numbered="no" anchor="suit-uri"><name>Example 1: SUIT Manifest pointing to URI of the Trusted Component Binary</name>

<section numbered="no" anchor="cbor-diagnostic-notation-of-suit-manifest"><name>CBOR Diagnostic Notation of SUIT Manifest</name>

<figure><artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

/ SUIT_Envelope / {
  / authentication-wrapper / 2: << [
    << [
      / digest-algorithm-id: / -16 / SHA256 /,
      / digest-bytes: / h'\
    B39B52B0B747EA79588C190F567BFC2C8437BA8A73F7EA983182E79F0148D59B'
    ] >>,
    << / COSE_Sign1_Tagged / 18([
      / protected: / << {
        / algorithm-id / 1: -9 / ESP256 /
      } >>,
      / unprotected: / {},
      / payload: / null,
      / signature: / h'\
B35BF8C5276ACF6131F4661E76A7F19945FF928A4B7D79572583E857C695DFD48725\
        C1B8253EF6E805A9EEE9262CAAB61A09DF69CCBD996F2431BC2515EB59FF'
    ]) >>
  ] >>,
  / manifest / 3: << {
    / manifest-version / 1: 1,
    / manifest-sequence-number / 2: 3,
    / common / 3: << {
      / components / 2: [
        [
           'TEEP-Device',
           'SecureFS',
          h'8D82573A926D4754935332DC29997F74', / tc-uuid /
           'ta'
        ]
      ],
      / shared-sequence / 4: << [
        / directive-override-parameters / 20, {
          / parameter-vendor-identifier / 1: h'\
                                   C0DDD5F15243566087DB4F5B0AA26C2F',
          / parameter-class-identifier / 2: h'\
                                   DB42F7093D8C55BAA8C5265FC5820F4E',
          / parameter-image-digest / 3: << [
            / digest-algorithm-id: / -16 / SHA256 /,
            / digest-bytes: / h'\
    8CF71AC86AF31BE184EC7A05A411A8C3A14FD9B77A30D046397481469468ECE8'
          ] >>,
          / parameter-image-size / 14: 20
        },
        / condition-vendor-identifier / 1, 15,
        / condition-class-identifier / 2, 15
      ] >>
    } >>,
    / manifest-component-id / 5: [
       'TEEP-Device',
       'SecureFS',
      h'8D82573A926D4754935332DC29997F74',  / tc-uuid /
       'suit'
    ],
    / install / 20: << [
      / directive-override-parameters / 20, {
        / parameter-uri / 21: "https://example.org/8d82573a-926d-\
                                           4754-9353-32dc29997f74.ta"
      },
      / directive-fetch / 21, 15,
      / condition-image-match / 3, 15
    ] >>,
    / uninstall / 24: << [
      / directive-unlink / 33, 15
    ] >>
  } >>
}
]]></artwork></figure>

</section>
<section numbered="no" anchor="cbor-binary-in-hex"><name>CBOR Binary in Hex</name>

<figure><artwork><![CDATA[
A2025873825824822F5820B39B52B0B747EA79588C190F567BFC2C8437BA
8A73F7EA983182E79F0148D59B584AD28443A10128A0F65840B35BF8C527
6ACF6131F4661E76A7F19945FF928A4B7D79572583E857C695DFD48725C1
B8253EF6E805A9EEE9262CAAB61A09DF69CCBD996F2431BC2515EB59FF03
590108A601010203035884A20281844B544545502D446576696365485365
637572654653508D82573A926D4754935332DC29997F7442746104585486
14A40150C0DDD5F15243566087DB4F5B0AA26C2F0250DB42F7093D8C55BA
A8C5265FC5820F4E035824822F58208CF71AC86AF31BE184EC7A05A411A8
C3A14FD9B77A30D046397481469468ECE80E14010F020F05844B54454550
2D446576696365485365637572654653508D82573A926D4754935332DC29
997F7444737569741458458614A115783B68747470733A2F2F6578616D70
6C652E6F72672F38643832353733612D393236642D343735342D39333533
2D3332646332393939376637342E7461150F030F1818448218210F
]]></artwork></figure>

</section>
</section>
<section numbered="no" anchor="suit-integrated"><name>Example 2: SUIT Manifest including the Trusted Component Binary</name>

<section numbered="no" anchor="cbor-diagnostic-notation-of-suit-manifest-1"><name>CBOR Diagnostic Notation of SUIT Manifest</name>

<figure><artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

/ SUIT_Envelope / {
  / authentication-wrapper / 2: << [
    << [
      / digest-algorithm-id: / -16 / SHA256 /,
      / digest-bytes: / h'\
    CEDB0457952F7DD0A33FA4692F73BC833A6A6E2300B16F6605993F0192E3F219'
    ] >>,
    << / COSE_Sign1_Tagged / 18([
      / protected: / << {
        / algorithm-id / 1: -9 / ESP256 /
      } >>,
      / unprotected: / {},
      / payload: / null,
      / signature: / h'\
6A9F4D3DE3B8BC49A47F12E13A3EF76C5E2B4BB1D8EE6EFFA659220A6D8D164B3926\
        A722220283A9C7B48DA012A188F0C6F98F3962613E63CD4C597D4C01F56C'
    ]) >>
  ] >>,
  / manifest / 3: << {
    / manifest-version / 1: 1,
    / manifest-sequence-number / 2: 3,
    / common / 3: << {
      / components / 2: [
        [
           'TEEP-Device',
           'SecureFS',
          h'8D82573A926D4754935332DC29997F74', / tc-uuid /
           'ta'
        ]
      ],
      / shared-sequence / 4: << [
        / directive-override-parameters / 20, {
          / parameter-vendor-identifier / 1: h'\
                                   C0DDD5F15243566087DB4F5B0AA26C2F',
          / parameter-class-identifier / 2: h'\
                                   DB42F7093D8C55BAA8C5265FC5820F4E',
          / parameter-image-digest / 3: << [
            / digest-algorithm-id: / -16 / SHA256 /,
            / digest-bytes: / h'\
    8CF71AC86AF31BE184EC7A05A411A8C3A14FD9B77A30D046397481469468ECE8'
          ] >>,
          / parameter-image-size / 14: 20
        },
        / condition-vendor-identifier / 1, 15,
        / condition-class-identifier / 2, 15
      ] >>
    } >>,
    / manifest-component-id / 5: [
       'TEEP-Device',
       'SecureFS',
      h'8D82573A926D4754935332DC29997F74',  / tc-uuid /
       'suit'
    ],
    / install / 20: << [
      / directive-override-parameters / 20, {
        / uri / 21: "#tc"
      },
      / directive-fetch / 21, 15,
      / condition-image-match / 3, 15
    ] >>,
    / uninstall / 24: << [
      / directive-unlink / 33, 15
    ] >>
  } >>,
  "#tc" : 'Hello, Secure World!'
}
]]></artwork></figure>

</section>
<section numbered="no" anchor="cbor-binary-in-hex-1"><name>CBOR Binary in Hex</name>

<figure><artwork><![CDATA[
A3025873825824822F5820CEDB0457952F7DD0A33FA4692F73BC833A6A6E
2300B16F6605993F0192E3F219584AD28443A10128A0F658406A9F4D3DE3
B8BC49A47F12E13A3EF76C5E2B4BB1D8EE6EFFA659220A6D8D164B3926A7
22220283A9C7B48DA012A188F0C6F98F3962613E63CD4C597D4C01F56C03
58CEA601010203035884A20281844B544545502D44657669636548536563
7572654653508D82573A926D4754935332DC29997F744274610458548614
A40150C0DDD5F15243566087DB4F5B0AA26C2F0250DB42F7093D8C55BAA8
C5265FC5820F4E035824822F58208CF71AC86AF31BE184EC7A05A411A8C3
A14FD9B77A30D046397481469468ECE80E14010F020F05844B544545502D
446576696365485365637572654653508D82573A926D4754935332DC2999
7F744473756974144C8614A11563237463150F030F1818448218210F6323
74635448656C6C6F2C2053656375726520576F726C6421
]]></artwork></figure>

</section>
</section>
<section numbered="no" anchor="suit-personalization"><name>Example 3: Supplying Personalization Data for Trusted Component Binary</name>

<t>This example uses the following parameters:</t>

<t><list style="symbols">
  <t>SUIT Profile: suit-sha256-esp256-ecdh-a128ctr (see <xref target="I-D.ietf-suit-mti"/> Section 3.2)
  <list style="symbols">
      <t>Algorithm for payload encryption: A128CTR (-65534)</t>
      <t>Algorithm for key wrap: ECDH-ES + A128KW (-29)</t>
    </list></t>
  <t>KEK (Receiver's Private Key):
  <list style="symbols">
      <t>kty: EC2</t>
      <t>crv: P-256</t>
      <t>x: h'5886CD61DD875862E5AAA820E7A15274
C968A9BC96048DDCACE32F50C3651BA3'</t>
      <t>y: h'9EED8125E932CD60C0EAD3650D0A485C
F726D378D1B016ED4298B2961E258F1B'</t>
      <t>d: h'60FE6DD6D85D5740A5349B6F91267EEA
C5BA81B8CB53EE249E4B4EB102C476B3'</t>
    </list></t>
  <t>COSE_KDF_Context
  <list style="symbols">
      <t>AlgorithmID: -3 (A128KW)</t>
      <t>SuppPubInfo
      <list style="symbols">
          <t>keyDataLength: 128</t>
          <t>protected: &lt;&lt; {/ alg / 1: -29 / ECDH-ES+A128KW / } &gt;&gt;</t>
          <t>other: 'SUIT Payload Encryption'</t>
        </list></t>
    </list></t>
</list></t>

<section numbered="no" anchor="cbor-diagnostic-notation-of-suit-manifest-2"><name>CBOR Diagnostic Notation of SUIT Manifest</name>

<figure><artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

/ SUIT_Envelope / {
  / authentication-wrapper / 2: << [
    << [
      / digest-algorithm-id: / -16 / SHA256 /,
      / digest-bytes: / h'\
    506D4796D65AE599EE0A3F7D123ED6819E0FA1A324A5DE547F6D7F50D465508A'
    ] >>,
    << / COSE_Sign1_Tagged / 18([
      / protected: / << {
        / algorithm-id / 1: -9 / ESP256 /
      } >>,
      / unprotected: / {},
      / payload: / null,
      / signature: / h'\
9AF4896B66B0642122C5317D1D8A81BB4CE3C0B022A7A53879224BA14AE954DE456D\
        01069DEF0B5CE2E6B0325ACF21B5059320ABBA8480602C8A6FD7BF7894FF'
    ]) >>
  ] >>,
  / manifest / 3: << {
    / manifest-version / 1: 1,
    / manifest-sequence-number / 2: 3,
    / common / 3: << {
      / dependencies / 1: {
        / component-index / 1: {
          / dependency-prefix / 1: [
             'TEEP-Device',
             'SecureFS',
            h'8D82573A926D4754935332DC29997F74', / tc-uuid /
             'suit'
          ]
        }
      },
      / components / 2: [
        [
          'TEEP-Device',
          'SecureFS',
          'config.json'
        ]
      ],
      / shared-sequence / 4: << [
        / directive-set-component-index / 12, 0,
        / directive-override-parameters / 20, {
          / parameter-vendor-identifier / 1: h'\
                                   C0DDD5F15243566087DB4F5B0AA26C2F',
          / parameter-class-identifier / 2: h'\
                                    DB42F7093D8C55BAA8C5265FC5820F4E'
        },
        / condition-vendor-identifier / 1, 15,
        / condition-class-identifier / 2, 15
      ] >>
    } >>,
    / manifest-component-id / 5: [
      'TEEP-Device',
      'SecureFS',
      'config.suit'
    ],
    / validate / 7: << [
      / directive-set-component-index / 12, 0,
      / directive-override-parameters / 20, {
        / NOTE: image-digest and image-size of plaintext config.\
                                                               json /
        / parameter-image-digest / 3: << [
          / digest-algorithm-id: / -16 / SHA256 /,
          / digest-bytes: / h'\
    8273468FB64BD84BB04825F8371744D952B751C73A60F455AF681E167726F116'
        ] >>,
        / image-size / 14: 61
      },
      / condition-image-match / 3, 15
    ] >>,
    / dependency-resolution / 15: << [
      / directive-set-component-index / 12, 1,
      / directive-override-parameters / 20, {
        / parameter-image-digest / 3: << [
          / algorithm-id / -16 / SHA256 /,
          / digest-bytes / h'\
    B39B52B0B747EA79588C190F567BFC2C8437BA8A73F7EA983182E79F0148D59B'
        ] >>,
        / parameter-image-size / 14: 389,
        / parameter-uri / 21: "https://example.org/8d82573a-926d-\
                                         4754-9353-32dc29997f74.suit"
      },
      / directive-fetch / 21, 2
    ] >>,
    / install / 20: << [
      / directive-set-component-index / 12, 1,
      / directive-process-dependency / 11, 0,

      / NOTE: fetch encrypted firmware /
      / directive-set-component-index / 12, 0,
      / directive-override-parameters / 20, {
        / NOTE: encrypted payload and encryption-info /
        / parameter-content / 18: h'\
6D5BE4F569E98AE01F38B071EF025437B742FF28854AB32C868BC6A76CD33B5CA112\
             FF22BA95EA4672B7199C89A7829183794A21A6BE345C4371DCB0DC',
        / parameter-encryption-info / 19: << 96([
          / protected: / h'',
          / unprotected: / {
            / alg / 1: -65534 / A128CTR /,
            / IV / 5: h'67E3BA7CD42D02BBC39C508B5EA0F1C4'
          },
          / payload: / null / detached ciphertext /,
          / recipients: / [
            [
              / protected: / << {
                / alg / 1: -29 / ECDH-ES + A128KW /
              } >>,
              / unprotected: / {
                / ephemeral key / -1: {
                  / kty / 1: 2 / EC2 /,
                  / crv / -1: 1 / P-256 /,
                  / x / -2: h'\
   F2452399667F57993B14C5F1107F667884854C190894FC08531C1E2290A7BA19',
                  / y / -3: h'\
    275EDDE29FD75C9393AFFA706F8FAD3C49D03D67D47F8B0C027BE5F0BCA884CB'
                }
              },
              / payload: / h'\
                    7D806DA1ACEC6F704D803F0CFE7420525C81E1957699FCCE'
            ]
          ]
        ]) >>
      },

      / decrypt encrypted firmware /
      / directive-write / 18, 15 / consumes the \
                                         SUIT_Encryption_Info above /
      / NOTE: decrypted payload would be ``{"name":"FOO Bar","secret\
                             ":"0123456789abfcdef0123456789abcd"}'' /
    ] >>,
    / uninstall / 24: << [
      / directive-set-component-index / 12, 1,
      / directive-process-dependency / 11, 0,
      / directive-set-component-index / 12, 0,
      / directive-unlink / 33, 15
    ] >>
  } >>
}
]]></artwork></figure>

</section>
<section numbered="no" anchor="cbor-binary-in-hex-2"><name>CBOR Binary in Hex</name>

<figure><artwork><![CDATA[
A2025873825824822F5820506D4796D65AE599EE0A3F7D123ED6819E0FA1
A324A5DE547F6D7F50D465508A584AD28443A10128A0F658409AF4896B66
B0642122C5317D1D8A81BB4CE3C0B022A7A53879224BA14AE954DE456D01
069DEF0B5CE2E6B0325ACF21B5059320ABBA8480602C8A6FD7BF7894FF03
590242A801010203035886A301A101A101844B544545502D446576696365
485365637572654653508D82573A926D4754935332DC29997F7444737569
740281834B544545502D4465766963654853656375726546534B636F6E66
69672E6A736F6E04582D880C0014A20150C0DDD5F15243566087DB4F5B0A
A26C2F0250DB42F7093D8C55BAA8C5265FC5820F4E010F020F05834B5445
45502D4465766963654853656375726546534B636F6E6669672E73756974
075831860C0014A2035824822F58208273468FB64BD84BB04825F8371744
D952B751C73A60F455AF681E167726F1160E183D030F0F5872860C0114A3
035824822F5820B39B52B0B747EA79588C190F567BFC2C8437BA8A73F7EA
983182E79F0148D59B0E19018515783D68747470733A2F2F6578616D706C
652E6F72672F38643832353733612D393236642D343735342D393335332D
3332646332393939376637342E7375697415021458D88A0C010B000C0014
A212583D6D5BE4F569E98AE01F38B071EF025437B742FF28854AB32C868B
C6A76CD33B5CA112FF22BA95EA4672B7199C89A7829183794A21A6BE345C
4371DCB0DC13588AD8608440A20139FFFD055067E3BA7CD42D02BBC39C50
8B5EA0F1C4F6818344A101381CA120A401022001215820F2452399667F57
993B14C5F1107F667884854C190894FC08531C1E2290A7BA19225820275E
DDE29FD75C9393AFFA706F8FAD3C49D03D67D47F8B0C027BE5F0BCA884CB
58187D806DA1ACEC6F704D803F0CFE7420525C81E1957699FCCE120F1818
4A880C010B000C0018210F
]]></artwork></figure>

</section>
</section>
</section>
<section numbered="no" anchor="suit-reports"><name>F. Examples of SUIT Reports</name>

<t>This section shows some examples of SUIT reports.</t>

<section numbered="no" anchor="f1-example-1-success"><name>F.1. Example 1: Success</name>

<t>SUIT Reports have no records if no conditions have failed.
The URI in this example is the reference URI provided in the SUIT manifest.</t>

<figure><artwork><![CDATA[
{
  / suit-report-manifest-digest / 1:<<[
    / algorithm-id / -16 / "sha256" /,
    / digest-bytes / h'a7fd6593eac32eb4be578278e6540c5c'
                     h'09cfd7d4d234973054833b2b93030609'
  ]>>,
  / suit-report-manifest-uri / 2: "tam.teep.example/personalisation",
  / suit-report-records / 4: []
}
]]></artwork></figure>

</section>
<section numbered="no" anchor="f2-example-2-failure"><name>F.2. Example 2: Failure</name>

<figure><artwork><![CDATA[
{
  / suit-report-manifest-digest / 1:<<[
    / algorithm-id / -16 / "sha256" /,
    / digest-bytes / h'a7fd6593eac32eb4be578278e6540c5c09cfd7d4d23497
3054833b2b93030609'
  ]>>,
  / suit-report-manifest-uri / 2: "tam.teep.example/personalisation",
  / suit-report-records / 4: [
    {
      / suit-record-manifest-id / 1:[],
      / suit-record-manifest-section / 2: 7 / dependency-resolution /,
      / suit-record-section-offset / 3: 66,
      / suit-record-dependency-index / 5: 0,
      / suit-record-failure-reason / 6: 404
    }
  ]
}
]]></artwork></figure>

<t>where the dependency-resolution refers to:</t>

<figure><artwork><![CDATA[
{
  authentication-wrapper,
  / manifest / 3:<<{
    / manifest-version / 1:1,
    / manifest-sequence-number / 2:3,
    common,
    dependency-resolution,
    install,
    validate,
    run,
    text
  }>>,
}
]]></artwork></figure>

<t>and the suit-record-section-offset refers to:</t>

<figure><artwork><![CDATA[
<<[
  / directive-set-dependency-index / 13,0,
  / directive-set-parameters / 19,{
    / uri / 21:'tam.teep.example/'
               'edd94cd8-9d9c-4cc8-9216-b3ad5a2d5b8a',
    } ,
  / directive-fetch / 21,2,
  / condition-image-match / 3,15
]>>,
]]></artwork></figure>

</section>
</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+y9+3IbyZUn/H8+RX6SY5tsA5BIXbqbsjzDpqBprpsSh2SP
7XB45WQhAdSoUAVXFkjBEif2QXYj9lm+R9kn+eLc8lJVAEm17PF8MwpfJFRV
Xk+ePNffGQ6HyjWmnLwzRVXaA93UK6vyZY1/c83+48ffPd5XkyorzcIe6Elt
ps0wt8102Fi7HC7rqqmyqhgWprGuUZlpDrRrJsqtLhe5c3lVNuulPdDH44vX
apkfKK1dU+dZc6C/Wlv3ldK6qbLkHxO7bOYH+qun8G+3XtR26sILrqqb9Jes
WixN3KBbXYbfyuor1eRNYQ/0BczITvT4g81WTV6Velxe5XVVLmzZ6NO6usph
wHk50zsX4/HpLvyG01Pm8rK2Vwcafo5+ra050Oc2W9V5s1bXM3pBvb++pTM1
MY090PuP958rs2rmVX2glB4qraeroqCl/sGUpXX6wmXzamrLfKa0ruqZKfO/
GGjvQP9U5le2dnmz1tVUHy6XRW4n+jzLbZlZp7+vynJ4Nrd5OTzPLXwus/hh
+P3ZOa7cqmzq9YH+J1svTLlWWtuFyYsD/WCOvY8a3/s/zhYfRqVtHtA489Id
6JORPrW50ppGfJKXsyI35Yx/rerZgf6+rswkqxa08dbCnuCu5c2a/1rbGc6H
fq8m1v+Vh/fTeRjZQjoZLW3+j5fc+gh6iEb2aqR/O7e2sLUf3StzlU+iX3F0
hwvzl6r8UmObmCt7Pbf2Hw022zOoi7lpjcmG33BEJ3lWV66aNl9yUKMG+xjB
wf3HGfzeHtvhSF+41XuzqJrKD+/wfV6b5Hcc4ldvl7bM5vlS/zd9Xk2ba1Nb
fWGzeVkV1Sy3bqDPRz+Ovvo5MxhHMzAwjFEjw4gnUFb1wjT5lQXGcvb66Mnz
/e/4r8+eP30uf9377lv+67ffPP1G/vrdU3n3u8fP9uWvz7/xv36ztyd/ffKd
/+z53mP46/HwFa7n0K3yZrgwZT61rul50uTdH5G5DifVwsDqdx7XdlnV2NbR
2/Px6LCYVXXezBfwi9bMzh7AM+2fuQf4UNiJxj+4X8eHbw7pQ1PPYDfmTbN0
B48eXV9fj3JTmlFVzx4Z5/IZcif3KKucxf8ZfZg3i+Kh8Z2ovJzGa56Oe5rX
C6CGoS2zer0kNhW/VZvGDU391KVrgj/XdmprYF3DvGxsbTL4fLioJrZIlwhv
nqqpl8PqytZDmE3yvFo6cz0b1tPs2TePn1/mzu/nt/vdbrOqzHJnh40Zuqaq
rfPksfdM6Oe7J089IYS/7u0/PVBqOBxqc+kaGLBS6mKeOz2pshVeKm5ps3ya
W6eNlrtSN3PTwKlrTFG4gV4t4TZwA23KiZ7YwjbWKbk+jqrFsiphU3ReaqMn
9irPrL7Om7k23UtGxTcaXGK7I61xSDySDO8OPbHTHG4XU2pc7Gppa3NZWOUH
Oa1qvTClmcF12MytLvKpzdZZYeGy6Q5vRCuxyCeTwir1UB+XTV1NVriL+uPD
PPrnjVL6Ym5vuZBx+Bq2xy4bPTdOX1oLQwc6tRMNDMnZpalNY7UBlrIqTK1x
Kg2M2q1dYxcDbQpXaaSuGj/TBrbjLM/m0cKlXZ+Nx7sDPa2rhXZ8vQ+dLV0O
dK8NXLW0km6kj2FfLsZjZbNKuuRturLlpKqdXpi1XjmrJ/kUabzpjBK3t5lb
dTYeIyF0PwFByuHij8cO77eyuw/6lb2yBbTudFUr+CcM5HCyyMsciLSB8UDD
8ulhmIw+gQ2HT3cuDk/cLi4xE6rQaUymfW04fN7MbV7riV3acmLLDA5ABct0
nU+srk05swpmQsvkiJyXVWPLJjdFsY5mDZMdQHtli1jzAmQuXVo70abOnQUS
3HT6gIAT0s6qxWJV4pjLmb60zTXQltEXhycKJmBI1Duc2bLBdm+j1j7x0dTZ
PG9s1qxqq/yoPn7kC+XmBsZ0lU+sY6pWs1U+MWVmcRHlyND4VWkz65yp17qx
9SLHy3Y9UnDWLsIPNNb3dq2vq3ri9IOTn84vHgzo//Wbt/j3s/E//3R8Nn4F
fz//4fDHH/1fFL9x/sPbn358Ff4Wvjx6e3IyfvOKPn7z9kInP6kHJ4e/f0BE
8uDt6cXx2zeHPz4g4o63BkSGptKXlrZ0WVtYWuPUxLqszi8tTF9/f3T6//6f
vaf648f/5+z10f7e3nc3N/yPb/e+eXpzo6/ntqTeqrJY8z+buV0rs1xaUyPX
LAqdmWXeGGC3xmk3r65LPbe1Half/UORl1YPn//Dr4V7p6yytivHFBStO3NQ
HGW0oSOlDp22H5aFkafnlljg09FTIHlk/rIMOFSitHA71NY0TlmTzXvP6M7F
4S7MeJ0eL2zoENgkLQdwgKo0BWsLemIag3NnjqmycLPgmGBH7IdlbZ3jgf90
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

-->

</rfc>

