<?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.39 (Ruby 3.4.9) -->
<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="o-*+"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-satp-core-15" category="std" consensus="true" submissionType="IETF" tocDepth="4" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="SATP Core">Secure Asset Transfer Protocol (SATP) Core</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-satp-core-15"/>
    <author initials="M." surname="Hargreaves" fullname="Martin Hargreaves">
      <organization>Quant Network</organization>
      <address>
        <email>martin.hargreaves@quant.network</email>
      </address>
    </author>
    <author initials="T." surname="Hardjono" fullname="Thomas Hardjono">
      <organization>MIT</organization>
      <address>
        <email>hardjono@mit.edu</email>
      </address>
    </author>
    <author initials="R." surname="Belchior" fullname="Rafael Belchior">
      <organization>INESC-ID</organization>
      <address>
        <email>rafael.belchior@tecnico.ulisboa.pt</email>
      </address>
    </author>
    <author initials="V." surname="Ramakrishna" fullname="Venkatraman Ramakrishna">
      <organization>IBM</organization>
      <address>
        <email>vramakr2@in.ibm.com</email>
      </address>
    </author>
    <author initials="A." surname="Chiriac" fullname="Alex Chiriac">
      <organization>Quant Network</organization>
      <address>
        <email>alexandru.chiriac@quant.network</email>
      </address>
    </author>
    <date year="2026" month="July" day="28"/>
    <area>Applications and Real-Time</area>
    <workgroup>Secure Asset Transfer Protocol</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 158?>

