<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bsvkey-dtn-custody-receipt-block-00" category="exp" submissionType="IETF" consensus="false" version="3">
  <front>
    <title abbrev="Custody Receipt Block">Signed Custody Receipts Carried in a Bundle Protocol Version 7 Extension Block</title>
    <seriesInfo name="Internet-Draft" value="draft-bsvkey-dtn-custody-receipt-block-00"/>
    <author>
      <organization>Embryo Space Inc.</organization>
      <address>
        <postal>
          <city>Brownsville</city>
          <region>TX</region>
          <country>United States of America</country>
        </postal>
        <email>embryospace@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="18"/>
    <area>Internet</area>
    <workgroup>Delay/Disruption Tolerant Networking</workgroup>
    <keyword>DTN</keyword>
    <keyword>BPv7</keyword>
    <keyword>custody</keyword>
    <keyword>receipt</keyword>
    <keyword>extension block</keyword>
    <abstract>
      <t>This document defines the Custody Receipt Block, a Bundle Protocol
      Version 7 (BPv7) extension block that carries a chain of signed custody
      receipts inside the bundle those receipts describe. Each node that
      chooses to act as a custodian appends one receipt stating that it held
      the bundle, which node it received it from, and when it received and
      forwarded it. Nodes that do not implement the block forward it unchanged
      and are never required to read the payload or to sign anything. A
      verifier holding the custodians' public keys can check the chain after
      the fact and can report, rather than infer, any part of the route for
      which no receipt exists. The receipts are evidence for accounting and
      dispute resolution between operators. They are not Bundle Protocol
      administrative records and they do not replace or modify custody
      transfer signalling.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>An open reference implementation (Apache-2.0), test vectors and live
      interoperability results are at
      <eref target="https://github.com/BSVKey/dtn-custody-demo"/>. The
      implementation uses block type 224 from the private and experimental
      range pending any assignment.</t>
    </note>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>In a delay/disruption tolerant network, a bundle may be held for
      minutes to hours by nodes run by different operators before it reaches
      its destination. When something goes wrong (a bundle arrives late, is
      lost, or arrives altered), each operator holds only its own local logs.
      Those logs are not portable evidence: another party cannot verify them
      without trusting the operator that wrote them.</t>
      <t>BPv7 <xref target="RFC9171"/> does not include custody transfer;
      reliable hop-by-hop transfer is addressed separately
      <xref target="I-D.ietf-dtn-bibect"/>. Custody transfer answers "who is
      responsible for retransmission now". This document addresses a
      different question: "who can prove they held this bundle, and when".
      The mechanism is a signed receipt that travels with the bundle and can
      be verified by any party, at any later time, without contacting the
      nodes that produced it.</t>
      <t>The design follows the end-to-end argument
      <xref target="SRC84"/>: forwarding nodes do nothing beyond normal BPv7
      block processing. Only nodes whose operators choose to act as
      custodians produce receipts, and after the first custodian none of
      them need to parse the payload. A verifier at the destination, or any
      later auditor, does the checking.</t>
      <t>This document is published as Experimental so that the format can
      be evaluated in multi-operator deployments. It reflects version 1 of an
      implementation that has been run through four independent BPv7
      implementations; see <xref target="impl"/>.</t>
    </section>
    <section anchor="terms">
      <name>Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
      "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
      NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>",
      "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
      "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are
      to be interpreted as described in BCP&nbsp;14 <xref target="RFC2119"/>
        <xref target="RFC8174"/> when, and only when, they appear in all
      capitals, as shown here.</t>
      <dl newline="false" spacing="normal">
        <dt>Custodian:</dt>
        <dd>A node whose operator has chosen to sign receipts for bundles it
        holds. Being a custodian in this sense is independent of custody
        transfer and implies no retransmission responsibility.</dd>
        <dt>Forwarder:</dt>
        <dd>Any BPv7 node that is not acting as a custodian for a given
        bundle. A forwarder may or may not implement this specification.</dd>
        <dt>Origin:</dt>
        <dd>The first custodian for a bundle. It establishes the subject
        identifiers that later receipts repeat.</dd>
        <dt>Custody receipt (receipt):</dt>
        <dd>A signed statement by one custodian that it held one bundle,
        defined in <xref target="receipt"/>. A receipt is not a BPv7
        administrative record (<xref target="RFC9171" section="6.1"/>).</dd>
        <dt>Receipt chain:</dt>
        <dd>The ordered list of receipts carried in one Custody Receipt
        Block.</dd>
        <dt>Uncustodied transit gap (gap):</dt>
        <dd>A part of the route, visible to a verifier, for which no receipt
        exists.</dd>
      </dl>
    </section>
    <section anchor="receipt">
      <name>Custody Receipt Format</name>
      <section anchor="canon">
        <name>Canonical Encoding</name>
        <t>Version 1 receipts are JSON objects <xref target="RFC8259"/>. The
        canonical form of a receipt is its JSON serialization with the keys
        of every object sorted recursively by UTF-16 code unit, no
        insignificant whitespace, and standard JSON string escaping.
        Implementations <bcp14>MUST</bcp14> reject nesting deeper than 32
        levels.</t>
        <t>The content identifier of a receipt is the string "0x" followed by
        the lowercase hexadecimal SHA-256 <xref target="FIPS180-4"/> digest
        of the UTF-8 canonical form of the receipt with the members
        "claimId", "sig" and "signerPub" removed.</t>
      </section>
      <section anchor="fields">
        <name>Members</name>
        <table anchor="tbl-fields">
          <name>Custody receipt members</name>
          <thead>
            <tr>
              <th>Member</th>
              <th>Type</th>
              <th>Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>kind</td>
              <td>string</td>
              <td>"custody/1"</td>
            </tr>
            <tr>
              <td>payloadId</td>
              <td>string</td>
              <td>Identifier of the application data unit the bundle belongs to, set by the origin</td>
            </tr>
            <tr>
              <td>bundleId</td>
              <td>string</td>
              <td>Subject identifier for this bundle, set by the origin (<xref target="subject"/>)</td>
            </tr>
            <tr>
              <td>prevHop</td>
              <td>string</td>
              <td>EID of the node this custodian received the bundle from</td>
            </tr>
            <tr>
              <td>thisHop</td>
              <td>string</td>
              <td>EID of this custodian</td>
            </tr>
            <tr>
              <td>receivedAt</td>
              <td>integer</td>
              <td>Reception time, milliseconds since 1970-01-01T00:00:00Z</td>
            </tr>
            <tr>
              <td>forwardedAt</td>
              <td>integer</td>
              <td>Forwarding time, same unit</td>
            </tr>
            <tr>
              <td>claimId</td>
              <td>string</td>
              <td>The content identifier (<xref target="canon"/>)</td>
            </tr>
            <tr>
              <td>sig</td>
              <td>string</td>
              <td>Base64 Ed25519 <xref target="RFC8032"/> signature over the UTF-8 bytes of claimId</td>
            </tr>
            <tr>
              <td>signerPub</td>
              <td>string</td>
              <td>Base64 DER SubjectPublicKeyInfo of the signing key <xref target="RFC8410"/></td>
            </tr>
          </tbody>
        </table>
        <t>The member names are those of the deployed version 1 format and
        are retained unchanged so that existing receipts remain verifiable.
        A custodian <bcp14>SHOULD</bcp14> take prevHop from the Previous Node
        block (<xref target="RFC9171" section="4.4.1"/>) when one is present.
        An encoded receipt is about 530 octets.</t>
      </section>
      <section anchor="subject">
        <name>Subject Identifiers</name>
        <t>The origin sets payloadId and bundleId. Every later custodian
        <bcp14>MUST</bcp14> copy both values from the first receipt in the
        block and <bcp14>MUST NOT</bcp14> need to parse the payload to do so.
        This is what allows a custodian to treat the application data unit
        as opaque, including when the payload is encrypted with a Block
        Confidentiality Block <xref target="RFC9172"/>.</t>
        <t>A false subject identifier cannot pass verification, because the
        verifier derives the expected bundleId from the payload it receives
        (<xref target="verify"/>). The derivation is application specific.
        The reference implementation carries a payload split into chunks
        under a Merkle root and uses the content identifier of
        {payloadId, index, leafHex} for the chunk carried by the bundle.</t>
      </section>
    </section>
    <section anchor="block">
      <name>The Custody Receipt Block</name>
      <section anchor="block-format">
        <name>Block Format</name>
        <t>The block-type code is TBD1 (<xref target="iana"/>).
        Implementations of this version use 224, from the private and
        experimental range, until a code point is assigned.</t>
        <t>The block-type-specific data is a CBOR <xref target="RFC8949"/>
        array of text strings. Each text string is the canonical form of one
        signed receipt, in the order the receipts were appended. Carrying
        the canonical form as an opaque string means signatures verify over
        the exact octets carried, with no re-serialization.</t>
        <sourcecode type="cddl">
