ModCertMsg format
This section defines the wire format for M_ModCertMsg and its descendant types.
In a key attestation bundle as described in Key attestation bundle construction, the following fields will use this format:
-
modstatemsg
-
kcmsg
M_ModCertMsg
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
type |
4 bytes |
Little-endian unsigned integer. See M_ModCertType |
data |
variable |
Depends on field |
M_DSAGenerationHash
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
hash |
4 bytes |
Little-endian unsigned integer. See M_Mech |
M_KeyGenParams
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
type |
4 bytes |
Little-endian unsigned integer. See M_KeyType |
params |
variable |
Depends on field |
M_KeyGenParams.params representations
This depends on the value of the type
field, as follows:
Name of type |
Value of type |
Format of params |
---|---|---|
KeyType_RSAPublic |
1 |
Empty |
KeyType_RSAPrivate |
2 |
|
KeyType_DSAPublic |
3 |
Empty |
KeyType_DSAPrivate |
19 |
|
KeyType_KCDSAPublic |
39 |
Empty |
KeyType_KCDSAPrivate |
40 |
|
KeyType_ECPublic |
44 |
Empty |
KeyType_ECPrivate |
45 |
|
KeyType_ECDSAPublic |
46 |
Empty |
KeyType_ECDSAPrivate |
47 |
|
KeyType_X25519Public |
59 |
Empty |
KeyType_X25519Private |
60 |
Empty |
KeyType_Ed25519Public |
65 |
Empty |
KeyType_Ed25519Private |
66 |
Empty |
KeyType_Ed448Private |
81 |
Empty |
KeyType_Ed448Public |
82 |
Empty |
KeyType_MLDSAPrivate |
83 |
|
KeyType_MLDSAPublic |
84 |
Empty |
KeyType_MLKEMPrivate |
85 |
|
KeyType_MLKEMPublic |
86 |
Empty |
KeyType_SLHDSAPrivate |
87 |
|
KeyType_SLHDSAPublic |
88 |
Empty |
M_KeyType_DSAPrivate_GenParams
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
flags |
4 bytes |
Little-endian unsigned integer. See M_KeyType_DSAPrivate_GenParams_flags |
lenbits |
4 bytes |
Little-endian unsigned integer. See M_Word |
dlg |
variable |
Empty, or M_DSADiscreteLogGroup if |
qhash |
variable |
Empty, or M_DSAGenerationHash if |
M_KeyType_DSAPrivate_GenParams_flags
A bitmap type, represented as a 4-byte little-endian unsigned integer. Individual bit values are:
Value | Name |
---|---|
0x00000001 |
|
0x00000002 |
|
0x00000004 |
|
M_KeyType_ECPrivate_GenParams
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
curve |
variable |
See M_EllipticCurve |
M_KeyType_KCDSAPrivate_GenParams
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
flags |
4 bytes |
Little-endian unsigned integer. See M_KeyType_KCDSAPrivate_GenParams_flags |
plen |
4 bytes |
Little-endian unsigned integer. See M_Word |
qlen |
4 bytes |
Little-endian unsigned integer. See M_Word |
dlg |
variable |
Empty, or M_DSADiscreteLogGroup if |
M_KeyType_KCDSAPrivate_GenParams_flags
A bitmap type, represented as a 4-byte little-endian unsigned integer. Individual bit values are:
Value | Name |
---|---|
0x00000001 |
|
M_KeyType_MLDSAPrivate_GenParams
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
scheme |
4 bytes |
Little-endian unsigned integer. See M_MLDSAScheme |
M_KeyType_MLKEMPrivate_GenParams
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
scheme |
4 bytes |
Little-endian unsigned integer. See M_MLKEMScheme |
M_KeyType_RSAPrivate_GenParams
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
flags |
4 bytes |
Little-endian unsigned integer. See M_KeyType_RSAPrivate_GenParams_flags |
lenbits |
4 bytes |
Little-endian unsigned integer. See M_Word |
given_e |
variable |
Empty, or M_Bignum if |
nchecks |
variable |
Empty, or M_Word if |
M_KeyType_RSAPrivate_GenParams_flags
A bitmap type, represented as a 4-byte little-endian unsigned integer. Individual bit values are:
Value | Name |
---|---|
0x00000001 |
|
0x00000002 |
|
0x00000004 |
|
M_KeyType_SLHDSAPrivate_GenParams
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
scheme |
variable |
See M_SphincsScheme |
M_MLDSAScheme
An enumeration type, represented as a 4-byte little-endian unsigned integer. Possible values include:
Value | Name |
---|---|
0 |
|
1 |
|
2 |
|
M_MLKEMScheme
An enumeration type, represented as a 4-byte little-endian unsigned integer. Possible values include:
Value | Name |
---|---|
0 |
|
1 |
|
2 |
|
M_ModCertType
An enumeration type, represented as a 4-byte little-endian unsigned integer. Possible values include:
Value | Name |
---|---|
2 |
|
4 |
|
M_ModCertType_KeyGen_ModCertData
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
flags |
4 bytes |
Little-endian unsigned integer. See M_ModCertType_KeyGen_ModCertData_flags |
genparams |
variable |
See M_KeyGenParams |
acl |
variable |
See M_ACL |
hka |
variable |
See M_Hash |
hkaex |
variable |
Empty, or M_KeyHashEx if |
M_ModCertType_KeyGen_ModCertData_flags
A bitmap type, represented as a 4-byte little-endian unsigned integer. Individual bit values are:
Value | Name |
---|---|
0x00000001 |
|
0x00000002 |
|
M_ModCertType_StateCert_ModCertData
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
flags |
4 bytes |
Little-endian unsigned integer. See M_ModCertType_StateCert_ModCertData_flags |
state |
variable |
M_ModCertType_StateCert_ModCertData_flags
A bitmap type, represented as a 4-byte little-endian unsigned integer. No flags are currently defined for this field.
M_ModKeyInfoEx
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
v |
4 bytes |
Little-endian unsigned integer. See M_Word |
hk |
variable |
See M_KeyHashEx |
type |
4 bytes |
Little-endian unsigned integer. See M_KeyType |
mech_i |
4 bytes |
Little-endian unsigned integer. See M_Mech |
mech_c |
4 bytes |
Little-endian unsigned integer. See M_Mech |
M_ModuleAttrib
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
tag |
4 bytes |
Little-endian unsigned integer. See M_ModuleAttribTag |
value |
variable |
Depends on field |
M_ModuleAttrib.value representations
This depends on the value of the tag
field, as follows:
Name of tag |
Value of tag |
Format of value |
---|---|---|
ModuleAttribTag_ESN |
2 |
|
ModuleAttribTag_KML |
3 |
|
ModuleAttribTag_KNSO |
5 |
|
ModuleAttribTag_KMList |
6 |
|
ModuleAttribTag_KLF2 |
13 |
|
ModuleAttribTag_KMLEx |
19 |
|
ModuleAttribTag_KNSOEx |
20 |
|
ModuleAttribTag_ModKeyInfoEx |
21 |
|
ModuleAttribTag_KLF2Ex |
22 |
M_ModuleAttribList
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
n_attribs |
4 bytes |
Little-endian unsigned integer. |
attribs |
variable |
n_attribs copies of |
M_ModuleAttribTag
An enumeration type, represented as a 4-byte little-endian unsigned integer. Possible values include:
Value | Name |
---|---|
2 |
|
3 |
|
5 |
|
6 |
|
13 |
|
19 |
|
20 |
|
21 |
|
22 |
|
M_ModuleAttribTag_ESN_Value
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
esn |
variable |
See M_ASCIIString |
M_ModuleAttribTag_KMLEx_Value
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
hk |
variable |
See M_KeyHashEx |
pubkey |
variable |
See M_KeyData |
mech_i |
4 bytes |
Little-endian unsigned integer. See M_Mech |
M_ModuleAttribTag_KMList_Value
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
n_hkms |
4 bytes |
Little-endian unsigned integer. |
hkms |
variable |
n_hkms copies of |
M_ModuleAttribTag_KNSOEx_Value
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
hknso |
variable |
See M_KeyHashEx |
publicperms |
variable |
See M_NSOPerms |
M_ModuleAttribTag_KNSO_Value
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
hknso |
variable |
See M_Hash |
publicperms |
variable |
See M_NSOPerms |
M_ModuleAttribTag_ModKeyInfoEx_Value
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
n_kms |
4 bytes |
Little-endian unsigned integer. |
kms |
variable |
n_kms copies of |
M_NSOPerms
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
ops |
4 bytes |
Little-endian unsigned integer. See M_NSOPerms_ops |
M_NSOPerms_ops
A bitmap type, represented as a 4-byte little-endian unsigned integer. Individual bit values are:
Value | Name |
---|---|
0x00000001 |
|
0x00000002 |
|
0x00000004 |
|
0x00000008 |
|
0x00000010 |
|
0x00000020 |
|
0x00000040 |
|
0x00000080 |
|
0x00000100 |
|
0x00000200 |
|
0x00000400 |
|
0x00000800 |
|
0x00001000 |
|
0x00002000 |
|
0x00004000 |
|
0x00008000 |
|
0x00010000 |
|
0x00020000 |
|
0x00040000 |
|