<t>This memo describes the Secure Asset Transfer Protocol (SATP) for digital assets. SATP is a protocol operating between two gateways that conducts the transfer of a digital asset from one gateway to another, each representing their corresponding digital asset networks. The protocol establishes a secure channel between the endpoints and implements a 2-phase commit (2PC) to ensure the properties of transfer atomicity, consistency, isolation and durability.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-satp.github.io/draft-ietf-satp-core/draft-ietf-satp-core.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-satp-core/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Secure Asset Transfer Protocol Working Group mailing list (<eref target="mailto:sat@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/sat/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/sat/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-satp/draft-ietf-satp-core"/>.</t>
    </note>
  </front>
  <middle>
    <?line 162?>

<section anchor="introduction">
      <name>Introduction</name>
      <t anchor="introduction-doc">This memo proposes a secure asset transfer protocol (SATP) that is intended to be deployed between two gateway endpoints
to transfer a digital asset from an origin asset network to a destination asset network.
Readers are directed first to <xref target="ARCH"/> for a description of the architecture underlying the current protocol.</t>
      <t>Both the origin and destination asset networks are assumed to be opaque
in the sense that the interior construct of a given network
is not read/write accessible to unauthorized entities.</t>
      <t>The protocol utilizes the asset burn-and-mint paradigm whereby the asset
to be transferred is permanently disabled or destroyed (burned)
at the origin asset network and is re-generated (minted) at the destination asset network.
This is achieved through the coordinated actions of the peer gateways
handling the unidirectional transfer at the respective networks.</t>
      <t>A gateway is assumed to be trusted to perform the tasks involved in the asset transfer.</t>
      <t>The overall aim of the protocol is to ensure that the state of assets
in the origin and destination networks remain consistent,
and that asset movements into (out of) networks via gateways can be accounted for.</t>
      <t>There are several desirable technical properties of the protocol.
The protocol must ensure that the properties of atomicity, consistency,
isolation, and durability (ACID) are satisfied.</t>
      <t>The requirement of consistency implies that the
asset transfer protocol always leaves both asset networks
in a consistent state (that the asset is located in
one system/network only at any time).</t>
      <t>Atomicity means that the protocol must guarantee
that either the transfer commits (completes) or entirely fails,
where failure is taken to mean there is no change to the
state of the asset in the origin (sender) asset network.</t>
      <t>The property of isolation means that while a transfer
is occurring to a digital asset from an origin network,
no other state changes can occur to the asset.</t>
      <t>The property of durability means that once
the transfer has been committed by both gateways,
that this commitment must hold regardless of subsequent
unavailability (e.g. crash) of the gateways implementing the SATP protocol.</t>
      <t>All messages exchanged between gateways are assumed to run over TLS1.3.
HTTP/S must be used instead of plain HTTP.</t>
      <t>The endpoints at the respective gateways should provide access to credentials
(or other identification mechanisms) to prove the legal owner (or operator) of the gateway.
An example of credentials include X509 certificates.</t>
    </section>
    <section anchor="conventions-used-in-this-document">
      <name>Conventions used in this document</name>
      <t anchor="conventions">The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL"
in this document are to be interpreted as described in RFC 2119 <xref target="REQ-LEVEL"/>.</t>
      <t>In this document, these words will appear with that interpretation
only when in ALL CAPS. Lower case uses of these words are not to be
interpreted as carrying significance described in RFC 2119.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t anchor="terminology-doc">The following are some terminology used in the current document, some borrowed from <xref target="NIST"/>:</t>
      <ul spacing="normal">
        <li>
          <t>Digital asset: digital representation of a value or of a right that is able to be
transferred and stored electronically using distributed ledger technology or similar technology <xref target="MICA"/>.</t>
        </li>
        <li>
          <t>Asset network: A monolithic system or a set of distributed systems that manage digital assets.</t>
        </li>
        <li>
          <t>Client application: This is the application employed by a user
to interact with a gateway.</t>
        </li>
        <li>
          <t>Gateway: The computer system functionally capable of acting
as a gateway in an asset transfer.</t>
        </li>
        <li>
          <t>Sender gateway: The gateway that initiates a unidirectional asset transfer.</t>
        </li>
        <li>
          <t>Recipient gateway: The gateway that is the recipient side of
a unidirectional asset transfer.</t>
        </li>
        <li>
          <t>Claim: An assertion made by an Entity. The terms Claim, Claim Name and Claim Value are as defined in <xref target="RFC7519"/>.</t>
        </li>
        <li>
          <t>Claim Type: The intended use of a claim in the context of the message flows (e.g., asset lock claim).</t>
        </li>
        <li>
          <t>Gateway Claim: An assertion made by a Gateway regarding the status or
condition of resources (e.g. assets, public keys, etc.)
accessible to that gateway (e.g. within its asset network or system).</t>
        </li>
      </ul>
      <t>In the remainder of this document, for brevity of description the term “asset network” will often be shorted to "network".</t>
    </section>
    <section anchor="the-secure-asset-transfer-protocol">
      <name>The Secure Asset Transfer Protocol</name>
      <section anchor="satp-protocol">
        <name>Overview</name>
        <t anchor="satp-overview">The Secure Asset Transfer Protocol (SATP) is a gateway-to-gateway protocol used by a sender gateway with a recipient gateway to perform a unidirectional transfer of a digital asset.</t>
        <t>The protocol defines a number of API endpoints, resources and identifier definitions, and message flows corresponding to the asset transfer between the two gateways.</t>
        <t>The current document pertains to the interaction between gateways through API2 <xref target="ARCH"/>.</t>
        <t><tt>
                 +----------+                +----------+
                 |  Client  |                | Off-net  |
          ------ |   (App)  |                | Resource |
          |      +----------+                +----------+
          |           |                      |   API3   |
          |           |                      +----------+
          |           |                           ^
          |           V                           |
          |      +---------+                      |
          V      |   API1  |                      |
       +-----+   +---------+----+        +----+---------+   +-----+
       |     |   |         |    |        |    |         |   |     |
       | Net.|   | Gateway |API2|        |API2| Gateway |   | Net.|
       | NW1 |---|    G1   |    |&lt;------&gt;|    |    G2   |---| NW2 |
       |     |   |         |    |        |    |         |   |     |
       +-----+   +---------+----+        +----+---------+   +-----+
                               Figure 1
</tt></t>
      </section>
      <section anchor="satp-model">
        <name>SATP Model</name>
        <t anchor="the-satp-model">The model for SATP is shown in Figure 1 <xref target="ARCH"/>.
The Client (application) interacts with its local gateway (G1) over an interface (API1) in order to provide instructions to the gateway with regards to actions to assets and related resources located in the local system or network (NW1).</t>
        <t>Gateways interact with each other over a gateway interface (API2). A given gateway may be required to access resources that are not located in network NW1 or network NW2. Access to these types of resources are performed over an off-network interface (API3).</t>
      </section>
      <section anchor="stages-of-the-protocol">
        <name>Stages of the Protocol</name>
        <t anchor="satp-flowtypes">The SATP protocol defines three (3) stages for a unidirectional asset transfer:</t>
        <ul spacing="normal">
          <li>
            <t>Transfer Initiation stage (Stage-1): These flows deal with commencing a transfer from one gateway to another. In this stage the sender gateway delivers a proposal containing the parameters agreed upon in Stage-0.</t>
          </li>
          <li>
            <t>Lock-Assertion stage (Stage-2):
These flows deal with the conveyance of signed assertions from the sender gateway to the receiver gateway regarding the locked status of an asset at the origin network.</t>
          </li>
          <li>
            <t>Commitment Preparation and Finalization stage (Stage-3):
These flows deal with the asset transfer and commitment establishment between two gateways.</t>
          </li>
        </ul>
        <t>In order to clarify discussion, the interactions between the peer gateways prior to the transfer initiation stage is referred to as the setup stage (Stage-0), which is outside the scope of the current specification.</t>
        <t>The Stage-1, Stage-2 and Stage-3 flows will be discussed below.</t>
      </section>
      <section anchor="gateway-cryptographic-keys">
        <name>Gateway Cryptographic Keys</name>
        <t>SATP recognizes the following cryptographic keys which are intended for distinct purposes within the different stages of the protocol.</t>
        <ul spacing="normal">
          <li>
            <t>Gateway signature public key-pair: This is the key-pair utilized by a gateway to digitally sign assertions and receipts.</t>
          </li>
          <li>
            <t>Gateway secure channel establishment public key-pair: This is the key-pair utilized by peer gateways to establish a secure channel (e.g. TLS1.3) for a transfer session.</t>
          </li>
          <li>
            <t>Gateway identity public key pair: This is the key-pair that uniquely identifies a gateway.</t>
          </li>
          <li>
            <t>Gateway-owner identity public key pair: This is the key-pair that identifies the owner (e.g. legal entity) who is the legal owner of a gateway.</t>
          </li>
        </ul>
        <t>When peer gateways deliver public-keys, these are expressed in JSON Web Key (JWK) format <xref target="RFC7517"/>.</t>
        <t>This document assumes that the relevant X.509 certificates are associated with these keys. However, the mechanisms to obtain X.509 certificates is outside the scope of this specification.</t>
      </section>
    </section>
    <section anchor="satp-message-format-identifiers-and-descriptors">
      <name>SATP Message Format, identifiers and Descriptors</name>
      <section anchor="satp-messages-identifiers">
        <name>Overview</name>
        <t anchor="satp-message-identifier-overview">This section describes the SATP message-types, the format of the messages exchanged between two gateways, the format for resource descriptors and other related parameters.</t>
        <t>The mandatory fields are determined by the message type exchanged between the two gateways (see Section 7).</t>
      </section>
      <section anchor="satp-message-digital-signatures-and-key-types">
        <name>SATP Message Digital Signatures and Key Types</name>
        <t anchor="satp-message-signatures">All SATP messages exchanged between gateways MUST be signed <xref target="ECDSA"/>, using the JSON Web Signatures mechanism <xref target="RFC7515"/>.</t>
        <t>Signature algorithms used by gateways for SATP messages SHOULD be selected from those defined in
the JSON Web Algorithms (JWA) specification <xref target="RFC7518"/>, with key types defined in JSON Web Key (JWK) specification <xref target="RFC7517"/>.</t>
        <t>The choice of signature algorithm and key-type must be agreed upon between the gateways prior to the commencement of the SATP protocol session. The agreed values are then included within the Transfer Initialization Claim body in Transfer Proposal Message.</t>
        <t>All SATP implementations MUST implement at minimal the ECDSA signature algorithm with the P-256 curve and the SHA-256 hash function.</t>
        <t>Additional signature algorithms and keying parameters may be negotiated by peer gateways. However, the negotiation protocol is outside the scope of this specification.</t>
      </section>
      <section anchor="satp-message-format-and-payloads">
        <name>SATP Message Format and Payloads</name>
        <t anchor="satp-message-format">SATP messages are exchanged between peer gateways, where depending on the message type one gateway may act as a client of the other (and vice versa).</t>
        <t>All SATP messages exchanged between gateways MUST be JSON format <xref target="RFC8259"/>.</t>
        <section anchor="protocol-version">
          <name>Protocol version</name>
          <t anchor="satp-protocol-version">This refers to SATP protocol Version, encoded as "major.minor" (separated by a period symbol).</t>
          <t>The current version is "1.0" defined in this specification. Implementations not understanding a future option value should return an appropriate error response and cease the negotiation.</t>
        </section>
        <section anchor="message-type">
          <name>Message Type</name>
          <t>This refers to the type of request or response to be conveyed in the message.</t>
          <t>The possible values are defined in the IANA SATP Message Types
Registry <xref target="satp-message-types"/>:</t>
          <ul spacing="normal">
            <li>
              <t>transfer-proposal-msg: This is the transfer proposal message from the sender gateway carrying the set of proposed parameters for the transfer.</t>
            </li>
            <li>
              <t>proposal-receipt-msg: This is the signed receipt message indicating acceptance of the proposal by the receiver gateway.</t>
            </li>
            <li>
              <t>reject-msg: This is a reject message from a gateway to the peer gateway in the session, indication the reason and the resulting action.</t>
            </li>
            <li>
              <t>transfer-commence-msg: Request to begin the commencement of the asset transfer.</t>
            </li>
            <li>
              <t>ack-commence-msg: Response to accept the commencement of the asset transfer.</t>
            </li>
            <li>
              <t>lock-assert-msg: Sender gateway has performed the lock of the asset in the origin network.</t>
            </li>
            <li>
              <t>assertion-receipt-msg: Receiver gateway acknowledges receiving the signed lock-assert-msg.</t>
            </li>
            <li>
              <t>commit-prepare-msg: Sender gateway requests the start of the commitment stage.</t>
            </li>
            <li>
              <t>ack-prepare-msg: Receiver gateway acknowledges receiving the previous commit-prepare-msg and agrees to start the commitment stage.</t>
            </li>
            <li>
              <t>commit-final-msg: Sender gateway has performed the extinguishment (burn) of the asset in the origin network.</t>
            </li>
            <li>
              <t>ack-commit-final-msg: Receiver gateway acknowledges receiving the signed commit-final-msg and has performed the asset creation and assignment in the destination network.</t>
            </li>
            <li>
              <t>commit-transfer-complete-msg: Sender gateway indicates closure of the current transfer session.</t>
            </li>
            <li>
              <t>error-msg: This message is used to indicate that an error has occured at the SATP layer. It can be transmitted by either gateways.</t>
            </li>
            <li>
              <t>session-abort-msg: This message is used by a gateway to abort the current session.</t>
            </li>
          </ul>
        </section>
        <section anchor="digital-asset-identifier">
          <name>Digital Asset Identifier</name>
          <t>This is the identifier that uniquely identifies the digital asset in the origin network which is to be transferred to the destination network.</t>
          <t>The digital asset identifier is a value that is derived by the applications utilized by the originator and the beneficiary prior to starting the asset transfer.</t>
          <t>The mechanism used to derive the digital asset identifier is outside the scope of the current document.</t>
          <t>The digital asset identifier is a JSON object, which may be encoded as a string in base64 <xref target="RFC4648"/>.</t>
        </section>
        <section anchor="asset-profile-identifier">
          <name>Asset Profile Identifier</name>
          <t>This is the unique identifier of the asset schema or asset profile which defines the class or type of asset in question. The asset profile is relevant from a regulatory perspective.</t>
          <t>In some cases the profile identifier may be needed by the receiver gateway at the destination network in order to evaluate whether the asset is permitted to enter the destination network.</t>
          <t>The default format of the asset profile identifier is JSON, with base64 encoding.</t>
          <t>The formal specification of asset profiles and their identification is outside the scope of this document.</t>
        </section>
        <section anchor="gateway-network-id-networkid">
          <name>Gateway Network ID (NetworkID)</name>
          <t>The network identifier (NetworkID) is the unique alphanumeric string representing the asset network behind a gateway.
A gateway may simultaneously stand in front of multiple asset networks.  As such, for a specific asset transfer instance both the sender gateway and recipient gateway must indicate which asset networks are the origin network and destination network respectively.</t>
          <t>The network identifier values of the origin network (senderGatewayNetworkId) and destination network (recipientGatewayNetworkId) must be communicated and agreed upon prior to the commencement of the asset transfer.
This selection is confirmed by peer gateways in the Transfer Initialization Claim that is transmitted within Transfer Proposal Message.</t>
          <t>The mechanism to allocate globally unique network identifier is outside the scope of the current specification.</t>
        </section>
        <section anchor="transfer-context-id">
          <name>Transfer-Context ID</name>
          <t>This is the unique immutable identifier representing the application layer context of a single unidirectional transfer. The method to generate the transfer-context ID is outside the scope of the current document.</t>
          <t>The transfer-context may be a complex data structure that contains all information related to a SATP execution instance. Examples of information contained in a transfer-context may include identifiers of sessions, gateways, networks or assets related to the specific SATP execution instance. The sender gateway provides this value to the receiver gateway.</t>
          <t>The default format of the transfer context identifier is JSON, with base64 encoding.</t>
          <t>The Transfer Context ID (transferContextId) value is established by the sender application (possibly with the assistance of the sender gateway) in the origin network. The value is then communicated to the receiving application in the destination network prior to the commencement of the SATP protocol.  Both the sender gateway and receiver gateway must understand how to process the transferContextId value. The value is used in the Transfer Proposal Message (with message type satp:msgtype:transfer-proposal-msg) between the two gateways.</t>
          <t>The mechanism to derive the Transfer Context ID value and to communicate it between the applications is outside the scope of the current specification.</t>
        </section>
        <section anchor="session-id">
          <name>Session ID</name>
          <t>This is the unique identifier representing a session between two gateways handling a single unidirectional transfer. This may be derived from the Transfer-Context ID at the application level. There may be several session IDs related to a SATP execution instance. Only one Session ID may be active for a given SATP execution instance. Session IDs may be stored in the transfer-context for audit trail purposes.</t>
          <t>The sender gateway provides this value to the receiver gateway.</t>
        </section>
        <section anchor="client-credential-types-supported-by-gateways">
          <name>Client Credential Types Supported by Gateways</name>
          <t>SATP Gateways MUST support JSON Web Tokens (JWT) <xref target="RFC7519"/> with OAUth2.0 <xref target="RFC6749"/> as the minimal credential type for authenticating incoming API calls from Client Applications (see Figure 1).</t>
          <t>A gateway may support additional credential mechanisms, which may be advertised by the gateway through different mechanisms (e.g. config file at a well-known endpoint). However, these mechanisms are out of scope for the current specification.</t>
        </section>
        <section anchor="gateway-supported-tls-schemes">
          <name>Gateway Supported TLS Schemes</name>
          <t>Gateways MUST support TLS1.3 <xref target="RFC8446"/>.</t>
          <t>The TLS scheme is used by peer gateways to establish the TLS session prior to the commencement of an asset transfer. Gateways MUST support cryptographic schemes at least as secure AES-128 in GCM mode with SHA-256 (TLS_AES_128_GCM_SHA256).</t>
          <t>If the client (sender gateway) transmits a list of supported credential schemes, the server (recipient gateway) selects one acceptable credential scheme from the offered schemes.</t>
          <t>If no acceptable credential scheme was offered, a "unsupported
gatewayTlsScheme" (err_1.1.34) reject message is returned by the server
(see <xref target="satp-stage1-init-reject"/>).</t>
        </section>
        <section anchor="client-offers-other-supported-tls-schemes">
          <name>Client Offers Other Supported TLS Schemes</name>
          <t anchor="satp-client-offers-sec">If a client (sender gateway) wishes to use TLS schemes other than the basic scheme (AES-128 in GCM mode with SHA-256), then the client may may choose to send a JSON object listing the client's supported TLS schemes.</t>
          <t>These must be selected from those defined in TLS1.3 <xref target="RFC8446"/>.</t>
        </section>
        <section anchor="gateway-identifier">
          <name>Gateway Identifier</name>
          <t>This is the unique identifier of the gateway service.  The gateway identifier MUST be uniquely bound to its SATP endpoint (e.g. via X.509 certificates).</t>
          <t>This gateway identifier is distinct from the gateway operator business identifier (e.g., legal entity identifier (LEI) number).
A gateway operator may operate multiple gateways. Each of the gateways
within an asset network MUST be identified by a unique gateway identifier.</t>
          <t>The mechanisms to establish the gateway identifier or the operator identifier is outside the scope of this specification.</t>
        </section>
        <section anchor="payload-hash">
          <name>Payload Hash</name>
          <t>This is the hash of the current message payload. This is utilized in some crucial messages within the SATP message flows to detect errors or attacks, where the payload-hash of the previously received message (from a sender gateway) is included in the response message to that sender gateway.</t>
          <t>For example, the hash of the Transfer Proposal message from the sender gateway is included in the Transfer Commence message. Similarly, the hash of the lock-assertion message (from the gateway at the origin network) is included in the Lock Assertion Receipt Message (sent in response by the gateway at the destination network).</t>
        </section>
        <section anchor="hash-algorithm-supported">
          <name>Hash Algorithm Supported</name>
          <t anchor="satp-hash-algo-supported">All cryptographic hash operations in the current specification follow that used for JSON structures, which includes the canonicalization (normalization) and serialization of the data, prior to the application of the hash algorithm.</t>
          <t>The default hash algorithm that all SATP implementations MUST support is the SHA-256 algorithm <xref target="RFC7515"/>.</t>
        </section>
        <section anchor="signature-algorithms-supported">
          <name>Signature Algorithms Supported</name>
          <t>This is a JSON list of digital signature algorithms supported by a
gateway. Each entry in the list should be either an Algorithm Name value registered in the IANA "JSON Web Signature and Encryption Algorithms" registry established by <xref target="RFC7518"/> or be a value that contains a Collision-Resistant Name.</t>
          <t>See <xref target="satp-message-signatures">Section</xref>.</t>
        </section>
        <section anchor="asset-lock-mechanism-within-a-network">
          <name>Asset Lock Mechanism within a Network</name>
          <t>SATP gateways may be providing service to multiple types of asset networks, each of which may utilize different local mechanisms to immobile (lock) a given asset as way to provide exclusion in the case of multiple attempts to change the state of the asset.</t>
          <t>The origin network and the destination network may in fact utilize distinct asset locking mechanisms, and the type of mechanisms to immobile (lock) a given asset may have different convergence (finalization) speeds. Peer gateways must exchange information about the asset locking information in their respective network to enable both gateways to compute an approximate time of convergence (assetLockExpirationTime) and set timers for the transfer of asset. A timer that expires too soon may result in the SATP protocol terminating too early before reaching the final commitment stage.</t>
          <t>Currently, the most common type of mechanisms (NetworkLockType) to temporarily lock an asset in a network are (i) TIME_LOCK, (ii) HASH_LOCK, (iii) HASH_TIME_LOCK.</t>
          <t>Some examples of the use of lock mechanisms are follows. Bitcoin <xref target="BTC"/> utilizes a time-lock for delays in some of its operations (e.g., nLockTime). Ethereum <xref target="ETH"/> uses a Hash-Lock mechanism for atomic swaps. Ethereum and Ripple <xref target="XRP"/> uses Hashed Time-lock in their contracts (HTLC).</t>
          <t>The exact definition of these asset locking mechanisms are network-dependent, and such are out of the scope of the current work.</t>
        </section>
        <section anchor="lock-assertion-claim-format">
          <name>Lock assertion Claim Format</name>
          <t>This is the format of the claim regarding the state of the asset in the origin network.
The default format is JSON, with parts being base64 encoded as needed.</t>
          <t>If the sender gateway offers multiple choices of other formats to the receiver gateway,
the selection must occur prior to the establishment of the session.</t>
        </section>
        <section anchor="lock-assertion-claim">
          <name>Lock assertion Claim</name>
          <t>The actual encoded JSON string representation of the claim using the
format as specified by the corresponding Lock Assertion Claim Format value.</t>
        </section>
      </section>
      <section anchor="negotiation-of-security-protocols-and-parameters">
        <name>Negotiation of Security Protocols and Parameters</name>
        <t anchor="satp-negotiation-params-sec">The peer gateways in SATP must establish a TLS session between them prior to starting the transfer initiation stage (Stage-0). The TLS session continues until the transfer is completed at the end of the commitment establishment stage (Stage-3).</t>
        <t>In the following steps, the sender gateway is referred to as the client while the receiver gateway as the server.</t>
        <section anchor="tls-secure-channel-establishment">
          <name>TLS Secure Channel Establishment</name>
          <t anchor="satp-tls-Established-sec">TLS 1.3 MUST be implemented to protect gateway communications.</t>
        </section>
        <section anchor="client-asserts-or-proves-identity">
          <name>Client asserts or proves identity</name>
          <t anchor="client-procedure-sec">The details of the assertion/verification step are specific to the chosen credential scheme and are outside the scope of this document.</t>
        </section>
        <section anchor="messages-can-now-be-exchanged">
          <name>Messages can now be exchanged</name>
          <t anchor="satp-msg-exchnge-sec">Handshaking is complete at this point, and the client and server can begin exchanging SATP messages.</t>
        </section>
      </section>
    </section>
    <section anchor="overview-of-message-flows">
      <name>Overview of Message Flows</name>
      <t anchor="satp-flows-overview-section">The SATP message flows are logically divided into three (3) stages <xref target="ARCH"/>, with the preparatory stage denoted as Stage-0. How the tasks are achieved in Stage-0 is out of the scope of this specification.</t>
      <t>The Stage-1 flows pertains to the initialization of the transfer between the two gateways.</t>
      <t>After both gateways agree to commence the transfer at the start of Stage-2, the sender gateway G1 must deliver a signed assertion that it has correctly performed the relevant action on the asset within the origin network (NW1). Examples of actions by G1 include performing a temporary lock on the asset, or performing a permanent disablement (burn) of the asset in NW1.</t>
      <t>If that signed assertion is accepted by gateway G2, it must in return transmit a signed receipt to gateway G1 that it has correctly performed the relevant corresponding action on destination network (NW2). Examples of actions by G2 include creating (minting) a temporary asset under its control in NW2.</t>
      <t>The Stage-3 flows commit gateways G1 and G2 to the burn and mint in Stage-2. The sender gateway G1 must make the lock on the asset in the origin network NW1 to be permanent (burn). The receiver gateway G2 must assign (mint) the asset in the destination network NW2 to the correct beneficiary.</t>
      <t>The reader is directed to <xref target="ARCH"/> for further discussion of this model.</t>
      <t><tt>
       App1  NW1          G1                     G2          NW2    App2
      ..|.....|............|......................|............|.....|..
        |     |            |       Stage 1        |            |     |
        |     |            |                      |            |     |
        |     |       (1.1)|--Transf. Proposal --&gt;|            |     |
        |     |            |                      |            |     |
        |     |            |&lt;--Proposal Receipt---|(1.2)       |     |
        |     |            |                      |            |     |
        |     |       (1.3)|---Transf. Commence--&gt;|            |     |
        |     |            |                      |            |     |
        |     |            |&lt;----ACK Commence-----|(1.4)       |     |
        |     |            |                      |            |     |
      ..|.....|............|......................|............|.....|..
        |     |            |       Stage 2        |            |     |
        |     |            |                      |            |     |
        |     |&lt;---Lock----|(2.1)                 |            |     |
        |     |            |                      |            |     |
        |     |       (2.2)|----Lock-Assertion---&gt;|            |     |
        |     |            |                      |            |     |
        |     |            |                 (2.3)|--Record---&gt;|     |
        |     |            |                      |            |     |
        |     |            |&lt;--Assertion Receipt--|(2.4)       |     |
        |     |            |                      |            |     |
      ..|.....|............|......................|............|.....|..
        |     |            |       Stage 3        |            |     |
        |     |            |                      |            |     |
        |     |       (3.1)|----Commit Prepare---&gt;|            |     |
        |     |            |                      |            |     |
        |     |            |                 (3.2)|----Mint---&gt;|     |
        |     |            |                      |            |     |
        |     |            |&lt;----Commit Ready-----|(3.3)       |     |
        |     |            |                      |            |     |
        |     |&lt;---Burn----|(3.4)                 |            |     |
        |     |            |                      |            |     |
        |     |       (3.5)|-----Commit Final----&gt;|            |     |
        |     |            |                      |            |     |
        |     |            |                 (3.6)|---Assign--&gt;|     |
        |     |            |                      |            |     |
        |     |            |&lt;-----ACK Final-------|(3.7)       |     |
        |     |            |                      |            |     |
        |     |            |                      |            |     |
        |     |&lt;--Record---|(3.8)                 |            |     |
        |     |            |                      |            |     |
        |     |       (3.9)|--Transfer Complete--&gt;|            |     |
      ..|.....|............|......................|............|.....|..
                                Figure 2
</tt></t>
    </section>
    <section anchor="identity-and-asset-verification-stage-stage-0">
      <name>Identity and Asset Verification Stage (Stage 0)</name>
      <t anchor="satp-Stage0-section">Prior to commencing the asset transfer from the sender gateway (client) to the recipient gateway (server),
both gateways must perform a number of verification steps.
The types of information required by both the sender and recipient are use-case dependent and asset-type dependent.</t>
      <t>The verifications include, but not limited to, the following:</t>
      <ul spacing="normal">
        <li>
          <t>Verification of the gateway signature public key: The sender gateway and receiver gateway must validate their respective signature public keys that will later be used to sign assertions and claims. This may include validating the X509 certificates of these keys.</t>
        </li>
        <li>
          <t>Gateway owner verification:
This is the verification of the identity (e.g. LEI) of the owners of the gateways.</t>
        </li>
        <li>
          <t>Gateway device and state validation:
This is the device attestation evidence <xref target="RFC9334"/>
that a gateway must collect and convey to each other,
where a verifier is assumed to be available to decode,
parse and appraise the evidence.</t>
        </li>
        <li>
          <t>Originator and beneficiary identity verification:
This is the identity and public-key of the entity (originator)
in the origin network seeking to transfer the asset to
another entity (beneficiary) in the destination network.</t>
        </li>
      </ul>
      <t>These are considered out of scope in the current specification,
and are assumed to have been successfully completed prior to
the commencement of the transfer initiation flow.
The reader is directed to <xref target="ARCH"/> for further discussion regarding Stage-0.</t>
    </section>
    <section anchor="transfer-initiation-stage-stage-1">
      <name>Transfer Initiation Stage (Stage 1)</name>
      <t anchor="satp-stage1-section">This section describes the transfer initiation stage, where the sender gateway and the receiver gateway prepare for the start of the asset transfer.</t>
      <t>The sender gateway proposes the set of transfer parameters and asset-related artifacts for the transfer to the receiver gateway. These are contained in the Transfer Initiation Claim.</t>
      <t>If the receiver gateway accepts the proposal, it returns a signed receipt message for the proposal indicating it agrees to proceed to the next stage. If the receiver gateway rejects any parameters or artifacts in the proposal, it can provide a counteroffer to the sender gateway by responding with a proposal reject message carrying alternative parameters.</t>
      <t>Gateways MUST support the use of the HTTP GET and POST methods for the endpoint <xref target="RFC9110"/>.</t>
      <t>Clients (sender gateway) MAY use the HTTP GET or POST methods to send messages
in this stage to the server (recipient gateway).
If using the HTTP GET method, the request parameters may be
serialized using URI Query String Serialization.</t>
      <section anchor="transfer-initialization-claim">
        <name>Transfer Initialization Claim</name>
        <t anchor="satp-stage1-init-claim">This is set of artifacts pertaining to the asset that
must be agreed upon between the client (sender
gateway) and the server (recipient gateway).</t>
        <t>The format of the identity fields in this message, unless otherwise stated, is a JSON string.</t>
        <t>The Transfer Initialization Claim consists of the following:</t>
        <ul spacing="normal">
          <li>
            <t>digitalAssetId REQUIRED: This is the globally unique identifier for the digital asset located in the origin network.</t>
          </li>
          <li>
            <t>assetProfileId REQUIRED: This is the globally unique identifier for the asset-profile definition (document) on which the digital asset was issued.</t>
          </li>
          <li>
            <t>networkLockType REQUIRED: The default locking mechanism used for an asset. These can be (i) TIME_LOCK, (ii) HASH_LOCK, (iii) HASH_TIME_LOCK.</t>
          </li>
          <li>
            <t>assetLockExpirationTime OPTIONAL: The duration of time (in seconds) for an asset lock to expire in the network, if it is a HASH_TIME_LOCK or a TIME_LOCK.</t>
          </li>
          <li>
            <t>verifiedOriginatorEntityId REQUIRED: This is the identity data of the originator entity (person or organization) in the origin network. This information must be verified by the sender gateway.</t>
          </li>
          <li>
            <t>verifiedBeneficiaryEntityId REQUIRED: This is the identity data of the beneficiary entity (person or organization) in the destination network. This information must be verified by the receiver gateway.</t>
          </li>
          <li>
            <t>originatorPublicKey REQUIRED: This is the public key of the asset owner (originator) in the origin network or system.</t>
          </li>
          <li>
            <t>beneficiaryPublicKey REQUIRED: This is the public key of the beneficiary in the destination network.</t>
          </li>
          <li>
            <t>senderGatewaySignaturePublicKey REQUIRED: This is the public key of the key-pair used by the sender gateway to sign assertions and receipts.</t>
          </li>
          <li>
            <t>receiverGatewaySignaturePublicKey REQUIRED: This is the public key of the key-pair used by the receiver gateway to sign assertions and receipts.</t>
          </li>
          <li>
            <t>senderGatewayId REQUIRED: This is the identifier of the sender gateway.</t>
          </li>
          <li>
            <t>recipientGatewayId REQUIRED: This is the identifier of the receiver gateway.</t>
          </li>
          <li>
            <t>senderGatewayNetworkId REQUIRED: This is the identifier of the origin network or system behind the client.</t>
          </li>
          <li>
            <t>recipientGatewayNetworkId REQUIRED: This is the identifier of the destination network or system behind the server.</t>
          </li>
          <li>
            <t>senderGatewayDeviceIdentityPublicKey OPTIONAL: The device public key of the sender gateway (client).</t>
          </li>
          <li>
            <t>receiverGatewayDeviceIdentityPublicKey OPTIONAL: The device public key of the receiver gateway</t>
          </li>
          <li>
            <t>senderGatewayOwnerId OPTIONAL: This is the identity information of the owner or operator of the sender gateway.</t>
          </li>
          <li>
            <t>receiverGatewayOwnerId OPTIONAL: This is the identity information of the owner or operator of the recipient gateway.</t>
          </li>
        </ul>
        <t>Here is an example representation in JSON format (with the public keys in JWK being replaced with hexadecimal for brevity):</t>
        <t>{
  "digitalAssetId": "2c949e3c-5edb-4a2c-9ef4-20de64b9960d",
  "assetProfileId": "38561",
  "verifiedOriginatorEntityId": "CN=Alice, OU=Example Org Unit, O=Example, L=New York, C=US",
  "verifiedBeneficiaryEntityId": "CN=Bob, OU=Case Org Unit, O=Case, L=San Francisco, C=US",
  "originatorPublicKey": "0304b9f34d3898b27f85b3d88fa069a879abe14db5060dde466dd1e4a31ff75e44",
  "beneficiaryPublicKey": "02a7bc058e1c6f3a79601d046069c9b6d0cb8ea5afc99e6074a5997284756fc9ae",
  "senderGatewaySignaturePublicKey": "02a7bc058e1c6f3a79601d046069c9b6d0cb8ea5afc99e6074a5997284756fc9ae",
  "receiverGatewaySignaturePublicKey": "0243b12ada6515ada3bf99a7da32e84f00383b5765fd7701528e660449ba5ef260",
  "senderGatewayId": "GW1",
  "recipientGatewayId": "GW2",
  "senderGatewayNetworkId": "1",
  "recipientGatewayNetworkId": "43114",
  "senderGatewayDeviceIdentityPublicKey": "0245785e34b4a7b457dd4683a297ea3d78bab35f8b2583df55d9df8c69604d0e73",
  "receiverGatewayDeviceIdentityPublicKey": "03763f0bc48ff154cff45ea533a9d8a94349d65a45573e4de6ad6495b6e834312b",
  "senderGatewayOwnerId": "CN=GatewayOps, OU=GatewayOps Systems, O=GatewayOps LTD, L=Austin, C=US",
  "receiverGatewayOwnerId": "CN=BridgeSolutions, OU=BridgeSolutions Engineering, O=BridgeSolutions LTD, L=Austin, C=US"
}</t>
      </section>
      <section anchor="conveyance-of-gateway-and-network-capabilities">
        <name>Conveyance of Gateway and Network Capabilities</name>
        <t anchor="satp-stage1-conveyance">This is the set of parameters pertaining to the origin network and the destination network, and the technical capabilities supported by the peer gateways.</t>
        <t>Some network-specific parameters regarding the origin network may be relevant for a receiver gateway to evaluate its ability to process the proposed transfer.
For example, if the duration of the lock-time (networkLockExpirationTime) in the origin network is too short, a receiver gateway at the destination network may decline to proceed.</t>
        <t>The gateway capabilities list is as follows:</t>
        <ul spacing="normal">
          <li>
            <t>gatewayDefaultSignatureAlgorithm REQUIRED: The default digital signature algorithm (algorithm-id) from the IANA "JSON Web Signature and Encryption Algorithms" registry used by a gateway to sign claims.</t>
          </li>
          <li>
            <t>gatewaySupportedSignatureAlgorithms OPTIONAL: The list of other digital signature algorithms (algorithm-id) from the IANA "JSON Web Signature and Encryption Algorithms" registry supported by a gateway to sign claims</t>
          </li>
          <li>
            <t>networkLockType REQUIRED: The default locking mechanism used by a network. The values allowed are "TIME_LOCK", "HASH_LOCK", "HASH_TIME_LOCK". Future updates to this specification may define new values and implementations not supporting a value or not understanding a value for this field must return an appropriate error and cease the negotiation.</t>
          </li>
          <li>
            <t>networkLockExpirationTime REQUIRED: The duration of time (in integer seconds) for a lock to expire in the network.</t>
          </li>
          <li>
            <t>gatewayTlsScheme REQUIRED: Specify the TLS1.3 scheme.</t>
          </li>
        </ul>
        <t>Here is an example representation in JSON format:</t>
        <t><tt>
{
  "gatewayDefaultSignatureAlgorithm": "ES256",
  "gatewaySupportedSignatureAlgorithms": ["ES256", "RSA"],
  "networkLockType": "HASH_TIME_LOCK",
  "networkLockExpirationTime": 120,
  "gatewayTlsScheme": "TLS_AES_128_GCM_SHA256"
}
</tt></t>
      </section>
      <section anchor="transfer-proposal-message">
        <name>Transfer Proposal Message</name>
        <t anchor="satp-stage1-init-transfer-proposal">The purpose of this message is for the sender gateway as the client to initiate an asset transfer session with the receiver gateway as the server.</t>
        <t>The client transmits a proposal message that carries the claim related to the asset to be transferred. This message MUST be signed by the client.</t>
        <t>This message is sent from the client to the Transfer Initialization Endpoint at the server.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>version REQUIRED: SATP protocol Version (see <xref target="satp-protocol-version"/>) as a string "major.minor".</t>
          </li>
          <li>
            <t>messageType REQUIRED: urn:ietf:satp:msgtype:transfer-proposal-msg.</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen by the client to identify the current session.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>transferInitClaimFormat REQUIRED: The default format is JSON, with parts being base64 encoded as needed. The default format is denoted as "TRANSFER_INIT_CLAIM_FORMAT_1".</t>
          </li>
          <li>
            <t>transferInitClaim REQUIRED: The set of artifacts and parameters as the basis for the current transfer.</t>
          </li>
          <li>
            <t>gatewayAndNetworkCapabilities REQUIRED: The set of origin gateway and network parameters reported by the client to the server.</t>
          </li>
        </ul>
        <t>Here is an example of the message request body (with the public keys in JWK being replaced with hexadecimal for brevity):</t>
        <t><tt>
{
  "version": "1.0",
  "messageType": "urn:ietf:satp:msgtype:transfer-proposal-msg",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "transferInitClaimFormat": "TRANSFER_INIT_CLAIM_FORMAT_1",
  "transferInitClaim": {
      "digitalAssetId": "2c949e3c-5edb-4a2c-9ef4-20de64b9960d",
      "assetProfileId": "38561",
      "networkLockType": "HASH_TIME_LOCK",
      "assetLockExpirationTime": 120,
      "verifiedOriginatorEntityId": "CN=Alice, OU=Example Org Unit, O=Example, L=New York, C=US",
      "verifiedBeneficiaryEntityId": "CN=Bob, OU=Case Org Unit, O=Case, L=San Francisco, C=US",
      "originatorPublicKey": "0304b9f34d3898b27f85b3d88fa069a879abe14db5060dde466dd1e4a31ff75e44",
      "beneficiaryPublicKey": "02a7bc058e1c6f3a79601d046069c9b6d0cb8ea5afc99e6074a5997284756fc9ae",
      "senderGatewaySignaturePublicKey": "02a7bc058e1c6f3a79601d046069c9b6d0cb8ea5afc99e6074a5997284756fc9ae",
      "receiverGatewaySignaturePublicKey": "0243b12ada6515ada3bf99a7da32e84f00383b5765fd7701528e660449ba5ef260",
      "senderGatewayId": "GW1",
      "recipientGatewayId": "GW2",
      "senderGatewayNetworkId": "1",
      "recipientGatewayNetworkId": "43114",
      "senderGatewayDeviceIdentityPublicKey": "0245785e34b4a7b457dd4683a297ea3d78bab35f8b2583df55d9df8c69604d0e73",
      "receiverGatewayDeviceIdentityPublicKey": "03763f0bc48ff154cff45ea533a9d8a94349d65a45573e4de6ad6495b6e834312b",
      "senderGatewayOwnerId": "CN=GatewayOps, OU=GatewayOps Systems, O=GatewayOps LTD, L=Austin, C=US",
      "receiverGatewayOwnerId": "CN=BridgeSolutions, OU=BridgeSolutions Engineering, O=BridgeSolutions LTD, L=Austin, C=US"
  },
  "gatewayAndNetworkCapabilities": {
      "gatewayDefaultSignatureAlgorithm": "ES256",
      "gatewaySupportedSignatureAlgorithms": ["ES256", "RSA"],
      "networkLockType": "HASH_TIME_LOCK",
      "networkLockExpirationTime": 120,
      "gatewayTlsScheme": "TLS_AES_128_GCM_SHA256"
  }
}
</tt></t>
      </section>
      <section anchor="transfer-proposal-receipt-message">
        <name>Transfer Proposal Receipt Message</name>
        <t anchor="satp-stage1-init-receipt">The purpose of this message is for the server to indicate explicit
acceptance of the parameters in the claim part of the transfer proposal message.</t>
        <t>The message MUST be signed by the server.</t>
        <t>The message is sent from the server to the Transfer Proposal Endpoint at the client.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>version REQUIRED: SATP protocol Version see {satp-protocol-version}} as a string "major.minor".</t>
          </li>
          <li>
            <t>messageType REQUIRED: urn:ietf:satp:msgtype:proposal-receipt-msg.</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen by the client to identify the current session.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>hashTransferInitClaim REQUIRED: Hash of the Transfer Initialization Claim received in the Transfer Proposal Message.</t>
          </li>
          <li>
            <t>timestamp REQUIRED: timestamp referring to when the Initialization Request Message was received.</t>
          </li>
        </ul>
        <t>Here is an example of the message request body:</t>
        <t>{
  "version": "1.0",
  "messageType": "urn:ietf:satp:msgtype:proposal-receipt-msg",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "hashTransferInitClaim": "154dfaf0406038641e7e59509febf41d9d5d80f367db96198690151f4758ca6e",
  "timestamp": "2024-10-03T12:02+00Z",
}</t>
      </section>
      <section anchor="reject-message">
        <name>Reject Message</name>
        <t anchor="satp-stage1-init-reject">The purpose of this message is for the server to indicate explicit
