<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.19 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-scitt-scrapi-08" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="SCRAPI">SCITT Reference APIs</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-scrapi-08"/>
    <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@ietf.contact</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="2026" month="March" day="27"/>
    <area>Security</area>
    <workgroup>SCITT</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 118?>

<t>This document describes a REST API that supports the normative requirements of the SCITT Architecture.</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 122?>

<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>
          <t>Signed Statements</t>
        </li>
        <li>
          <t>Receipts</t>
        </li>
        <li>
          <t>Transparent Statements</t>
        </li>
        <li>
          <t>Registration Policies</t>
        </li>
      </ul>
      <t>SCRAPI defines HTTP resources for a Transparency Service using COSE (<xref target="RFC9052"/>).
The following resources <bcp14>MUST</bcp14> be implemented for conformance to this specification:</t>
      <ul spacing="normal">
        <li>
          <t>Registration of Signed Statements</t>
        </li>
        <li>
          <t>Issuance and resolution of Receipts</t>
        </li>
        <li>
          <t>Discovery of Transparency Service Keys</t>
        </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 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-authentication">
      <name>Authentication</name>
      <t>Authentication is out of scope for this document.
Implementations <bcp14>MAY</bcp14> authenticate clients, for example for the purposes of authorization or preventing denial of service attacks.
If Authentication is not implemented, rate limiting or other denial of service mitigations <bcp14>MUST</bcp14> be implemented.</t>
    </section>
    <section anchor="sec-resources">
      <name>Resources</name>
      <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>
          <t>an HTTP 3xx code, indicating to the client additional action they must take to complete the request, such as follow a redirection, or</t>
        </li>
        <li>
          <t>an HTTP 4xx or 5xx status code, and the body <bcp14>MUST</bcp14> be a Concise Problem Details object (application/concise-problem-details+cbor) <xref target="RFC9290"/> containing:</t>
        </li>
      </ol>
      <ul spacing="normal">
        <li>
          <t>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.</t>
        </li>
        <li>
          <t>detail: A human-readable string describing the error in more depth, ideally with sufficient detail enabling the error to be rectified.</t>
        </li>
      </ul>
      <t>SCRAPI is not a CoAP API, but Constrained Problem Details objects <xref target="RFC9290"/> provide a useful encoding for problem details and avoid the need to mix CBOR and JSON in resource or client implementations.</t>
      <t>NOTE: Examples use '\' line wrapping per <xref target="RFC8792"/></t>
      <t>Examples of errors may include:</t>
      <sourcecode type="cbor-diag"><![CDATA[
{
  / 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>
      <sourcecode type="cbor-diag"><![CDATA[
{
  / title /         -1: \
            "Malformed request",
  / detail /        -2: \
            "The request could not be parsed"
}
]]></sourcecode>
      <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>
      <t>The following HTTP resources <bcp14>MUST</bcp14> be implemented to enable conformance to this specification.</t>
      <section anchor="sec-transparency-service-keys">
        <name>Transparency Service Keys</name>
        <t>This resource is used to discover the public keys that can be used by relying parties to verify Receipts issued by the Transparency Service.</t>
        <t>The Transparency Service responds with a COSE Key Set, as defined in <xref section="7" sectionFormat="of" target="RFC9052"/>.</t>
        <t>Request:</t>
        <sourcecode type="http-message"><![CDATA[
GET /.well-known/scitt-keys HTTP/1.1
Host: transparency.example
Accept: application/cbor
]]></sourcecode>
        <t>Response:</t>
        <sourcecode type="http-message"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/cbor

Body (in CBOR diagnostic notation)

[
  {
    -1:1,
    -2:h'65eda5a1...9c08551d',
    -3:h'1e52ed75...0084d19c',
    1:2,
    2:'kid1'
  },
  {
    -1:1,
    -2:h'bac5b11c...d6a09eff',
    -3:h'20138bf8...bbfc117e',
    1:2,
    2:'kid2'
  }
]
]]></sourcecode>
        <t>The Transparency Service <bcp14>MAY</bcp14> stop returning at that resource the keys it no longer uses to issue Receipts, following a reasonable delay.
A delay is considered reasonable if it is sufficient for relying parties to have obtained the key needed to verify any previously issued Receipt.
Consistent with key management best practices described in <xref target="NIST.SP.800-57pt1r5"/> (Section 5.3.4), retired keys <bcp14>SHOULD</bcp14> remain available for as long as any Receipts signed with them may still need to be verified.</t>
      </section>
      <section anchor="sec-individual-transparency-service-key">
        <name>Individual Transparency Service Key</name>
        <t>This resource is used to resolve a single public key, from a <tt>kid</tt> value contained in a Receipt previously issued by the Transparency Service.</t>
        <t>Request:</t>
        <sourcecode type="http-message"><![CDATA[
GET /.well-known/scitt-keys/{kid_value} HTTP/1.1
Host: transparency.example
Accept: application/cbor
]]></sourcecode>
        <t>Response:</t>
        <sourcecode type="http-message"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/cbor

Body (in CBOR diagnostic notation)

[
  {
    -1:1,
    -2:h'bac5b11c...d6a09eff',
    -3:h'20138bf8...bbfc117e',
    1:2,
    2:'kid_value'
  }
]
]]></sourcecode>
        <t>The following expected error is defined:</t>
        <sourcecode type="http-message"><![CDATA[
HTTP/1.1 404 Not Found
Content-Type: application/concise-problem-details+cbor

{
  / title /         -1: "No such key",
  / detail /        -2: "No key could be found for this kid value"
}
]]></sourcecode>
        <t>Implementations <bcp14>MAY</bcp14> return other errors, so long as they are valid <xref target="RFC9290"/> objects.</t>
        <t>If the <tt>kid</tt> values used by the service (<tt>{kid_value}</tt> in the request above) are not URL-safe, the resource <bcp14>MUST</bcp14> accept the base64url encoding of the <tt>kid</tt> value, without padding, in the URL instead.</t>
        <t><xref section="2" sectionFormat="of" target="RFC7515"/> specifies Base64Url encoding as follows:</t>
        <t><xref target="RFC7515"/> specifies Base64url encoding as follows:</t>
        <t>"Base64 encoding using the URL- and filename-safe character set
