CESR 2.00 Code Tables #612
Replies: 4 comments 5 replies
-
Native CESR Messages
|
Field Label | Value | Description |
---|---|---|
NA | -F## or -0F##### |
Count code for CESR native top-level fixed field signable message |
v |
Y&&&&### e.g. YKERICAA |
Protocol Version primitive (KERI 2.00) |
t |
X&&& e.g. Xicp |
Packet Type (inception) |
d |
EBabiu_JCkE0GbiglDXNB5C4NQq-hiGgxhHKXBxkiojg |
SAID of event message |
i |
EBabiu_JCkE0GbiglDXNB5C4NQq-hiGgxhHKXBxkiojg |
AID of controller of event message KEL |
s |
M&&& e.g. MAAA |
Sequence Number of Event |
kt |
M&&& e.g. MAAB |
Signing Threshold, either number or fractional weight qb64 variable length string (1) |
k |
-I## or -I##### |
Count code for Signing Key List |
0th element | DN6WBhWqp6wC08no2iWhgFYTaUgrasnqz6llSvWQTWZN |
Public Key of signer 0 |
nt |
M&&& e.g. MAAB |
Rotation Threshold, either number or fractional weight qb64 variable length string (1) |
n |
-I## or -I##### |
Count code for Rotation Key Digest List |
0th element | EDDOarj1lzr8pqG5a-SSnM2cc_3JgstRRjmzrrA_Bibg |
Digest of Public Key of rotator 0 |
bt |
M&&& e.g. MAAC |
Rotation Threshold, either number or fractional weight qb64 variable length string (2) |
b |
-I## or -I##### |
Count code for Backer AID List |
0th element | BCuDiSPCTq-qBBFDHkhf1_kmysrH8KSsFvoaOSgEbx-X |
AID of backer 0 |
1th element | BH8KSsFvoaOSgEbx-XCuDiSPCTq-qBBFDHkhf1_kmysr |
AID of backer 1 |
2th element | BBBFDHkhf1_kmysrH8KSsFvoaOSgEbx-XCuDiSPCTq-q |
AID of backer 2 |
c |
-I## or -I##### |
Count code for Config Trait List |
0th element | XDND |
Config trait 0 DND |
a |
-I## or -I##### |
Count code for Anchored Seal List |
0th element | -H## or -H##### |
Count code for field map of Seal 0 |
0.0th label | 0J_& e.g. 0J_i |
Label of field 0 of Seal 0 i |
0.0th value | EC4NQq-hiGgxhHKXBxkiojgBabiu_JCkE0GbiglDXNB5 |
Value of field 0 of Seal 0 AID |
0.1th label | 0J_s |
Label of field 1 of Seal 0 s |
0.1th value | MAAC |
Value of field 1 of Seal 0 Sequence Number |
0.2th label | 0J_d |
Label of field 2 of Seal 0 d |
0.2th value | EiGgxhHKXBxkiojgBabiu_JCkE0GbiglDXNB5C4NQq-h |
Value of field 2 of Seal 0 SAID |
1th element | -R## or -R#####` |
Count code for value of Seal 1 (event seal triple) |
1.1th value | EHKXBxkiojgBaC4NQq-hiGCkE0GbiglDXNB5gxhbiu_JMAADEBxkiojgiGgxhHKXBDXNB5C4NQq-habiu_JCkE0Gbigl |
Value of of Seal 1 (event seal triple) pre+snu+dig |
Rotation rot
Field order by label: v
, t
, d
, i
, s
, p
, kt
, k
, nt
, n
, bt
, br
, ba
, c
, a
.
Field Label | Value | Description |
---|---|---|
NA | -F## or -0F##### |
Count code for CESR native top-level fixed field signable message |
v |
YKERIBAA |
Protocol Version primitive (KERI 2.00) |
t |
Xrot |
Packet Type (inception) |
d |
EC4NQq-hiGgbiglDXNB5xhHKXBxkiojgBabiu_JCkE0G |
SAID of event message |
i |
EBabiu_JCkE0GbiglDXNB5C4NQq-hiGgxhHKXBxkiojg |
AID of controller of event message KEL |
s |
MAAB |
Sequence Number of Event |
p |
EBabiu_JCkE0GbiglDXNB5C4NQq-hiGgxhHKXBxkiojg |
Prior event SAID |
kt |
MAAB |
Signing Threshold, either number or fractional weight qb64 variable length string (1) |
k |
-I## or -I##### |
Count code for Signing Key List |
0th element | DC08no2iWhgFYTaUgrasnqz6llSvWQTWZNN6WBhWqp6w |
Public Key of signer 0 |
nt |
MAAB |
Rotation Threshold, either number or fractional weight qb64 variable length string (1) |
n |
-I## or -I##### |
Count code for Rotation Key Digest List |
0th element | EM2cc_3JgstRRjmzrrA_BibgDDOarj1lzr8pqG5a-SSn |
Digest of Public Key of rotator 0 |
bt |
MAAC |
Rotation Threshold, either number or fractional weight qb64 variable length string (2) |
br |
-I## or -I##### |
Count code for Backer Remove (cuts) AID List |
0th element | BCuDiSPCTq-qBBFDHkhf1_kmysrH8KSsFvoaOSgEbx-X |
AID of backer cut 0 |
ba |
-I## or -I##### |
Count code for Backer Add (adds) AID List |
0th element | BDiSPCTq-qBBFDHkhf1_kmysrH8KSsFvoaOSgEbx-XCu |
AID of backer add 0 |
c |
-I## or -I##### |
Count code for Config Trait List |
0th element | XDND |
Config trait 0 DND |
a |
-I## or -I##### |
Count code for Anchored Seal List |
0th element | -H## or -H##### |
Count code for field map of Seal 0 |
0.0th label | 0J_i |
Label of field 0 of Seal 0 i |
0.0th value | EC4NQq-hiGgxhHKXBxkiojgBabiu_JCkE0GbiglDXNB5 |
Value of field 0 of Seal 0 AID |
0.1th label | 0J_s |
Label of field 1 of Seal 0 s |
0.1th value | MAAC |
Value of field 1 of Seal 0 Sequence Number |
0.2th label | 0J_d |
Label of field 2 of Seal 0 d |
0.2th value | EiGgxhHKXBxkiojgBabiu_JCkE0GbiglDXNB5C4NQq-h |
Value of field 2 of Seal 0 SAID |
1th element | -R## or -R#####` |
Count code for value of Seal 1 (event seal triple) |
1.1th value | EHKXBxkiojgBaC4NQq-hiGCkE0GbiglDXNB5gxhbiu_JMAADEBxkiojgiGgxhHKXBDXNB5C4NQq-habiu_JCkE0Gbigl |
Value of of Seal 1 (event seal triple) pre+snu+dig |
Interaction ixn
Field order by label: v
, t
, d
, i
, s
, p
, a
.
Field Label | Value | Description |
---|---|---|
NA | -F## or -0F##### |
Count code for CESR native top-level fixed field signable message |
v |
YKERIBAA |
Protocol Version primitive (KERI 2.00) |
t |
Xixn |
Packet Type (inception) |
d |
EGgbiglDXNE0GC4NQq-hiB5xhHKXBxkiojgBabiu_JCk |
SAID of event message |
i |
EBabiu_JCkE0GbiglDXNB5C4NQq-hiGgxhHKXBxkiojg |
AID of controller of event message KEL |
s |
MAAC |
Sequence Number of Event |
p |
EC4NQq-hiGgbiglDXNB5xhHKXBxkiojgBabiu_JCkE0G |
Prior event SAID |
a |
-I## or -I##### |
Count code for Anchored Seal List |
0th element | -H## or -H##### |
Count code for field map of Seal 0 |
0.0th label | 0J_i |
Label of field 0 of Seal 0 i |
0.0th value | EC4NQq-hiGgxhHKXBxkiojgBabiu_JCkE0GbiglDXNB5 |
Value of field 0 of Seal 0 AID |
0.1th label | 0J_s |
Label of field 1 of Seal 0 s |
0.1th value | MAAC |
Value of field 1 of Seal 0 Sequence Number |
0.2th label | 0J_d |
Label of field 2 of Seal 0 d |
0.2th value | EiGgxhHKXBxkiojgBabiu_JCkE0GbiglDXNB5C4NQq-h |
Value of field 2 of Seal 0 SAID |
1th element | -R## or -R#####` |
Count code for value of Seal 1 (event seal triple) |
1.1th value | EHKXBxkiojgBaC4NQq-hiGCkE0GbiglDXNB5gxhbiu_JMAADEBxkiojgiGgxhHKXBDXNB5C4NQq-habiu_JCkE0Gbigl |
Value of of Seal 1 (event seal triple) pre+snu+dig |
Delegated Inception dip
Field order by label: v
, t
, d
, i
, s
, kt
, k
, nt
, n
, bt
, b
, c
, a
, di
.
Field Label | Value | Description |
---|---|---|
NA | -F## or -0F##### |
Count code for CESR native top-level fixed field signable message |
v |
YKERIBAA |
Protocol Version primitive (KERI 2.00) |
t |
Xdip |
Packet Type (inception) |
d |
EBabiu_JCkE0GbiglDXNB5C4NQq-hiGgxhHKXBxkiojg |
SAID of event message |
i |
EBabiu_JCkE0GbiglDXNB5C4NQq-hiGgxhHKXBxkiojg |
AID of controller of event message KEL |
s |
MAAA |
Sequence Number of Event |
kt |
MAAB |
Signing Threshold, either number or fractional weight qb64 variable length string (1) |
k |
-I## or -I##### |
Count code for Signing Key List |
0th element | DN6WBhWqp6wC08no2iWhgFYTaUgrasnqz6llSvWQTWZN |
Public Key of signer 0 |
nt |
MAAB |
Rotation Threshold, either number or fractional weight qb64 variable length string (1) |
n |
-I## or -I##### |
Count code for Rotation Key Digest List |
0th element | EDDOarj1lzr8pqG5a-SSnM2cc_3JgstRRjmzrrA_Bibg |
Digest of Public Key of rotator 0 |
bt |
MAAC |
Rotation Threshold, either number or fractional weight qb64 variable length string (2) |
b |
-I## or -I##### |
Count code for Backer AID List |
0th element | BCuDiSPCTq-qBBFDHkhf1_kmysrH8KSsFvoaOSgEbx-X |
AID of backer 0 |
1th element | BH8KSsFvoaOSgEbx-XCuDiSPCTq-qBBFDHkhf1_kmysr |
AID of backer 1 |
2th element | BBBFDHkhf1_kmysrH8KSsFvoaOSgEbx-XCuDiSPCTq-q |
AID of backer 2 |
c |
-I## or -I##### |
Count code for Config Trait List |
0th element | XDND |
Config trait 0 DND |
a |
-I## or -I##### |
Count code for Anchored Seal List |
0th element | -H## or -H##### |
Count code for field map of Seal 0 |
0.0th label | 0J_i |
Label of field 0 of Seal 0 i |
0.0th value | EC4NQq-hiGgxhHKXBxkiojgBabiu_JCkE0GbiglDXNB5 |
Value of field 0 of Seal 0 AID |
0.1th label | 0J_s |
Label of field 1 of Seal 0 s |
0.1th value | MAAC |
Value of field 1 of Seal 0 Sequence Number |
0.2th label | 0J_d |
Label of field 2 of Seal 0 d |
0.2th value | EiGgxhHKXBxkiojgBabiu_JCkE0GbiglDXNB5C4NQq-h |
Value of field 2 of Seal 0 SAID |
1th element | -R## or -R#####` |
Count code for value of Seal 1 (event seal triple) |
1.1th value | EHKXBxkiojgBaC4NQq-hiGCkE0GbiglDXNB5gxhbiu_JMAADEBxkiojgiGgxhHKXBDXNB5C4NQq-habiu_JCkE0Gbigl |
Value of of Seal 1 (event seal triple) pre+snu+dig |
di |
EFXNB5C4NQq-hiGgxhHKXBxkiojgabiu_JCkE0GbiglD |
AID of delegating controller |
Delegated Rotation drt
Field order by label: v
, t
, d
, i
, s
, p
, kt
, k
, nt
, n
, bt
, br
, ba
, c
, a
, di
.
Field Label | Value | Description |
---|---|---|
NA | -F## or -0F##### |
Count code for CESR native top-level fixed field signable message |
v |
YKERIBAA |
Protocol Version primitive (KERI 2.00) |
t |
Xdrt |
Packet Type (inception) |
d |
EC4NQq-hiGgbiglDXNB5xhHKXBxkiojgBabiu_JCkE0G |
SAID of event message |
i |
EBabiu_JCkE0GbiglDXNB5C4NQq-hiGgxhHKXBxkiojg |
AID of controller of event message KEL |
s |
MAAB |
Sequence Number of Event |
p |
EBabiu_JCkE0GbiglDXNB5C4NQq-hiGgxhHKXBxkiojg |
Prior event SAID |
kt |
MAAB |
Signing Threshold, either number or fractional weight qb64 variable length string (1) |
k |
-I## or -I##### |
Count code for Signing Key List |
0th element | DC08no2iWhgFYTaUgrasnqz6llSvWQTWZNN6WBhWqp6w |
Public Key of signer 0 |
nt |
MAAB |
Rotation Threshold, either number or fractional weight qb64 variable length string (1) |
n |
-I## or -I##### |
Count code for Rotation Key Digest List |
0th element | EM2cc_3JgstRRjmzrrA_BibgDDOarj1lzr8pqG5a-SSn |
Digest of Public Key of rotator 0 |
bt |
MAAC |
Rotation Threshold, either number or fractional weight qb64 variable length string (2) |
br |
-I## or -I##### |
Count code for Backer Remove (cuts) AID List |
0th element | BCuDiSPCTq-qBBFDHkhf1_kmysrH8KSsFvoaOSgEbx-X |
AID of backer cut 0 |
ba |
-I## or -I##### |
Count code for Backer Add (adds) AID List |
0th element | BDiSPCTq-qBBFDHkhf1_kmysrH8KSsFvoaOSgEbx-XCu |
AID of backer add 0 |
c |
-I## or -I##### |
Count code for Config Trait List |
0th element | XDND |
Config trait 0 DND |
a |
-I## or -I##### |
Count code for Anchored Seal List |
0th element | -H## or -H##### |
Count code for field map of Seal 0 |
0.0th label | 0J_i |
Label of field 0 of Seal 0 i |
0.0th value | EC4NQq-hiGgxhHKXBxkiojgBabiu_JCkE0GbiglDXNB5 |
Value of field 0 of Seal 0 AID |
0.1th label | 0J_s |
Label of field 1 of Seal 0 s |
0.1th value | MAAC |
Value of field 1 of Seal 0 Sequence Number |
0.2th label | 0J_d |
Label of field 2 of Seal 0 d |
0.2th value | EiGgxhHKXBxkiojgBabiu_JCkE0GbiglDXNB5C4NQq-h |
Value of field 2 of Seal 0 SAID |
1th element | -R## or -R#####` |
Count code for value of Seal 1 (event seal triple) |
1.1th value | EHKXBxkiojgBaC4NQq-hiGCkE0GbiglDXNB5gxhbiu_JMAADEBxkiojgiGgxhHKXBDXNB5C4NQq-habiu_JCkE0Gbigl |
Value of of Seal 1 (event seal triple) pre+snu+dig |
di |
EFXNB5C4NQq-hiGgxhHKXBxkiojgabiu_JCkE0GbiglD |
AID of delegating controller |
Receipt Message
This message has packet type rct
KERI support Messages
These have the packet types qry
, rpy
, pro
, bar
, exn
Beta Was this translation helpful? Give feedback.
-
TSP (SPAC) SupportThere are several ways to support the TSP with CESR. The TSP is a tunneling routing protocol that would be largely transparent to any other message protocol that is tunneled and routed as a payload of the TSP. Also, viewed from the perspective of the tunneled protocol, the TSP is all overhead, so the TSP wants to be very efficient. The most efficient approach would be for the TSP to be native CESR only. The tunneled message could be JSON, CBOR, or MGPK because CESR supports those as interleavable with native CESR encode primitives and groups. Given then that the TSP tunneling wrappers are only native CESR, then the design choices become much more constrained. TSP StructureA TSP wrapper can be modeled with three parts: Head, Body, Tail. HeadThe Head needs to include information that indicates that its a TSP wrapper head part, the version of TSP, the size of the wrapper, and the source and destination VIDS. The head is always plain text. I don't believe there is any need to have more than one head type. This is by design so that the head contains no correlatble metadata besides the source and destination VIDS. BodyThe Body can be composed of two parts: a plaintext portion and a ciphertext portion. The body part, therefore, needs a body type indicator so it can be parsed unambiguously. This allows semantics for the body fields. This body type might be recursively nestable because the ciphertext part may differ for the same plaintext part type. The ciphertext body part must always include the source VID for ESSR. The plaintext body part does not. TailThe Tail part consists of the attached signature(s) using the source VID. These may be anchored as well. In general, these may look pretty much like the KERI/ACDC attachments. OptionsWe could use a dedicated count code table just for TSP parts, or we could just append those to the existing count code tables. Revised Proposed EncodingTSP ESSR WrapperAll messages start with a count code. This makes is sniffable in a stream.
TSP ESSR PayloadPlaintext of Ciphertext as Routing Message with Routed Nested ESSR Wrapper The payload above is ciphertext. In order for the unencrypted plaintext of the payload to be a parsable CESR stream, i.e. sniffable, the payload plaintext must start with (be encapsulated in) a group (count) code. Shown here is the TSP ESSR payload group. The Plaintext has a message type so that a parser can parse the fixed field formatted messages. This allows a virtually unlimited number of payload message types.
|
Beta Was this translation helpful? Give feedback.
-
|
Field Label | Label Value | Field or Count Value | Description |
---|---|---|---|
NA | NA | -G## or -0G##### |
Count code for CESR native top-level field map signable message |
v |
0J_v |
YACDCBAA |
Protocol Version primitive (ACDC 2.00) |
d |
0J_d |
EGgbiglDXNE0GC4NQq-hiB5xhHKXBxkiojgBabiu_JCk |
SAID of ACDC packet |
u |
0J_u |
0AGC4NQq-hiB5xhHKXBxkiK |
UUID (salt) of ACDC packet |
i |
0J_i |
EBabiu_JCkE0GbiglDXNB5C4NQq-hiGgxhHKXBxkiojg |
AID of issuer of ACDC |
rd |
0Krd |
ECkE0GbiglDXNB5C4NQq-hiGgxhHKXBxkiojgBabiu_J |
SAID of revocation registry for ACDC |
s |
0J_s |
EDXNB5C4NQq-hiGgxhHKXBxkiojgBabiu_JCkE0Gbigl |
SAID of schema section of ACDC packet |
a |
0J_a |
EC4NQq-hiGgbiglDXNB5xhHKXBxkiojgBabiu_JCkE0G |
SAID of schema of attribute section of ACDC packet |
e |
0J_e |
EFXBxkiojgBabiu_JCkE0GC4NQq-hiGgbiglDXNB5xhH |
SAID of schema of edge section of ACDC packet |
r |
0J_r |
EMiGgbiglDXNB5xhHFXBxkiojgBabiu_JCkE0GC4NQq- |
SAID of schema of rule section ACDC packet |
sections.
Beta Was this translation helpful? Give feedback.
-
Open vs Closed ModeTSP WrapperWith TSP Protocol Version | TSP ESSR Wrapper | Version | Src VID | Dst VID | Ciphertext Payload | Attachment Group | Idx Sig Group | Signature | TSP ESSR Payload| TSP Payload Group | Message Type | Src VID | Hop List Group | Hop VID | Hop VID | TSP ESSR Wrapper | Version | Src VID | Dst VID | Ciphertext Payload | Attachment Group | Idx Sig Group | Signature | |
Beta Was this translation helpful? Give feedback.
-
CESR 2.00 Code Tables
More correctly maybe CESR 2.0.0 if adhere to strict semantic versioning
Universal Selector Codes and Encoding Schemes
Encoding Scheme Table
The following table summarizes the T domain coding schemes by selector code for the 13 code tables defined above.
[A-Z,a-z]
1*
$&&&
0
*$&&
1
*$$$&&&&
2
*$$$%&&&
3
*$$$%%&&
4
*$##&&&&
5
*$##%&&&
6
*$##%%&&
7
*$$$####&&&&
8
*$$$####%&&&
9
*$$$####%%&&
-
[A-Z,a-z]
1*
*$##
-
0
**$#####
-
-
**$$$###
-
[1-9,_]
**
_
*
Encoding Scheme Symbols
The following table defines the meaning of the symbols used in the encoding scheme table
*
$
[A-Z,a-z,0-9,-,_]
%
#
&
TBD
Universal Code table genus/version codes
--AAA###
AAA
Master code table for genus/version
--AAACAA
(KERI/ACDC protocol stack version 2.00)This master table includes both the primitive and count code types for the KERI/ACDC protocol stack. The types are separated by headers. This table only provides the codes for the KERI/ACDC protocol stack code table genus
AAA
at version 2.00 given by the genus/version code =--AAACAA
KERI/ACDC 2.00. After some thought and discussion, there does not seem to be a valid use case for a full semantic versioning using major, minor, and patch version numbers. In general, patch is meant for minor changes such as bug fixes, changes to doc strings, or tests that do not affect core feature functionality. Whereas, minor is meant for feature changes that are backwards compatible, and major is meant for backwards breaking changes. Any addition of a new code to the code table is backward breaking in a least one direction so its a feature change in a least one direction. New implementations with the new codes can accept streams from old implementations, but old implementations will break if they receive the new codes. So we have to define what major and minor mean specifically with regard code changes. A major change means a code's meaning has changed. This means it breaks in both directions i.e. sender and receiver. A minor change happens when a code is added; this only breaks backward compatibility when a new sender sends to an an old receiver, but a new sender will still correctly process a stream sent from an old receiver. Since code additions will be common compared to code changes, it would be beneficial to have more room for minor vs. major. Given there are three Base64 characters for the version, the first character will be for major version of which there are 64 total. It is anticipated that the code tables for the KERI/ACDC/TSP protocol stack will not change much in the future after the 1.00 to 2.00 change proposed here. This leaves 2 Base64 characters for minor version or 64^2 = 4096 minor versions per major version. Largely these will be infrequent and batched. Each time a new batch of codes are added to the table with accompanying implementation, the minor version will be incremented. Hopefully, there is never a version 3.00 because 2.00 was designed properly.All count codes except the genus/version code are pipelineable because they count the number of quadlets/triplets in the count group. A quadlet is four Base64 characters in the text domain. A triplet is three B2 bytes in the binary domain. The count is invariant in either domain. This allows a stream parser to extract the count number of characters/bytes in a group from the stream without parsing the contents of the group. By making all count codes pipelineable, the stream parser can be optimized in a granular way. This includes granular core affinity.
The table has 5 columns. These are as follows:
--AAABAA
AAA
and version1.00
--AAACAA
AAA
and version2.00
-A##
-0A#####
-B##
-0A#####
-C##
-0C#####
-D##
-0D#####
-E##
-0E#####
-F##
-0F#####
-G##
-0G#####
-H##
-0H#####
-I##
-0I#####
-J##
-0J#####
-K##
-0K#####
-L##
-0L#####
-M##
-0M#####
-N##
-0N#####
-O##
-0O#####
-P##
-0P#####
-Q##
-0Q#####
-R##
-0R#####
-S##
-0S#####
-T##
-0T#####
-U##
-0U#####
-V##
dig
up to 4,095 quadlets/triplets-0V#####
dig
up to 1,073,741,823 quadlets/triplets-W##
rdig
up to 4,095 quadlets/triplets-0W#####
rdig
up to 1,073,741,823 quadlets/triplets-X##
brid+dig
up to 4,095 quadlets/triplets-0X#####
brid+dig
up to 1,073,741,823 quadlets/triplets-Y##
aid+dig
up to 4,095 quadlets/triplets-0Y#####
aid+dig
up to 1,073,741,823 quadlets/triplets-Z##
version+messagtype+...
up to 4,095 quadlets/triplets-0Z#####
version+messagtype+...
up to 1,073,741,823 quadlets/triplets_
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
0A
0B
0C
0D
0E
0F
0G
0H
0I
0J
0K
0L
0M
0N
1AAA
1AAB
1AAC
1AAD
1AAE
1AAF
1AAG
1AAH
1AAI
1AAJ
1AAK
1AAL
1AAM
4A
5A
6A
7AAA
8AAA
7AAA
4B
5B
6B
7AAB
8AAB
9AAB
4C
5C
6C
7AAC
8AAC
9AAC
4D
5D
6D
7AAD
8AAD
9AAD
4E
5E
6E
7AAE
8AAE
9AAE
Beta Was this translation helpful? Give feedback.
All reactions