rejection of the previous message received from the client.
This message can be sent at any time in the session.
The server MUST include an error code (see <xref target="error-codes-section"/>) in this message.
A reject message is taken to mean an immediate termination of the session.</t>
        <t>The message MUST be signed by the server.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>version REQUIRED: SATP protocol Version see <xref target="satp-protocol-version"/> as a string "major.minor".</t>
          </li>
          <li>
            <t>messageType REQUIRED: urn:ietf:satp:msgtype:reject-msg</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen by the client to identify the current session.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>hashPrevMessage REQUIRED: The cryptographic hash of the last message that caused the rejection to occur. The default hash algorithm is SHA256.</t>
          </li>
          <li>
            <t>reasonCode REQUIRED: The error code (see <xref target="error-codes-section"/>) causing the rejection.</t>
          </li>
          <li>
            <t>timestamp REQUIRED: timestamp of this message.</t>
          </li>
        </ul>
        <t>Here is an example of the message request body:</t>
        <t>{
  "version": "1.0",
  "messageType": "urn:ietf:satp:msgtype:reject-msg",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "hashPrevMessage": "154dfaf0406038641e7e59509febf41d9d5d80f367db96198690151f4758ca6e",
  "reasonCode": "err_2.1",
  "timestamp": "2024-10-03T12:02+00Z",
}</t>
      </section>
      <section anchor="transfer-commence-message">
        <name>Transfer Commence Message</name>
        <t anchor="satp-transfer-commence-sec">The purpose of this message is for the client to signal to
