This LIP proposes a fundamental, breaking change to the CTE specification. It renames Public Key List and Signature List to Public Key Vector and Signature Vector, and renames Legacy Index Reference to Vector Index.
Crucially, it replaces the concept of a crypto-specific type code (as defined in LIP-2) with a generic entry size code. The TT bits in the vector headers will now explicitly define the byte size of each element in the vector's data payload. This simplifies the core CTE parsing logic by decoupling it from cryptographic scheme specifics, making the format more flexible and forward-compatible. This proposal renders LIP-2 obsolete.
LIP-2 coupled the TT type code directly to a cryptographic algorithm (e.g., TT=00 for Ed25519). While this provided semantic meaning at the parsing layer, it also made the core format rigid. Adding a new algorithm or a variant with the same key size would require a new TT code and a specification update.
This proposal simplifies the parser's responsibility to a purely structural one: read a vector of N items, where each item is X bytes long. The TT code now simply defines 'X'. The semantic interpretation of what those bytes represent (e.g., an Ed25519 key vs. an SLH-DSA key) is moved to the application layer, where it ultimately matters. This makes the base CTE format more generic and extensible. The renaming to "Vector" and "Vector Index" reflects this more generic, structural nature.
This LIP replaces the specifications for Tag 00 and Tag 01 as defined in LIP-2 and renames the IxData Sub-Type 00.
00) - Updated00| Bits | Field | Description |
|---|---|---|
| 7-6 | Tag (00) |
Identifies this as a Public Key Vector. |
| 5-2 | Length (N) | Number of keys in the vector (1-15). |
| 1-0 | Entry Size Code (TT) |
Specifies the size of each key (see table below). |
TT):TT (Bin) |
Key Size (Bytes) |
|---|---|
00 |
32 |
01 |
64 |
10 |
128 |
11 |
Unused |
01) - Updated01| Bits | Field | Description |
|---|---|---|
| 7-6 | Tag (01) |
Identifies this as a Signature Vector. |
| 5-2 | Length (N) | Number of items in the vector (1-15). |
| 1-0 | Entry Size Code (TT) |
Specifies the size of each item (see table below). |
TT):TT (Bin) |
Item Size (Bytes) |
|---|---|
00 |
32 |
01 |
64 |
10 |
128 |
11 |
29792 |
00) - UpdatedLegacy Index Reference is renamed to Vector Index.Public Key Vector or Signature Vector. The responsibility for determining which vector is being referenced lies with the application layer, as per LIP-4.TT codes, as long as their key or signature sizes fit one of the existing size slots.This proposal is a breaking change and is not backwards compatible with implementations based on LIP-2.
TT code to define a specific cryptographic scheme. They will misinterpret the data if they receive a stream based on this new specification.TT=00 implies a 64-byte Ed25519 signature. Under this proposal, TT=00 for a Signature Vector implies a 32-byte item.The primary security consideration is that the responsibility for correctly interpreting the cryptographic context of the data is now entirely on the application layer.
This LIP is licensed under the MIT License, in alignment with the main LEA Project License.