<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category="std" ipr="trust200902" obsoletes="" updates="" xml:lang="en" symRefs="true" sortRefs="true" tocInclude="true" version="3" docName="draft-ietf-scitt-scrapi-03">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <!-- Generated by id2xml 1.5.2 on 2025-01-08T14:08:56Z -->
	<front>
    <title abbrev="SCITT Reference APIs Draft-ietf-scitt-sc">SCITT Reference APIs Draft-ietf-scitt-scrapi-03</title>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization>Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <street>64295 Darmstadt</street>
          <street>Germany</street>
        </postal>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>
    <author initials="J." surname="Geater" fullname="Jon Geater">
      <organization>DataTrails Inc.</organization>
      <address>
        <postal>
          <street>United States</street>
        </postal>
        <email>jon.geater@datatrails.ai</email>
      </address>
    </author>
    <date year="2025" month="January" day="8"/>
    <workgroup>SCITT</workgroup>
    <abstract>
      <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>
      <name>About This Document</name>
      <t>
   This note is to be removed before publishing as an RFC.</t>
      <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 (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>
    <section anchor="sect-1" numbered="true" toc="default">
      <name>Introduction</name>
      <t>
   The SCITT Architecture <xref target="I-D.ietf-scitt-architecture" format="default"/> 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 the operations necessary to support supply chain
   transparency using COSE <xref target="RFC9052" format="default"/>:</t>
      <ul spacing="normal">
        <li>
          <t>Issuances of Signed Statements</t>
        </li>
        <li>
          <t>Registration of Signed Statements</t>
        </li>
        <li>
          <t>Verification of Signed Statements</t>
        </li>
        <li>
          <t>Issuance of Receipts</t>
        </li>
        <li>
          <t>Verification of Receipts</t>
        </li>
        <li>
          <t>Production of Transparent Statements</t>
        </li>
        <li>
          <t>Verification of Transparent Statements</t>
        </li>
      </ul>
      <t>
   In addition to these operational HTTP endpoints, this specification
   defines supporting endpoints:</t>
      <ul spacing="normal">
        <li>
          <t>Resolving Verification Keys for Issuers</t>
        </li>
        <li>
          <t>Retrieving Receipts Asynchronously</t>
        </li>
        <li>
          <t>Retrieving Signed Statements from an Artifact Repository</t>
        </li>
        <li>
          <t>Retrieving Statements from an Artifact Repository</t>
        </li>
      </ul>
      <section anchor="sect-1.1" numbered="true" toc="default">
        <name>Terminology</name>
        <t>
   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   BCP 14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they appear in all
   capitals, as shown here.</t>
        <t>
   This specification uses the terms "Signed Statement", "Receipt",
   "Transparent Statement", "Artifact Repositories", "Transparency Service", "Append-Only Log" and "Registration Policy" as defined in
   <xref target="I-D.ietf-scitt-architecture" format="default"/>.</t>
        <t>
   This specification uses "payload" as defined in <xref target="RFC9052" format="default"/>.</t>
      </section>
    </section>
    <section anchor="sect-2" numbered="true" toc="default">
      <name>Endpoints</name>
      <t>
   Authentication is out of scope for this document.  Implementations
   MAY authenticate clients, for example authorization or preventing
   denial of service attacks.  If Authentication is not implemented,
   rate limiting or other denial of service mitigation MUST 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
   MUST return an HTTP 4xx or 5xx status code, and the body SHOULD be a
   Concise Problem Details object <xref target="RFC9290" format="default"/> containing:</t>
      <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>
        <li>
          <t>instance: A URN reference identifying the problem.  To facilitate
      automated response to errors, this document defines a set of
      standard tokens for use in the type field within the URN namespace
      of: "urn:ietf:params:scitt:error:".</t>
        </li>
        <li>
          <t>response-code: The HTTP error response code relating to this
      error.</t>
        </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" format="default"/> 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" format="default"/></t>
      <t>
   Examples of errors may include:</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
{
  / title /         -1: \
            "Bad Signature Algorithm",
  / detail /        -2: \
            "Signing algorithm 'WalnutDSA' not supported",
  / instance /      -3: \
            "urn:ietf:params:scitt:error:badSignatureAlgorithm",
  / response-code / -4: 400,
}
]]></artwork>
      <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>
   Error code: `malformed` (The request could not be parsed)</t>
      <t>
   Clients SHOULD treat 500 and 503 HTTP status code responses as
   transient failures and MAY retry the same request without
   modification at a later date.</t>
      <t>
   Note that in the case of any error response, the Transparency Service
   MAY include a Retry-After header field per <xref target="RFC9110" format="default"/> 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="sect-2.1" numbered="true" toc="default">
        <name>Mandatory</name>
        <t>
   The following HTTP endpoints are mandatory to implement to enable
   conformance to this specification.</t>
        <section anchor="sect-2.1.1" numbered="true" toc="default">
          <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>
          <artwork name="" type="" align="left" alt=""><![CDATA[
GET /.well-known/transparency-configuration HTTP/1.1
Host: transparency.example
Accept: application/cose

Response:

HTTP/1.1 200 Ok
Content-Type: application/cose

Payload (in CBOR diagnostic notation)

18([                   ; COSE_Sign1 structure with tag 18
    h'44A123BEEFFACE', ; Protected header (example bytes)
    {},                ; Unprotected header
    {                  ; Payload - CBOR map
        "issuer": "https://transparency.example",
        "base_url": "https://transparency.example/v1/scrapi",
        "oidc_auth_endpoint": "https://transparency.example/auth",
        "registration_policy": "https://transparency.example/statements/\
urn:ietf:params:scitt:statement:sha-256:base64url:5i6UeRzg1...qnGmr1o"
    },
    h'ABCDEF1234567890ABCDEF1234567890'  ; Signature
])
]]></artwork>
          <t>
   Responses to this message are vendor-specific.  Fields that are not
   understood MUST be ignored.</t>
        </section>
        <section anchor="sect-2.1.2" numbered="true" toc="default">
          <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>
          <artwork name="" type="" align="left" alt=""><![CDATA[
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          /
])
]]></artwork>
          <t>
   If the payload is detached, the Transparency Service depends on the
   client's authentication context in the Registration Policy.  If the
   payload 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 MUST 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="sect-2.1.2.1" numbered="true" toc="default">
            <name>Status 201 - Registration is successful</name>
            <t>
   If the Transparency Service is able to mint receipts within a
   reasonable time, it may return the receipt directly.</t>
            <t>
   Along with the receipt the Transparency Service MAY return a locator
   in the HTTP response Location header, provided the locator is a valid
   URL.</t>
            <t>
   HTTP/1.1 201 Created</t>
            <t>
   Location: <eref target="https://transparency.example/entries\"/> /67ed41f1de6a...cfc158694ed0befe</t>
            <t>
   Content-Type: application/cose</t>
            <t>
   Payload (in CBOR diagnostic notation)</t>
            <artwork name="" type="" align="left" alt=""><![CDATA[
18([                            / COSE Sign1         /
  h'a1013822',                  / Protected Header   /
  {},                           / Unprotected Header /
  null,                         / Detached Payload   /
  h'269cd68f4211dffc...0dcb29c' / Signature          /
])
]]></artwork>
            <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="sect-2.1.2.2" numbered="true" toc="default">
            <name>Status 202 - Registration is running</name>
            <t>
   In cases where the registration request is accepted but the
   Transparency Service is not able to mint Receipts in a reasonable
   time, it returns a locator for the registration operation and a
   status code indicating the status of the operation, as in this non-
   normative example:</t>
            <artwork name="" type="" align="left" alt=""><![CDATA[
{
  / locator / "OperationID": "67f89d5f0042e3ad42...35a1f190",
  / status /  "Status": "running",
}

Status must be one of the following:
]]></artwork>
            <ul spacing="normal">
              <li>
                <t>"running" - the operation is still in progress</t>
              </li>
              <li>
                <t>"succeeded" - the operation succeeded and the Receipt is ready</t>
              </li>
            </ul>
            <t>
   OperationID is Transparency Service-specific and MUST not be used for
   querying status in any Transparency Service other than the one that
   returned it.</t>
            <t>
   If the OperationID is a valid URL, it MAY be included as a Location
   header in the HTTP response.</t>
            <t>
   Transparency Services do not guarantee the retention of operation IDs
   for the entirety of their lifecycle.  A Transparency MAY delete
   operation records, and some operation ID lookups MAY return error
   404, even though they were valid in the past.  The length of validity
   of the OperationID is Transparency Service specific.  Still, the
   Transparency Service MUST maintain a record of every running or
   successful operation until at least one client has fetched the
   completed Receipt.</t>
            <t>
   The Transparency Service MAY include a Retry-After header in the HTTP
   response to help with polling.</t>
            <t>
   HTTP/1.1 202 Accepted</t>
            <t>
   Location: <eref target="https://transparency.example/operations/67f8...f190"/>
            </t>
            <artwork name="" type="" align="left" alt=""><![CDATA[
Content-Type: application/cbor
Retry-After: <seconds>

{
  / locator / "OperationID": "67f89d5f0042e3ad42...35a1f190",
  / status /  "Status": "running",
}
]]></artwork>
            <t>
   The response contains an ID referencing the running operation for
   Signed Statement Registration.</t>
            <t>
   If 202 is returned, then clients should wait until Registration
   succeeded or failed by polling the Check Operation endpoint using the
   OperationID returned in the response.</t>
          </section>
          <section anchor="sect-2.1.2.3" numbered="true" toc="default">
            <name>Status 400 - Invalid Client Request</name>
            <t>
   The following expected errors are defined.  Implementations MAY
   return other errors, so long as they are valid <xref target="RFC9290" format="default"/> objects.</t>
            <artwork name="" type="" align="left" alt=""><![CDATA[
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",
  / instance /      -3: \
          "urn:ietf:params:scitt:error:badSignatureAlgorithm",
  / response-code / -4: 400,
}

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",
  / instance /      -3: \
          "urn:ietf:params:scitt:error:signed-statement:\
          confirmation-missing",
  / response-code / -4: 400,
}

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)",
  / instance /      -3: \
          "urn:ietf:params:scitt:error:signed-statement:\
          payload-missing",
  / response-code / -4: 400,
}

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)",
  / instance /      -3: \
          "urn:ietf:params:scitt:error:signed-statement:\
          payload-forbidden",
  / response-code / -4: 400,
}

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",
  / instance /      -3: \
          "urn:ietf:params:scitt:error:signed-statement:\
          rejected-by-registration-policy",
  / response-code / -4: 400,
}
]]></artwork>
          </section>
        </section>
        <section anchor="sect-2.1.3" numbered="true" toc="default">
          <name>Check Registration</name>
          <t>
   Authentication MAY be implemented for this endpoint.</t>
          <t>
   This endpoint is used to check the progress of a long-running
   registration.</t>
          <t>
   The following is a non-normative example of an HTTP request for the
   status of a running registration:</t>
          <t>
   Request:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