the server that the client is ready to start the transfer of the
digital asset. This message must be signed by the client.</t>
        <t>This message is sent by the client as a response to the Transfer Proposal Receipt Message previously
received from the server.</t>
        <t>This message is sent by the client to the Transfer Commence Endpoint at the server.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>messageType REQUIRED: MUST be the value urn:ietf:satp:msgtype:transfer-commence-msg.</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen earlier by the client in the Initialization Request Message.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>hashTransferInitClaim REQUIRED: Hash of the Transfer Initialization Claim in the Transfer Proposal message.</t>
          </li>
          <li>
            <t>hashPrevMessage REQUIRED.  The cryptographic hash of the last message, in this case the
Transfer Proposal Receipt message. The default hash algorithm is SHA256.</t>
          </li>
        </ul>
        <t>For example, the client makes the following HTTP request using TLS:</t>
        <t>{
    "messageType": "urn:ietf:satp:msgtype:transfer-commence-msg",
    "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
    "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
    "hashTransferInitClaim": "154dfaf0406038641e7e59509febf41d9d5d80f367db96198690151f4758ca6e",
    "hashPrevMessage": "0b0aecc2680e0d8a86bece6b54c454fba67068799484f477cdf2f87e6541db66",
}</t>
      </section>
      <section anchor="transfer-commence-sec-example">
        <name>Commence Response Message (ACK-Commence)</name>
        <t anchor="satp-transfer-commence-resp-sec">The purpose of this message is for the server to indicate agreement
to proceed with the asset transfer, based on the artifacts
found in the previous Transfer Proposal Message.</t>
        <t>This message is sent by the server to the Transfer Commence Endpoint at the client.</t>
        <t>The message MUST be signed by the server.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>messageType REQUIRED: urn:ietf:satp:msgtype:ack-commence-msg</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen earlier by the client in the Initialization Request Message.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>hashPrevMessage REQUIRED. The cryptographic hash of the last message, in this case the Transfer Commence Message. The default hash algorithm is SHA256.</t>
          </li>
        </ul>
        <t>An example of a success response could be as follows:</t>
        <t>{
  "messageType": "urn:ietf:satp:msgtype:ack-commence-msg",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "hashPrevMessage": "dd5a61a26fc8f5d72e5ca6052c2a1fca1613115e5582d9417d336375c196db89",
}</t>
      </section>
    </section>
    <section anchor="lock-assertion-stage-stage-2">
      <name>Lock Assertion Stage (Stage 2)</name>
      <t anchor="satp-stage2-section">The messages in this stage pertain to the sender gateway providing
the recipient gateway with a signed assertion that the asset in the origin network
has been locked or disabled and under the control of the sender gateway.</t>
      <t>In the following steps, the sender gateway takes the role of the client
