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_RSAPrivate |
2 |
|
KeyType_DSAPrivate |
19 |
|
KeyType_KCDSAPrivate |
40 |
|
KeyType_ECPrivate |
45 |
|
KeyType_ECDSAPrivate |
47 |
Any supported values of type
not present in the table correspond to an empty (zero-length) params
field.
M_KeyHashAttrib
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
hk |
variable |
See M_Hash |
mech_i |
4 bytes |
Little-endian unsigned integer. See M_Mech |
mech_c |
4 bytes |
Little-endian unsigned integer. See M_Mech |
M_vec_KeyHashAttrib
This represents an array of M_KeyHashAttrib objects.
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_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_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_vec_ModKeyInfoEx
This represents an array of M_ModKeyInfoEx objects.
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 |
Any supported values of tag
not present in the table correspond to an empty (zero-length) value
field.
M_vec_ModuleAttrib
This represents an array of M_ModuleAttrib objects.
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 |
|