Incorporate an extensible Client Profile
Created by: claucece
Incorporate a client profile of this way:
Client Profile (CLIENT-PROF): Number of Fields (16bit INT) Fields (SEQ-FIELDS) Profile Signature (USER-EDDSA-SIG)
SEQ-FIELDS will be "Number of Fields" entries of type FIELD. FIELD will be:
Client Profile Field (FIELD): Type (16bit INT) Value (DATA)
Where the value is encoded as the general DATA with a length and then the data.
Example:
Type = 0x0001
Client Profile's Identifier (INT)
A Client Profile id used for local storage and retrieval.
Type = 0x0002
Client Profile owner's instance tag (INT)
The instance tag of the client/device that created the User Profile.
Type = 0x0003
Ed448 public key (ED448-PUBKEY)
Corresponds to 'H'.
Type = 0x0004
Versions (byte string)
Type = 0x0005
Client Profile Expiration (USER-PROF-EXP)
Type = 0x0006
Transitional Signature (USER-SIG)
This signature is defined as a signature over fields 0x0001,
0x0002, 0x0003, 0x0004, 0x0005 only.
This gives us a trivial serialization. We can also define the ordering for signatures to always be ordinal order of the type. This gives us extensability quite easily, and provides for a safer parsing environment.
We should allow multiple long-term public keys.