while the recipient gateway takes the role of the server.</t>
      <t>The flow follows a request-response model.
The client makes a request (POST) to the Lock-Assertion Endpoint at the server.</t>
      <t>Gateways MUST support the use of the HTTP GET and POST methods for the endpoint.</t>
      <t>Clients MAY use the HTTP GET or POST methods to send messages in this stage to the server.
If using the HTTP GET method, the request parameters may be serialized
using URI Query String Serialization.</t>
      <section anchor="lock-assertion-message">
        <name>Lock Assertion Message</name>
        <t anchor="satp-lock-assertion-message-sec">The purpose of this message is for the client (sender gateway) to
convey a signed claim to the server (receiver gateway) declaring that the asset in
question has been locked or escrowed by the client in the origin
network (e.g. to prevent double-spending).</t>
        <t>The format of the claim is dependent on the network or system
of the client and is outside the scope of this specification.</t>
        <t>This message is sent from the client to the Lock Assertion Endpoint at the server.</t>
        <t>The server must validate the claim (payload)
in this message prior to the next step.</t>
        <t>The message MUST be signed by the client.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>messageType REQUIRED: urn:ietf:satp:msgtype:lock-assert-msg.</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen earlier by the client in the Initialization Request Message.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>lockAssertionClaimFormat REQUIRED. The default format is JSON, with parts being base64 encoded as needed. The default format is denoted as "LOCK_ASSERTION_CLAIM_FORMAT_1".</t>
          </li>
          <li>
            <t>lockAssertionClaim REQUIRED: The lock assertion claim or statement by the client.</t>
          </li>
          <li>
            <t>lockAssertionExpiration REQUIRED. The expiration date and time <xref target="DATETIME"/> of the lock or escrow upon the asset on the origin network.</t>
          </li>
          <li>
            <t>hashPrevMessage REQUIRED. The cryptographic hash of the last message. The default hash algorithm is SHA256.</t>
          </li>
        </ul>
        <t>Example:</t>
        <t>{
  "messageType": "urn:ietf:satp:msgtype:lock-assert-msg",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "lockAssertionClaimFormat": "LOCK_ASSERTION_CLAIM_FORMAT_1",
  "lockAssertionClaim": {},
  "lockAssetionExpiration": "2024-12-23T23:59:59.999Z",
  "hashPrevMessage": "b2c3e916703c4ee4494f45bcf52414a2c3edfe53643510ff158ff4a406678346",
}</t>
      </section>
      <section anchor="lock-assertion-receipt-message">
        <name>Lock Assertion Receipt Message</name>
        <t anchor="satp-lock-assertion-receipt-section">The purpose of this message is for the server (receiver gateway)
to indicate acceptance of the claim in the lock-assertion message
delivered by the client (sender gateway) in the previous message.</t>
        <t>This message is sent from the server to the Assertion Receipt Endpoint
at the client.</t>
        <t>The message MUST be signed by the server.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>messageType REQUIRED: urn:ietf:satp:msgtype:assertion-receipt-msg.</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen earlier by the client in the Initialization Request Message.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>hashPrevMessage REQUIRED. The cryptographic hash of the last message. The default hash algorithm is SHA256.</t>
          </li>
        </ul>
        <t>Example:</t>
        <t>{
  "messageType": "urn:ietf:satp:msgtype:assertion-receipt-msg",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "hashPrevMessage": "16c983122d7506c78f906c15ca1dcc7142a0fa94552cdea9578fe87419c2c5d0",
}</t>
      </section>
    </section>
    <section anchor="commitment-preparation-and-finalization-stage-3">
      <name>Commitment Preparation and Finalization (Stage 3)</name>
      <t anchor="satp-phase3-sec">This section describes the transfer commitment agreement between the
client (sender gateway) and the server (receiver gateway).</t>
      <t>This stage must be completed within the time specified
in the lockAssertionExpiration value in the lock-assertion message.
This value is the time when the lock or escrow upon the asset will expire on the origin network.</t>
      <t>The completion of this stage is denoted by the signed Commit-Final Acknowledgement Receipt Message
sent from the receiver gateway (server) to the sender gateway (client).
If the lockAssertionExpiration timer at the client expires before the Commit-Final Acknowledgement Receipt Message
is received by the client, the client may terminate the session.</t>
      <t>The flow follows a request-response model.
The client makes a request (POST) to the Transfer Commitment endpoint at the server.</t>
      <t>Gateways MUST support the use of the HTTP GET and POST methods for the endpoint.</t>
      <t>Clients MAY use the HTTP GET or POST methods to send messages in this stage to the server.
If using the HTTP GET method, the request parameters may be serialized
using URI Query String Serialization.</t>
      <t>The client and server may be required to sign certain messages
in order to provide standalone proof (for non-repudiation) independent of the
secure channel between the client and server.
This proof may be required for audit verifications post-event.</t>
      <section anchor="commit-preparation-message-commit-prepare">
        <name>Commit Preparation Message (Commit-Prepare)</name>
        <t anchor="satp-commit-preparation-message-sec">The purpose of this message is for the client to indicate
its readiness to begin the commitment of the transfer.</t>
        <t>This message is sent from the client to the Commit Prepare Endpoint at the server.</t>
        <t>The message MUST be signed by the client.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>messageType REQUIRED: It MUST be the value urn:ietf:satp:msgtype:commit-prepare-msg</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen earlier by the client in the Initialization Request Message.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>hashPrevMessage REQUIRED. The cryptographic hash of the last message. The default hash algorithm is SHA256.</t>
          </li>
        </ul>
        <t>Example:</t>
        <t>{
  "messageType": "urn:ietf:satp:msgtype:commit-prepare-msg",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "hashPrevMessage": "399bdadc07fe0bd57c4dfdd6cc176ceeca50a5e744f774154eccbeee8908fbaa",
}</t>
      </section>
      <section anchor="commit-ready-message-commit-ready">
        <name>Commit Ready Message (Commit-Ready)</name>
        <t anchor="satp-commit-ready-section">The purpose The purpose of this message is for the server to indicate to the client that:
(i) the server has created (minted) an equivalent asset in the destination
network;
(ii) that the newly minted asset has been self-assigned to the server;
and (iii) that the server is ready to proceed to the next step.</t>
        <t>This message is sent from the server to the Commit Ready Endpoint at the client.</t>
        <t>The message MUST be signed by the server.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>messageType REQUIRED: It MUST be the value urn:ietf:satp:msgtype:commit-ready-msg.</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen earlier by client in the Initialization Request Message.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>hashPrevMessage REQUIRED. The cryptographic hash of the last message. The default hash algorithm is SHA256.</t>
          </li>
          <li>
            <t>mintAssertionFormat REQUIRED. The default format is JSON, with parts being base64 encoded as needed. The default format is denoted as "MINT_ASSERTION_CLAIM_FORMAT_1".</t>
          </li>
          <li>
            <t>mintAssertionClaim REQUIRED: The mint assertion claim or statement by the server.</t>
          </li>
        </ul>
        <t>Example:</t>
        <t>{
  "messageType": "urn:ietf:satp:msgtype:commit-ready-msg",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "hashPrevMessage": "8dcc8dc4e6c2c979474b42d24d3747ce4607a92637d1a7b294857ff7288b8e46",
  "mintAssertionClaimFormat": "MINT_ASSERTION_CLAIM_FORMAT_1",
  "mintAssertionClaim": {},
}</t>
      </section>
      <section anchor="commit-final-assertion-message-commit-final">
        <name>Commit Final Assertion Message (Commit-Final)</name>
        <t anchor="satp-commit-final-message-section">The purpose of this message is for the client to indicate to the server
that the client (sender gateway) has completed the extinguishment (burn)
of the asset in the origin network.</t>
        <t>The message MUST contain a standalone claim related
to the extinguishment of the asset by the client.
The standalone claim MUST be signed by the client.</t>
        <t>This message is sent from the client to the Commit Final Assertion Endpoint at the server.</t>
        <t>The message MUST be signed by the client.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>messageType REQUIRED: It MUST be the value urn:ietf:satp:msgtype:commit-final-msg.</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen earlier by the client in the Initialization Request Message.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>hashPrevMessage REQUIRED. The cryptographic hash of the last message. The default hash algorithm is SHA256.</t>
          </li>
          <li>
            <t>burnAssertionClaimFormat REQUIRED. The default format is JSON, with parts being base64 encoded as needed. The default format is denoted as "BURN_ASSERTION_CLAIM_FORMAT_1".</t>
          </li>
          <li>
            <t>burnAssertionClaim REQUIRED: The burn assertion signed claim or statement by the client.</t>
          </li>
        </ul>
        <t>Example:</t>
        <t>{
  "messageType": "urn:ietf:satp:msgtype:commit-final-msg",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "hashPrevMessage": "b92f13007216c58f2b51a8621599c3aef6527b02c8284e90c6a54a181d898e02",
  "burnAssertionClaimFormat": "BURN_ASSERTION_CLAIM_FORMAT_1",
  "burnAssertionClaim": {},
}</t>
      </section>
      <section anchor="commit-final-acknowledgement-receipt-message-ack-final-receipt">
        <name>Commit-Final Acknowledgement Receipt Message (ACK-Final-Receipt)</name>
        <t anchor="satp--final-ack-section">The purpose of this message is to indicate to the client that the server has
completed the assignment of the newly minted asset to
the intended beneficiary at the destination network.</t>
        <t>This message is sent from the server to the Commit Final Receipt Endpoint at the client.</t>
        <t>The message MUST be signed by the server.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>messageType REQUIRED: It MUST be the value urn:ietf:satp:msgtype:ack-commit-final-msg.</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen earlier by client in the Initialization Request Message.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>hashPrevMessage REQUIRED. The cryptographic hash of the last message. The default hash algorithm is SHA256.</t>
          </li>
          <li>
            <t>assignmentAssertionClaimFormat REQUIRED. The default format is JSON, with parts being base64 encoded as needed. The default format is denoted as "ASSIGNMENT_ASSERTION_CLAIM_FORMAT_1".</t>
          </li>
          <li>
            <t>assignmentAssertionClaim REQUIRED: The claim or statement by the server that the asset has been assigned by the server to the intended beneficiary.</t>
          </li>
        </ul>
        <t>Example:</t>
        <t>{
  "messageType": "urn:ietf:satp:msgtype:ack-commit-final-msg",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "hashPrevMessage": "9c8f07c22ccf6888fc0306fee0799325efb87dfd536d90bb47d97392f020e998",
  "assignmentAssertionClaimFormat": "ASSIGNMENT_ASSERTION_CLAIM_FORMAT_1",
  "assignmentAssertionClaim": {},
}</t>
      </section>
      <section anchor="transfer-complete-message">
        <name>Transfer Complete Message</name>
        <t anchor="satp-transfer-complete-message-section">The purpose of this message is for the client to indicate to the server that
the asset transfer session (identified by sessionId)
has been completed and no further messages are to be
expected from the client in regards to this transfer instance.</t>
        <t>The message closes the first message of Stage 2 (Transfer Commence Message).</t>
        <t>This message is sent from the client to the Transfer Complete Endpoint at the server.</t>
        <t>The message MUST be signed by the client.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>messageType REQUIRED: It MUST be the value urn:ietf:satp:msgtype:commit-transfer-complete-msg.</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen earlier by the client in the Initialization Request Message.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>hashPrevMessage REQUIRED. The cryptographic hash of the last message. The default hash algorithm is SHA256.</t>
          </li>
          <li>
            <t>hashTransferCommence REQUIRED: The hash of the Transfer Commence message at the start of Stage 2.</t>
          </li>
        </ul>
        <t>Example:</t>
        <t>{
  "messageType": "urn:ietf:satp:msgtype:commit-transfer-complete-msg",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "hashPrevMessage": "9c8f07c22ccf6888fc0306fee0799325efb87dfd536d90bb47d97392f020e998",
  "hashTransferCommence": "4ba76c69265f4215b4e2d2f24fe56e708512fdb49e27f50d2ac0095928e1531b",
}</t>
      </section>
      <section anchor="error-message">
        <name>Error Message</name>
        <t anchor="satp-error-msg-payloads">The purpose of this message is for either the sender or the receiver gateways to indicate to its peer that an error has occurred within the transfer protocol flow.</t>
        <t>The default action upon receiving an error message is the immediate termination of the session.</t>
        <t>The error message format and parameters are described in <xref target="satp-protocol-errors-section"/>.</t>
      </section>
      <section anchor="session-abort-message">
        <name>Session Abort Message</name>
        <t anchor="satp-session-abort-msg-section">The purpose of this message is to indicate that one of the peer gateways has decided not to proceed with the session. No further messages will be delivered after the abort message.</t>
        <ul spacing="normal">
          <li>
            <t>messageType REQUIRED: It MUST be the value urn:ietf:satp:msgtype:session-abort-msg.</t>
          </li>
          <li>
            <t>sessionId REQUIRED: This is the current session in which the abort occurs.</t>
          </li>
        </ul>
        <t>The effect of session aborts on the state of the asset is discussed below.</t>
      </section>
      <section anchor="satp-session-resumption">
        <name>SATP Session Resumption</name>
        <t anchor="satp-session-resume-section">Session recovery and resumption is not supported in the current version of the SATP protocol.