defined in Section 5 of RFC 4648 <xref target="RFC4648"/>, with all trailing '='
characters omitted and without the inclusion of any line breaks,
whitespace, or other additional characters.  Note that the base64url
encoding of the empty octet sequence is the empty string.
(See Appendix C of <xref target="RFC7515"/> for notes on implementing base64url
encoding without padding.)"</t>
        <t>It is <bcp14>RECOMMENDED</bcp14> to use COSE Key Thumbprint, as defined in <xref target="RFC9679"/> as the mechanism to assign a <tt>kid</tt> to Transparency Service keys.</t>
      </section>
      <section anchor="sec-register-signed-statement">
        <name>Register Signed Statement</name>
        <t>This resource 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"><![CDATA[
POST /entries HTTP/1.1
Host: transparency.example
Accept: application/cbor
Accept: application/cose
Content-Type: application/cose

Body (in CBOR diagnostic notation)

18([ / COSE Sign1           /
  <<{
    / signature alg         / 1:  -35, # ES384
    / key identifier        / 4:   h'75726e3a...32636573',
    / cose sign1 type       / 16:  "application/example+cose",
    / payload-hash-alg      / 258: -16, # sha-256
    / preimage-content-type / 259: "application/spdx+json",
    / payload-location      / 260: "https://.../manifest.json",
    / CWT Claims            / 15: {
      / Issuer  / 1: "vendor.example",
      / Subject / 2: "vendor.product.example",
    }
  }>>,                          / Protected Header   /
  {},                           / Unprotected Header /
  / Payload, sha-256 digest of file stored at payload-location /
  h'935b5a91...e18a588a',
  h'269cd68f4211dffc...0dcb29c' / Signature /
])
]]></sourcecode>
        <t>A Transparency Service depends on 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"><![CDATA[
HTTP/1.1 201 Created
Location: https://transparency.example/entries/67ed...befe
Content-Type: application/cose

Body (in CBOR diagnostic notation)