custody-receipt-block-data = [ + tstr ]  ; canonical JSON receipts
</sourcecode>
        <t>A bundle <bcp14>MUST NOT</bcp14> contain more than one Custody
        Receipt Block.</t>
      </section>
      <section anchor="flags">
        <name>Block Processing Control Flags</name>
        <t>The block <bcp14>MUST</bcp14> have "Block must be replicated in
        every fragment" set, and <bcp14>MUST</bcp14> have "Delete bundle if
        block can't be processed" and "Discard block if it can't be
        processed" clear. A node that does not implement this specification
        therefore retains the block and forwards it unchanged
        (<xref target="RFC9171" section="4.2.4"/>). A CRC-32C is
        <bcp14>RECOMMENDED</bcp14>.</t>
      </section>
    </section>
    <section anchor="processing">
      <name>Processing</name>
      <section anchor="custodian">
        <name>Custodian Behavior</name>
        <t>A custodian that holds a bundle and chooses to sign for it:</t>
        <ol>
          <li>If no Custody Receipt Block is present, acts as the origin:
          determines payloadId and bundleId and adds the block.</li>
          <li>Otherwise copies payloadId and bundleId from the first
          receipt.</li>
          <li>Appends its own signed receipt to the array and recomputes the
          block CRC. It <bcp14>MUST NOT</bcp14> alter or reorder earlier
          receipts.</li>
        </ol>
        <t>Which bundles a node signs for is local policy (for example, by
        source, destination, service agreement or the presence of the
        block). No new naming scheme is needed.</t>
      </section>
      <section anchor="forwarder">
        <name>Forwarder Behavior</name>
        <t>A forwarder performs normal BPv7 processing. It does not read the
        payload, does not sign, and need not implement this
        specification.</t>
      </section>
      <section anchor="verify">
        <name>Verification</name>
        <t>A verifier <bcp14>MUST</bcp14> derive bundleId from the payload
        it received, never from the receipts. It then checks every receipt:
        the content identifier <bcp14>MUST</bcp14> equal claimId; the
        signature <bcp14>MUST</bcp14> verify under signerPub; bundleId
        <bcp14>MUST</bcp14> equal the derived value; and signerPub
        <bcp14>MUST</bcp14> equal a key the verifier obtained independently
        for the EID in thisHop. A receipt that fails any of these checks
        is a verification failure.</t>
        <t>Two modes are defined:</t>
        <dl>
          <dt>Pinned route:</dt>
          <dd>The verifier knows the expected ordered list of custodians. The
          number of receipts <bcp14>MUST</bcp14> equal the length of the
          list, each thisHop <bcp14>MUST</bcp14> match its position, and
          each prevHop after the first <bcp14>MUST</bcp14> equal the
          previous receipt's thisHop.</dd>
          <dt>Audit:</dt>
          <dd>The verifier knows the custodians' keys but not the route.
          Wherever a receipt's prevHop differs from the previous receipt's
          thisHop (or from the expected origin), and wherever the node that
          delivered the bundle (from its Previous Node block) differs from
          the last receipt's thisHop, the verifier <bcp14>MUST</bcp14> report
          a gap naming the last signed hop, the next signed hop, and the
          unsigned node observed. A result with any gap <bcp14>MUST
          NOT</bcp14> be reported as complete.</dd>
        </dl>
        <t>A missing receipt is reported as missing and is never inferred.
        A receipt that is present but invalid is a failure, not a gap.</t>
      </section>
    </section>
    <section anchor="bpsec">
      <name>Interaction with BPSec</name>
      <t>Because every custodian modifies the Custody Receipt Block, a Block
      Integrity Block <xref target="RFC9172"/> <bcp14>MUST NOT</bcp14>
      target it. Receipts carry their own signatures. A BIB that targets the
      payload or the primary block is unaffected by appending receipts, since
      appending changes neither. A Block Confidentiality Block
      <bcp14>MUST NOT</bcp14> target the Custody Receipt Block, because
      later custodians must read the first receipt.</t>
    </section>
    <section anchor="impl">
      <name>Implementation Status</name>
      <t>Note to the RFC Editor: please remove this section before
      publication, as described in <xref target="RFC7942"/>.</t>
      <t>One implementation exists: dtn-custody-demo, Embryo Space Inc.,
      Apache-2.0, JavaScript (Node.js) with no third-party dependencies,
      <eref target="https://github.com/BSVKey/dtn-custody-demo"/>. It
      includes its own BPv7 codec, which was checked byte for byte against
      the uD3TN project's Python library. In live runs the block was carried
      byte-identical across a scheduled contact gap by uD3TN, NASA HDTN, JPL
      ION and Aalyria Hardy, none of which implement it. The BIB-HMAC-SHA2
      code <xref target="RFC9173"/> reproduces the RFC&nbsp;9173 Appendix A
      vectors byte for byte. A payload BIB was carried through the same four
      implementations and verified before and after custodians appended
      receipts. Results and commands are in the repository
      (transport/bpv7/RESULTS.md).</t>
      <t>Testing against JPL ION as a BIB acceptor and signer found that ION
      builds the integrity-protected plaintext for a payload target from the
      whole serialized block rather than from the block-type-specific data
      as a byte string (<xref target="RFC9173" section="3.7"/>), and omits
      the SHA variant parameter while signing with HMAC 256/256. The
      reference implementation interoperates with ION through an optional
      mode and uses the RFC&nbsp;9173 construction by default. This is noted
      because the two constructions cannot verify each other's BIBs.</t>
    </section>
    <section anchor="open">
      <name>Open Issues</name>
      <ul>
        <li>Encoding. A CBOR receipt signed with COSE_Sign1
        <xref target="RFC9052"/> would fit BPv7 better than canonical JSON
        and would be much smaller. Version 1 keeps JSON for compatibility
        with receipts already produced.</li>
        <li>Subject identifier. Binding receipts to the BPv7 bundle identity
        (source EID, creation timestamp and, for fragments, offset) in
        addition to an application identifier would let verifiers without
        application knowledge check the binding.</li>
        <li>Fragmentation. Receipts describe the whole bundle. Behavior for
        a custodian that holds only some fragments is not yet defined.</li>
        <li>Growth. The block grows by one receipt per custodian. Batching
        receipts per contact under a Merkle root, as the reference
        implementation does outside the block, may be preferable on long
        routes.</li>
      </ul>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>Key distribution. Receipts are only as meaningful as the binding
      between a custodian EID and its key. Verifiers <bcp14>MUST</bcp14>
      obtain keys independently of the receipts and <bcp14>MUST
      NOT</bcp14> trust signerPub on its own.</t>
      <t>Stripping. Any forwarder can remove the block or truncate the
      array and recompute the CRC. This cannot be prevented by the block
      itself; it is detected because the removed custodians appear as gaps.
      A verifier <bcp14>MUST</bcp14> treat a gap as absence of evidence,
      not as evidence of absence.</t>
      <t>Replay. A receipt copied to another bundle fails verification
      because bundleId is derived from the received payload.</t>
      <t>False times. A custodian can sign false receivedAt and forwardedAt
      values. Receipts bind a custodian to its claims; they do not prove
      the claims are true. Inconsistent times across adjacent receipts can
      be flagged by the verifier.</t>
      <t>Denial of service. Verification cost and block size grow linearly
      with the number of receipts. A verifier <bcp14>SHOULD</bcp14> bound
      the number of receipts it will process.</t>
      <t>Privacy. Receipts reveal the custodians on a route and their
      timing to anyone who can read the bundle.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>IANA is requested to assign one value (TBD1) in the "Bundle Block
      Types" registry of the "Bundle Protocol" registry group:</t>
      <table>
        <thead>
          <tr>
            <th>Value</th>
            <th>Description</th>
            <th>Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>TBD1</td>
            <td>Custody Receipt Block</td>
            <td>This document</td>
          </tr>
        </tbody>
      </table>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC9171" target="https://www.rfc-editor.org/info/rfc9171" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9171.xml">
          <front>
            <title>Bundle Protocol Version 7</title>
            <author fullname="S. Burleigh" initials="S." surname="Burleigh"/>
            <author fullname="K. Fall" initials="K." surname="Fall"/>
            <author fullname="E. Birrane, III" initials="E." surname="Birrane, III"/>
            <date month="January" year="2022"/>
            <abstract>
              <t>This document presents a specification for the Bundle Protocol, adapted from the experimental Bundle Protocol specification developed by the Delay-Tolerant Networking Research Group of the Internet Research Task Force and documented in RFC 5050.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9171"/>
          <seriesInfo name="DOI" value="10.17487/RFC9171"/>
        </reference>
        <reference anchor="RFC9172" target="https://www.rfc-editor.org/info/rfc9172" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9172.xml">
          <front>
            <title>Bundle Protocol Security (BPSec)</title>
            <author fullname="E. Birrane, III" initials="E." surname="Birrane, III"/>
            <author fullname="K. McKeever" initials="K." surname="McKeever"/>
            <date month="January" year="2022"/>
            <abstract>
              <t>This document defines a security protocol providing data integrity and confidentiality services for the Bundle Protocol (BP).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9172"/>
          <seriesInfo name="DOI" value="10.17487/RFC9172"/>
        </reference>
        <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8949.xml">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC8259" target="https://www.rfc-editor.org/info/rfc8259" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8259.xml">
          <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="RFC8032" target="https://www.rfc-editor.org/info/rfc8032" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8032.xml">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA). The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves. An example implementation and test vectors are provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8032"/>
          <seriesInfo name="DOI" value="10.17487/RFC8032"/>
        </reference>
        <reference anchor="RFC8410" target="https://www.rfc-editor.org/info/rfc8410" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8410.xml">
          <front>
            <title>Algorithm Identifiers for Ed25519, Ed448, X25519, and X448 for Use in the Internet X.509 Public Key Infrastructure</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies algorithm identifiers and ASN.1 encoding formats for elliptic curve constructs using the curve25519 and curve448 curves. The signature algorithms covered are Ed25519 and Ed448. The key agreement algorithms covered are X25519 and X448. The encoding for public key, private key, and Edwards-curve Digital Signature Algorithm (EdDSA) structures is provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8410"/>
          <seriesInfo name="DOI" value="10.17487/RFC8410"/>
        </reference>
        <reference anchor="FIPS180-4" target="https://doi.org/10.6028/NIST.FIPS.180-4">
          <front>
            <title>Secure Hash Standard (SHS)</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="FIPS PUB" value="180-4"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC9173" target="https://www.rfc-editor.org/info/rfc9173" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9173.xml">
          <front>
            <title>Default Security Contexts for Bundle Protocol Security (BPSec)</title>
            <author fullname="E. Birrane, III" initials="E." surname="Birrane, III"/>
            <author fullname="A. White" initials="A." surname="White"/>
            <author fullname="S. Heiner" initials="S." surname="Heiner"/>
            <date month="January" year="2022"/>
            <abstract>
              <t>This document defines default integrity and confidentiality security contexts that can be used with Bundle Protocol Security (BPSec) implementations. These security contexts are intended to be used both for testing the interoperability of BPSec implementations and for providing basic security operations when no other security contexts are defined or otherwise required for a network.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9173"/>
          <seriesInfo name="DOI" value="10.17487/RFC9173"/>
        </reference>
        <reference anchor="RFC9052" target="https://www.rfc-editor.org/info/rfc9052" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9052.xml">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC7942" target="https://www.rfc-editor.org/info/rfc7942" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7942.xml">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="I-D.ietf-dtn-bibect" target="https://datatracker.ietf.org/doc/html/draft-ietf-dtn-bibect-05" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-dtn-bibect.xml">
          <front>
            <title>Bundle-in-Bundle Encapsulation</title>
            <author fullname="Scott Burleigh" initials="S." surname="Burleigh">
              <organization>IPNGROUP</organization>
            </author>
            <author fullname="Alberto Montilla" initials="A." surname="Montilla">
              <organization>Spatiam Corporation</organization>
            </author>
            <author fullname="Joshua Deaton" initials="J." surname="Deaton">
              <organization>SAIC</organization>
            </author>
            <author fullname="Carlo Caini" initials="C." surname="Caini">
              <organization>University of Bologna</organization>
            </author>
            <date day="15" month="March" year="2025"/>
            <abstract>
              <t>This document describes Bundle-in-Bundle Encapsulation (BIBE), a Delay-Tolerant Networking (DTN) Bundle Protocol (BP) "convergence layer" protocol that tunnels BP "bundles" through encapsulating bundles. The services provided by the BIBE convergence-layer protocol adapter encapsulate an outbound BP "bundle" in a BIBE convergence-layer protocol data unit for transmission as the payload of a bundle. Security measures applied to the encapsulating bundle may augment those applied to the encapsulated bundle. The protocol includes a mechanism for recovery from loss of an encapsulating bundle, called Bundle Retransmission Methods (BRM). This mechanism is adapted from the custody transfer procedures described in the experimental Bundle Protocol (version 6) specification developed by the Delay-Tolerant Networking Research Group of the Internet Research Task Force and documented in RFC 5050.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dtn-bibect-05"/>
        </reference>
        <reference anchor="SRC84" target="https://doi.org/10.1145/357401.357402">
          <front>
            <title>End-to-End Arguments in System Design</title>
            <author initials="J. H." surname="Saltzer"/>
            <author initials="D. P." surname="Reed"/>
            <author initials="D. D." surname="Clark"/>
            <date year="1984" month="November"/>
          </front>
          <seriesInfo name="ACM Transactions on Computer Systems" value="2(4), 277-288"/>
        </reference>
      </references>
    </references>
  </back>
</rfc>