These may be addressed in a future version of SATP, or be defined in a separate specification.</t>
        <t>The reader interested in this topic is directed to <xref target="BELC"/> for further discussion.</t>
      </section>
    </section>
    <section anchor="error-messages">
      <name>Error Messages</name>
      <t anchor="satp-alert-error-messages">SATP distinguishes between session termination initiated by the user at the application layer from session termination cased by errors at the SATP protocol layer.</t>
      <t>A gateway can transmit an error message at any point in the SATP protocol flow to its peer gateway.</t>
      <t>The default action to be taken by the transitting gateway is to terminate the session immediately.</t>
      <t>Error messages at the SATP protocol layer is distinct from time-outs due to gateway crashes.</t>
      <section anchor="session-termination-notification">
        <name>Session Termination Notification</name>
        <t anchor="satp-session-termination-notification">Session closure initiated at the application layer is not considered to be an error at the SATP protocol layer.</t>
        <t>The message type used for application-initiated session termination: session-abort-msg.</t>
        <t>The message type used to indicate protocols errors: error-msg.</t>
        <t>A gateway can transmit the session abort message at any point in the SATP protocol flow. No further messages will be sent by the gateway.</t>
        <t>Any data received after the session termination message MUST be ignored.</t>
      </section>
      <section anchor="connection-errors">
        <name>Connection Errors</name>
        <t anchor="satp-errors-connection-section">Errors may occur at the connection layer, independent of the flows at the SATP layer and errors there.</t>
        <t>(a) connectionError: There is an error in the TLS session establishment (TLS error codes should be reported-up to the gateway level)</t>
        <t>(b) badCertificate: The gateway TLS certificate was corrupt, contained signatures, that did not verify correctly, etc.  (Some common TLS level errors: unsupported_certificate, certificate_revoked, certificate_expired, certificate_unknown, unknown_ca).</t>
        <t>Connection errors resulting in the time-out of the session MUST result in the termination of the transfer session.
In the case of a transfer session termination, gateways SHOULD release its local computing resources and release asset-locks in their respective networks.</t>
      </section>
      <section anchor="satp-protocol-errors">
        <name>SATP Protocol Errors</name>
        <t anchor="satp-protocol-errors-section">The errors at the SATP level pertain to protocol flow and the information carried within each message. These are enumerated in <xref target="error-codes-section"/>.</t>
        <t>Many of the errors due to invalid identifiers (e.g., invalid transferContextId, invalid digitalAssetId) may arise within
the execution of the SATP protocol because these identifiers depart from those agreed-upon in Transfer Initialization Claim in the transfer proposal message.
The validity of these identifiers must be verified by the gateways during set-up stage (Stage-0), which is beyond the scope of the current specification.
See Section 7 on the Identity and Asset Verification Stage.</t>
        <t>SATP error messages MUST be encoded as Problem Details objects as defined in <xref target="RFC9457"/>, with content type <tt>application/problem+json</tt>. The <tt>type</tt> field of the Problem Details object MUST be set to a URN of the form <tt>urn:ietf:params:satp:error:&lt;code&gt;</tt>, where <tt>&lt;code&gt;</tt> is the error code from this registry. The <tt>status</tt> field MUST match the HTTP status of the response carrying the error and MUST be consistent with the HTTP Status column in the table below.</t>
        <t>The parameters of error messages consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>messageType REQUIRED: urn:ietf:satp:msgtype:reject-msg</t>
          </li>
          <li>
            <t>type REQUIRED: A URI reference identifying the error type causing the rejection, as defined in <xref target="RFC9457"/>. MUST be a URN of the form
<tt>urn:ietf:params:satp:error:&lt;code&gt;</tt> where <tt>&lt;code&gt;</tt> is the error code from the SATP Error Codes Registry (<xref target="satp-protocol-errors-section"/>).</t>
          </li>
          <li>
            <t>status REQUIRED: The HTTP status code for this error as an integer, as defined in <xref target="RFC9457"/>. MUST match the HTTP response status and be consistent with the HTTP Status column of the protocol error codes (<xref target="error-codes-section"/>).</t>
          </li>
          <li>
            <t>title REQUIRED: A short, human-readable summary of the error type, as defined in <xref target="RFC9457"/>. SHOULD correspond to the Description column in the SATP Error Codes Registry (<xref target="satp-protocol-errors-section"/>).</t>
          </li>
          <li>
            <t>detail OPTIONAL: A human-readable explanation specific to this occurrence of the error, as defined in <xref target="RFC9457"/>.</t>
          </li>
          <li>
            <t>version REQUIRED: SATP protocol Version see {satp-protocol-version}} as a string "major.minor".
This should assist in diagnosing problems when different versions of the standard are used.</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen by the client to identify the current session.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer. Note that the transferContextId is always included, whereas the instance defined in <xref target="RFC9457"/> is optional, but if supplied, must also contain the transferContextId. The transferContextId is used in all messages, whereas instance is specific to errror messages.</t>
          </li>
          <li>
            <t>instance OPTIONAL: A URI reference identifying the specific occurrence of the error, as defined in <xref target="RFC9457"/>. If supplied, it MUST contain the transferContextId.</t>
          </li>
          <li>
            <t>prevMsgType OPTIONAL: The message type of the previous SATP message that triggered the error. This is a SATP-specific extension field (see <xref target="RFC9457"/>).</t>
          </li>
          <li>
            <t>hashPrevMessage REQUIRED: The cryptographic hash of the last message that caused the rejection to occur. The default hash algorithm is SHA256.</t>
          </li>
          <li>
            <t>timestamp REQUIRED: timestamp of this message.</t>
          </li>
        </ul>
        <t>Here is an example of the error message body:</t>
        <t>{
  "messageType": "urn:ietf:satp:msgtype:reject-msg",
  "type": "urn:ietf:params:satp:error:err_1.1.11",
  "status": 422,
  "title": "invalid digitalAssetId",
  "version": "1.0",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "instance": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "prevMsgType": "urn:ietf:satp:msgtype:transfer-proposal-msg"
  "hashPrevMessage": "154dfaf0406038641e7e59509febf41d9d5d80f367db96198690151f4758ca6e",
  "timestamp": "2024-10-03T12:02+00Z",
}</t>
      </section>
      <section anchor="protocol-errors-codes">
        <name>Protocol Errors Codes</name>
        <t anchor="error-codes-section">This registry defines the error codes used in SATP protocol messages.</t>
        <t>Many of the errors due to invalid identifiers (e.g., invalid transferContextId, invalid digitalAssetId) may arise within