/ cose-sign1 / 18([
  / protected   / <<{
    / key / 4 : "mxA4KiOkQFZ-dkLebSo3mLOEPR7rN8XtxkJe45xuyJk",
    / algorithm / 1 : -7,  # ES256
    / vds       / 395 : 1, # RFC9162 SHA-256
    / claims / 15 : {
      / issuer  / 1 : "https://blue.notary.example",
      / subject / 2 : "https://green.software.example/cli@v1.2.3",
    },
  }>>,
  / unprotected / {
    / proofs / 396 : {
      / inclusion / -1 : [
        <<[
          / size / 9, / leaf / 8,
          / inclusion path /
          h'7558a95f...e02e35d6'
        ]>>
      ],
    },
  },
  / payload     / null,
  / signature   / h'02d227ed...ccd3774f'
])
]]></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"><![CDATA[
HTTP/1.1 303 See Other
Location: https://transparency.example/entries/67ed...befe
Content-Type: application/cose
Content-Length: 0
Retry-After: <seconds>
]]></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-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"><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/concise-problem-details+cbor

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

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

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

{
  / title /         -1: \
          "Rejected",
  / detail /        -2: \
          "Signed Statement not accepted by the current\
          Registration Policy"
}
]]></sourcecode>
          <sourcecode type="http-message"><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/concise-problem-details+cbor

{
  / title /         -1: "Invalid locator",
  / detail /        -2: "Operation locator is not in a valid form"
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="sec-query-registration-status">
        <name>Query Registration Status</name>
        <t>This resource lets a client query a Transparency Service for the registration status of a Signed Statement 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"><![CDATA[
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"><![CDATA[
HTTP/1.1 302 Found
Location: https://transparency.example/entries/67ed...befe
Content-Type: application/cose
Content-Length: 0
Retry-After: <seconds>
]]></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"><![CDATA[
HTTP/1.1 200 OK
Location: https://transparency.example/entries/67ed...befe
Content-Type: application/cose

Body (in CBOR diagnostic notation)

/ cose-sign1 / 18([
  / protected   / <<{
    / key / 4 : "mxA4KiOkQFZ-dkLebSo3mLOEPR7rN8XtxkJe45xuyJk",
    / algorithm / 1 : -7,  # ES256
    / vds       / 395 : 1, # RFC9162 SHA-256
    / claims / 15 : {
      / issuer  / 1 : "https://blue.notary.example",
      / subject / 2 : "https://green.software.example/cli@v1.2.3",
    },
  }>>,
  / unprotected / {
    / proofs / 396 : {
      / inclusion / -1 : [
        <<[
          / size / 9, / leaf / 8,
          / inclusion path /
          h'7558a95f...e02e35d6'
        ]>>
      ],
    },
  },
  / payload     / null,
  / signature   / h'02d227ed...ccd3774f'
])
]]></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 (Receipt)                    --- TS
           Location: .../entries/final123
]]></artwork>
        </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"><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/concise-problem-details+cbor

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

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

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

{
  / title /         -1: \
          "Rejected",
  / detail /        -2: \
          "Signed Statement not accepted by the current\
          Registration Policy"
}
]]></sourcecode>
          <sourcecode type="http-message"><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: 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"><![CDATA[
HTTP/1.1 404 Not Found
Content-Type: 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"><![CDATA[
HTTP/1.1 429 Too Many Requests
Content-Type: application/concise-problem-details+cbor
Retry-After: <seconds>

