integrity.h (50b977481fce90aa5fbda55e330b9d722733e358) integrity.h (0d73a55208e94fc9fb6deaeea61438cd3280d4c0)
1/*
2 * Copyright (C) 2009-2010 IBM Corporation
3 *
4 * Authors:
5 * Mimi Zohar <zohar@us.ibm.com>
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License as

--- 15 unchanged lines hidden (view full) ---

24/*#define IMA_COLLECT 0x00000010 do not use this flag */
25#define IMA_COLLECTED 0x00000020
26#define IMA_AUDIT 0x00000040
27#define IMA_AUDITED 0x00000080
28
29/* iint cache flags */
30#define IMA_ACTION_FLAGS 0xff000000
31#define IMA_ACTION_RULE_FLAGS 0x06000000
1/*
2 * Copyright (C) 2009-2010 IBM Corporation
3 *
4 * Authors:
5 * Mimi Zohar <zohar@us.ibm.com>
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License as

--- 15 unchanged lines hidden (view full) ---

24/*#define IMA_COLLECT 0x00000010 do not use this flag */
25#define IMA_COLLECTED 0x00000020
26#define IMA_AUDIT 0x00000040
27#define IMA_AUDITED 0x00000080
28
29/* iint cache flags */
30#define IMA_ACTION_FLAGS 0xff000000
31#define IMA_ACTION_RULE_FLAGS 0x06000000
32#define IMA_DIGSIG 0x01000000
33#define IMA_DIGSIG_REQUIRED 0x02000000
34#define IMA_PERMIT_DIRECTIO 0x04000000
35#define IMA_NEW_FILE 0x08000000
36#define EVM_IMMUTABLE_DIGSIG 0x10000000
32#define IMA_DIGSIG_REQUIRED 0x01000000
33#define IMA_PERMIT_DIRECTIO 0x02000000
34#define IMA_NEW_FILE 0x04000000
35#define EVM_IMMUTABLE_DIGSIG 0x08000000
37
38#define IMA_DO_MASK (IMA_MEASURE | IMA_APPRAISE | IMA_AUDIT | \
39 IMA_APPRAISE_SUBMASK)
40#define IMA_DONE_MASK (IMA_MEASURED | IMA_APPRAISED | IMA_AUDITED | \
41 IMA_COLLECTED | IMA_APPRAISED_SUBMASK)
42
43/* iint subaction appraise cache flags */
44#define IMA_FILE_APPRAISE 0x00000100

--- 4 unchanged lines hidden (view full) ---

49#define IMA_BPRM_APPRAISED 0x00002000
50#define IMA_READ_APPRAISE 0x00004000
51#define IMA_READ_APPRAISED 0x00008000
52#define IMA_APPRAISE_SUBMASK (IMA_FILE_APPRAISE | IMA_MMAP_APPRAISE | \
53 IMA_BPRM_APPRAISE | IMA_READ_APPRAISE)
54#define IMA_APPRAISED_SUBMASK (IMA_FILE_APPRAISED | IMA_MMAP_APPRAISED | \
55 IMA_BPRM_APPRAISED | IMA_READ_APPRAISED)
56
36
37#define IMA_DO_MASK (IMA_MEASURE | IMA_APPRAISE | IMA_AUDIT | \
38 IMA_APPRAISE_SUBMASK)
39#define IMA_DONE_MASK (IMA_MEASURED | IMA_APPRAISED | IMA_AUDITED | \
40 IMA_COLLECTED | IMA_APPRAISED_SUBMASK)
41
42/* iint subaction appraise cache flags */
43#define IMA_FILE_APPRAISE 0x00000100

--- 4 unchanged lines hidden (view full) ---

48#define IMA_BPRM_APPRAISED 0x00002000
49#define IMA_READ_APPRAISE 0x00004000
50#define IMA_READ_APPRAISED 0x00008000
51#define IMA_APPRAISE_SUBMASK (IMA_FILE_APPRAISE | IMA_MMAP_APPRAISE | \
52 IMA_BPRM_APPRAISE | IMA_READ_APPRAISE)
53#define IMA_APPRAISED_SUBMASK (IMA_FILE_APPRAISED | IMA_MMAP_APPRAISED | \
54 IMA_BPRM_APPRAISED | IMA_READ_APPRAISED)
55
56/* iint cache atomic_flags */
57#define IMA_CHANGE_XATTR 0
58#define IMA_UPDATE_XATTR 1
59#define IMA_CHANGE_ATTR 2
60#define IMA_DIGSIG 3
61#define IMA_MUST_MEASURE 4
62
57enum evm_ima_xattr_type {
58 IMA_XATTR_DIGEST = 0x01,
59 EVM_XATTR_HMAC,
60 EVM_IMA_XATTR_DIGSIG,
61 IMA_XATTR_DIGEST_NG,
62 EVM_XATTR_PORTABLE_DIGSIG,
63 IMA_XATTR_LAST
64};

--- 32 unchanged lines hidden (view full) ---

97 __be32 keyid; /* IMA key identifier - not X509/PGP specific */
98 __be16 sig_size; /* signature size */
99 uint8_t sig[0]; /* signature payload */
100} __packed;
101
102/* integrity data associated with an inode */
103struct integrity_iint_cache {
104 struct rb_node rb_node; /* rooted in integrity_iint_tree */
63enum evm_ima_xattr_type {
64 IMA_XATTR_DIGEST = 0x01,
65 EVM_XATTR_HMAC,
66 EVM_IMA_XATTR_DIGSIG,
67 IMA_XATTR_DIGEST_NG,
68 EVM_XATTR_PORTABLE_DIGSIG,
69 IMA_XATTR_LAST
70};

--- 32 unchanged lines hidden (view full) ---

103 __be32 keyid; /* IMA key identifier - not X509/PGP specific */
104 __be16 sig_size; /* signature size */
105 uint8_t sig[0]; /* signature payload */
106} __packed;
107
108/* integrity data associated with an inode */
109struct integrity_iint_cache {
110 struct rb_node rb_node; /* rooted in integrity_iint_tree */
111 struct mutex mutex; /* protects: version, flags, digest */
105 struct inode *inode; /* back pointer to inode in question */
106 u64 version; /* track inode changes */
107 unsigned long flags;
108 unsigned long measured_pcrs;
112 struct inode *inode; /* back pointer to inode in question */
113 u64 version; /* track inode changes */
114 unsigned long flags;
115 unsigned long measured_pcrs;
116 unsigned long atomic_flags;
109 enum integrity_status ima_file_status:4;
110 enum integrity_status ima_mmap_status:4;
111 enum integrity_status ima_bprm_status:4;
112 enum integrity_status ima_read_status:4;
113 enum integrity_status evm_status:4;
114 struct ima_digest_data *ima_hash;
115};
116

--- 75 unchanged lines hidden ---
117 enum integrity_status ima_file_status:4;
118 enum integrity_status ima_mmap_status:4;
119 enum integrity_status ima_bprm_status:4;
120 enum integrity_status ima_read_status:4;
121 enum integrity_status evm_status:4;
122 struct ima_digest_data *ima_hash;
123};
124

--- 75 unchanged lines hidden ---