<?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.6.39 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-pfeairheller-cesr-proof-01" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="CESR-PROOF">CESR Proof Signatures</title>
    <seriesInfo name="Internet-Draft" value="draft-pfeairheller-cesr-proof-01"/>
    <author initials="P." surname="Feairheller" fullname="Phil Feairheller">
      <organization>GLEIF</organization>
      <address>
        <email>Philip.Feairheller@gleif.org</email>
      </address>
    </author>
    <date year="2023" month="July" day="31"/>
    <area>TODO</area>
    <workgroup>TODO Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 111?>

<t>CESR Proof Signatures are an extension to the Composable Event Streaming Representation <xref target="CESR"/> that provide transposable cryptographic signature attachments on self-addressing data (SAD) <xref target="SAID"/>. Any SAD, such as an Authentic Chained Data Container (ACDC) Verifiable Credential <xref target="ACDC"/> for example, may be signed with a CESR Proof Signature and streamed along with any other CESR content.  In addition, a signed SAD can be embedded inside another SAD and the CESR proof signature attachment can be transposed across envelope boundaries and streamed without losing any cryptographic integrity.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/trustoverip/tswg-cesr-proof-specification"/>.</t>
    </note>
  </front>
  <middle>
    <?line 115?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Composable Event Streaming Representation (CESR) is a dual text-binary encoding format that has the unique property of text-binary concatenation composability. The CESR specification not only provides the definition of the streaming format but also the attachment codes needed for differentiating the types of cryptographic material (such as signatures) used as attachments on all event types for the Key Event Receipt Infrastructure (KERI) <xref target="KERI"/>. While all KERI event messages are self-addressing data (SAD), there is a broad class of SADs that are not KERI events but that require signature attachments. ACDC Verifiable credentials fit into this class of SADs. With more complex data structures represented as SADs, such as verifiable credentials, there is a need to provide signature attachments on nested subsets of SADs. Similar to indices in indexed controller signatures in KERI that specify the location of the public key they represent, nested SAD signatures need a path mechanism to specify the exact location of the nested content that they are signing. CESR Proof Signatures provide this mechanism with the CESR SAD Path Language and new CESR attachment codes, detailed in this specification.</t>
      <section anchor="streamable-sads">
        <name>Streamable SADs</name>
        <t>A primary goal of CESR Proof Signatures is to allow any signed self-addressing data (SAD) to be streamed inline with any other CESR content.  In support of that goal, CESR Proof Signatures leverage CESR attachments to define a signature scheme that can be attached to any SAD content serialized as JSON <xref target="JSON"/>, MessagePack <xref target="MGPK"/> or CBOR <xref target="CBOR"/>.  Using this capability, SADs signed with CESR Proof Signatures can be streamed inline in either the text (T) or binary (B) domain alongside any other KERI event message over, for example TCP or UDP.  In addition, signed SADs can be transported via HTTP as a CESR HTTP Request (todo: reference needed).</t>
      </section>
      <section anchor="nested-partial-signatures">
        <name>Nested Partial Signatures</name>
        <t>CESR Proof Signatures can be used to sign as many portions of a SAD as needed, including the entire SAD. The signed subsets are either SADs themselves or the self-addressing identifer (SAID) of a SAD that will be provided out of band.  A new CESR count code is included with this specification to allow for multiple signatures on nested portions of a SAD to be grouped together under one attachment.  By including a SAD Path in the new CESR attachment for grouping signatures, the entire group of signatures can be transposed across envelope boundaries by changing only the root path of the group attachment code.</t>
      </section>
      <section anchor="transposable-signature-attachments">
        <name>Transposable Signature Attachments</name>
        <t>There are several events in KERI that can contain context specific embedded self-addressing data (SADs). Exchange events (<tt>exn</tt>) for peer-to-peer communication and Replay events (<tt>rpy</tt>) for responding to data requests as well as Expose events (<tt>exp</tt>) for providing anchored data are all examples of KERI events that contain embedded SADs as part of their payload. If the SAD payload for one of these event types is signed with a CESR attachment, the resulting structure is not embeddable in one of the serializations of map or dictionary like data models. (JSON, CBOR, MessagePack) supported by CESR. To solve this problem, CESR Proof Signatures are transposable across envelope boundaries in that a single SAD signature or an entire signature group on any given SAD can be transposed to attach to the end of an enveloping SAD without losing its meaning. This unique feature is provided by the SAD Path language used in either a SAD signature or the root path designation in the outermost attachment code of any SAD signature group.  These paths can be updated to point to the embedded location of the signed SAD inside the envelope. Protocols for verifiable credential issuance and proof presentation can be defined using this capability to embed the same verifiable credential SAD at and location in an enveloping <tt>exn</tt> message as appropriate for the protocol without having to define a unique signature scheme for each protocol.</t>
      </section>
    </section>
    <section anchor="cesr-sad-path-language">
      <name>CESR SAD Path Language</name>
      <t>CESR Proof Signatures defines a SAD Path Language to be used in signature attachments for specifying the location of the SAD content within the signed SAD that a signature attachment is verifying. This path language has a more limited scope than alternatives like JSONPtr <xref target="RFC6901"/> or JSONPath <xref target="JSONPath"/> and is therefore simpler and more compact when encoding in CESR signature attachments. SADs in CESR and therefore CESR Proof Signatures require static field ordering of all maps. The SAD path language takes advantage of this feature to allow for a Base64 compatible syntax into SADs even when a SAD uses non-Base64 compatible characters for field labels.</t>
      <section anchor="description-and-usage">
        <name>Description and Usage</name>
        <t>The SAD path language contains a single reserved character, the <tt>-</tt> (dash) character. Similar to the <tt>/</tt> (forward slack) character in URLs, the <tt>-</tt> in the SAD Path Language is the path separator between components of the path. The <tt>-</tt> was selected because it is a one of the valid Base64 characters.</t>
        <t>The simplest path in the SAD Path Language is a single <tt>-</tt> character representing the root path which specifies the top level of the SAD content.</t>
        <t>Root Path</t>
        <artwork><![CDATA[
 -
]]></artwork>
        <t>After the root path, path components follow, delimited by the <tt>-</tt> character. Path components may be integer indices into field labels or arrays or may be full field labels. No wildcards are supported by the SAD Path Language.</t>
        <t>An example SAD Path using only labels that resolve to map contexts follows:</t>
        <artwork><![CDATA[
-a-personal
]]></artwork>
        <t>In addition, integers can be specified and their meaning is dependent on the context of the SAD.</t>
        <artwork><![CDATA[
-1-12-personal-0
]]></artwork>
        <t>The rules for a SAD Path Language processor are simple. If a path consists of only a single <tt>-</tt>, it represents the root of the SAD and therefore the entire SAD content. Following any <tt>-</tt> character is a path component that points to a field if the current context is a map in the SAD or is an index of an element if the current context is an array. It is an error for any sub-path to resolve to a value this is not a map or an array.  Any trailing <tt>-</tt> character in a SAD Path can be ignored.</t>
        <t>The root context (after the initial <tt>-</tt>) is always a map. Therefore, the first path component represents a field of that map. The SAD is traversed following the path components as field labels or indexes in arrays until the end of the path is reached. The value at the end of the path is then returned as the resolution of the SAD Path. If the current context is a map and the path component is an integer, the path component represents an index into fields of the map. This feature takes advantage of the static field ordering of SADs and is used against any SAD that contains field labels that use non-Base64 compatible characters or the <tt>-</tt> character. Any combination of integer and field label path components can be used when the current context is a map. All path components <bcp14>MUST</bcp14> be an integer when the current context is an array.</t>
      </section>
      <section anchor="cesr-encoding-for-sad-path-language">
        <name>CESR Encoding for SAD Path Language</name>
        <t>SAD Paths are variable raw size primitives that require CESR variable size codes.  We will use the <tt>A</tt> small variable size code for SAD Paths which has 3 code entries being added to the Master Code Table, <tt>4A##</tt>, <tt>5A##</tt> and <tt>6A##</tt> for SAD Paths with 0 lead bytes, 1 lead byte and 2 lead bytes respecively.  This small variable size code is reserved for text values that only contain valid Base64 characters.  These codes are detailed in Table 2 below.  The selector not only encodes the table but also implicitly encodes the number of lead bytes. The variable size is measured in quadlets of 4 characters each in the T domain and equivalently in triplets of 3 bytes each in the B domain. Thus computing the number of characters when parsing or off-loading in the T domain means multiplying the variable size by 4. Computing the number of bytes when parsing or off-loading in the B domain means multiplying the variable size by 3. The two Base64 size characters provide value lengths in quadlets/triplets from 0 to 4095 (64**2 -1). This corresponds to path lengths of up to 16,380 characters (4095 * 4) or 12,285 bytes (4095 * 3).</t>
      </section>
      <section anchor="sad-path-examples">
        <name>SAD Path Examples</name>
        <t>This section provides some more examples for SAD Path expressions. The examples are based on Authentic Chained Data
