Skip to content

Commit 88016de

Browse files
robertosassumimizohar
authored andcommitted
ima: Define new template evm-sig
With the recent introduction of the evmsig template field, remote verifiers can obtain the EVM portable signature instead of the IMA signature, to verify file metadata. After introducing the new fields to include file metadata in the measurement list, this patch finally defines the evm-sig template, whose format is: d-ng|n-ng|evmsig|xattrnames|xattrlengths|xattrvalues|iuid|igid|imode xattrnames, xattrlengths and xattrvalues are populated only from defined EVM protected xattrs, i.e. the ones that EVM considers to verify the portable signature. xattrnames and xattrlengths are populated only if the xattr is present. xattrnames and xattrlengths are not necessary for verifying the EVM portable signature, but they are included for completeness of information, if a remote verifier wants to infer more from file metadata. Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com> Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
1 parent 8314b67 commit 88016de

2 files changed

Lines changed: 5 additions & 1 deletion

File tree

Documentation/security/IMA-templates.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ Below, there is the list of defined template descriptors:
9191
- "ima-sig": its format is ``d-ng|n-ng|sig``;
9292
- "ima-buf": its format is ``d-ng|n-ng|buf``;
9393
- "ima-modsig": its format is ``d-ng|n-ng|sig|d-modsig|modsig``;
94+
- "evm-sig": its format is ``d-ng|n-ng|evmsig|xattrnames|xattrlengths|xattrvalues|iuid|igid|imode``;
9495

9596

9697
Use

security/integrity/ima/ima_template.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ static struct ima_template_desc builtin_templates[] = {
2222
{.name = "ima-sig", .fmt = "d-ng|n-ng|sig"},
2323
{.name = "ima-buf", .fmt = "d-ng|n-ng|buf"},
2424
{.name = "ima-modsig", .fmt = "d-ng|n-ng|sig|d-modsig|modsig"},
25+
{.name = "evm-sig",
26+
.fmt = "d-ng|n-ng|evmsig|xattrnames|xattrlengths|xattrvalues|iuid|igid|imode"},
2527
{.name = "", .fmt = ""}, /* placeholder for a custom format */
2628
};
2729

@@ -69,7 +71,8 @@ static const struct ima_template_field supported_fields[] = {
6971
* need to be accounted for since they shouldn't be defined in the same template
7072
* description as 'd-ng' and 'n-ng' respectively.
7173
*/
72-
#define MAX_TEMPLATE_NAME_LEN sizeof("d-ng|n-ng|sig|buf|d-modisg|modsig")
74+
#define MAX_TEMPLATE_NAME_LEN \
75+
sizeof("d-ng|n-ng|evmsig|xattrnames|xattrlengths|xattrvalues|iuid|igid|imode")
7376

7477
static struct ima_template_desc *ima_template;
7578
static struct ima_template_desc *ima_buf_template;

0 commit comments

Comments
 (0)