GET /operations/67f89d5f0042e3ad42...35a1f190, HTTP/1.1
Host: transparency.example
Accept: application/cbor

Response:

One of the following:
]]></artwork>
          <section anchor="sect-2.1.3.1" numbered="true" toc="default">
            <name>Status 200 - Operation complete</name>
            <t>
   _Success case_</t>
            <t>
   If the operation is complete and it _succeeded_, the Transparency
   Service returns a status of "succeeded" along with a locator that can
   fetch the Receipt.</t>
            <t>
   EntryID is Transparency Service specific and MUST not be used for
   fetching Receipts in any Transparency Service other than the one that
   returned it.</t>
            <t>
   If the EntryID is a valid URL, it MAY be included as a Location
   header in the HTTP response.</t>
            <t>
   HTTP/1.1 200 Ok</t>
            <t>
   Location: <eref target="https://transparency.example/entries/67ed...befe"/>
            </t>
            <t>
   Content-Type: application/cbor</t>
            <artwork name="" type="" align="left" alt=""><![CDATA[
{
  / locator / "EntryID": "67f89d5f0042e3ad42...35a1f190",
  / status /  "Status": "succeeded",
}

_Failure case_
]]></artwork>
            <t>
   If the operation is complete and it _failed_, the Transparency
   Service returns a status of "failed" and an optional <xref target="RFC9290" format="default"/>
   Concise Problem Details object to explain the failure.</t>
            <t>
   HTTP/1.1 200 Ok</t>
            <t>
   Content-Type: application/cbor</t>
            <artwork name="" type="" align="left" alt=""><![CDATA[
{
  / status / "Status": "failed",
  / error /  "Error": {
    / title /         -1: \
            "Bad Signature Algorithm",
    / detail /        -2: \
            "Signed Statement contained a non supported algorithm",
    / instance /      -3: \
            "urn:ietf:params:scitt:error:badSignatureAlgorithm",
  }
}
]]></artwork>
          </section>
          <section anchor="sect-2.1.3.2" numbered="true" toc="default">
            <name>Status 202 - Registration is (still) running</name>
            <t>
   HTTP/1.1 202 Accepted</t>
            <t>
   Location: <eref target="https://transparency.example/operations/67f8...f190"/>
            </t>
            <t>
   Retry-After: &lt;seconds&gt;</t>
            <t>
   If 202 is returned, then clients should continue polling the Check
   Operation endpoint using the operation identifier.</t>
          </section>
          <section anchor="sect-2.1.3.3" numbered="true" toc="default">
            <name>Status 400 - Invalid Client Request</name>
            <t>
   The following expected errors are defined.  Implementations MAY
   return other errors, so long as they are valid <xref target="RFC9290" format="default"/> objects.</t>
            <artwork name="" type="" align="left" alt=""><![CDATA[
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",
  / instance /      -3: "urn:ietf:params:scitt:error:invalidRequest",
  / response-code / -4: 400,
}
]]></artwork>
          </section>
          <section anchor="sect-2.1.3.4" numbered="true" toc="default">
            <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>
            <artwork name="" type="" align="left" alt=""><![CDATA[
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",
  / instance /      -3: \
          "urn:ietf:params:scitt:error:notFound",
  / response-code / -4: 404,
}
]]></artwork>
          </section>
          <section anchor="sect-2.1.3.5" numbered="true" toc="default">
            <name>Status 429</name>
            <t>
   If a client is polling for an in-progress registration too frequently
   then the Transparency Service MAY, in addition to implementing rate
   limiting, return a 429 response:</t>
            <artwork name="" type="" align="left" alt=""><![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.",
  / instance /      -3: \
          "urn:ietf:params:scitt:error:tooManyRequests",
  / response-code / -4: 429,
}
]]></artwork>
          </section>
        </section>
        <section anchor="sect-2.1.4" numbered="true" toc="default">
          <name>Resolve Receipt</name>
          <t>
   Authentication SHOULD be implemented for this endpoint.</t>
          <t>
   Request:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
