<?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.19 (Ruby 2.5.1) -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-scitt-scrapi-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.46.0 -->
  <front>
    <title abbrev="SCRAPI">SCITT Reference APIs</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-scrapi-04"/>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>
    <author initials="J." surname="Geater" fullname="Jon Geater">
      <organization>DataTrails Inc.</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>jon.geater@datatrails.ai</email>
      </address>
    </author>
    <date year="2025" month="March" day="03"/>
    <area>Security</area>
    <workgroup>SCITT</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 66?>

<t>This document describes a REST API that supports the normative requirements of the SCITT Architecture.
Optional key discovery and query interfaces are provided to support interoperability with X.509 Certificates, alternative methods commonly used to support public key discovery and Artifact Repositories.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-scitt-scrapi/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        SCITT Working Group mailing list (<eref target="mailto:scitt@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/scitt/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/scitt/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-scitt/draft-ietf-scitt-scrapi"/>.</t>
    </note>
  </front>
  <middle>
    <?line 71?>

<section anchor="sec-introduction">
      <name>Introduction</name>
      <t>The SCITT Architecture <xref target="I-D.draft-ietf-scitt-architecture"/> defines the core objects, identifiers and workflows necessary to interact with a SCITT Transparency Service:</t>
      <ul spacing="normal">
        <li>Signed Statements</li>
        <li>Receipts</li>
        <li>Transparent Statements</li>
        <li>Registration Policies</li>
      </ul>
      <t>SCRAPI defines the operations necessary to support supply chain transparency using COSE <xref target="RFC9052"/>:</t>
      <ul spacing="normal">
        <li>Issuances of Signed Statements</li>
        <li>Registration of Signed Statements</li>
        <li>Verification of Signed Statements</li>
        <li>Issuance of Receipts</li>
        <li>Verification of Receipts</li>
        <li>Production of Transparent Statements</li>
        <li>Verification of Transparent Statements</li>
      </ul>
      <t>In addition to these operational HTTP endpoints, this specification defines supporting endpoints:</t>
      <ul spacing="normal">
        <li>Resolving Verification Keys for Issuers</li>
        <li>Retrieving Receipts Asynchronously</li>
        <li>Retrieving Signed Statements from an Artifact Repository</li>
        <li>Retrieving Statements from an Artifact Repository</li>
      </ul>
      <section anchor="sec-terminology">
        <name>Terminology</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP&nbsp;14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>This specification uses the terms "Signed Statement", "Receipt", "Transparent Statement", "Artifact Repositories", "Transparency Service" and "Registration Policy" as defined in <xref target="I-D.draft-ietf-scitt-architecture"/>.</t>
        <t>This specification uses "payload" as defined in <xref target="RFC9052"/>.</t>
      </section>
    </section>
    <section anchor="sec-endpoints">
      <name>Endpoints</name>
      <t>Authentication is out of scope for this document.
Implementations <bcp14>MAY</bcp14> authenticate clients, for example authorization or preventing denial of service attacks.
If Authentication is not implemented, rate limiting or other denial of service mitigation <bcp14>MUST</bcp14> be implemented.</t>
      <t>All messages are sent as HTTP GET or POST requests.</t>
      <t>If the Transparency Service cannot process a client's request, it <bcp14>MUST</bcp14> return either:</t>
      <ol spacing="normal" type="1">
        <li>an HTTP 3xx code, indicating to the client additional action they must take to complete the request, such as follow a redirection, or</li>
        <li>an HTTP 4xx or 5xx status code, and the body <bcp14>SHOULD</bcp14> be a Concise Problem Details object <xref target="RFC9290"/> containing:</li>
      </ol>
      <ul spacing="normal">
        <li>title: A human-readable string identifying the error that prevented the Transparency Service from processing the request, ideally short and suitable for inclusion in log messages.</li>
        <li>detail: A human-readable string describing the error in more depth, ideally with sufficient detail enabling the error to be rectified.</li>
      </ul>
      <t>TODO: RESOLVE this dangling media-type</t>
      <t>application/concise-problem-details+cbor</t>
      <t>NOTE: SCRAPI is not a CoAP API.
Nonetheless Constrained Problem Details objects <xref target="RFC9290"/> provide a useful CBOR encoding for problem details and avoids the need for mixing CBOR and JSON in endpoint implementations.</t>
      <t>NOTE: Examples use '\' line wrapping per <xref target="RFC8792"/></t>
      <t>Examples of errors may include:</t>
      <sourcecode type="cbor-diag">
{
  / title /         -1: \
            "Bad Signature Algorithm",
  / detail /        -2: \
            "Signing algorithm 'WalnutDSA' not supported"
}
</sourcecode>
      <t>Most error types are specific to the type of request and are defined in the respective subsections below.
The one exception is the "malformed" error type, which indicates that the Transparency Service could not parse the client's request because it did not comply with this document:</t>
      <t><tt>
Error code: `malformed` (The request could not be parsed)
</tt></t>
      <t>Clients <bcp14>SHOULD</bcp14> treat 500 and 503 HTTP status code responses as transient failures and <bcp14>MAY</bcp14> retry the same request without modification at a later date.</t>
      <t>Note that in the case of any error response, the Transparency Service <bcp14>MAY</bcp14> include a <tt>Retry-After</tt> header field per <xref target="RFC9110"/> in order to request a minimum time for the client to wait before retrying the request.
In the absence of this header field, this document does not specify a minimum.</t>
      <section anchor="sec-mandatory">
        <name>Mandatory</name>
        <t>The following HTTP endpoints are mandatory to implement to enable conformance to this specification.</t>
        <section anchor="sec-transparency-configuration">
          <name>Transparency Configuration</name>
          <t>This endpoint is used to discover the capabilities and current configuration of a transparency service implementing this specification.</t>
          <t>The Transparency Service responds with a CBOR map of configuration elements.
These elements are Transparency-Service specific.</t>
          <t>Contents of bodies are informative examples only.</t>
          <t>Request:</t>
          <sourcecode type="http-message">
GET /.well-known/transparency-configuration HTTP/1.1
Host: transparency.example
Accept: application/cbor
</sourcecode>
          <t>Response:</t>
          <sourcecode type="http-message">
HTTP/1.1 200 Ok
Content-Type: application/cbor

Payload (in CBOR diagnostic notation)

{
  "issuer": "https://transparency.example",
  "jwks_uri": "https://transparency.example/jwks"
}
</sourcecode>
          <t>Responses to this message are vendor-specific.
Fields that are not understood <bcp14>MUST</bcp14> be ignored.</t>
        </section>
        <section anchor="sec-register-signed-statement">
          <name>Register Signed Statement</name>
          <t>See notes on detached payloads below.</t>
          <t>This endpoint instructs a Transparency Service to register a Signed Statement on its log.
Since log implementations may take many seconds or longer to reach finality, this API provides an asynchronous mode that returns a locator that can be used to check the registration's status asynchronously.</t>
          <t>The following is a non-normative example of an HTTP request to register a Signed Statement:</t>
          <t>Request:</t>
          <sourcecode type="http">
POST /entries HTTP/1.1
Host: transparency.example
Accept: application/cbor
Accept: application/cose
Content-Type: application/cose
Payload (in CBOR diagnostic notation)

18([                            / COSE Sign1         /
  h'a1013822',                  / Protected Header   /
  {},                           / Unprotected Header /
  null,                         / Detached Payload   /
  h'269cd68f4211dffc...0dcb29c' / Signature          /
])
</sourcecode>
          <t>If the <tt>payload</tt> is detached, the Transparency Service depends on the client's authentication context in the Registration Policy.
If the <tt>payload</tt> is attached, the Transparency Service depends on both the client's authentication context (if present) and the verification of the Signed Statement in the Registration Policy.</t>
          <t>The Registration Policy for the Transparency Service <bcp14>MUST</bcp14> be applied before any additional processing.
The details of Registration Policies are out of scope for this document.</t>
          <t>Response:</t>
          <t>One of the following:</t>
          <section anchor="sec-status-201-registration-is-successful">
            <name>Status 201 - Registration is successful</name>
            <t>If the Transparency Service is able to produce a Receipt within a reasonable time, it <bcp14>MAY</bcp14> return it directly.</t>
            <t>Along with the receipt the Transparency Service <bcp14>MAY</bcp14> return a locator in the HTTP response <tt>Location</tt> header, provided the locator is a valid URL.</t>
            <sourcecode type="http-message">
HTTP/1.1 201 Created

Location: https://transparency.example/entries\
/67ed41f1de6a...cfc158694ed0befe

Content-Type: application/cose

Payload (in CBOR diagnostic notation)

18([                            / COSE Sign1         /
  h'a1013822',                  / Protected Header   /
  {},                           / Unprotected Header /
  null,                         / Detached Payload   /
  h'269cd68f4211dffc...0dcb29c' / Signature          /
])
</sourcecode>
            <t>The response contains the Receipt for the Signed Statement.
Fresh Receipts may be requested through the resource identified in the Location header.</t>
          </section>
          <section anchor="sec-status-303-registration-is-running">
            <name>Status 303 - Registration is running</name>
            <t>In cases where the registration request is accepted but the Transparency Service is not able to produce a Receipt in a reasonable time, it <bcp14>MAY</bcp14> return a locator for the registration operation, as in this non-normative example:</t>
            <sourcecode type="http">
HTTP/1.1 303 See Other

Location: https://transparency.example/entries/67ed...befe
Content-Type: application/cose
Content-Length: 0
Retry-After: &lt;seconds&gt;
</sourcecode>
            <t>The location <bcp14>MAY</bcp14> be temporary, and the service may not serve a relevant response at this Location after a reasonable delay.</t>
            <t>The Transparency Service <bcp14>MAY</bcp14> include a <tt>Retry-After</tt> header in the HTTP response to help with polling.</t>
          </section>
        </section>
        <section anchor="sec-query-registration-status">
          <name>Query Registration Status</name>
          <t>This endpoint lets a client query a Transparency Service for the registration status of a payload they have submitted earlier, and for which they have received a 303 or 302 - Registration is running response.</t>
          <t>Request:</t>
          <sourcecode type="http">
GET /entries/67ed...befe HTTP/1.1
Host: transparency.example
Accept: application/cbor
Accept: application/cose
Content-Type: application/cose
</sourcecode>
          <t>Response:</t>
          <t>One of the following:</t>
          <section anchor="sec-status-302-registration-is-running">
            <name>Status 302 - Registration is running</name>
            <t>Registration requests <bcp14>MAY</bcp14> fail, in which case the Location <bcp14>MAY</bcp14> return an error when queried.</t>
            <t>If the client requests (GET) the location when the registration is still in progress, the TS <bcp14>MAY</bcp14> return a 302 Found, as in this non-normative example:</t>
            <sourcecode type="http-message">
HTTP/1.1 302 Found

Location: https://transparency.example/entries/67ed...befe
Content-Type: application/cose
Content-Length: 0
Retry-After: &lt;seconds&gt;
</sourcecode>
            <t>The location <bcp14>MAY</bcp14> be temporary, and the service may not serve a relevant response at this Location after a reasonable delay.</t>
            <t>The Transparency Service <bcp14>MAY</bcp14> include a <tt>Retry-After</tt> header in the HTTP response to help with polling.</t>
          </section>
          <section anchor="sec-status-200-asynchronous-registration-is-successful">
            <name>Status 200 - Asynchronous registration is successful</name>
            <t>Along with the receipt the Transparency Service <bcp14>MAY</bcp14> return a locator in the HTTP response <tt>Location</tt> header, provided the locator is a valid URL.</t>
            <sourcecode type="http-message">
HTTP/1.1 200 OK

Location: https://transparency.example/entries\
/67ed41f1de6a...cfc158694ed0befe

Content-Type: application/cose

Payload (in CBOR diagnostic notation)

18([                            / COSE Sign1         /
  h'a1013822',                  / Protected Header   /
  {},                           / Unprotected Header /
  null,                         / Detached Payload   /
  h'269cd68f4211dffc...0dcb29c' / Signature          /
])
</sourcecode>
            <t>The response contains the Receipt for the Signed Statement.
Fresh Receipts may be requested through the resource identified in the Location header.</t>
            <t>As an example, a successful asynchronous follows the following sequence:</t>
            <artwork><![CDATA[
Initial exchange:

Client --- POST /entries (Signed Statement) --> TS
Client <-- 303 Location: .../entries/tmp123 --- TS

May happen zero or more times:

Client --- GET .../entries/tmp123           --> TS
Client <-- 302 Location: .../entries/tmp123 --- TS

Finally:

Client --- GET .../entries/tmp123           --> TS
Client <-- 200 (Transparent Statement)      --- TS
           Location: .../entries/final123
]]></artwork>
          </section>
          <section anchor="sec-status-400-invalid-client-request">
            <name>Status 400 - Invalid Client Request</name>
            <t>The following expected errors are defined.
Implementations <bcp14>MAY</bcp14> return other errors, so long as they are valid <xref target="RFC9290"/> objects.</t>
            <sourcecode type="http-message">
HTTP/1.1 400 Bad Request
application/concise-problem-details+cbor

{
  / title /         -1: \
          "Bad Signature Algorithm",
  / detail /        -2: \
          "Signed Statement contained a non supported algorithm"
}
</sourcecode>
            <sourcecode type="http-message">
HTTP/1.1 400 Bad Request
application/concise-problem-details+cbor

{
  / title /         -1: "\
          Confirmation Missing",
  / detail /        -2: \
          "Signed Statement did not contain proof of possession"
}
</sourcecode>
            <sourcecode type="http-message">
HTTP/1.1 400 Bad Request
application/concise-problem-details+cbor

{
  / title /         -1: \
          "Payload Missing",
  / detail /        -2: \
          "Signed Statement payload must be attached \
          (must be present)"
}
</sourcecode>
            <sourcecode type="http-message">
HTTP/1.1 400 Bad Request
application/concise-problem-details+cbor

{
  / title /         -1: \
          "Payload Forbidden",
  / detail /        -2: \
          "Signed Statement payload must be detached \
          (must not be present)"
}
</sourcecode>
            <sourcecode type="http-message">
HTTP/1.1 400 Bad Request
application/concise-problem-details+cbor

{
  / title /         -1: \
          "Rejected",
  / detail /        -2: \
          "Signed Statement not accepted by the current\
          Registration Policy"
}
</sourcecode>
          </section>
          <section anchor="sec-status-400-invalid-client-request-1">
            <name>Status 400 - Invalid Client Request</name>
            <t>The following expected errors are defined.
Implementations <bcp14>MAY</bcp14> return other errors, so long as they are valid <xref target="RFC9290"/> objects.</t>
            <sourcecode type="http-message">
HTTP/1.1 400 Bad Request
application/concise-problem-details+cbor

{
  / title /         -1: "Invalid locator",
  / detail /        -2: "Operation locator is not in a valid form"
}
</sourcecode>
          </section>
          <section anchor="sec-status-404-operation-not-found">
            <name>Status 404 - Operation Not Found</name>
            <t>If no record of the specified running operation is found, the Transparency Service returns a 404 response.</t>
            <sourcecode type="http-message">
HTTP/1.1 404 Not Found
application/concise-problem-details+cbor

{
  / title /         -1: \
          "Operation Not Found",
  / detail /        -2: \
          "No running operation was found matching the requested ID"
}
</sourcecode>
          </section>
          <section anchor="sec-status-429-too-many-requests">
            <name>Status 429 - Too Many Requests</name>
            <t>If a client is polling for an in-progress registration too frequently then the Transparency Service <bcp14>MAY</bcp14>, in addition to implementing rate limiting, return a 429 response:</t>
            <sourcecode type="http-message">
HTTP/1.1 429 Too Many Requests
Content-Type: application/concise-problem-details+cbor
Retry-After: &lt;seconds&gt;

{
  / title /         -1: \
          "Too Many Requests",
  / detail /        -2: \
          "Only &lt;number&gt; requests per &lt;period&gt; are allowed."
}
</sourcecode>
          </section>
        </section>
        <section anchor="sec-resolve-receipt">
          <name>Resolve Receipt</name>
          <t>Authentication <bcp14>SHOULD</bcp14> be implemented for this endpoint.</t>
          <t>Request:</t>
          <sourcecode type="http-message">
GET entries/67ed41f1de6a...cfc158694ed0befe HTTP/1.1
Host: transparency.example
Accept: application/cose
</sourcecode>
          <t>Response:</t>
          <section anchor="sec-status-200-ok">
            <name>Status 200 - OK</name>
            <t>If the Receipt is found:</t>
            <sourcecode type="http-message">
HTTP/1.1 200 Ok
Location: https://transparency.example/entries/67ed...befe
Content-Type: application/cose

Payload (in CBOR diagnostic notation)

18([                            / COSE Sign1         /
  h'a1013822',                  / Protected Header   /
  {},                           / Unprotected Header /
  null,                         / Detached Payload   /
  h'269cd68f4211dffc...0dcb29c' / Signature          /
])
</sourcecode>
          </section>
          <section anchor="sec-status-404-not-found">
            <name>Status 404 - Not Found</name>
            <t>If there is no Receipt found for the specified <tt>EntryID</tt> the Transparency Service returns a 404 response:</t>
            <sourcecode type="http-message">
HTTP/1.1 404 Not Found
application/concise-problem-details+cbor

{
  / title /         -1: \
          "Not Found",
  / detail /        -2: \
          "Receipt with entry ID &lt;id&gt; not known \
          to this Transparency Service"
}
</sourcecode>
          </section>
        </section>
      </section>
      <section anchor="sec-optional-endpoints">
        <name>Optional Endpoints</name>
        <t>The following HTTP endpoints are optional to implement.</t>
        <section anchor="sec-resolve-signed-statement">
          <name>Resolve Signed Statement</name>
          <t>This endpoint enables Transparency Service APIs to act like Artifact Repositories, and serve Signed Statements directly, instead of indirectly through Receipts.</t>
          <t>Request:</t>
          <sourcecode type="http-message">
GET /signed-statements/9e4f...688a HTTP/1.1
Host: transparency.example
Accept: application/cose
</sourcecode>
          <t>Response:</t>
          <t>One of the following:</t>
          <section anchor="sec-status-200-success">
            <name>Status 200 - Success</name>
            <sourcecode type="http-message">
HTTP/1.1 200 Ok
Content-Type: application/cose

Payload (in CBOR diagnostic notation)

18([                            / COSE Sign1         /
  h'a1013822',                  / Protected Header   /
  {},                           / Unprotected Header /
  null,                         / Detached Payload   /
  h'269cd68f4211dffc...0dcb29c' / Signature          /
])
</sourcecode>
          </section>
          <section anchor="sec-status-404-not-found-1">
            <name>Status 404 - Not Found</name>
            <t>The following expected errors are defined.
Implementations <bcp14>MAY</bcp14> return other errors, so long as they are valid <xref target="RFC9290"/> objects.</t>
            <sourcecode type="http-message">
HTTP/1.1 404 Not Found
application/concise-problem-details+cbor

{
  / title /         -1: \
          "Not Found",
  / detail /        -2: \
          "No Signed Statement found with the specified ID"
</sourcecode>
          </section>
          <section anchor="sec-eventual-consistency">
            <name>Eventual Consistency</name>
            <t>For all responses additional eventually consistent operation details <bcp14>MAY</bcp14> be present.
Support for eventually consistent Receipts is implementation specific, and out of scope for this specification.</t>
          </section>
        </section>
        <section anchor="sec-exchange-receipt">
          <name>Exchange Receipt</name>
          <t>This endpoint is used to exchange old or expiring Receipts for fresh ones.</t>
          <t>The <tt>iat</tt>, <tt>exp</tt> and <tt>kid</tt> claims can change each time a Receipt is exchanged.</t>
          <t>This means that fresh Receipts can have more recent issued at times, further in the future expiration times, and be signed with new signature algorithms.</t>
          <t>Request:</t>
          <sourcecode type="http-message">
POST /exchange/receipt HTTP/1.1
Host: transparency.example
Accept: application/cose
Content-Type: application/cose
Payload (in CBOR diagnostic notation)

18([                            / COSE Sign1         /
  h'a1013822',                  / Protected Header   /
  {},                           / Unprotected Header /
  null,                         / Detached Payload   /
  h'269cd68f4211dffc...0dcb29c' / Signature          /
])
</sourcecode>
          <section anchor="sec-status-200">
            <name>Status 200</name>
            <t>A new Receipt:</t>
            <sourcecode type="http-message">
HTTP/1.1 200 Ok
Location: https://transparency.example/entries/67ed...befe

Content-Type: application/cose

Payload (in CBOR diagnostic notation)

18([                            / COSE Sign1         /
  h'a1013822',                  / Protected Header   /
  {},                           / Unprotected Header /
  null,                         / Detached Payload   /
  h'269cd68f4211dffc...0dcb29c' / Signature          /
])
</sourcecode>
          </section>
        </section>
        <section anchor="sec-resolve-issuer">
          <name>Resolve Issuer</name>
          <t>This endpoint is inspired by <xref target="I-D.draft-ietf-oauth-sd-jwt-vc"/>.</t>
          <t>The following is a non-normative example of a HTTP request for the Issuer Metadata configuration when <tt>iss</tt> is set to <tt>https://transparency.example/tenant/1234</tt>:</t>
          <t>Request:</t>
          <sourcecode type="http-message">
GET /.well-known/issuer/tenant/1234 HTTP/1.1
Host: transparency.example
Accept: application/json
</sourcecode>
          <t>Response:</t>
          <sourcecode type="http-message">
HTTP/1.1 200 Ok
Content-Type: application/json

{
  "issuer": "https://transparency.example/tenant/1234",
  "jwks": {
    "keys": [
      {
        "kid": "urn:ietf:params:oauth\
                 :jwk-thumbprint:sha-256:Dgyo...agRo",
        "alg": "ES256",
        "use": "sig",
        "kty": "EC",
        "crv": "P-256",
        "x": "p-kZ4uOASt9IjQRTrWikGnlbGb-z3LU1ltwRjZaOS9w",
        "y": "ymXE1yltJPXgjQSRe9NweN3TLlSUALYZTzy83NVfdg0"
      },
      {
        "kid": "urn:ietf:params:oauth\
                 :jwk-thumbprint:sha-256:4Fzx...0ClE",
        "alg": "HPKE-Base-P256-SHA256-AES128GCM",
        "use": "enc",
        "kty": "EC",
        "crv": "P-256",
        "x": "Vreuil95vzR6ixutgBBf2ota-rj97MvKfuJWB4qqp5w",
        "y": "NkUTeaoNlLRRsVRxHGDA-RsA0ex2tSpcd3G-4SmKXbs"
      }
    ]
  }
}
</sourcecode>
        </section>
      </section>
    </section>
    <section anchor="sec-privacy-considerations">
      <name>Privacy Considerations</name>
      <t>TODO</t>
    </section>
    <section anchor="sec-security-considerations">
      <name>Security Considerations</name>
      <section anchor="sec-general-scope">
        <name>General Scope</name>
        <t>This document describes the interoperable API for client calls to, and implementations of, a Transparency Service as specified in <xref target="I-D.draft-ietf-scitt-architecture"/>.
As such the security considerations in this section are concerned only with security considerations that are relevant at that implementation layer.
All questions of security of the related COSE formats, algorithm choices, cryptographic envelopes,verifiable data structures and the like are handled elsewhere and out of scope of this document.</t>
      </section>
      <section anchor="sec-applicable-environment">
        <name>Applicable Environment</name>
        <t>SCITT is concerned with issues of cross-boundary supply-chain-wide data integrity and as such must assume a very wide range of deployment environments.
Thus, no assumptions can be made about the security of the computing environment in which any client implementation of this specification runs.</t>
      </section>
      <section anchor="sec-user-host-authentication">
        <name>User-host Authentication</name>
        <t><xref target="I-D.draft-ietf-scitt-architecture"/> defines 2 distinct roles that require authentication:
Issuers who sign Statements, and clients that submit API calls on behalf of Issuers.
While Issuer authentication and signing of Statements is very important for the trustworthiness of systems implementing the SCITT building blocks, it is out of scope of this document.
This document is only concerned with authentication of API clients.</t>
        <t>For those endpoints that require client authentication, Transparency Services <bcp14>MUST</bcp14> support at least one of the following options:</t>
        <ul spacing="normal">
          <li>HTTP Authorization header with a JWT</li>
          <li>domain-bound API key</li>
          <li>TLS client authentication</li>
        </ul>
        <t>Where authentication methods rely on long term secrets, both clients and Transparency Services implementing this specification <bcp14>SHOULD</bcp14> allow for the revocation and rolling of authentication secrets.</t>
      </section>
      <section anchor="sec-primary-threats">
        <name>Primary Threats</name>
        <section anchor="sec-in-scope">
          <name>In Scope</name>
          <t>The most serious threats to implementations on Transparency Services are ones that would cause the failure of their main promises, to wit:</t>
          <ul spacing="normal">
            <li>Threats to strong identification, for example representing the Statements from one issuer as those of another</li>
            <li>Threats to payload integrity, for example changing the contents of a Signed Statement before making it transparent</li>
            <li>Threats to non-equivocation, for example attacks that would enable the presentation or verification of divergent proofs for the same Statement payload</li>
          </ul>
          <section anchor="sec-denial-of-service-attacks">
            <name>Denial of Service Attacks</name>
            <t>While denial of service attacks are very hard to defend against completely, and Transparency Services are unlikely to be in the critical path of any safety-liable operation, any attack which could cause the <em>silent</em> failure of Signed Statement registration, for example, should be considered in scope.</t>
            <t>In principle DoS attacks are easily mitigated by the client checking that the Transparency Service has registered any submitted Signed Statement and returned a Receipt.
Since verification of Receipts does not require the involvement of the Transparency Service DoS attacks are not a major issue.</t>
            <t>Clients to Transparency Services <bcp14>SHOULD</bcp14> ensure that Receipts are available for their registered Statements, either on a periodic or needs-must basis, depending on the use case.</t>
            <t>Beyond this, implementers of Transparency Services <bcp14>SHOULD</bcp14> implement general good practice around network attacks, flooding, rate limiting etc.</t>
          </section>
          <section anchor="sec-eavesdropping">
            <name>Eavesdropping</name>
            <t>Since the purpose of this API is to ultimately put the message payloads on a Transparency Log there is limited risk to eavesdropping.
Nonetheless transparency may mean 'within a limited community' rather than 'in full public', so implementers <bcp14>MUST</bcp14> add protections against man-in-the-middle and network eavesdropping, such as TLS.</t>
          </section>
          <section anchor="sec-message-modification-attacks">
            <name>Message Modification Attacks</name>
            <t>Modification attacks are mitigated by the use of the Issuer signature on the Signed Statement.</t>
          </section>
          <section anchor="sec-message-insertion-attacks">
            <name>Message Insertion Attacks</name>
            <t>Insertion attacks are mitigated by the use of the Issuer signature on the Signed Statement, therefore care must be taken in the protection of Issuer keys and credentials to avoid theft Issuer and impersonation.</t>
            <t>Transparency Services <bcp14>MAY</bcp14> also implement additional protections such as anomaly detection or rate limiting in order to mitigate the impact of any breach.</t>
          </section>
        </section>
        <section anchor="sec-out-of-scope">
          <name>Out of Scope</name>
          <section anchor="sec-replay-attacks">
            <name>Replay Attacks</name>
            <t>Replay attacks are not particularly concerning for SCITT or SCRAPI:
Once a statement is made, it is intended to be immutable and non-repudiable, so making it twice should not lead to any particular issues.
There could be issues at the payload level (for instance, the statement "it is raining" may true when first submitted but not when replayed), but being payload-agnostic implementations of SCITT services cannot be required to worry about that.</t>
            <t>If the semantic content of the payload are time dependent and susceptible to replay attacks in this way then timestamps <bcp14>MAY</bcp14> be added to the protected header signed by the Issuer.</t>
          </section>
          <section anchor="sec-message-deletion-attacks">
            <name>Message Deletion Attacks</name>
            <t>Once registered with a Transparency Service, Registered Signed Statements cannot be deleted.
Thus, any message deletion attack must occur prior to registration else it is indistinguishable from a man-in-the-middle or denial-of-service attack on this interface.</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="sec-todo">
      <name>&nbsp;TODO</name>
      <t>TODO: Consider negotiation for Receipt as "JSON" or "YAML".
TODO: Consider impact of media type on "Data URIs" and QR Codes.</t>
    </section>
    <section anchor="sec-iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="sec-well-known-uri-for-issuers">
        <name>Well-Known URI for Issuers</name>
        <t>The following value is requested to be registered in the "Well-Known URIs" registry (using the template from <xref target="RFC8615"/>):</t>
        <t>URI suffix: issuer
Change controller: IETF
Specification document(s): RFCthis.
Related information: N/A</t>
      </section>
      <section anchor="sec-well-known-uri-for-transparency-configuration">
        <name>Well-Known URI for Transparency Configuration</name>
        <t>The following value is requested to be registered in the "Well-Known URIs" registry (using the template from <xref target="RFC8615"/>):</t>
        <t>URI suffix: transparency-configuration
Change controller: IETF
Specification document(s): RFCthis.
Related information: N/A</t>
        <t>TODO: Register them from here.</t>
      </section>
      <section anchor="sec-media-type-registration">
        <name>Media Type Registration</name>
        <t>This section requests registration of the "application/scitt.receipt+cose" media type <xref target="RFC2046"/> in the "Media Types" registry in the manner described in <xref target="RFC6838"/>.</t>
        <t>To indicate that the content is a SCITT Receipt:</t>
        <ul spacing="normal">
          <li>Type name: application</li>
          <li>Subtype name: scitt.receipt+cose</li>
          <li>Required parameters: n/a</li>
          <li>Optional parameters: n/a</li>
          <li>Encoding considerations: TODO</li>
          <li>Security considerations: TODO</li>
          <li>Interoperability considerations: n/a</li>
          <li>Published specification: this specification</li>
          <li>Applications that use this media type: TBD</li>
          <li>Fragment identifier considerations: n/a</li>
          <li>
            <t>Additional information:
            </t>
            <ul spacing="normal">
              <li>Magic number(s): n/a</li>
              <li>File extension(s): n/a</li>
              <li>Macintosh file type code(s): n/a</li>
            </ul>
          </li>
          <li>Person &amp; email address to contact for further information: TODO</li>
          <li>Intended usage: COMMON</li>
          <li>Restrictions on usage: none</li>
          <li>Author: TODO</li>
          <li>Change Controller: IESG</li>
          <li>Provisional registration?  No</li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.draft-ietf-scitt-architecture">
          <front>
            <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-architecture-10"/>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Antoine Delignat-Lavaud" initials="A." surname="Delignat-Lavaud">
              <organization>Microsoft Research</organization>
            </author>
            <author fullname="Cedric Fournet" initials="C." surname="Fournet">
              <organization>Microsoft Research</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>ARM</organization>
            </author>
            <author fullname="Steve Lasker" initials="S." surname="Lasker">
              <organization>DataTrails</organization>
            </author>
            <date day="13" month="November" year="2024"/>
            <abstract>
              <t>   Traceability of physical and digital Artifacts in supply chains is a
   long-standing, but increasingly serious security concern.  The rise
   in popularity of verifiable data structures as a mechanism to make
   actors more accountable for breaching their compliance promises has
   found some successful applications to specific use cases (such as the
   supply chain for digital certificates), but lacks a generic and
   scalable architecture that can address a wider range of use cases.

   This document defines a generic, interoperable and scalable
   architecture to enable transparency across any supply chain with
   minimum adoption barriers.  It provides flexibility, enabling
   interoperability across different implementations of Transparency
   Services with various auditing and compliance requirements.  Issuers
   can register their Signed Statements on any Transparency Service,
   with the guarantee that any Relying Parties will be able to verify
   them.

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8615">
          <front>
            <title>Well-Known Uniform Resource Identifiers (URIs)</title>
            <seriesInfo name="DOI" value="10.17487/RFC8615"/>
            <seriesInfo name="RFC" value="8615"/>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="May" year="2019"/>
            <abstract>
              <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
              <t>In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <seriesInfo name="DOI" value="10.17487/RFC9052"/>
            <seriesInfo name="RFC" value="9052"/>
            <seriesInfo name="STD" value="96"/>
            <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>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <seriesInfo name="DOI" value="10.17487/RFC9110"/>
            <seriesInfo name="RFC" value="9110"/>
            <seriesInfo name="STD" value="97"/>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC9290">
          <front>
            <title>Concise Problem Details for Constrained Application Protocol (CoAP) APIs</title>
            <seriesInfo name="DOI" value="10.17487/RFC9290"/>
            <seriesInfo name="RFC" value="9290"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="October" year="2022"/>
            <abstract>
              <t>This document defines a concise "problem detail" as a way to carry machine-readable details of errors in a Representational State Transfer (REST) response to avoid the need to define new error response formats for REST APIs for constrained environments. The format is inspired by, but intended to be more concise than, the problem details for HTTP APIs defined in RFC 7807.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="BCP" value="14"/>
            <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>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="BCP" value="14"/>
            <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>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.draft-ietf-oauth-sd-jwt-vc">
          <front>
            <title>SD-JWT-based Verifiable Credentials (SD-JWT VC)</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-sd-jwt-vc-08"/>
            <author fullname="Oliver Terbu" initials="O." surname="Terbu">
              <organization>MATTR</organization>
            </author>
            <author fullname="Daniel Fett" initials="D." surname="Fett">
              <organization>Authlete Inc.</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <date day="3" month="December" year="2024"/>
            <abstract>
              <t>   This specification describes data formats as well as validation and
   processing rules to express Verifiable Credentials with JSON payloads
   with and without selective disclosure based on the SD-JWT
   [I-D.ietf-oauth-selective-disclosure-jwt] format.

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC2046">
          <front>
            <title>Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types</title>
            <seriesInfo name="DOI" value="10.17487/RFC2046"/>
            <seriesInfo name="RFC" value="2046"/>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="N. Borenstein" initials="N." surname="Borenstein"/>
            <date month="November" year="1996"/>
            <abstract>
              <t>This second document defines the general structure of the MIME media typing system and defines an initial set of media types. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <seriesInfo name="DOI" value="10.17487/RFC6838"/>
            <seriesInfo name="RFC" value="6838"/>
            <seriesInfo name="BCP" value="13"/>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8792">
          <front>
            <title>Handling Long Lines in Content of Internet-Drafts and RFCs</title>
            <seriesInfo name="DOI" value="10.17487/RFC8792"/>
            <seriesInfo name="RFC" value="8792"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="E. Auerswald" initials="E." surname="Auerswald"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>This document defines two strategies for handling long lines in width-bounded text content. One strategy, called the "single backslash" strategy, is based on the historical use of a single backslash ('\') character to indicate where line-folding has occurred, with the continuation occurring with the first character that is not a space character (' ') on the next line. The second strategy, called the "double backslash" strategy, extends the first strategy by adding a second backslash character to identify where the continuation begins and is thereby able to handle cases not supported by the first strategy. Both strategies use a self-describing header enabling automated reconstitution of the original content.</t>
            </abstract>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="O." surname="Steele" fullname="Orie Steele">
        <organization>Transmute</organization>
        <address>
          <postal>
            <country>United States</country>
          </postal>
          <email>orie@transmute.industries</email>
        </address>
      </contact>
      <t>Orie contributed examples, text, and URN structure to early version of this draft.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
Dz98TKSeZrklDv79ebm2/NpqVoJid5vVKpPkVjXucqzk0+WUPsf3Hx3frxqQ
ptnIeduFrVAt4i+SsIz7KztycUB3JQ/3L36r1bgdbz6t1fjNtqK++8sauoAh
EE8jIAZZaj7T1Wjhjie1XtKocEWU1xVrtyc+eBIwdY3qON9t4tTq4aXmLoY5
M9hOIF8dp87p2kkcXar2G4omJWvSr6v3stzu9wYfgILAkw9C523N4zIR5FJF
dzhAp3kQX5eDbO6qnTEE//GTJ/KPBcQ7HTIgnByaLNTHnbT7jGufHtf+7EHI
nwvw4ByvxIzGBJT7D5UNIJ+4WoADuiZTAJ3ovgYdz4MCet5zcnjjuH4AvToz
pGwTurfrGuU1r9ydIbKbQjYS73pDe+eX74S19lEmooF9zSOT5WFfe92x9QRS
2/HpA5syrlzBtYemXXZZpHEo+N7aPMoad11ppDGnzNOE73yTmF5EMr/YEBd4
/YKJu7iMwgtEETKaaT5zabvlA518nl3WvTQ3bOjOos6UTOwx2HEzP0+d8Wby
zJx7D0ycogvK9+UmKb0hxkXGcm+T8+OCNZBnY8MV8x7RivUxOG0kJVHX/N0o
bZlC/ADc2wS8ncem2+r6KIj/fDCz1uxTwy9sHkIkXn0ra584avhsXv8T61u6
l+YGfwv0wdkDKpikIt0xdvVC7BXj33Dcu3na20UeZmBxjPlRYZmlKx98uuIC
+MVncrXiU+IXtwoThEYm+WZv++HOxfKh8Q9c4jD3Heo9/G6EeqvT5I+8vMH9
/ZZbGfVZVDc00OpXdgs6l2pB3/5unYRfS2ehA9tEncM76lPNmD46ljPd59Ix
zTuE/F8f/fr5tJiN5jCFeV9Ppb/96HF/f7JIIYxycpby+LZ3WAzq/WCId+rP
YWLpOUxL/ellvuC39+oPg+yKHr72l7q4oadz//JvO8XpYJjvHr799uw8+z66
fJHEoxcj/93Doze9OL8+e/s3eTrcva635WEWsx8Oeos4/+b1D5O33w7P1O7J
tTp5eH4UD98Mjn782/m7xZOHJ9+Nw8lWxzZ9v/HJGLjz/N0NafNefNDCwJev
Xx34zyQcydd42R++HNA/g4Nhb/vJi73jFtZCOj6Otd9lqoji3UdX784eRzdF
Pnn2bLwNpPWzt7tfHl+9GhfffP9s55df5o9WWXty+eZcyfQkPjo709+d3bx8
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
/wsxRauflWcAAA==

-->

</rfc>