the execution of the SATP protocol because these identifiers depart from those agreed-upon in Transfer Initialization Claim in the transfer proposal message.
The validity of these identifiers must be verified by the gateways during set-up stage (Stage-0), which is beyond the scope of the current specification.
See Section 7 on the Identity and Asset Verification Stage.</t>
        <t>In the following table, each entry consists of:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Code</strong>: The enumeration string (e.g., err_3.3.1)</t>
          </li>
          <li>
            <t><strong>Category</strong>: The protocol stage or message type (e.g., Commit Ready errors)</t>
          </li>
          <li>
            <t><strong>Type</strong>: The error type (e.g., badly formed message)</t>
          </li>
          <li>
            <t><strong>Description</strong>: A brief description (e.g., mismatch transferContextId)</t>
          </li>
          <li>
            <t><strong>HTTP Status</strong>: The HTTP status code <xref target="RFC9110"/> associated with this error</t>
          </li>
        </ul>
        <table>
          <thead>
            <tr>
              <th align="left">Code</th>
              <th align="left">Category</th>
              <th align="left">Type</th>
              <th align="left">Description</th>
              <th align="left">HTTP Status</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">err_0.1.1</td>
              <td align="left">General errors</td>
              <td align="left">badly formed message</td>
              <td align="left">invalid message type</td>
              <td align="left">400</td>
            </tr>
            <tr>
              <td align="left">err_0.1.2</td>
              <td align="left">General errors</td>
              <td align="left">authorization error</td>
              <td align="left">insufficient permissions</td>
              <td align="left">403</td>
            </tr>
            <tr>
              <td align="left">err_0.1.3</td>
              <td align="left">General errors</td>
              <td align="left">badly formed message</td>
              <td align="left">bad signature</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.1</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">invalid transferContextId</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.2</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">invalid sessionId</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.3</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">incorrect transferInitClaimFormat</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.4</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">bad signature</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.11</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed claim</td>
              <td align="left">invalid digitalAssetId</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.12</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed claim</td>
              <td align="left">invalid assetProfileId</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.13</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed claim</td>
              <td align="left">invalid verifiedOriginatorEntityId</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.14</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed claim</td>
              <td align="left">invalid verifiedBeneficiaryEntityId</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.15</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed claim</td>
              <td align="left">invalid originatorPublicKey</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.16</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed claim</td>
              <td align="left">invalid beneficiaryPublicKey</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.17</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed claim</td>
              <td align="left">invalid senderGatewaySignaturePublicKey</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.18</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed claim</td>
              <td align="left">invalid receiverGatewaySignaturePublicKey</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.19</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed claim</td>
              <td align="left">invalid senderGatewayId</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.20</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed claim</td>
              <td align="left">invalid recipientGatewayId</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.31</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed parameter</td>
              <td align="left">unsupported gatewayDefaultSignatureAlgorithm</td>
              <td align="left">415</td>
            </tr>
            <tr>
              <td align="left">err_1.1.32</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed parameter</td>
              <td align="left">unsupported networkLockType</td>
              <td align="left">415</td>
            </tr>
            <tr>
              <td align="left">err_1.1.33</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed parameter</td>
              <td align="left">unsupported networkLockExpirationTime</td>
              <td align="left">415</td>
            </tr>
            <tr>
              <td align="left">err_1.1.34</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed parameter</td>
              <td align="left">unsupported gatewayTlsScheme</td>
              <td align="left">415</td>
            </tr>
            <tr>
              <td align="left">err_1.1.35</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed parameter</td>
              <td align="left">unsupported gatewayLoggingProfile</td>
              <td align="left">415</td>
            </tr>
            <tr>
              <td align="left">err_1.1.36</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed parameter</td>
              <td align="left">unsupported gatewayAccessControlProfile</td>
              <td align="left">415</td>
            </tr>
            <tr>
              <td align="left">err_1.2.1</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch transferContextId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_1.2.2</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch sessionId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_1.2.3</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashTransferInitClaim</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_1.2.4</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">bad signature</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.3.1</td>
              <td align="left">Transfer Commence errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch transferContextId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_1.3.2</td>
              <td align="left">Transfer Commence errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch sessionId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_1.3.3</td>
              <td align="left">Transfer Commence errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashTransferInitClaim</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_1.3.4</td>
              <td align="left">Transfer Commence errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashPrevMessage</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_1.3.5</td>
              <td align="left">Transfer Commence errors</td>
              <td align="left">badly formed message</td>
              <td align="left">bad signature</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.4.1</td>
              <td align="left">ACK Commence errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch transferContextId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_1.4.2</td>
              <td align="left">ACK Commence errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch sessionId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_1.4.3</td>
              <td align="left">ACK Commence errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashPrevMessage</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_1.4.4</td>
              <td align="left">ACK Commence errors</td>
              <td align="left">badly formed message</td>
              <td align="left">bad signature</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_2.2.1</td>
              <td align="left">Lock Assertion errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch transferContextId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_2.2.2</td>
              <td align="left">Lock Assertion errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch sessionId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_2.2.3</td>
              <td align="left">Lock Assertion errors</td>
              <td align="left">badly formed message</td>
              <td align="left">unsupported lockAssertionClaimFormat</td>
              <td align="left">415</td>
            </tr>
            <tr>
              <td align="left">err_2.2.4</td>
              <td align="left">Lock Assertion errors</td>
              <td align="left">badly formed message</td>
              <td align="left">unsupported lockAssertionExpiration</td>
              <td align="left">415</td>
            </tr>
            <tr>
              <td align="left">err_2.2.5</td>
              <td align="left">Lock Assertion errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashPrevMessage</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_2.2.7</td>
              <td align="left">Lock Assertion errors</td>
              <td align="left">semantic error</td>
              <td align="left">asset not found</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_2.2.8</td>
              <td align="left">Lock Assertion errors</td>
              <td align="left">semantic error</td>
              <td align="left">asset already locked</td>
              <td align="left">409</td>
            </tr>
            <tr>
              <td align="left">err_2.2.9</td>
              <td align="left">Lock Assertion errors</td>
              <td align="left">semantic error</td>
              <td align="left">asset lock expired</td>
              <td align="left">410</td>
            </tr>
            <tr>
              <td align="left">err_2.4.1</td>
              <td align="left">Lock Assertion Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch transferContextId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_2.4.2</td>
              <td align="left">Lock Assertion Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch sessionId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_2.4.3</td>
              <td align="left">Lock Assertion Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashPrevMessage</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_2.4.4</td>
              <td align="left">Lock Assertion Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">bad signature</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_3.1.1</td>
              <td align="left">Commit Preparation errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch transferContextId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.1.2</td>
              <td align="left">Commit Preparation errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch sessionId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.1.3</td>
              <td align="left">Commit Preparation errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashPrevMessage</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.1.4</td>
              <td align="left">Commit Preparation errors</td>
              <td align="left">badly formed message</td>
              <td align="left">bad signature</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_3.3.1</td>
              <td align="left">Commit Ready errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch transferContextId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.3.2</td>
              <td align="left">Commit Ready errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch sessionId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.3.3</td>
              <td align="left">Commit Ready errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashPrevMessage</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.3.4</td>
              <td align="left">Commit Ready errors</td>
              <td align="left">badly formed message</td>
              <td align="left">unsupported mintAssertionFormat</td>
              <td align="left">415</td>
            </tr>
            <tr>
              <td align="left">err_3.3.5</td>
              <td align="left">Commit Ready errors</td>
              <td align="left">badly formed message</td>
              <td align="left">bad signature</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_3.5.1</td>
              <td align="left">Commit Final Assertion errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch transferContextId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.5.2</td>
              <td align="left">Commit Final Assertion errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch sessionId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.5.3</td>
              <td align="left">Commit Final Assertion errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashPrevMessage</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.5.4</td>
              <td align="left">Commit Final Assertion errors</td>
              <td align="left">badly formed message</td>
              <td align="left">unsupported burnAssertionClaimFormat</td>
              <td align="left">415</td>
            </tr>
            <tr>
              <td align="left">err_3.5.5</td>
              <td align="left">Commit Final Assertion errors</td>
              <td align="left">badly formed message</td>
              <td align="left">bad signature</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_3.7.1</td>
              <td align="left">Commit Final Ack Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch transferContextId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.7.2</td>
              <td align="left">Commit Final Ack Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch sessionId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.7.3</td>
              <td align="left">Commit Final Ack Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashPrevMessage</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.7.4</td>
              <td align="left">Commit Final Ack Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">unsupported assignmentAssertionClaimFormat</td>
              <td align="left">415</td>
            </tr>
            <tr>
              <td align="left">err_3.7.5</td>
              <td align="left">Commit Final Ack Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">bad signature</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_3.9.1</td>
              <td align="left">Transfer Complete errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch transferContextId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.9.2</td>
              <td align="left">Transfer Complete errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch sessionId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.9.3</td>
              <td align="left">Transfer Complete errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashPrevMessage</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.9.4</td>
              <td align="left">Transfer Complete errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashTransferCommence</td>
              <td align="left">404</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="effectiveness-of-session-aborts">
        <name>Effectiveness of Session Aborts</name>
        <t anchor="satp-abort-effectiveness-section">The effectiveness of a session-abort message on the state of the asset depends on where the abort message occurs in the SATP protocol flow in Figure 2.</t>
        <t>Note that a session-abort message maybe lost and never be received by the peer gateway. Gateways can crash prior to receiving an abort message.</t>
        <t>If gateway G2 transmits a session-abort message after gateway G1 performs a lock (msgtype:lock-assert-msg) on the asset in network NW1, the gateway G1 can always unlock the asset and restore its state.</t>
        <t>If either gateway G1 or gateway G2 transmits a session-abort message after gateway G1 sends a lock-assert message (msgtype:lock-assert-msg) but before G2 sends the commit ready message (msgtype:commit-ready-msg), the gateway G1 can always unlock the asset and restore its state in network NW1.</t>
        <t>Similarly, if either gateway G1 or gateway G2 transmits a session-abort message immediately after gateway G1 sends a commit-prepare message (msgtype:commit-prepare-msg) but before G2 sends the commit ready message (msgtype:commit-ready-msg), the gateway G2 can always reverse the changes made by G2 to NW2 (i.e. reverse the assignment-to-self of the minted asset).</t>
        <t>However, an abort message (occurring in either direction) after gateway G1 transmits the commit final message (msgtype:commit-final-msg) will not be effective. This is because G1 has already burned the asset in NW1 and G2 has already minted the asset in NW2 and has legally agreed to assign the asset to the appropriate beneficiary in NW2.</t>
        <t>In general, the termination of sessions or aborts occurring before the sender gateway G1 disables (burns) the asset in NW1 (in flow 3.4 in Figure 2) will incur a minimal cost in terms of computing resources or fees on the part of both gateways G1 and G2.</t>
      </section>
    </section>
    <section anchor="security-consideration">
      <name>Security Consideration</name>
      <t anchor="satp-Security-Consideration-section">Gateways may be of interest to attackers because they enable the transferal of digital assets across networks and therefore are an important function in the digital economy.</t>
      <ul spacing="normal">
        <li>
          <t>Disruptions in transfers and denial of service: Disruptions to a transfer session may cause not only resource waste (e.g. CPU usage), but in some cases may result in financial loss on the part of the gateway operator (e.g. fees charged by network). Denial-of-service attacks by third parties to a run of the protocol may result in the termination of the current run (e.g. time-outs at the SATP layer), and for new attempts to be conducted.</t>
        </li>
        <li>
          <t>Dishonest gateways: The SATP protocol requires gateways to sign messages related to the transfer layer, not only to provide message source authentication and integrity but also to maintain honesty on the part of the gateways. Gateway-operators may take-on legal and financial liabilities in certain jurisdictions by digitally signing messages. Dishonest gateways may intentionally delay the delivery of certain messages or intentionally fail (abort) the protocol run at certain crucial points <xref target="ARCH"/>.  Two such crucial points in the message flows are the following: (i) the commit-final-msg, where the sender G1 asserts it has extinguished (burned) the asset in the origin network, and (ii) the ack-prepare-msg where the receiver gateway G2 asserts it is ready to proceed with the final commitment. If gateway G1 intentionally drops the commit-final-msg (commit-final) such that gateway G2 times-out, then G2 may suffer financial loss due to roll-back costs in network NW2. Similarly, if G2 intentionally drops the ack-prepare-msg to signal that it is ready to proceed with the commitment (commit-ready), then gateway G1 may time-out and terminate the protocol run, causing resource waste at G1. Operators of gateways should utlize relevant tools to detect possible dishonest behavior of certain gateways, and select to have their gateways peer with other reliable gateways.</t>
        </li>
        <li>
          <t>Protection of gateway keys: It is crucial to protect the cryptographic keys utilized by gateways. This includes keys for secure session establishment (TLS1.3) and keys utilized for signing SATP messages. Loss of gateway keys may incur financial loss on the part of the gateway-operator. Implementation of gateways should consider utilizing tamper-resistant hardware to store and manage the relevant keys for gateways operational functions.</t>
        </li>
        <li>
          <t>Gateway identification: Mechanisms must be utilized to provide unique identifiers to gateway implementations to ensure global uniqueness and reachability. Existing identification mechanisms such a X509 certificates <xref target="RFC5280"/> and Verifiable Credentials <xref target="W3CVC"/> may be applied for gateway identification.</t>
        </li>
        <li>
          <t>Identification of networks: There needs to be mechanism for gateways to declare or disclose the asset networks it current serves. Combined with strong gateway identification, this allows remote gateways to quickly locate suitable gateways to peer with for the purposes of asset transfers.</t>
        </li>
      </ul>
    </section>
    <section anchor="iana-consideration">
      <name>IANA Consideration</name>
      <t anchor="satp-iana-Consideration">The following request is being made to IANA.</t>
      <section anchor="urn-registration">
        <name>URN Registration</name>
        <t>URN:   Request to be assigned by IANA.</t>
        <t>Common Name:    urn:ietf:satp</t>
        <t>Registrant Contact: IESG</t>
        <t>Description: The secure asset transfer protocol (SATP) requires message types, endpoints and parameters to be defined within a unique namespace to prevent collision.</t>
      </section>
      <section anchor="satp-message-types-registry">
        <name>SATP Message Types Registry</name>
        <t anchor="satp-message-types">This specification establishes the SATP Message Types registry. The purpose of this registry is to define the various message types utilized in the secure asset transfer protocol (SATP).</t>
      </section>
      <section anchor="initial-registry-contents">
        <name>Initial Registry Contents</name>
        <t>The SATP Message Types registry's initial contents are as follows:</t>
        <section anchor="parameter-name-transfer-proposal-msg">
          <name>Parameter name: transfer-proposal-msg</name>
          <ul spacing="normal">
            <li>
              <t>Parameter usage location: Transfer Proposal</t>
            </li>
            <li>
              <t>Change controller: IETF</t>
            </li>
            <li>
              <t>Specification document(s):  Section 8.3 of draft-ietf-satp-core.</t>
            </li>
          </ul>
        </section>
        <section anchor="parameter-name-proposal-receipt-msg">
          <name>Parameter name: proposal-receipt-msg</name>
          <ul spacing="normal">
            <li>
              <t>Parameter usage location: Transfer Proposal Receipt Message</t>
            </li>
            <li>
              <t>Change controller: IETF</t>
            </li>
            <li>
              <t>Specification document(s): Section 8.4 of draft-ietf-satp-core.</t>
            </li>
          </ul>
        </section>
        <section anchor="parameter-name-reject-msg">
          <name>Parameter name: reject-msg</name>
          <ul spacing="normal">
            <li>
              <t>Parameter usage location: Transfer Reject</t>
            </li>
            <li>
              <t>Change controller: IETF</t>
            </li>
            <li>
              <t>Specification document(s): Section 8.5 of draft-ietf-satp-core.</t>
            </li>
          </ul>
        </section>
        <section anchor="parameter-name-transfer-commence-msg">
          <name>Parameter name: transfer-commence-msg</name>
          <ul spacing="normal">
            <li>
              <t>Parameter usage location: Transfer Commence</t>
            </li>
            <li>
              <t>Change controller: IETF</t>
            </li>
            <li>
              <t>Specification document(s): Section 8.6 of draft-ietf-satp-core.</t>
            </li>
          </ul>
        </section>
        <section anchor="parameter-name-ack-commence-msg">
          <name>Parameter name: ack-commence-msg</name>
          <ul spacing="normal">
            <li>
              <t>Parameter usage location: Transfer Commence Response</t>
            </li>
            <li>
              <t>Change controller: IETF</t>
            </li>
            <li>
              <t>Specification document(s): Section 8.7 of draft-ietf-satp-core.</t>
            </li>
          </ul>
        </section>
        <section anchor="parameter-name-lock-assert-msg">
          <name>Parameter name: lock-assert-msg</name>
          <ul spacing="normal">
            <li>
              <t>Parameter usage location: Lock Assertion</t>
            </li>
            <li>
              <t>Change controller: IETF</t>
            </li>
            <li>
              <t>Specification document(s): Section 9.1 of draft-ietf-satp-core.</t>
            </li>
          </ul>
        </section>
        <section anchor="parameter-name-assertion-receipt-msg">
          <name>Parameter name: assertion-receipt-msg</name>
          <ul spacing="normal">
            <li>
              <t>Parameter usage location: Lock Assertion Receipt</t>
            </li>
            <li>
              <t>Change controller: IETF</t>
            </li>
            <li>
              <t>Specification document(s): Section 9.2 of draft-ietf-satp-core.</t>
            </li>
          </ul>
        </section>
        <section anchor="parameter-name-commit-prepare-msg">
          <name>Parameter name: commit-prepare-msg</name>
          <ul spacing="normal">
            <li>
              <t>Parameter usage location: Commit Preparation</t>
            </li>
            <li>
              <t>Change controller: IETF</t>
            </li>
            <li>
              <t>Specification document(s): Section 10.1 of draft-ietf-satp-core.</t>
            </li>
          </ul>
        </section>
        <section anchor="parameter-name-commit-ready-msg">
          <name>Parameter name: commit-ready-msg</name>
          <ul spacing="normal">
            <li>
              <t>Parameter usage location: Commit Ready</t>
            </li>
            <li>
              <t>Change controller: IETF</t>
            </li>
            <li>
              <t>Specification document(s): Section 10.2 of draft-ietf-satp-core.</t>
            </li>
          </ul>
        </section>
        <section anchor="parameter-name-commit-final-msg">
          <name>Parameter name: commit-final-msg</name>
          <ul spacing="normal">
            <li>
              <t>Parameter usage location: Commit Final Assertion</t>
            </li>
            <li>
              <t>Change controller: IETF</t>
            </li>
            <li>
              <t>Specification document(s): Section 10.3 of draft-ietf-satp-core.</t>
            </li>
          </ul>
        </section>
        <section anchor="parameter-name-ack-commit-final-msg">
          <name>Parameter name: ack-commit-final-msg</name>
          <ul spacing="normal">
            <li>
              <t>Parameter usage location: Commit-Final Acknowledgement Receipt</t>
            </li>
            <li>
              <t>Change controller: IETF</t>
            </li>
            <li>
              <t>Specification document(s): Section 10.4 of draft-ietf-satp-core.</t>
            </li>
          </ul>
        </section>
        <section anchor="parameter-name-commit-transfer-complete-msg">
          <name>Parameter name: commit-transfer-complete-msg</name>
          <ul spacing="normal">
            <li>
              <t>Parameter usage location: Transfer Complete</t>
            </li>
            <li>
              <t>Change controller: IETF</t>
            </li>
            <li>
              <t>Specification document(s): Section 10.5 of draft-ietf-satp-core.</t>
            </li>
          </ul>
        </section>
        <section anchor="parameter-name-error-msg">
          <name>Parameter name: error-msg</name>
          <ul spacing="normal">
            <li>
              <t>Parameter usage location: Error message</t>
            </li>
            <li>
              <t>Change controller: IETF</t>
            </li>
            <li>
              <t>Specification document(s): Section 10.6 of draft-ietf-satp-core.</t>
            </li>
          </ul>
        </section>
        <section anchor="parameter-name-session-abort-msg">
          <name>Parameter name: session-abort-msg</name>
          <ul spacing="normal">
            <li>
              <t>Parameter usage location: Session Abort</t>
            </li>
            <li>
              <t>Change controller: IETF</t>
            </li>
            <li>
              <t>Specification document(s): Section 10.7 of draft-ietf-satp-core.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="satp-error-codes-registry">
        <name>SATP Error Codes Registry</name>
        <t>This specification establishes the SATP Error Codes registry. The purpose of this registry is to define the various error codes utilized in the secure asset transfer protocol (SATP). The errors listed in <xref target="error-codes-section"/> are to be registered.</t>
      </section>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t anchor="satp-core-contributors">The authors would like to thank the following people for their input and support:</t>
      <t>Andre Augusto,
