On Mon, Jul 26, 2021 at 06:36:50PM +0200, Roberto Sassu wrote:
--- /dev/null +++ b/include/uapi/linux/diglim.h @@ -0,0 +1,51 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +/*
- Copyright (C) 2017-2021 Huawei Technologies Duesseldorf GmbH
- Author: Roberto Sassu roberto.sassu@huawei.com
- DIGLIM definitions exported to user space, useful for generating digest
- lists.
- */
+#ifndef _UAPI__LINUX_DIGLIM_H +#define _UAPI__LINUX_DIGLIM_H
+#include <linux/types.h> +#include <linux/hash_info.h>
+enum compact_types { COMPACT_KEY, COMPACT_PARSER, COMPACT_FILE,
COMPACT_METADATA, COMPACT_DIGEST_LIST, COMPACT__LAST };
+enum compact_modifiers { COMPACT_MOD_IMMUTABLE, COMPACT_MOD__LAST };
+enum compact_actions { COMPACT_ACTION_IMA_MEASURED,
COMPACT_ACTION_IMA_APPRAISED,
COMPACT_ACTION_IMA_APPRAISED_DIGSIG,
COMPACT_ACTION__LAST };
+enum ops { DIGEST_LIST_ADD, DIGEST_LIST_DEL, DIGEST_LIST_OP__LAST };
+/**
- struct compact_list_hdr - header of the following concatenated digests
- @version: version of the digest list
- @_reserved: field reserved for future use
- @type: type of digest list among enum compact_types
- @modifiers: additional attributes among (1 << enum compact_modifiers)
I do not understand this description, what does it mean?
- @algo: digest algorithm
Is this also a #define or an enum? Where is the list of them?
- @count: number of digests
- @datalen: length of concatenated digests
Where does this count and length come into play as nothing else is in this structure?
- A digest list is a set of blocks composed by struct compact_list_hdr and
- the following concatenated digests.
- */
+struct compact_list_hdr {
- __u8 version;
- __u8 _reserved;
You MUST check this for 0 today, and document it above. If not, you can never use it in the future.
- __le16 type;
- __le16 modifiers;
- __le16 algo;
- __le32 count;
- __le32 datalen;
+} __packed;
+#endif /*_UAPI__LINUX_DIGLIM_H*/
2.25.1