GET entries/67ed41f1de6a...cfc158694ed0befe HTTP/1.1
Host: transparency.example
Accept: application/cose

Response:
]]></artwork>
          <section anchor="sect-2.1.4.1" numbered="true" toc="default">
            <name>Status 200</name>
            <t>
   If the Receipt is found:</t>
            <artwork name="" type="" align="left" alt=""><![CDATA[
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          /
])
]]></artwork>
          </section>
          <section anchor="sect-2.1.4.2" numbered="true" toc="default">
            <name>Status 404</name>
            <t>
   If there is no Receipt found for the specified EntryID the
   Transparency Service returns a 404 response:</t>
            <artwork name="" type="" align="left" alt=""><![CDATA[
HTTP/1.1 404 Not Found
application/concise-problem-details+cbor

{
  / title /         -1: \
          "Not Found",
  / detail /        -2: \
          "Receipt with entry ID <id> not known \
          to this Transparency Service",
  / instance /      -3: \
          "urn:ietf:params:scitt:error:receipt:not-found",
  / response-code / -4: 404,
}
]]></artwork>
          </section>
        </section>
      </section>
      <section anchor="sect-2.2" numbered="true" toc="default">
        <name>Optional Endpoints</name>
        <t>
   The following HTTP endpoints are optional to implement.</t>
        <section anchor="sect-2.2.1" numbered="true" toc="default">
          <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>
          <artwork name="" type="" align="left" alt=""><![CDATA[
GET /signed-statements/9e4f...688a HTTP/1.1
Host: transparency.example
Accept: application/cose

Response:

One of the following:
]]></artwork>
          <section anchor="sect-2.2.1.1" numbered="true" toc="default">
            <name>Status 200 - Success</name>
            <artwork name="" type="" align="left" alt=""><![CDATA[
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          /
])
]]></artwork>
          </section>
          <section anchor="sect-2.2.1.2" numbered="true" toc="default">
            <name>Status 404 - Not Found</name>
            <t>
   The following expected errors are defined.  Implementations MAY
   return other errors, so long as they are valid <xref target="RFC9290" format="default"/> objects.</t>
            <artwork name="" type="" align="left" alt=""><![CDATA[
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",
  / instance /      -3: \
          "urn:ietf:params:scitt:error:notFound",
  / response-code / -4: 404,
]]></artwork>
          </section>
          <section anchor="sect-2.2.1.3" numbered="true" toc="default">
            <name>Eventual Consistency</name>
            <t>
   For all responses additional eventually consistent operation details
   MAY be present.  Support for eventually consistent Receipts is
   implementation specific, and out of scope for this specification.</t>
          </section>
        </section>
        <section anchor="sect-2.2.2" numbered="true" toc="default">
          <name>Exchange Receipt</name>
          <t>
   This endpoint is used to exchange old or expiring Receipts for fresh
   ones.</t>
          <t>
   The iat, exp and kid 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>
          <artwork name="" type="" align="left" alt=""><![CDATA[
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          /
])
]]></artwork>
          <section anchor="sect-2.2.2.1" numbered="true" toc="default">
            <name>Status 200</name>
            <t>
   A new Receipt:</t>
            <t>
   HTTP/1.1 200 Ok
   Location: <eref target="https://transparency.example/entries/67ed...befe"/>
            </t>
            <t>
   Content-Type: application/cose</t>
            <t>
   Payload (in CBOR diagnostic notation)</t>
            <artwork name="" type="" align="left" alt=""><![CDATA[
18([                            / COSE Sign1         /
  h'a1013822',                  / Protected Header   /
  {},                           / Unprotected Header /
  null,                         / Detached Payload   /
  h'269cd68f4211dffc...0dcb29c' / Signature          /
])
]]></artwork>
          </section>
        </section>
        <section anchor="sect-2.2.3" numbered="true" toc="default">
          <name>Resolve Issuer</name>
          <t>
   This endpoint is inspired by <xref target="I-D.ietf-oauth-sd-jwt-vc" format="default"/>.</t>
          <t>
   The following is a non-normative example of a HTTP request for the
   Issuer Metadata configuration when iss is set to
   <eref target="https://transparency.example/tenant/1234:"/>
          </t>
          <t>
   Request:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