Denis Avrilionis,
Rafael Belchior,
Alexandru Chiriac,
Anthony Culligan,
Claire Facer,
Martin Gfeller,
Wes Hardaker,
David Millman,
Krishnasuri Narayanam,
Anais Ofranc,
Luke Riley,
John Robotham,
Orie Steele,
Yaron Scheffer,
Peter Somogyvari,
Weijia Zhang.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</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 Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </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="RFC7517">
          <front>
            <title>JSON Web Key (JWK)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7517"/>
          <seriesInfo name="DOI" value="10.17487/RFC7517"/>
        </reference>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC7518">
          <front>
            <title>JSON Web Algorithms (JWA)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification registers cryptographic algorithms and identifiers to be used with the JSON Web Signature (JWS), JSON Web Encryption (JWE), and JSON Web Key (JWK) specifications. It defines several IANA registries for these identifiers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7518"/>
          <seriesInfo name="DOI" value="10.17487/RFC7518"/>
        </reference>
        <reference anchor="REQ-LEVEL">
          <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="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </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="DATETIME">
          <front>
            <title>Date and Time on the Internet: Timestamps</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="July" year="2002"/>
            <abstract>
              <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3339"/>
          <seriesInfo name="DOI" value="10.17487/RFC3339"/>
        </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="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC9457">
          <front>
            <title>Problem Details for HTTP APIs</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <author fullname="S. Dalal" initials="S." surname="Dalal"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This document defines a "problem detail" to carry machine-readable details of errors in HTTP response content to avoid the need to define new error response formats for HTTP APIs.</t>
              <t>This document obsoletes RFC 7807.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9457"/>
          <seriesInfo name="DOI" value="10.17487/RFC9457"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="NIST" target="https://doi.org/10.6028/NIST.IR.8202">
          <front>
            <title>NIST Blockchain Technology Overview (NISTR-8202)</title>
            <author initials="D." surname="Yaga">
              <organization/>
            </author>
            <author initials="P." surname="Mell">
              <organization/>
            </author>
            <author initials="N." surname="Roby">
              <organization/>
            </author>
            <author initials="K." surname="Scarfone">
              <organization/>
            </author>
            <date year="2018" month="October"/>
          </front>
        </reference>
        <reference anchor="ETH" target="https://ethereum.org">
          <front>
            <title>Ethereum A next-generation smart contract and decentralized application platform</title>
            <author initials="V." surname="Buterin">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
        </reference>
        <reference anchor="BTC" target="https://bitcoin.org/bitcoin.pdf">
          <front>
            <title>Bitcoin A Peer-to-Peer Electronic Cash System</title>
            <author initials="S." surname="Nakamoto">
              <organization/>
            </author>
            <date year="2008"/>
          </front>
        </reference>
        <reference anchor="XRP" target="https://ripple.com/files/ripple-consensus-whitepaper.pdf">
          <front>
            <title>The Ripple Protocol Consensus Algorithm</title>
            <author initials="D." surname="Schwartz">
              <organization/>
            </author>
            <author initials="N." surname="Youngs">
              <organization/>
            </author>
            <author initials="A." surname="Britto">
              <organization/>
            </author>
            <date year="2014"/>
          </front>
        </reference>
        <reference anchor="ECDSA" target="https://doi.org/10.6028/NIST.FIPS.186-5">
          <front>
            <title>Digital Signature Standard (FIPS 186-5)</title>
            <author>
              <organization/>
            </author>
            <date year="2023" month="February"/>
          </front>
        </reference>
        <reference anchor="MICA" target="https://www.esma.europa.eu/esmas-activities/digital-finance-and-innovation/markets-crypto-assets-regulation-mica">
          <front>
            <title>EU Directive on Markets in Crypto-Assets Regulation (MiCA)</title>
            <author initials="" surname="European Commission">
              <organization/>
            </author>
            <date year="2023" month="June"/>
          </front>
        </reference>
        <reference anchor="BELC" target="https://doi.org/10.1016/j.future.2021.11.004">
          <front>
            <title>Hermes a Fault-tolerant middleware for blockchain interoperability</title>
            <author initials="R." surname="Belchior">
              <organization/>
            </author>
            <author initials="A." surname="Vasconcelos">
              <organization/>
            </author>
            <author initials="M." surname="Correia">
              <organization/>
            </author>
            <author initials="T." surname="Hardjono">
              <organization/>
            </author>
            <date year="2024" month="April"/>
          </front>
        </reference>
        <reference anchor="W3CVC" target="https://www.w3.org/TR/vc-overview/">
          <front>
            <title>Verifiable Credentials Overview</title>
            <author initials="" surname="W3C">
              <organization/>
            </author>
            <date year="2025" month="September"/>
          </front>
        </reference>
        <reference anchor="ARCH" target="https://datatracker.ietf.org/doc/draft-ietf-satp-architecture/">
          <front>
            <title>Secure Asset Transfer (SAT) Interoperability Architecture</title>
            <author initials="T." surname="Hardjono">
              <organization/>
            </author>
            <author initials="M." surname="Hargreaves">
              <organization/>
            </author>
            <author initials="N." surname="Smith">
              <organization/>
            </author>
            <author initials="V." surname="Ramakrishna">
              <organization/>
            </author>
            <date year="2024" month="June"/>
          </front>
        </reference>
        <reference anchor="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
Zk6j8YmOt6f/wUfBllfz75NHwrzie9sKuPPfJ8fw+dT41Hb+FT5W/at75B6v
1j8OgBD5dFGQAZCv1BpoTPt24Yuq/YWvNa9xKOmTN+x2PXvIftWQ/hb4RqLZ
ApMUjphuFxiDiAdvg37VlDV/HHXgjDrYA1D42mrc/QmFsxmrJ4suVfp9rgOR
74uGsvJbnqn/JDPlpk55hsEjZxDHf21X1vKMw0fNeOfePGRzOFT2U400rJrl
IRtTnMXtpFk1y0M2pzhLfffMqhkfsjl1M1Z006yacvQEU1Y02KyaavwEU1U1
2qyaa/IEc93RcLNq2ukTTHtn482qiWdPvd5qhth9mvUV+nhWMcaHMBLjz4Yf
rCtOrWXWdnPE+fEg2PM/hMXUzV/o7Vg13UN4zT2mc/tDVk38EJZzB55Nw8mq
+R7Cb+6Y7018CeznUnh51aQP4Tx3THpE9duPuSh33dT9Ryor9Wo26VhDZ6rH
aStmKkddKUzxOHXFTFHdiKU83ZfUVQbu1pio6yfckoG7JftPUb8VA3cr9h/6
flswcLfgYdPYDszyBKMHTbB7b4e0t0fH33yRbR3Stj5s9PodHdKOPmzUu7A8
pG3ca+xdCO4LXytUrH0yFPeFmT10/Dok94WD7Tmuzfxry2m7nL8vzOupZrKK
JZYnGj0CVbspB0ef7Bg9VSsfTIvAeAQ4YBsD07hBT3m46f7D+UuupSTV/XHM
mTPmbP8xqfymxLIRSrvWiMMq6n5ykd0XRvLYeeqpfVhF7Q8S1rtIZFhF6U8h
owfi66kod/hkmzAQL89j5qjbgIH4dx4z9m7kD8Sf84AZdiN+YCPe9i8/CcoH
Nsr3HL0e2QMb2XuOeheaBzaa7ze2zcuranC5fHwgmtBeU+zew5G9h8W6PU+4
myN7Nx88T/2+jux9ffD4d+3wyN7hfWex97q2xE1xw0f2hu874+6tn1RsPbDn
JxdhOFN58x8yU/32Tyq2/yEz3EUAkwoC2GMemwTuKG5RJIRJBSHsMfNuUpiV
zFxObH9CGpiVzNw9p6jf/FnJzN1z6Lt2fVYycB8wQSnLW89C2cGU8BhdKyqO
jOl+ykpOddLsKOtI2c8XMwCKY/luylJeHaE2mZJTaijdkuNbS9mkkq+5IwsO
fnkZXSK1YRJ6HvBWB83Kv51j9feU83vXCnOY5ypPQ5JgACetzjPlzzFvilLV
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
Aeg0/h+3dkHRRFEBAA==

-->

</rfc>
