- 'modsig' the appended file signature;
  - 'buf': the buffer data that was used to generate the hash without size limitations;
  - 'evmsig': the EVM portable signature;
+ - 'iuid': the inode UID;
+ - 'igid': the inode GID;
 
 
 Below, there is the list of defined template descriptors:
 
         .field_show = ima_show_template_sig},
        {.field_id = "evmsig", .field_init = ima_eventevmsig_init,
         .field_show = ima_show_template_sig},
+       {.field_id = "iuid", .field_init = ima_eventinodeuid_init,
+        .field_show = ima_show_template_uint},
+       {.field_id = "igid", .field_init = ima_eventinodegid_init,
+        .field_show = ima_show_template_uint},
 };
 
 /*
 
        kfree(xattr_data);
        return rc;
 }
+
+static int ima_eventinodedac_init_common(struct ima_event_data *event_data,
+                                        struct ima_field_data *field_data,
+                                        bool get_uid)
+{
+       unsigned int id;
+
+       if (!event_data->file)
+               return 0;
+
+       if (get_uid)
+               id = i_uid_read(file_inode(event_data->file));
+       else
+               id = i_gid_read(file_inode(event_data->file));
+
+       if (ima_canonical_fmt) {
+               if (sizeof(id) == sizeof(u16))
+                       id = cpu_to_le16(id);
+               else
+                       id = cpu_to_le32(id);
+       }
+
+       return ima_write_template_field_data((void *)&id, sizeof(id),
+                                            DATA_FMT_UINT, field_data);
+}
+
+/*
+ *  ima_eventinodeuid_init - include the inode UID as part of the template
+ *  data
+ */
+int ima_eventinodeuid_init(struct ima_event_data *event_data,
+                          struct ima_field_data *field_data)
+{
+       return ima_eventinodedac_init_common(event_data, field_data, true);
+}
+
+/*
+ *  ima_eventinodegid_init - include the inode GID as part of the template
+ *  data
+ */
+int ima_eventinodegid_init(struct ima_event_data *event_data,
+                          struct ima_field_data *field_data)
+{
+       return ima_eventinodedac_init_common(event_data, field_data, false);
+}
 
                         struct ima_field_data *field_data);
 int ima_eventevmsig_init(struct ima_event_data *event_data,
                         struct ima_field_data *field_data);
+int ima_eventinodeuid_init(struct ima_event_data *event_data,
+                          struct ima_field_data *field_data);
+int ima_eventinodegid_init(struct ima_event_data *event_data,
+                          struct ima_field_data *field_data);
 #endif /* __LINUX_IMA_TEMPLATE_LIB_H */