ACL format
This section defines the wire format for M_ACL and its descendant types.
In a key attestation bundle as described in Key attestation bundle construction, the following fields will use this format:
-
kcmsg.data.acl
M_ACL
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
n_groups |
4 bytes |
Little-endian unsigned integer. |
groups |
variable |
n_groups copies of |
M_Act
An enumeration type, represented as a 4-byte little-endian unsigned integer. Possible values include:
Value | Name |
---|---|
1 |
|
2 |
|
3 |
|
5 |
|
47 |
|
M_Act_DeriveKeyEx_Details
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
flags |
4 bytes |
Little-endian unsigned integer. See M_Act_DeriveKeyEx_Details_flags |
role |
4 bytes |
Little-endian unsigned integer. See M_DeriveRole |
mech |
4 bytes |
Little-endian unsigned integer. See M_DeriveMech |
n_otherkeys |
4 bytes |
Little-endian unsigned integer. |
otherkeys |
variable |
n_otherkeys copies of |
params |
variable |
Empty, or M_DKMechParams if |
M_Act_DeriveKeyEx_Details_flags
A bitmap type, represented as a 4-byte little-endian unsigned integer. Individual bit values are:
Value | Name |
---|---|
0x00000001 |
|
M_Act_DeriveKey_Details
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
flags |
4 bytes |
Little-endian unsigned integer. See M_Act_DeriveKey_Details_flags |
role |
4 bytes |
Little-endian unsigned integer. See M_DeriveRole |
mech |
4 bytes |
Little-endian unsigned integer. See M_DeriveMech |
n_otherkeys |
4 bytes |
Little-endian unsigned integer. |
otherkeys |
variable |
n_otherkeys copies of |
params |
variable |
Empty, or M_DKMechParams if |
M_Act_DeriveKey_Details_flags
A bitmap type, represented as a 4-byte little-endian unsigned integer. Individual bit values are:
Value | Name |
---|---|
0x00000001 |
|
M_Act_MakeArchiveBlob_Details
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
flags |
4 bytes |
Little-endian unsigned integer. See M_Act_MakeArchiveBlob_Details_flags |
mech |
4 bytes |
Little-endian unsigned integer. See M_Mech |
kahash |
variable |
Empty, or M_Hash if |
blobfile |
variable |
Empty, or M_MakeBlobFilePerms if |
M_Act_MakeArchiveBlob_Details_flags
A bitmap type, represented as a 4-byte little-endian unsigned integer. Individual bit values are:
Value | Name |
---|---|
0x00000001 |
|
0x00000002 |
|
M_Act_MakeBlob_Details
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
flags |
4 bytes |
Little-endian unsigned integer. See M_Act_MakeBlob_Details_flags |
kmhash |
variable |
Empty, or M_Hash if |
kthash |
variable |
Empty, or M_Hash if |
ktparams |
variable |
Empty, or M_TokenParams if |
blobfile |
variable |
Empty, or M_MakeBlobFilePerms if |
M_Act_MakeBlob_Details_flags
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 |
|
M_Act_OpPermissions_Details
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
perms |
4 bytes |
Little-endian unsigned integer. See M_Act_OpPermissions_Details_perms |
M_Act_OpPermissions_Details_perms
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 |
|
M_Action
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
type |
4 bytes |
Little-endian unsigned integer. See M_Act |
details |
variable |
Depends on field |
M_Action.details representations
This depends on the value of the type
field, as follows:
Name of type |
Value of type |
Format of details |
---|---|---|
Act_OpPermissions |
1 |
|
Act_MakeBlob |
2 |
|
Act_MakeArchiveBlob |
3 |
|
Act_DeriveKey |
5 |
|
Act_DeriveKeyEx |
47 |
Any supported values of type
not present in the table correspond to an empty (zero-length) details
field.
M_vec_Action
This represents an array of M_Action objects.
M_DKMechParams
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
mech |
4 bytes |
Little-endian unsigned integer. See M_DeriveMech |
params |
variable |
Depends on field |
M_DeriveMech
An enumeration type, represented as a 4-byte little-endian unsigned integer. Possible values include:
Value | Name |
---|---|
29 |
|
M_DeriveRole
An enumeration type, represented as a 4-byte little-endian unsigned integer. Possible values include:
Value | Name |
---|---|
1 |
|
M_FileDeviceFlags
A bitmap type, represented as a 4-byte little-endian unsigned integer. Individual bit values are:
Value | Name |
---|---|
0x00000001 |
|
0x00000002 |
|
0x00000004 |
|
M_KeyHashExAndMech
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
hash |
variable |
See M_KeyHashEx |
mech |
4 bytes |
Little-endian unsigned integer. See M_Mech |
M_KeyRoleID
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
role |
4 bytes |
Little-endian unsigned integer. See M_DeriveRole |
hash |
variable |
See M_Hash |
M_vec_KeyRoleID
This represents an array of M_KeyRoleID objects.
M_KeyRoleIDEx
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
role |
4 bytes |
Little-endian unsigned integer. See M_DeriveRole |
hash |
variable |
See M_KeyHashEx |
M_vec_KeyRoleIDEx
This represents an array of M_KeyRoleIDEx objects.
M_MakeBlobFilePerms
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
flags |
4 bytes |
Little-endian unsigned integer. See M_MakeBlobFilePerms_flags |
devs |
variable |
Empty, or M_FileDeviceFlags if |
aclhash |
variable |
Empty, or M_Hash if |
M_MakeBlobFilePerms_flags
A bitmap type, represented as a 4-byte little-endian unsigned integer. Individual bit values are:
Value | Name |
---|---|
0x00000001 |
|
0x00000002 |
|
M_PermissionGroup
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
flags |
4 bytes |
Little-endian unsigned integer. See M_PermissionGroup_flags |
n_limits |
4 bytes |
Little-endian unsigned integer. |
limits |
variable |
n_limits copies of |
n_actions |
4 bytes |
Little-endian unsigned integer. |
actions |
variable |
n_actions copies of |
certifier |
variable |
Empty, or M_Hash if |
certmech |
variable |
Empty, or M_KeyHashAndMech if |
moduleserial |
variable |
Empty, or M_ASCIIString if |
certmechex |
variable |
Empty, or M_KeyHashExAndMech if |
M_vec_PermissionGroup
This represents an array of M_PermissionGroup objects.
M_PermissionGroup_flags
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 |
|
M_TokenParams
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
flags |
4 bytes |
Little-endian unsigned integer. See M_TokenParams_flags |
sharesneeded |
4 bytes |
Little-endian unsigned integer. See M_Word |
sharestotal |
4 bytes |
Little-endian unsigned integer. See M_Word |
timelimit |
4 bytes |
Little-endian unsigned integer. See M_Word |
M_TokenParams_flags
A bitmap type, represented as a 4-byte little-endian unsigned integer. Individual bit values are:
Value | Name |
---|---|
0x00000001 |
|
0x00000002 |
|
0x00000004 |
|
M_UseLim
An enumeration type, represented as a 4-byte little-endian unsigned integer. Possible values include:
Value | Name |
---|---|
1 |
|
3 |
|
4 |
|
6 |
|
M_UseLim_NonVolatile_Details
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
flags |
4 bytes |
Little-endian unsigned integer. See M_UseLim_NonVolatile_Details_flags |
file |
variable |
See M_FileID |
range |
variable |
See M_NVMemRange |
maxlo |
4 bytes |
Little-endian unsigned integer. See M_Word |
maxhi |
4 bytes |
Little-endian unsigned integer. See M_Word |
prefetch |
4 bytes |
Little-endian unsigned integer. See M_Word |
M_UseLim_NonVolatile_Details_flags
A bitmap type, represented as a 4-byte little-endian unsigned integer. No flags are currently defined for this field.
M_UseLim_Time_Details
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
seconds |
4 bytes |
Little-endian unsigned integer. See M_Word |
M_UseLimit
This represents a structure with the following fields:
Field | Size | Format |
---|---|---|
type |
4 bytes |
Little-endian unsigned integer. See M_UseLim |
details |
variable |
Depends on field |
M_UseLimit.details representations
This depends on the value of the type
field, as follows:
Name of type |
Value of type |
Format of details |
---|---|---|
UseLim_Global |
1 |
|
UseLim_Time |
3 |
|
UseLim_NonVolatile |
4 |
|
UseLim_Auth |
6 |
Any supported values of type
not present in the table correspond to an empty (zero-length) details
field.
M_vec_UseLimit
This represents an array of M_UseLimit objects.