diff --git a/spec/spec.md b/spec/spec.md index 21b5da0..1d0e6c4 100644 --- a/spec/spec.md +++ b/spec/spec.md @@ -49,11 +49,6 @@ Any feedback or questions on this document should be directed to https://github. THESE MATERIALS ARE PROVIDED “AS IS.” The Trust Over IP Foundation, established as the Joint Development Foundation Projects, LLC, Trust Over IP Foundation Series ("ToIP"), and its members and contributors (each of ToIP, its members and contributors, a "ToIP Party") expressly disclaim any warranties (express, implied, or otherwise), including implied warranties of merchantability, non-infringement, fitness for a particular purpose, or title, related to the materials. The entire risk as to implementing or otherwise using the materials is assumed by the implementer and user. IN NO EVENT WILL ANY ToIP PARTY BE LIABLE TO ANY OTHER PARTY FOR LOST PROFITS OR ANY FORM OF INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER FROM ANY CAUSES OF ACTION OF ANY KIND WITH RESPECT TO THESE MATERIALS, ANY DELIVERABLE OR THE ToIP GOVERNING AGREEMENT, WHETHER BASED ON BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, AND WHETHER OR NOT THE OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -::: issue -https://github.com/trustoverip/tswg-keri-specification/issues/47 -::: - [//]: # (:::) [//]: # (\newpage) @@ -321,7 +316,7 @@ Key event validation includes everything needed to validate events, including st ![Controller Application with Agent](https://raw.githubusercontent.com/trustoverip/tswg-keri-specification/revised-format/images/ControllerAppAgentSplitFunctions.png) **Figure:** *Controller Application with Agent* - + #### Direct exchange The simplest mode of operation is that a pair of controllers, each with their own AID, use their respective applications (including agents when applicable) to directly exchange key event messages that verifiably establish the current key state of their own AID with the other controller. For each exchange of key events, the destination controller acts as a validator of events received from the source controller. Therefore, given any key event, a given entity is either the event's controller or a validator of some other controller's event. @@ -658,7 +653,7 @@ The Backer Remove, `br` field value is a list of strings that each is the fully ##### Backer add list -The Backer Add, `ba` field value is a list of strings that each is the fully qualified AID of a Backer to be appended to the current Backer list. This allows Backer lists to be changed in an incremental fashion. A given AID MUST NOT appear more than once in any Backer Add list. The Backer Add, `ba` list appears in Rotation and Delegated Rotation events. Given such an event, the current backer list is updated by appending in order the AIDs from the Backer Add, `ba` list except for any AIDs that already appear in the current Backer list. The AIDs in the Backer Add, `ba` list MUST NOT be appended until all AIDs in the Backer Add, `ba` list have been removed. +The Backer Add, `ba` field value is a list of strings that each is the fully qualified AID of a Backer to be appended to the current Backer list. This allows Backer lists to be changed in an incremental fashion. A given AID MUST NOT appear more than once in any Backer Add list. The Backer Add, `ba` list appears in Rotation and Delegated Rotation events. Given such an event, the current backer list is updated by appending in order the AIDs from the Backer Add, `ba` list except for any AIDs that already appear in the current Backer list. The AIDs in the Backer Add, `ba` list MUST NOT be appended until all AIDs in the Backer Remove, `br` list have been removed. ##### Configuration traits field @@ -704,7 +699,7 @@ The value of this seal's `d` field is an undifferentiated digest of some externa #### Merkle Tree root digest seal -The value of this seal's `d` field is root of a Merkle tree of digests of external data. This enables a compact commitment to a large number of data items. A Merkle tree is constructed so that an inclusion proof of a given digest in the tree does not require disclosure of the whole tree. The JSON version is shown. There is also a native CESR version of the seal. +The value of this seal's `rd` field is root of a Merkle tree of digests of external data. This enables a compact commitment to a large number of data items. A Merkle tree is constructed so that an inclusion proof of a given digest in the tree does not require disclosure of the whole tree. The JSON version is shown. There is also a native CESR version of the seal. ```json { @@ -927,7 +922,7 @@ The top-level fields of a Delegated Inception, `dip` event message body MUST app ```json { "v": "KERI10JSON0001ac_", - "t": "icp", + "t": "dip", "d": "EL1L56LyoKrIofnn0oPChS4EyzMHEEk75INJohDS_Bug", "i": "EL1L56LyoKrIofnn0oPChS4EyzMHEEk75INJohDS_Bug", "s": "0", @@ -1080,7 +1075,7 @@ Unless otherwise clarified below, the definitions of the `[v, t, d, i]' field va ##### Controller AID field -The Controller AID, `i` field value is an AID that controls its associated KEL. When the Controller Identifier AID, `i` field appears at the top-level of a Routed Message, it refers to the Controller AID of the sender of that message. A Receiver AID, `i` field MAY appear in other places in messages. In those cases, its meaning SHOULD be determined by the context of its appearance. +The Controller AID, `i` field value is an AID that controls its associated KEL. When the Controller Identifier AID, `i` field appears at the top-level of a Routed Message, it refers to the Controller AID of the sender of that message. A Controller AID, `i` field MAY appear in other places in messages (not at the top level). In those cases, its meaning SHOULD be determined by the context of its appearance. ##### Receiver AID field @@ -1240,7 +1235,7 @@ Bare message example: #### Exchange Transaction Inception Message Body -The top-level fields of an Exchange Transaction Inceipt, `xip` message body MUST appear in the following order: `[ v, t, d, i, dt, r, q, a]`. All are REQUIRED. No other top-level fields are allowed (MUST NOT appear). Signatures and Seals MUST be attached to the Message body using CESR attachment codes. +The top-level fields of an Exchange Transaction Inceipt, `xip` message body MUST appear in the following order: `[ v, t, d, i, ri, dt, r, q, a]`. All are REQUIRED. No other top-level fields are allowed (MUST NOT appear). Signatures and Seals MUST be attached to the Message body using CESR attachment codes. ::: note Examples in this section are not cryptographically verifiable @@ -1268,7 +1263,7 @@ Exchange transaction inception message example: #### Exchange Message Body -The top-level fields of an Exchange, `exn` message body MUST appear in the following order: `[ v, t, d, i, x, p, dt, r, q, a]`. All are REQUIRED. No other top-level fields are allowed (MUST NOT appear). Signatures and Seals MUST be attached to the Message body using CESR attachment codes. +The top-level fields of an Exchange, `exn` message body MUST appear in the following order: `[ v, t, d, i, ri, x, p, dt, r, q, a]`. All are REQUIRED. No other top-level fields are allowed (MUST NOT appear). Signatures and Seals MUST be attached to the Message body using CESR attachment codes. ::: note Examples in this section are not cryptographically verifiable @@ -2305,7 +2300,7 @@ Field order by label: `v`, `t`, `d`, `dt`, `r`, `a`. #### Exchange Transaction Inception Message -Field order by label: `v`, `t`, `d`, `i`, `dt`, `r`, `q`, `a`. +Field order by label: `v`, `t`, `d`, `i`, `ri`, `dt`, `r`, `q`, `a`. | Field Label | Value | Description | |:--------:|:-------|:------| @@ -2314,6 +2309,7 @@ Field order by label: `v`, `t`, `d`, `i`, `dt`, `r`, `q`, `a`. | `t` | `xip` | Packet Type | | `d` | `EC4NQq-hiGgbiglDXNB5xhHKXBxkiojgBabiu_JCkE0G` | SAID of message, transaction identifier SAID | | `i` | `EBabiu_JCkE0GbiglDXNB5C4NQq-hiGgxhHKXBxkiojg` | Sender AID | +| `ri` | `ECRXq_bMF3Dd96ATbbMIZgUBBwuFAWx3_8s5XSt_0jey` | Receiver AID | | `dt` | `1AAG2020-08-22T17c50c09d988921p00c00` | Base64 custom encoded 32 char ISO-8601 DateTime | | `r` | `4AAC-A-1-B-3` | Base64 variable length CESR SAD Path string | | `q` | `-H##` or `-H#####` | Count code for Query field map | @@ -2327,7 +2323,7 @@ Field order by label: `v`, `t`, `d`, `i`, `dt`, `r`, `q`, `a`. #### Exchange Message -Field order by label: `v`, `t`, `d`, `i`, `x`, `p`, `dt`, `r`, `q`, `a`. +Field order by label: `v`, `t`, `d`, `i`, `ri`, `x`, `p`, `dt`, `r`, `q`, `a`. | Field Label | Value | Description | |:--------:|:-------|:------| @@ -2336,6 +2332,7 @@ Field order by label: `v`, `t`, `d`, `i`, `x`, `p`, `dt`, `r`, `q`, `a`. | `t` | `exn` | Packet Type | | `d` | `EBxkiojgBabiu_JCkE0GC4NQq-hiGgbiglDXNB5xhHKX` | SAID of message | | `i` | `EBabiu_JCkE0GbiglDXNB5C4NQq-hiGgxhHKXBxkiojg` | Sender AID | +| `ri` | `ECRXq_bMF3Dd96ATbbMIZgUBBwuFAWx3_8s5XSt_0jey` | Receiver AID | | `x` | `EC4NQq-hiGgbiglDXNB5xhHKXBxkiojgBabiu_JCkE0G` | Transaction Identifier SAID | | `p` | `EGbiglDXNB5C4NQq-hiGgxhHKXBxkiojgBabiu_JCkE0` | Prior message SAID | | `dt` | `1AAG2020-08-22T17c50c09d988921p00c00` | Base64 custom encoded 32 char ISO-8601 DateTime |