{
  / title /         -1: \
          "Too Many Requests",
  / detail /        -2: \
          "Only <number> requests per <period> are allowed."
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="sec-resolve-receipt">
        <name>Resolve Receipt</name>
        <t>Request:</t>
        <sourcecode type="http-message"><![CDATA[
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"><![CDATA[
HTTP/1.1 200 OK
Location: https://transparency.example/entries/67ed...befe
Content-Type: application/cose

Body (in CBOR diagnostic notation)

/ cose-sign1 / 18([
  / protected   / <<{
    / key / 4 : "mxA4KiOkQFZ-dkLebSo3mLOEPR7rN8XtxkJe45xuyJk",
    / algorithm / 1 : -7,  # ES256
    / vds       / 395 : 1, # RFC9162 SHA-256
    / claims / 15 : {
      / issuer  / 1 : "https://blue.notary.example",
      / subject / 2 : "https://green.software.example/cli@v1.2.3",
    },
  }>>,
  / unprotected / {
    / proofs / 396 : {
      / inclusion / -1 : [
        <<[
          / size / 9, / leaf / 8,
          / inclusion path /
          h'7558a95f...e02e35d6'
        ]>>
      ],
    },
  },
  / payload     / null,
  / signature   / h'02d227ed...ccd3774f'
])
]]></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"><![CDATA[
HTTP/1.1 404 Not Found
Content-Type: application/concise-problem-details+cbor

{
  / title /         -1: \
          "Not Found",
  / detail /        -2: \
          "Receipt with entry ID <id> not known \
          to this Transparency Service"
}
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="sec-privacy-considerations">
      <name>Privacy Considerations</name>
      <t>The privacy considerations section of <xref target="I-D.draft-ietf-scitt-architecture"/> applies to this document.</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 for 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-threat-model">
        <name>Threat Model</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>
              <t>Threats to strong identification, for example representing the Statements from one issuer as those of another</t>
            </li>
            <li>
              <t>Threats to payload integrity, for example changing the contents of a Signed Statement before making it transparent</t>
            </li>
            <li>
              <t>Threats to non-equivocation, for example attacks that would enable the presentation or verification of divergent proofs for the same Statement payload</t>
            </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>MUST</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 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 be 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-iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="sec-well-known-uri-for-key-discovery">
        <name>Well-Known URI for Key Discovery</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: scitt-keys
Change controller: IETF
Specification document(s): RFCthis
Status: Permanent
Related information: <xref target="I-D.draft-ietf-scitt-architecture"/></t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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>
        <reference anchor="I-D.draft-ietf-scitt-architecture">
          <front>
            <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
            <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">
         </author>
            <date day="10" month="October" year="2025"/>
            <abstract>
              <t>   Traceability in supply chains is a growing security concern.  While
   verifiable data structures have addressed specific issues, such as
   equivocation over digital certificates, they lack a universal
   architecture for all supply chains.  This document defines such an
   architecture for single-issuer signed statement transparency.  It
   ensures extensibility, interoperability between different
   transparency services, and compliance with various auditing
   procedures and regulatory requirements.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-architecture-22"/>
        </reference>
        <reference anchor="RFC8615">
          <front>
            <title>Well-Known Uniform Resource Identifiers (URIs)</title>
            <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>
          <seriesInfo name="RFC" value="8615"/>
          <seriesInfo name="DOI" value="10.17487/RFC8615"/>
        </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="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <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>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC9290">
          <front>
            <title>Concise Problem Details for Constrained Application Protocol (CoAP) APIs</title>
            <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>
          <seriesInfo name="RFC" value="9290"/>
          <seriesInfo name="DOI" value="10.17487/RFC9290"/>
        </reference>
        <reference anchor="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8792">
          <front>
            <title>Handling Long Lines in Content of Internet-Drafts and RFCs</title>
            <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>
          <seriesInfo name="RFC" value="8792"/>
          <seriesInfo name="DOI" value="10.17487/RFC8792"/>
        </reference>
        <reference anchor="NIST.SP.800-57pt1r5" target="https://doi.org/10.6028/NIST.SP.800-57pt1r5">
          <front>
            <title>Recommendation for Key Management: Part 1 - General</title>
            <author initials="E." surname="Barker" fullname="Elaine Barker">
              <organization/>
            </author>
            <date year="2020" month="May"/>
          </front>
          <seriesInfo name="NIST" value="Special Publication 800-57 Part 1 Revision 5"/>
        </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>
      <contact initials="A." surname="Chamayou" fullname="Amaury Chamayou">
        <organization>Microsoft</organization>
        <address>
          <postal>
            <country>United Kingdom</country>
          </postal>
          <email>amaury.chamayou@microsoft.com</email>
        </address>
      </contact>
      <t>Amaury contributed crucial content to ensure interoperability between implementations, improve example expressiveness and consistency, as well as overall document quality.</t>
      <contact initials="D." surname="Brooks" fullname="Dick Brooks">
        <organization>Business Cyber Guardian</organization>
        <address>
          <postal>
            <country>United States</country>
          </postal>
          <email>dick@businesscyberguardian.com</email>
        </address>
      </contact>
      <t>Dick contributed use cases and helped improve example expressiveness and consistency.</t>
      <contact initials="R. A." surname="Martin" fullname="Robert Martin">
        <organization>MITRE Corporation</organization>
        <address>
          <postal>
            <country>United States</country>
          </postal>
          <email>ramartin@mitre.org</email>
        </address>
      </contact>
      <t>Bob contributed use cases and helped with authoring and improving the document.</t>
      <contact initials="S." surname="Lasker" fullname="Steve Lasker">
        <organization/>
        <address>
          <email>stevenlasker@hotmail.com</email>
        </address>
      </contact>
      <t>Steve contributed architectural insights, particularly around asynchronous operations and participated in the initial writing of the document.</t>
      <contact initials="N." surname="Bates" fullname="Nicole Bates">
        <organization>Microsoft</organization>
        <address>
          <postal>
            <country>United States</country>
          </postal>
          <email>nicolebates@microsoft.com</email>
        </address>
      </contact>
      <t>Nicole contributed reviews and edits that improved the quality of the text.</t>
      <contact initials="R." surname="Williams" fullname="Roy Williams">
        <organization/>
        <address>
          <postal>
            <country>USA</country>
          </postal>
          <email>roywill@msn.com</email>
        </address>
      </contact>
      <t>Roy contributed the receipt refresh use case and associated resource definition.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
U6wieDoYmHogjzvpfmJgif9a4Fnj2uzZOK+m5BKVl4fzxD/osw3JuUaPbdNZ
mJRajzvJFtMeIV0+pTQu3sOLMTaRdoOAD8eUTSkiuiULhu4cWux2+5uRjndM
q1tXhAxox6rBwf8+Ga/Vra1Ph68PTh37Wkd07CbxNAxtLDB76fBKDVJWQVlq
N53wxDXJAO9g2sjYyobv/jEw9UkZUWJn9OGabGCgTRukbIaneEnOnpW5qoNC
nCZtYf0s3LeuuL6fL9jvd8J+fcJ+o2rqfE0mKsmX/2XZENpv/pII+ZII+ZII
+Z0TISPaorMr28IzMt6q1Dfu7L523cn63Vv2JsGZvdarPuA+6BQf27AVb+vV
98oer87yCTR6Bi7NffIUPkHkUtoJ3F1x5iCfL3r9XeoXPgneSIQ9uFEsflKZ
RrhDB90xeWLqZCCWaeip/NdERv/zyHiJW6HJ8lcPiCbysV3uJ6Lhnx2w8qSZ
PtqbhdFYBL9kF75kF75kF75kF75kF/4I2YWKKd4DU1z2UJ5ExNgxxVMpoc4i
F+O6I2iRj919vh8HnXAAuBH7lwdvcNxK2P/7HY+sSVEDHz5XAN/qBpbcScsT
gE15OFu5ywFcPDtpXJT+ESzKtdZY62HppMzQkvhED7Dbhm986Blv6rVdjF6P
2HLoaUKDpnlCqpA+GJ9R1sEdAqDj6dXzbbX7q60ylkOqs8859IsN1yf3C5d2
Q+T+uSu+Rsfnrvc53m9/mhbzscqelZkVvAT0FP4T6+gZoQyJQAawSjW1d2mP
hVuU9ekD29VAdK836UVqH481hZOwNzjcP9pTUffXpcSaUltrKQEInF1CyW8Y
Wvn+nEPeX4LuL0H3/6ege83L1n1rTpv65KkrUXh55r7qbN+fYtmls5P3P9e1
/q43D1b84890qNUzWgKNwhK8pXgag11FbEO3V2pfuBuIjYUtvPUVF1l8K+HN
sb05xaEjh50L+y6svRP29jAfAa/X8eHTc8YPXjnk9shX+1wbCyTDFmwSV3hI
bnPpIj4m72sAJlSSlOvfMAwIwcHg8C1Xyq0WEOtJa9NekDQVAWuq6DEyfG+E
k9t2JiuccXl+xyH0eCguWM3U1YChC/4bvqdz15Luutosubs4V5+JSOQSk0ZY
44JcpZ1d2bEFqNAP1Qqj08ZceQuLzHhjHM40XkFriTBbLnIAS3IxAz+h0luV
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

-->

</rfc>
