aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2013-09-24 05:35:15 -0400
committerDavid Howells <dhowells@redhat.com>2013-09-24 05:35:15 -0400
commit16feef4340172b7dbb9cba60850e78fa6388adf1 (patch)
tree192d76bb3ba75b99c4a4746e2d47996b92b46e39 /include/linux
parent7e55ca6dcd07b45619035df343c9614a3ab35034 (diff)
KEYS: Consolidate the concept of an 'index key' for key access
Consolidate the concept of an 'index key' for accessing keys. The index key is the search term needed to find a key directly - basically the key type and the key description. We can add to that the description length. This will be useful when turning a keyring into an associative array rather than just a pointer block. Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/key.h21
1 files changed, 16 insertions, 5 deletions
diff --git a/include/linux/key.h b/include/linux/key.h
index 51bce2950de4..d573e820a23d 100644
--- a/include/linux/key.h
+++ b/include/linux/key.h
@@ -82,6 +82,12 @@ struct key_owner;
82struct keyring_list; 82struct keyring_list;
83struct keyring_name; 83struct keyring_name;
84 84
85struct keyring_index_key {
86 struct key_type *type;
87 const char *description;
88 size_t desc_len;
89};
90
85/*****************************************************************************/ 91/*****************************************************************************/
86/* 92/*
87 * key reference with possession attribute handling 93 * key reference with possession attribute handling
@@ -129,7 +135,6 @@ struct key {
129 struct list_head graveyard_link; 135 struct list_head graveyard_link;
130 struct rb_node serial_node; 136 struct rb_node serial_node;
131 }; 137 };
132 struct key_type *type; /* type of key */
133 struct rw_semaphore sem; /* change vs change sem */ 138 struct rw_semaphore sem; /* change vs change sem */
134 struct key_user *user; /* owner of this key */ 139 struct key_user *user; /* owner of this key */
135 void *security; /* security data for this key */ 140 void *security; /* security data for this key */
@@ -163,12 +168,18 @@ struct key {
163#define KEY_FLAG_ROOT_CAN_CLEAR 6 /* set if key can be cleared by root without permission */ 168#define KEY_FLAG_ROOT_CAN_CLEAR 6 /* set if key can be cleared by root without permission */
164#define KEY_FLAG_INVALIDATED 7 /* set if key has been invalidated */ 169#define KEY_FLAG_INVALIDATED 7 /* set if key has been invalidated */
165 170
166 /* the description string 171 /* the key type and key description string
167 * - this is used to match a key against search criteria 172 * - the desc is used to match a key against search criteria
168 * - this should be a printable string 173 * - it should be a printable string
169 * - eg: for krb5 AFS, this might be "afs@REDHAT.COM" 174 * - eg: for krb5 AFS, this might be "afs@REDHAT.COM"
170 */ 175 */
171 char *description; 176 union {
177 struct keyring_index_key index_key;
178 struct {
179 struct key_type *type; /* type of key */
180 char *description;
181 };
182 };
172 183
173 /* type specific data 184 /* type specific data
174 * - this is used by the keyring type to index the name 185 * - this is used by the keyring type to index the name