GET /.well-known/issuer/tenant/1234 HTTP/1.1
Host: transparency.example
Accept: application/json

Response:

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"
      }
    ]
  }
}
]]></artwork>
        </section>
        <section anchor="sect-2.2.4" numbered="true" toc="default">
          <name>Request Nonce</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
This endpoint in inspired by
[I-D.draft-demarco-oauth-nonce-endpoint].
]]></artwork>
          <t>
   Authentication SHOULD NOT be implemented for this endpoint.  This
   endpoint is used to demonstrate proof of possession, which is the
   reason that authentication is not required.  Client holding signed
   statements that require demonstrating proof of possession MUST use
   this endpoint to obtain a nonce.</t>
          <t>
   Request:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
GET /nonce HTTP/1.1
Host: transparency.example
Accept: application/json

Response:

HTTP/1.1 200 OK
Content-Type: application/json

{
  "nonce": "d2JhY2NhbG91cmVqdWFuZGFt"
}
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="sect-3" numbered="true" toc="default">
      <name>Privacy Considerations</name>
      <t>
   TODO</t>
    </section>
    <section anchor="sect-4" numbered="true" toc="default">
      <name>Security Considerations</name>
      <section anchor="sect-4.1" numbered="true" toc="default">
        <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.ietf-scitt-architecture" format="default"/>.  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="sect-4.2" numbered="true" toc="default">
        <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="sect-4.3" numbered="true" toc="default">
        <name>User-host Authentication</name>
        <t>
   <xref target="I-D.ietf-scitt-architecture" format="default"/> 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 MUST support at least one of the following options:</t>
        <ul spacing="normal">
          <li>
            <t>HTTP Authorization header with a JWT</t>
          </li>
          <li>
            <t>domain-bound API key</t>
          </li>
          <li>
            <t>TLS client authentication</t>
          </li>
        </ul>
        <t>
   Where authentication methods rely on long term secrets, both clients
   and Transparency Services implementing this specification SHOULD
   allow for the revocation and rolling of authentication secrets.</t>
      </section>
      <section anchor="sect-4.4" numbered="true" toc="default">
        <name>Primary Threats</name>
        <section anchor="sect-4.4.1" numbered="true" toc="default">
          <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="sect-4.4.1.1" numbered="true" toc="default">
            <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 _silent_ 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 SHOULD 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 SHOULD implement
   general good practice around network attacks, flooding, rate limiting
   etc.</t>
          </section>
          <section anchor="sect-4.4.1.2" numbered="true" toc="default">
            <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 MUST add
   protections against man-in-the-middle and network eavesdropping, such
   as TLS.</t>
          </section>
          <section anchor="sect-4.4.1.3" numbered="true" toc="default">
            <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="sect-4.4.1.4" numbered="true" toc="default">
            <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 MAY 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="sect-4.4.2" numbered="true" toc="default">
          <name>Out of Scope</name>
          <section anchor="sect-4.4.2.1" numbered="true" toc="default">
            <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 MAY be
   added to the protected header signed by the Issuer.</t>
          </section>
          <section anchor="sect-4.4.2.2" numbered="true" toc="default">
            <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="sect-5" numbered="true" toc="default">
      <name>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="sect-6" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <section anchor="sect-6.1" numbered="true" toc="default">
        <name>URN Sub-namespace for SCITT (urn:ietf:params:scitt)</name>
        <t>
   IANA is requested to register the URN sub-namespace
   urn:ietf:params:scitt in the "IETF URN Sub-namespace for Registered Protocol Parameter Identifiers" Registry <xref target="IANA.params" format="default"/>, following the
   template in <xref target="RFC3553" format="default"/>:</t>
        <ul empty="true" spacing="normal">
          <li>
            <dl newline="false" spacing="normal" indent="19">
              <dt>Registry name:</dt>
              <dd>
                <t>
	scitt
                </t>
                <t>
	Specification:  [RFCthis]
      Repository:  <eref target="http://www.iana.org/assignments/scitt"/> Index value:  No transformation needed.
                </t>
              </dd>
            </dl>
          </li>
        </ul>
      </section>
      <section anchor="sect-6.2" numbered="true" toc="default">
        <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" format="default"/>):</t>
        <t>
   URI suffix: issuer Change controller: IETF Specification document(s):
   RFCthis.  Related information: N/A</t>
      </section>
      <section anchor="sect-6.3" numbered="true" toc="default">
        <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" format="default"/>):</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="sect-6.4" numbered="true" toc="default">
        <name>Media Type Registration</name>
        <t>
   This section requests registration of the "application/scitt.receipt+cose" media type <xref target="RFC2046" format="default"/> in the "Media Types"
   registry in the manner described in <xref target="RFC6838" format="default"/>.</t>
        <t>
   To indicate that the content is a SCITT Receipt:</t>
        <ul spacing="normal">
          <li>
            <t>Type name: application</t>
          </li>
          <li>
            <t>Subtype name: scitt.receipt+cose</t>
          </li>
          <li>
            <t>Required parameters: n/a</t>
          </li>
          <li>
            <t>Optional parameters: n/a</t>
          </li>
          <li>
            <t>Encoding considerations: TODO</t>
          </li>
          <li>
            <t>Security considerations: TODO</t>
          </li>
          <li>
            <t>Interoperability considerations: n/a</t>
          </li>
          <li>
            <t>Published specification: this specification</t>
          </li>
          <li>
            <t>Applications that use this media type: TBD</t>
          </li>
          <li>
            <t>Fragment identifier considerations: n/a</t>
          </li>
          <li>
            <t>Additional information:</t>
            <ul spacing="normal">
              <li>
                <t>Magic number(s): n/a</t>
              </li>
              <li>
                <t>File extension(s): n/a</t>
              </li>
              <li>
                <t>Macintosh file type code(s): n/a</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Person &amp; email address to contact for further information: TODO</t>
          </li>
          <li>
            <t>Intended usage: COMMON</t>
          </li>
          <li>
            <t>Restrictions on usage: none</t>
          </li>
          <li>
            <t>Author: TODO</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Provisional registration?  No</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="I-D.ietf-scitt-architecture" target="https://datatracker.ietf.org/doc/html/draft-ietf-scitt-architecture-10" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-scitt-architecture.xml">
          <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">
              <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>
          <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-architecture-10"/>
        </reference>
        <reference anchor="IANA.params" target="https://www.iana.org/assignments/params">
          <front>
            <title>Uniform Resource Name (URN) Namespace for IETF Use</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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="RFC3553" target="https://www.rfc-editor.org/info/rfc3553" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3553.xml">
          <front>
            <title>An IETF URN Sub-namespace for Registered Protocol Parameters</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <author fullname="T. Hardie" initials="T." surname="Hardie"/>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <date month="June" year="2003"/>
            <abstract>
              <t>This document describes a new sub-delegation for the 'ietf' URN namespace for registered protocol items. The 'ietf' URN namespace is defined in RFC 2648 as a root for persistent URIs that refer to IETF- defined resources. 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="73"/>
          <seriesInfo name="RFC" value="3553"/>
          <seriesInfo name="DOI" value="10.17487/RFC3553"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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="RFC8615" target="https://www.rfc-editor.org/info/rfc8615" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8615.xml">
          <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" target="https://www.rfc-editor.org/info/rfc9052" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9052.xml">
          <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" target="https://www.rfc-editor.org/info/rfc9110" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9110.xml">
          <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" target="https://www.rfc-editor.org/info/rfc9290" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9290.xml">
          <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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.demarco-oauth-nonce-endpoint" target="https://datatracker.ietf.org/doc/html/draft-demarco-oauth-nonce-endpoint-00" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.demarco-oauth-nonce-endpoint.xml">
          <front>
            <title>OAuth 2.0 Nonce Endpoint</title>
            <author fullname="Giuseppe De Marco" initials="G." surname="De Marco">
              <organization>Independent</organization>
            </author>
            <author fullname="Orie Steele" initials="O." surname="Steele">
              <organization>Transmute</organization>
            </author>
            <date day="6" month="February" year="2024"/>
            <abstract>
              <t>This document defines the Nonce Endpoint for OAuth 2.0 implementations [RFC6749]. It details how an Authorization Server generates and issues opaque Nonces and how a client can learn about this endpoint to obtain a Nonce generated by the Authorization Server.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-demarco-oauth-nonce-endpoint-00"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-sd-jwt-vc" target="https://datatracker.ietf.org/doc/html/draft-ietf-oauth-sd-jwt-vc-08" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-oauth-sd-jwt-vc.xml">
          <front>
            <title>SD-JWT-based Verifiable Credentials (SD-JWT VC)</title>
            <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>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-sd-jwt-vc-08"/>
        </reference>
        <reference anchor="RFC2046" target="https://www.rfc-editor.org/info/rfc2046" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2046.xml">
          <front>
            <title>Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types</title>
            <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>
          <seriesInfo name="RFC" value="2046"/>
          <seriesInfo name="DOI" value="10.17487/RFC2046"/>
        </reference>
        <reference anchor="RFC6838" target="https://www.rfc-editor.org/info/rfc6838" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6838.xml">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <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>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
        <reference anchor="RFC8792" target="https://www.rfc-editor.org/info/rfc8792" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8792.xml">
          <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>
      </references>
    </references>
    <section numbered="false" anchor="contributors" toc="default">
      <name>Contributors</name>
      <artwork name="" type="" align="left" alt=""><![CDATA[
Orie Steele
Transmute
United States
Email: orie@transmute.industries
]]></artwork>
      <t>
   Orie contributed examples, text, and URN structure to early version
   of this draft.</t>
    </section>
  </back>
</rfc>