Containers (ACDCs) representing verifiable credentials.</t>
        <sourcecode type="json"><![CDATA[
{
  "v": "ACDC10JSON00011c_",
  "d": "EBdXt3gIXOf2BBWNHdSXCJnFJL5OuQPyM5K0neuniccM",
  "i": "EmkPreYpZfFk66jpf3uFv7vklXKhzBrAqjsKAn2EDIPM",
  "s": "E46jrVPTzlSkUPqGGeIZ8a8FWS7a6s4reAXRZOkogZ2A",
  "a": {
    "d": "EgveY4-9XgOcLxUderzwLIr9Bf7V_NHwY1lkFrn9y2PY",
    "i": "EQzFVaMasUf4cZZBKA0pUbRc9T8yUXRFLyM1JDASYqAA",
    "dt": "2021-06-09T17:35:54.169967+00:00",
    "ri": "EymRy7xMwsxUelUauaXtMxTfPAMPAI6FkekwlOjkggt",
    "LEI": "254900OPPU84GM83MG36",
    "personal": {
      "legalName": "John Doe",
      "home-city": "Durham"
    }
  },
  "p": [
    {
      "qualifiedIssuerCredential": {
        "d": "EIl3MORH3dCdoFOLe71iheqcywJcnjtJtQIYPvAu6DZA",
        "i": "Et2DOOu4ivLsjpv89vgv6auPntSLx4CvOhGUxMhxPS24"
      }
    },
    {
      "certifiedLender": {
        "d": "EglG9JLG6UhkLrrv012NPuLEc1F3ne5vPH_sHGP_QPN0",
        "i": "E8YrUcVIqrMtDJHMHDde7LHsrBOpvN38PLKe_JCDzVrA"
      }
    }
  ]
}
]]></sourcecode>
        <t>Figure 1. Example ACDC Credential SAD</t>
        <t>The examples in Table 1 represent all the features of the SAD Path language when referring to the SAD in Figure 1. along with the CESR text encoding.</t>
        <table>
          <thead>
            <tr>
              <th align="left">SAD Path</th>
              <th align="left">Result</th>
              <th align="left">CESR T Domain Encoding</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">-</td>
              <td align="left">The root of the SAD</td>
              <td align="left">6AABAAA-</td>
            </tr>
            <tr>
              <td align="left">-a-personal</td>
              <td align="left">The personal map of the a field</td>
              <td align="left">4AADA-a-personal</td>
            </tr>
            <tr>
              <td align="left">-4-5</td>
              <td align="left">The personal map of the a field</td>
              <td align="left">4AAB-4-5</td>
            </tr>
            <tr>
              <td align="left">-4-5-legalName</td>
              <td align="left">"John Doe"</td>
              <td align="left">5AAEAA-4-5-legalName</td>
            </tr>
            <tr>
              <td align="left">-a-personal-1</td>
              <td align="left">"Durham"</td>
              <td align="left">6AAEAAA-a-personal-1</td>
            </tr>
            <tr>
              <td align="left">-p-1</td>
              <td align="left">The second element in the p array</td>
              <td align="left">4AAB-p-1</td>
            </tr>
            <tr>
              <td align="left">-a-LEI</td>
              <td align="left">"254900OPPU84GM83MG36"</td>
              <td align="left">5AACAA-a-LEI</td>
            </tr>
            <tr>
              <td align="left">-p-0-0-d</td>
              <td align="left">"EIl3MORH...6DZA"</td>
              <td align="left">4AAC-p-0-0-d</td>
            </tr>
            <tr>
              <td align="left">-p-0-certifiedLender-i</td>
              <td align="left">"E8YrUcVI...zVrA"</td>
              <td align="left">5AAGAA-p-0-certifiedLender-i</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="alternative-pathing-query-languages">
        <name>Alternative Pathing / Query Languages</name>
        <t>The SAD Path language was chosen over alternatives such as JSONPtr and JSONPath in order to create a more compact representation of a pathing language in the text domain.  Many of the features of the alternatives are not needed for CESR Proof Signatures.  The only token in the language (<tt>-</tt>) is Base64 compatible.  The use of field indices in SADs (which require staticly ordered fields) allows for Base64 compatible pathing even when the field labels of the target SAD are not Base64 compatible.  The language accomplishes the goal of uniquely locating any path in a SAD using minimally sufficient means in a manner that allows it to be embedded in a CESR attachment as Base64.  Alternative syntaxes would need to be Base64 encoded to be used in a CESR attachment in the text domain thus incurring the additional bandwidth cost of such an encoding.</t>
      </section>
    </section>
    <section anchor="cesr-attachments">
      <name>CESR Attachments</name>
      <t>This specification adds 2 <em>Counter Four Character Codes</em> to the Master Code Table and uses 1 <em>Small Variable Raw Size Code Type</em> and 1 <em>Large Variable Raw Size Code Type</em> from the Master Code Table (each of which have 3 code entries).</t>
      <section anchor="counter-four-character-codes">
        <name>Counter Four Character Codes</name>
        <t>The SAD Path Signature counter code is represented by the four character code <tt>-J##</tt>.  The first two characters reserve this code for attaching the couplet (SAD Path, Signature Group).  The second two characters represent the count in hexidecimal of SAD path signatures are in this attachment.  The path is attached in the T domain using the codes described in the next section.  The signature group is from either a transferable identifier or a non-transferable identifier and therefore attached using the CESR codes <tt>-F##</tt> or <tt>-C##</tt> respectively as described in the CESR Specification <xref target="CESR"/>.</t>
      </section>
      <section anchor="variable-size-codes">
        <name>Variable Size Codes</name>
        <t>The code <tt>A</tt> is reserved as a Small Variable Raw Size Code and <tt>AAA</tt> as a Large Variable Raw Size Code for Base64 URL safe strings.  SAD Paths are Base64 URL safe strings and so leverage these codes when encoded in the CESR T domain.  To account for the variable nature of path strings, the variable size types reserve 3 codes each with prefix indicators of lead byte size used for adjusting the T domain encoding to multiples of 4 characters and the B domain to multiples of 3 bytes.  For the <em>Small</em> codes the prefix indicators are <tt>4</tt>, <tt>5</tt> and <tt>6</tt> representing 0, 1 and 2 lead bytes respectively and for <em>Large</em> codes the prefix indicators are <tt>7</tt>, <tt>8</tt>, and <tt>9</tt> representing 0, 1 and 2 lead bytes respectively.  The resulting 6 code entries are displayed in the table that follows.</t>
        <t>The additions to the Master Code Table of CESR is shown below:</t>
        <table>
          <thead>
            <tr>
              <th align="center">Code</th>
              <th align="left">Description</th>
              <th align="center">Code Length</th>
              <th align="center">Count or Index Length</th>
              <th align="center">Total Length</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center"> </td>
              <td align="left">
                <strong>Counter Four Character Codes</strong></td>
              <td align="center"> </td>
              <td align="center"> </td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="center">-J##</td>
              <td align="left">Count of attached qualified Base64 SAD path sig groups path+sig group (trans or non-trans)</td>
              <td align="center">2</td>
              <td align="center">2</td>
              <td align="center">4</td>
            </tr>
            <tr>
              <td align="center">-K##</td>
              <td align="left">Count of attached qualified Base64 SAD Path groups</td>
              <td align="center">2</td>
              <td align="center">2</td>
              <td align="center">4</td>
            </tr>
            <tr>
              <td align="center"> </td>
              <td align="left">
                <strong>Small Variable Raw Size Code</strong></td>
              <td align="center"> </td>
              <td align="center"> </td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="center">4A##</td>
              <td align="left">String Base64 Only with 0 Lead Bytes</td>
              <td align="center">2</td>
              <td align="center">2</td>
              <td align="center">4</td>
            </tr>
            <tr>
              <td align="center">5A##</td>
              <td align="left">String Base64 Only with 1 Lead Byte</td>
              <td align="center">2</td>
              <td align="center">2</td>
              <td align="center">4</td>
            </tr>
            <tr>
              <td align="center">6A##</td>
              <td align="left">String Base64 Only with 2 Lead Bytes</td>
              <td align="center">2</td>
              <td align="center">2</td>
              <td align="center">4</td>
            </tr>
            <tr>
              <td align="center"> </td>
              <td align="left">
                <strong>Large Variable Raw Size Code</strong></td>
              <td align="center"> </td>
              <td align="center"> </td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="center">7AAA####</td>
              <td align="left">String Base64 Only with 0 Lead Bytes</td>
              <td align="center">4</td>
              <td align="center">4</td>
              <td align="center">8</td>
            </tr>
            <tr>
              <td align="center">8AAA####</td>
              <td align="left">String Base64 Only with 1 Lead Byte</td>
              <td align="center">4</td>
              <td align="center">4</td>
              <td align="center">8</td>
            </tr>
            <tr>
              <td align="center">9AAA####</td>
              <td align="left">String Base64 Only with 2 Lead Bytes</td>
              <td align="center">4</td>
              <td align="center">4</td>
              <td align="center">8</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="cesr-signature-attachments">
        <name>CESR Signature Attachments</name>
        <t>CESR defines several counter codes for attaching signatures to serialized CESR event messages.  For KERI event messages, the signatures in the attachments apply to the entire serialized content of the KERI event message.  As all KERI event messages are SADs, the same rules for signing a KERI event message applies to signing SADs for CESR Proof Signatures.  A brief review of CESR signatures for transferable and non-transferable identifiers follows.  In addition, signatures on nested content must be specified.</t>
        <section anchor="signing-sad-content">
          <name>Signing SAD Content</name>
          <t>Signatures on SAD content require signing the serialized encoding format of the data ensuring that the signature applies to the data over the wire.  The serialization for any SAD is identified in the version string which can be found in the <tt>v</tt> field of any KERI event message or ACDC credential.   An example version string follows:</t>
          <sourcecode type="json"><![CDATA[
 {
     "v": "KERI10JSON00011c_"
 }
]]></sourcecode>
          <t>where KERI is the identifier of KERI events followed by the hexidecimal major and minor version code and then the serialized encoding format of the event, JSON in this case.  KERI and ACDC support JSON, MessagePack and CBOR currently.  Field ordering is important when apply cryptographic signatures and all serialized encoding formats must support static field ordering.  Serializing a SAD starts with reading the version string from the SAD field (<tt>v</tt> for KERI and ACDC events message) to determine the serialized encoding format of the message.  The serialized encoding format is used to generate the SAID at creation and can not be changed.  The event map is serialized using a library that ensures the static field order perserved across serialization and deserialization and the private keys are used to generate the qualified cryptographic material that represents the signatures over the SAD content.</t>
          <t>The same serialized encoding format must be used when nesting a SAD in another SAD.  For example, an ACDC credential that was issued using JSON can only be embedded and presented in a KERI <tt>exn</tt> presentation event message that uses JSON as its serialized encoding format.  That same credential can not be transmitted using CBOR or MessagePack.  Controllers can rely on this restriction when verifying signatures of embedded SADs.  When processing the signature attachments and resolving the data at a given SAD path, the serialization of the outter most SAD can be used at any depth of the traversal.  New verison string processing does not need to occur at nested paths.  However, if credential signature verification is pipelined and processed in parallel to the event message such that the event message is not avaiable, the version string of the nested SAD will still be valid and can be used if needed.</t>
          <t>Each attached signature is accompanied by a SAD Path that indicates the content that is signed.  The path must resolve within the enveloping SAD to either a nested SAD (map) or a SAID (string) of an externally provided SAD.  This of course, includes a root path that resolves to the enveloping SAD itself.</t>
        </section>
        <section anchor="signatures-with-non-transferable-identifiers">
          <name>Signatures with Non-Transferable Identifiers</name>
          <t>Non-transferable identifiers only ever have one public key.  In addition, the identifier prefix is identical to the qualified cryptographic material of the public key and therefore no KEL is required to validate the signature of a non-transferable identifier <xref target="KERI"/>.  The attachment code for witness receipt couplets, used for CESR Proof Signatures,  takes this into account.  The four character couner code <tt>-C##</tt> is used for non-transferable identifiers and contains the signing identfier prefix and the signature <xref target="CESR"/>.  Since the verification key can be extracted from the identifier prefix and the identifier can not be rotated, all that is required to validate the signature is the identifier prefix, the data signed and the signature.</t>
        </section>
        <section anchor="signatures-with-transferable-identifiers">
          <name>Signatures with Transferable Identifiers</name>
          <t>Transferable identifiers require full KEL resolution and verfication to determine the correct public key used to sign some content <xref target="KERI"/>.  In addition, the attachment code used for transferable identifiers, <tt>-F##</tt> must specify the location in the KEL at which point the signature was generated <xref target="CESR"/>.  To accomplish this, this counter code includes the identifier prefix, the sequence number of the event in the KEL, the digest of the event in the KEL and the indexed signatures (transferable identifiers support multiple public/private keys and require index signatures).  Using all the values, one can verify the signature(s) by retrieving the KEL of the identifier prefix and determine the key state at the sequence number along with validating the digest of the event against the actual event.  Then using the key(s) at the determined key state, validate the signature(s).</t>
        </section>
      </section>
      <section anchor="additional-count-codes">
        <name>Additional Count Codes</name>
        <t>This specification adds two Counter Four Character Codes to the CESR Master Code Table for attaching and grouping transposable signatures on SAD and nested SAD content.  The first code (<tt>-J##</tt>) is reserved for attaching a SAD path and the associated signatures on the content at the resolution of the SAD Path (either a SAD or its associated SAID).  The second reserved code (<tt>-K##</tt>) is for grouping all SAD Path signature groups under a root path for a given SAD.  The root path in the second grouping code provides signature attachment transposability for embedding SAD content in other messages.</t>
        <section anchor="sad-path-signature-group">
          <name>SAD Path Signature Group</name>
          <t>The SAD Path Signature Group provides a four character counter code, <tt>-J##</tt>, for attaching an encoded variable length SAD Path along with either a transferable index signature group or non-transferable identifer receipt couplets.  The SAD Path identifies the content that this attachment is signing.  The path must resolve to either a nested SAD (map) or a SAID (string) of an externally provided SAD within the context of the SAD and root path against which this attachment is applied.  Using the following ACDC SAD embedded in a KERI <tt>exn</tt> message:</t>
          <sourcecode type="json"><![CDATA[
{
  "v": "KERI10JSON00011c_",
  "t": "exn",
  "dt": "2020-08-22T17:50:12.988921+00:00",
  "r": "/credential/offer",
  "a": {
    "credential": { // SIGNATURE TARGET OF TRANSPOSED SAD PATH GROUP
      "v": "ACDC10JSON00011c_",
      "d": "EBdXt3gIXOf2BBWNHdSXCJnFJL5OuQPyM5K0neuniccM",
      "i": "EmkPreYpZfFk66jpf3uFv7vklXKhzBrAqjsKAn2EDIPM",
      "s": "E46jrVPTzlSkUPqGGeIZ8a8FWS7a6s4reAXRZOkogZ2A",
      "a": {
        "d": "EgveY4-9XgOcLxUderzwLIr9Bf7V_NHwY1lkFrn9y2PY",
        "i": "EQzFVaMasUf4cZZBKA0pUbRc9T8yUXRFLyM1JDASYqAA",
        "dt": "2021-06-09T17:35:54.169967+00:00",
        "ri": "EymRy7xMwsxUelUauaXtMxTfPAMPAI6FkekwlOjkggt",
        "LEI": "254900OPPU84GM83MG36",
        "personal": {
          "legalName": "John Doe",
          "home": "Durham"
        }
      }
    }
  }
}
]]></sourcecode>
          <t>the following signature applies to the nested <tt>credential</tt> SAD signed by a transferable identifier using the transferable index signature group. The example is annotated with spaces and line feeds for clarity and an accompanied table is provided with comments.</t>
          <artwork><![CDATA[
-JAB
6AAEAAA-a-credential
-FAB
E_T2_p83_gRSuAYvGhqV3S0JzYEF2dIa-OCPLbIhBO7Y
-EAB0AAAAAAAAAAAAAAAAAAAAAAB
EwmQtlcszNoEIDfqD-Zih3N6o5B3humRKvBBln2juTEM
-AAD
AA5267UlFg1jHee4Dauht77SzGl8WUC_0oimYG5If3SdIOSzWM8Qs9SFajAilQcozXJVnbkY5stG_K4NbKdNB4AQ
ABBgeqntZW3Gu4HL0h3odYz6LaZ_SMfmITL-Btoq_7OZFe3L16jmOe49Ur108wH7mnBaq2E_0U0N0c5vgrJtDpAQ
ACTD7NDX93ZGTkZBBuSeSGsAQ7u0hngpNTZTK_Um7rUZGnLRNJvo5oOnnC1J2iBQHuxoq8PyjdT3BHS2LiPrs2Cg
]]></artwork>
          <table>
            <thead>
              <tr>
                <th align="left">code</th>
                <th align="left">description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">-JAB</td>
                <td align="left">SAD path signature group counter code 1 following the group</td>
              </tr>
              <tr>
                <td align="left">6AAEAAA-a-credential</td>
                <td align="left">encoded SAD path designation</td>
              </tr>
              <tr>
                <td align="left">-FAB</td>
                <td align="left">Trans Indexed Sig Groups counter code 1 following group</td>
              </tr>
              <tr>
                <td align="left">E_T2_p83_gRSuAYvGhqV3S0JzYEF2dIa-OCPLbIhBO7Y</td>
                <td align="left">trans prefix of signer for sigs</td>
              </tr>
              <tr>
                <td align="left">-EAB0AAAAAAAAAAAAAAAAAAAAAAB</td>
                <td align="left">sequence number of est event of signer's public keys for sigs</td>
              </tr>
              <tr>
                <td align="left">EwmQtlcszNoEIDfqD-Zih3N6o5B3humRKvBBln2juTEM</td>
                <td align="left">digest of est event of signer's public keys for sigs</td>
              </tr>
              <tr>
                <td align="left">-AAD</td>
                <td align="left">Controller Indexed Sigs counter code 3 following sigs</td>
              </tr>
              <tr>
                <td align="left">AA5267...4AQ</td>
                <td align="left">sig 0</td>
              </tr>
              <tr>
                <td align="left">ABBgeq...pAQ</td>
                <td align="left">sig 1</td>
              </tr>
              <tr>
                <td align="left">ACTD7N...2Cg</td>
                <td align="left">sig 2</td>
              </tr>
            </tbody>
          </table>
          <t>The next example demostrates the use of a non-transferable identifier to sign SAD content.  In this example, the entire nested SAD located at the <tt>a</tt> field is signed by the non-transferable identfier:</t>
          <artwork><![CDATA[
-JAB
5AABAA-a
-CAB
BmMfUwIOywRkyc5GyQXfgDA4UOAMvjvnXcaK9G939ArM
0BT7b5PzUBmts-lblgOBzdThIQjKCbq8gMinhymgr4_dD0JyfN6CjZhsOqqUYFmRhABQ-vPywggLATxBDnqQ3aBg
]]></artwork>
          <table>
            <thead>
              <tr>
                <th align="left">code</th>
                <th align="left">description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">-JAB</td>
                <td align="left">SAD path signature group counter code 1 following the group</td>
              </tr>
              <tr>
                <td align="left">5AABAA-a</td>
                <td align="left">encoded SAD path designation</td>
              </tr>
              <tr>
                <td align="left">-CAB</td>
                <td align="left">NonTrans witness receipt couplet</td>
              </tr>
              <tr>
                <td align="left">BmMfUwIOywRkyc5GyQXfgDA4UOAMvjvnXcaK9G939ArM</td>
                <td align="left">non-trans prefix of signer of sig</td>
              </tr>
              <tr>
                <td align="left">0BT7b5... aBg</td>
                <td align="left">sig</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="sad-path-groups">
          <name>SAD Path Groups</name>
          <t>The SAD Path Group provides a four character counter code, <tt>-K##</tt>, for attaching encoded variable length <strong>root</strong> SAD Path along with 1 or more SAD Path Signature Groups.  The root SAD Path identifies the root context against which the paths in all included SAD Path Signature Groups are resolved.  When parsing a SAD Path Group, if the root path is the single <tt>-</tt> character, all SAD paths are treated as absolute paths.  Otherwise, the root path is prepended to the SAD paths in each of the SAD Path Signature Groups.  Given the following snippet of a SAD Path Group:</t>
          <artwork><![CDATA[
-KAB6AABAAA--JAB5AABAA-a...
]]></artwork>
          <t>The root path is the single <tt>-</tt> character meaning that all subsequent SAD Paths are absolute and therefore the first path is resolved as the <tt>a</tt> field of the root map of the SAD as seen in the following example:</t>
          <sourcecode type="json"><![CDATA[
{
  "v": "ACDC10JSON00011c_",
  "d": "EBdXt3gIXOf2BBWNHdSXCJnFJL5OuQPyM5K0neuniccM",
  "i": "EmkPreYpZfFk66jpf3uFv7vklXKhzBrAqjsKAn2EDIPM",
  "s": "E46jrVPTzlSkUPqGGeIZ8a8FWS7a6s4reAXRZOkogZ2A",
  "a": {  // SIGNATURE TARGET OF SAD PATH GROUP
    "d": "EgveY4-9XgOcLxUderzwLIr9Bf7V_NHwY1lkFrn9y2PY",
    "i": "EQzFVaMasUf4cZZBKA0pUbRc9T8yUXRFLyM1JDASYqAA",
    "dt": "2021-06-09T17:35:54.169967+00:00",
    "ri": "EymRy7xMwsxUelUauaXtMxTfPAMPAI6FkekwlOjkggt",
    "LEI": "254900OPPU84GM83MG36",
    "personal": {
      "legalName": "John Doe",
      "city": "Durham"
    }
  }
}
]]></sourcecode>
          <section anchor="transposable-signature-attachments-1">
            <name>Transposable Signature Attachments</name>
            <t>To support nesting of signed SAD content in other SAD content the root path of SAD Path Groups or the path of a SAD Path Signature Group provides transposability of CESR SAD signatures such that a single SAD Path Signature Group or an entire SAD Path Group attachment can be transposed across envelope boundaries by updating the single path or root path to indicate the new location.  Extending the example above, the SAD content is now embedded in a KERI <tt>exn</tt> event message as follows:</t>
            <sourcecode type="json"><![CDATA[
{
  "v": "KERI10JSON00011c_",
  "t": "exn",
  "dt": "2020-08-22T17:50:12.988921+00:00"
  "r": "/credential/offer"
  "a": {
    "v": "ACDC10JSON00011c_",
    "d": "EBdXt3gIXOf2BBWNHdSXCJnFJL5OuQPyM5K0neuniccM",
    "i": "EmkPreYpZfFk66jpf3uFv7vklXKhzBrAqjsKAn2EDIPM",
    "s": "E46jrVPTzlSkUPqGGeIZ8a8FWS7a6s4reAXRZOkogZ2A",
    "a": { // SIGNATURE TARGET OF TRANSPOSED SAD PATH GROUP
      "d": "EgveY4-9XgOcLxUderzwLIr9Bf7V_NHwY1lkFrn9y2PY",
      "i": "EQzFVaMasUf4cZZBKA0pUbRc9T8yUXRFLyM1JDASYqAA",
      "dt": "2021-06-09T17:35:54.169967+00:00",
      "ri": "EymRy7xMwsxUelUauaXtMxTfPAMPAI6FkekwlOjkggt",
      "LEI": "254900OPPU84GM83MG36",
      "personal": {
        "legalName": "John Doe",
        "city": "Durham"
      }
    }
  }
}
]]></sourcecode>
            <t>The same signature gets transposed to the outer <tt>exn</tt> SAD by updating the root path of the <tt>-K##</tt> attachment:</t>
            <artwork><![CDATA[
-KAB5AABAA-a-JAB5AABAA-a...
]]></artwork>
            <t>Now the SAD Path of the first signed SAD content resolves to the <tt>a</tt> field of the <tt>a</tt> field of the streamed <tt>exn</tt> message</t>
          </section>
        </section>
      </section>
      <section anchor="small-variable-raw-size-sad-path-code">
        <name>Small Variable Raw Size SAD Path Code</name>
        <t>The small variable raw side code reserved for SAD Path encoding is <tt>A</tt> which results in the addition of 3 entries (<tt>4A##</tt>, <tt>5A##</tt> and <tt>6A##</tt>) in the Master Code Table for each lead byte configuration.  These codes and their use are discussed in detail in <eref target="">CESR Encoding for SAD Path Language</eref>.</t>
      </section>
    </section>
    <section anchor="nested-partial-signatures-1">
      <name>Nested Partial Signatures</name>
      <t>Additional signatures on nested content can be included in a SAD Path Group and are applied to the serialized data at the resolution of a SAD path in a SAD.  Signatures can be applied to the SAID or an entire nested SAD.   When verifying a CESR Proof Signature, the content at the resolution of the SAD path is the data that was signed.  The choice to sign a SAID or the full SAD effects how the data may be used in presentations and the rules for verifying the signature.</t>
      <section anchor="signing-nested-sads">
        <name>Signing Nested SADs</name>
        <t>When signing nested SAD content, the serialization used at the time of signing is the only serialization that can be used when presenting the signed data.  When transposing the signatures and nesting the signed data, the enveloping SAD must use the same serialization that was used to create the signatures.  This is to ensure that all signatures apply to the data over the wire and not a transformation of that data.  The serialization can be determined from the version field (<tt>v</tt>) of the nested SAD or any parent of the nested SAD as they are guaranteed to be identical.  Consider the following ACDC Credential SAD:</t>
        <sourcecode type="json"><![CDATA[
{
  "v": "ACDC10JSON00011c_",
  "d": "EBdXt3gIXOf2BBWNHdSXCJnFJL5OuQPyM5K0neuniccM",
  "i": "EmkPreYpZfFk66jpf3uFv7vklXKhzBrAqjsKAn2EDIPM",
  "s": "E46jrVPTzlSkUPqGGeIZ8a8FWS7a6s4reAXRZOkogZ2A",
  "a": {   // SIGNATURE TARGET OF SAD PATH GROUP
    "d": "EgveY4-9XgOcLxUderzwLIr9Bf7V_NHwY1lkFrn9y2PY",
    "i": "EQzFVaMasUf4cZZBKA0pUbRc9T8yUXRFLyM1JDASYqAA",
    "dt": "2021-06-09T17:35:54.169967+00:00",
    "ri": "EymRy7xMwsxUelUauaXtMxTfPAMPAI6FkekwlOjkggt",
    "LEI": "254900OPPU84GM83MG36",
    "personal": {
      "d": "E2X8OLaLnM0XRQEYgM5UV3bZmWg3UUn7CP4SoKkvsl-s",
        "first": "John",
        "last": "Doe"
    }
  }
}
]]></sourcecode>
        <t>To sign the SAD located at the path <tt>-a</tt>, JSON serialization would be used because the SAD at that path does not have a version field so the version field of its parent is used.  The serialization rules (spacing, field ordering, etc) for a SAD would be used for the SAD and the serialization encoding format and the signature would be applied to the bytes of the JSON for that map.  Any presentation of the signed data must always include the fully nested SAD.  The only valid nesting of this credential would be as follows:</t>
        <sourcecode type="json"><![CDATA[
{
  "v": "KERI10JSON00011c_",
  "t": "exn",
  "dt": "2020-08-22T17:50:12.988921+00:00"
  "r": "/credential/apply"
  "a": {
    "v": "ACDC10JSON00011c_",
    "d": "EBdXt3gIXOf2BBWNHdSXCJnFJL5OuQPyM5K0neuniccM",
    "i": "EmkPreYpZfFk66jpf3uFv7vklXKhzBrAqjsKAn2EDIPM",
    "s": "E46jrVPTzlSkUPqGGeIZ8a8FWS7a6s4reAXRZOkogZ2A",
    "a": {   // FULL SAD MUST BE PRESENT
      "d": "EgveY4-9XgOcLxUderzwLIr9Bf7V_NHwY1lkFrn9y2PY",
      "i": "EQzFVaMasUf4cZZBKA0pUbRc9T8yUXRFLyM1JDASYqAA",
      "dt": "2021-06-09T17:35:54.169967+00:00",
      "ri": "EymRy7xMwsxUelUauaXtMxTfPAMPAI6FkekwlOjkggt",
      "LEI": "254900OPPU84GM83MG36",
      "legalName": {
        "d": "E2X8OLaLnM0XRQEYgM5UV3bZmWg3UUn7CP4SoKkvsl-s",
        "first": "John",
        "last": "Doe"
      }
    }
  }
}
]]></sourcecode>
      </section>
      <section anchor="signing-saids">
        <name>Signing SAIDs</name>
        <t>Applying signatures to a SAD with SAIDs in place of fully expanded nested SAD content enables compact credentials for domains with bandwidth restrictions such as IoT.  Consider the following fully expanded credential:</t>
        <sourcecode type="json"><![CDATA[
{
    "v": "ACDC10JSON00011c_",
    "d": "EBdXt3gIXOf2BBWNHdSXCJnFJL5OuQPyM5K0neuniccM",
    "i": "EmkPreYpZfFk66jpf3uFv7vklXKhzBrAqjsKAn2EDIPM",
    "s": "E46jrVPTzlSkUPqGGeIZ8a8FWS7a6s4reAXRZOkogZ2A",
    "a": {
      "d": "EgveY4-9XgOcLxUderzwLIr9Bf7V_NHwY1lkFrn9y2PY",
      "i": "EQzFVaMasUf4cZZBKA0pUbRc9T8yUXRFLyM1JDASYqAA",
      "dt": "2021-06-09T17:35:54.169967+00:00",
      "ri": "EymRy7xMwsxUelUauaXtMxTfPAMPAI6FkekwlOjkggt",
      "LEI": "254900OPPU84GM83MG36",
      "legalName": {
        "d": "E2X8OLaLnM0XRQEYgM5UV3bZmWg3UUn7CP4SoKkvsl-s",
        "n": "sKHtYSiCdlibuLDS2PTJg1AZXtPhaySZ9O3DoKrRXWY",
        "first": "John
        "middle": "William"
        "last": "Doe"
      },
      "address": {
        "d": "E-0luqYSg6cPcMFmhiAz8VBQObZLmTQPrgsr7Z1j6CA4",
        "n": "XiSoVDNvqV8ldofPyTVqQ-EtVPlkIIQTln9Ai0yI05M",
        "street": "123 Main St",
        "city": "Salt Lake City",
        "state": "Utah",
        "zipcode": "84157"
      },
      "phone": {
        "d": "E6lty8H2sA_1acq8zg89_kqF194DbF1cDpwA7UPtwjPQ",
        "n": "_XKNVntbcIjp12DmsAGhv-R7JRwuzjD6KCHC7Fw3zvU"
        "mobile": "555-121-3434",
        "home": "555-121-3435",
        "work": "555-121-3436",
        "fax": "555-121-3437"
      }
    }
  }
}
]]></sourcecode>
        <t>The three nested blocks of the <tt>a</tt> block <tt>legalName</tt>, <tt>address</tt> and <tt>phone</tt> are SADs with a SAID in the <tt>d</tt> field and are candidates for SAID replacement in an issued credential.  A compact credential can be created and signed by replacing those three nested blocks with the SAID of each nested SAD.  The schema for this verifiable credential would need to specify conditional subschema for the field labels at each nesting location that requires the full schema of the nested SAD or a string for the SAID.  The commitment to a SAID in place of a SAD contains nearly the same cryptographic integrity as a commitment to the SAD itself since the SAID is the qualified cryptographic material of a digest of the SAD.  The same credential could be converted to a compact credential containing the SAIDs of each nested block and signed as follows:</t>
        <sourcecode type="json"><![CDATA[
{
   "v": "ACDC10JSON00011c_",
   "d": "EBdXt3gIXOf2BBWNHdSXCJnFJL5OuQPyM5K0neuniccM",
   "i": "EmkPreYpZfFk66jpf3uFv7vklXKhzBrAqjsKAn2EDIPM",
   "s": "E46jrVPTzlSkUPqGGeIZ8a8FWS7a6s4reAXRZOkogZ2A",
   "a": {
     "d": "EgveY4-9XgOcLxUderzwLIr9Bf7V_NHwY1lkFrn9y2PY",
     "i": "EQzFVaMasUf4cZZBKA0pUbRc9T8yUXRFLyM1JDASYqAA",
     "dt": "2021-06-09T17:35:54.169967+00:00",
     "ri": "EymRy7xMwsxUelUauaXtMxTfPAMPAI6FkekwlOjkggt",
     "LEI": "254900OPPU84GM83MG36",
     "legalName": "E2X8OLaLnM0XRQEYgM5UV3bZmWg3UUn7CP4SoKkvsl-s",
     "address": "E-0luqYSg6cPcMFmhiAz8VBQObZLmTQPrgsr7Z1j6CA4",
     "phone": "E6lty8H2sA_1acq8zg89_kqF194DbF1cDpwA7UPtwjPQ"
   }
}
]]></sourcecode>
        <t>It is important to note that if this version of the credential is the one issued to the holder and the signature over the entire credential is on the serialized data of this version of the credential it is the only version that can be presented.  The full SAD data of the three nested blocks would be delivered out of band from the signed credential.  The top level schema would describe the blocks with conditional subschema for each section.  The credential signature becomes a cryptographic commitment to the contents of the overall credential as well as the content of each of the blocks and will still validate the presented credential with significantly less bandwidth.</t>
        <t>With this approach, credential presentation request and exchange protocols can be created that modify the schema with the conditional subschema, removing the conditions that allow for SAIDs in place of the required (or presented) nested blocks.  The modified schema can be used in such a protocol to indicate the required sections to be delivered out of bounds or as a commitment to provide the nested blocks after the crendential presentation has occurred.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>The Internet Assigned Numbers Authority (IANA) is a standards organization that oversees global IP address allocation, autonomous system number allocation, root zone management in the Domain Name System (DNS), media types, and other Internet Protocol-related symbols and Internet numbers.</t>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="ACDC" target="https://datatracker.ietf.org/doc/draft-ssmith-acdc/">
          <front>
            <title>Authentic Data Chained Containers</title>
            <author initials="S." surname="Smith" fullname="Samuel M. Smith">
              <organization>ProSapien LLC</organization>
            </author>
            <date year="2021"/>
          </front>
        </reference>
        <reference anchor="CESR" target="https://datatracker.ietf.org/doc/draft-ssmith-cesr/">
          <front>
            <title>Composable Event Streaming Representation (CESR)</title>
            <author initials="S." surname="Smith" fullname="Samuel M. Smith">
              <organization>ProSapien LLC</organization>
            </author>
            <date year="2021"/>
          </front>
        </reference>
        <reference anchor="SAID" target="https://datatracker.ietf.org/doc/draft-ssmith-said/">
          <front>
            <title>Self-Addressing IDentifier (SAID)</title>
            <author initials="S." surname="Smith" fullname="Samuel M. Smith">
              <organization>ProSapien LLC</organization>
            </author>
            <date year="2021"/>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="KERI" target="https://arxiv.org/abs/1907.02143">
          <front>
            <title>Key Event Receipt Infrastructure (KERI)</title>
            <author initials="S." surname="Smith" fullname="Samuel M. Smith">
              <organization>ProSapien LLC</organization>
            </author>
            <date year="2021"/>
          </front>
        </reference>
        <reference anchor="JSON" target="https://www.json.org/json-en.html">
          <front>
            <title>JavaScript Object Notation Delimeters</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="CBOR" target="https://en.wikipedia.org/wiki/CBOR">
          <front>
            <title>CBOR Mapping Object Codes</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC8949" target="https://datatracker.ietf.org/doc/rfc8949/">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author initials="C." surname="Bormann" fullname="Carsten Bormann">
              <organization/>
            </author>
            <author initials="P." surname="Hoffman" fullname="Paul Hoffman">
              <organization/>
            </author>
            <date year="2020" month="December" day="04"/>
          </front>
        </reference>
        <reference anchor="MGPK" target="https://github.com/msgpack/msgpack/blob/master/spec.md">
          <front>
            <title>Msgpack Mapping Object Codes</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC6901" target="https://datatracker.ietf.org/doc/html/rfc6901">
          <front>
            <title>JavaScript Object Notation (JSON) Pointer</title>
            <author initials="P. C." surname="Bryan" fullname="Paul C. Bryan">
              <organization/>
            </author>
            <author initials="K." surname="Zyp" fullname="Kris Zyp">
              <organization/>
            </author>
            <author initials="M." surname="Nottingham" fullname="Mark Nottingham">
              <organization/>
            </author>
            <date year="2003"/>
          </front>
        </reference>
        <reference anchor="JSONPath" target="https://datatracker.ietf.org/doc/draft-ietf-jsonpath-base/">
          <front>
            <title>JSONPath - Query expressions for JSON</title>
            <author initials="S." surname="Gössner" fullname="Stefan Gössner">
              <organization/>
            </author>
            <author initials="G." surname="Normington" fullname="Glyn Normington">
              <organization/>
            </author>
            <author initials="C." surname="Bormann" fullname="Carsten Bormann">
              <organization/>
            </author>
            <date year="2021" month="October" day="25"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 605?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Dr Sam Smith, Kevin Griffin and the Global Legal Entity Identifier Foundation (GLEIF)</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
KSe+WVTLq5WllaG15Tyr1btK33CqthEV4Ny+VAqlEOduGv+r/UzSDP/kfiZJ
xaObVouIjC4Rbhxa7evDzuFF919OpelUmu7jQhbIP1w0FudAZAoxT/F1gWN5
SWy26tbWiU/cjqxU33b4WjDiVvE0tik4v2hegphBtyjWt6Nl3neJb1iiu09k
InR6+5RRipNeyHYadpdbJDlQ0nnyoaZ/Ok78F6/9o3ktwM7x2UnypeMduL7X
m7SanfV298OgVr/9nLSH9rxzu3e50QzPouvPn74s5dP0a379MH7/yfN9z8xc
KuTgNJOMXyhXtLpK1Z88fukMtp22c340Gnr1592PjavL3m1r1L1qR4M42rmt
3W8f1DcXVvfZ64QfmxfTx4+7vhv22/Pux8erymHyse0/nJ5edf1gr+5V56fV
rXOzL8Z1BAFbW9+wzvEao04mAUwFxjq2n1gt+0FYB/hNZgiwzbDJTWIPzQfP
3hiDJPhod7O2tbOIi/EwDAr3edtP5rsn63H9W812HnefB7t73x4ej2p7m83e
Uc1pjmf1nZt2MrtvXy1g4tvns4uPQdJzTu/HtfXmKK4fD6eV650P17PJ831z
++zg5GDnaLbxPL0x9mwU9jzez62trUoNuGFjcyODZpWoZjzfMp/Pwugh9zyT
I9e3n3KPd34QZ0yGsDlKKPfACH6IzQAdfWPdaYbBSJekLhnsIvze6esL1Hv3
KLqh6thdFelT4SDwXV3KsFe3aUPjSJDKUHcS4psGuMY0U9peL9ASyhV21Mlx
4BrZHjwuhwfCuHjF+l5cDsr0OTy3YGHSu8dsacp6S16YnLuQUdWwYM64DqtN
epmhcldZYs2ymp9uBFWlL+abD+I0cCTHKvbw08L/SK9QhaTC0chLOEE9NPZM
q25bq2nSv4GwI/lOTVlmW/jydL4rLju48jO4+g/PnRyj7lsGjH6m1s7OlX8Y
m5Ov/FWGPsAPGyVfymcX0g+vUIWQ2IbJUQFzgkFaS/2Hl22HXzUdftVy+FXD
wbQbft1s+HWr4ZVGw6/bDD9jMmQPd37FRDB08i8pYa3HXqe4SpYh7/kNS+k9
FsAOQZjIuKXX1zItNvzxzFsmZVhXKMksGXsY+m568aVZzqpCnTIQnx0sXLjj
g+OjPwYkyYSYVUMzuKzvHFDFTirAnk6xRBMoqYGvX5vSDcXG+5nTEKsUAhnd
RPpUvxhOSmUeUN3jycERQ+ksVwskfLKXlhZW0fcESDTKUstKzUUBLP0treBD
ul3JN4c13gBsHoAoWSg7ygUgQoxC+UzVXHrpg6kZPZl6SAVy9NIVHzMCtU+3
Vip90m+3pleGwqxlc4hMzEi+uJhf5aJeljzWL0zNmQUcfQpdXdAoN0jp/sKt
KMMko1BXOeo2sZXe5axtmKzjy0dGslZ4hd6cLHGymiU6ubsEGmo/CVjmroFA
erjpS1PzKRp6KkkzsYzULxIy5oPwawAXFbV6jYthSajd1m8/A4QGhfuBL0yi
2yD4DWp0CzQq3yA9qmri1V6MQTZAsewSzFoA6A3Gh96U+bd1cUl/Xx9e3Zxe
Hzbx785JvdXSf5Rki87J5U2rmf6V9jy4PD8/vGhyZ/jWynxVenNeBz1FUL25
bHdPLy/qrTf6EiE3dCZ8AXekXgaLFk4EC+bsxFLmbt7GQfu//k9t0/r99/9x
fXSwXqvt/fGH/LBb29mED3jUxbOR1OKPeMBSAkIHy0olZDr22EtsPy5TCh5d
O4q5fYDPd18RM7/tW//ec8a1zf+QX+CCM18qnGW+JJwtfrPQmZFY8FXBNBqb
me9zmM7CW/+S+azwbnz57/9JBSyV2u5//geRUEcARaFdqaI6tiKfy+alfoot
T+sX9cVWQGSnuHOBSKx6LAX3BSXzx/RinpBGX8Heq/IVoaAfXXrxZRgN7CBz
NhjSy/hA4A78sAcccNq2pG4nacCmOmzeJAmDcBROYBPnwEejtLA5bUT5Gc+o
UUd2YA8y72OQb9Sg90B0eISV5kVntWyNhOvZfEuxJCjKcdOLVK+MrkTC5/Lc
+aiHAhHb6lYMDr9A1aR3ZOIgZFzaLEmgDSaS92znAdFcdx6CcOYLd8DpeL/v
81jC/V/ggfqxePNHqdQEkWiPrA7IFpDgZ1gobh2Du9T30vuTjhmDLTSurEOQ
ErAN6d0GWCsduIz5lWOw0o5WS/8PnDh4l2uVAAA=

-->

</rfc>
