Commit e9e349b051d98799b743ebf248cc2d986fedf090
Committed by
James Morris
1 parent
76aac0e9a1
Exists in
master
and in
39 other branches
KEYS: Disperse linux/key_ui.h
Disperse the bits of linux/key_ui.h as the reason they were put here (keyfs) didn't get in. Signed-off-by: David Howells <dhowells@redhat.com> Reviewed-by: James Morris <jmorris@namei.org> Signed-off-by: James Morris <jmorris@namei.org>
Showing 5 changed files with 64 additions and 67 deletions Side-by-side Diff
include/keys/keyring-type.h
1 | +/* Keyring key type | |
2 | + * | |
3 | + * Copyright (C) 2008 Red Hat, Inc. All Rights Reserved. | |
4 | + * Written by David Howells (dhowells@redhat.com) | |
5 | + * | |
6 | + * This program is free software; you can redistribute it and/or | |
7 | + * modify it under the terms of the GNU General Public License | |
8 | + * as published by the Free Software Foundation; either version | |
9 | + * 2 of the License, or (at your option) any later version. | |
10 | + */ | |
11 | + | |
12 | +#ifndef _KEYS_KEYRING_TYPE_H | |
13 | +#define _KEYS_KEYRING_TYPE_H | |
14 | + | |
15 | +#include <linux/key.h> | |
16 | +#include <linux/rcupdate.h> | |
17 | + | |
18 | +/* | |
19 | + * the keyring payload contains a list of the keys to which the keyring is | |
20 | + * subscribed | |
21 | + */ | |
22 | +struct keyring_list { | |
23 | + struct rcu_head rcu; /* RCU deletion hook */ | |
24 | + unsigned short maxkeys; /* max keys this list can hold */ | |
25 | + unsigned short nkeys; /* number of keys currently held */ | |
26 | + unsigned short delkey; /* key to be unlinked by RCU */ | |
27 | + struct key *keys[0]; | |
28 | +}; | |
29 | + | |
30 | + | |
31 | +#endif /* _KEYS_KEYRING_TYPE_H */ |
include/linux/key-ui.h
1 | -/* key-ui.h: key userspace interface stuff | |
2 | - * | |
3 | - * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved. | |
4 | - * Written by David Howells (dhowells@redhat.com) | |
5 | - * | |
6 | - * This program is free software; you can redistribute it and/or | |
7 | - * modify it under the terms of the GNU General Public License | |
8 | - * as published by the Free Software Foundation; either version | |
9 | - * 2 of the License, or (at your option) any later version. | |
10 | - */ | |
11 | - | |
12 | -#ifndef _LINUX_KEY_UI_H | |
13 | -#define _LINUX_KEY_UI_H | |
14 | - | |
15 | -#include <linux/key.h> | |
16 | - | |
17 | -/* the key tree */ | |
18 | -extern struct rb_root key_serial_tree; | |
19 | -extern spinlock_t key_serial_lock; | |
20 | - | |
21 | -/* required permissions */ | |
22 | -#define KEY_VIEW 0x01 /* require permission to view attributes */ | |
23 | -#define KEY_READ 0x02 /* require permission to read content */ | |
24 | -#define KEY_WRITE 0x04 /* require permission to update / modify */ | |
25 | -#define KEY_SEARCH 0x08 /* require permission to search (keyring) or find (key) */ | |
26 | -#define KEY_LINK 0x10 /* require permission to link */ | |
27 | -#define KEY_SETATTR 0x20 /* require permission to change attributes */ | |
28 | -#define KEY_ALL 0x3f /* all the above permissions */ | |
29 | - | |
30 | -/* | |
31 | - * the keyring payload contains a list of the keys to which the keyring is | |
32 | - * subscribed | |
33 | - */ | |
34 | -struct keyring_list { | |
35 | - struct rcu_head rcu; /* RCU deletion hook */ | |
36 | - unsigned short maxkeys; /* max keys this list can hold */ | |
37 | - unsigned short nkeys; /* number of keys currently held */ | |
38 | - unsigned short delkey; /* key to be unlinked by RCU */ | |
39 | - struct key *keys[0]; | |
40 | -}; | |
41 | - | |
42 | -/* | |
43 | - * check to see whether permission is granted to use a key in the desired way | |
44 | - */ | |
45 | -extern int key_task_permission(const key_ref_t key_ref, | |
46 | - struct task_struct *context, | |
47 | - key_perm_t perm); | |
48 | - | |
49 | -static inline int key_permission(const key_ref_t key_ref, key_perm_t perm) | |
50 | -{ | |
51 | - return key_task_permission(key_ref, current, perm); | |
52 | -} | |
53 | - | |
54 | -extern key_ref_t lookup_user_key(struct task_struct *context, | |
55 | - key_serial_t id, int create, int partial, | |
56 | - key_perm_t perm); | |
57 | - | |
58 | -extern long join_session_keyring(const char *name); | |
59 | - | |
60 | -extern struct key_type *key_type_lookup(const char *type); | |
61 | -extern void key_type_put(struct key_type *ktype); | |
62 | - | |
63 | -#define key_negative_timeout 60 /* default timeout on a negative key's existence */ | |
64 | - | |
65 | - | |
66 | -#endif /* _LINUX_KEY_UI_H */ |
security/keys/internal.h
... | ... | @@ -13,7 +13,6 @@ |
13 | 13 | #define _INTERNAL_H |
14 | 14 | |
15 | 15 | #include <linux/key-type.h> |
16 | -#include <linux/key-ui.h> | |
17 | 16 | |
18 | 17 | static inline __attribute__((format(printf, 1, 2))) |
19 | 18 | void no_printk(const char *fmt, ...) |
... | ... | @@ -82,6 +81,9 @@ |
82 | 81 | extern wait_queue_head_t request_key_conswq; |
83 | 82 | |
84 | 83 | |
84 | +extern struct key_type *key_type_lookup(const char *type); | |
85 | +extern void key_type_put(struct key_type *ktype); | |
86 | + | |
85 | 87 | extern int __key_link(struct key *keyring, struct key *key); |
86 | 88 | |
87 | 89 | extern key_ref_t __keyring_search_one(key_ref_t keyring_ref, |
... | ... | @@ -117,6 +119,33 @@ |
117 | 119 | void *aux, |
118 | 120 | struct key *dest_keyring, |
119 | 121 | unsigned long flags); |
122 | + | |
123 | +extern key_ref_t lookup_user_key(struct task_struct *context, | |
124 | + key_serial_t id, int create, int partial, | |
125 | + key_perm_t perm); | |
126 | + | |
127 | +extern long join_session_keyring(const char *name); | |
128 | + | |
129 | +/* | |
130 | + * check to see whether permission is granted to use a key in the desired way | |
131 | + */ | |
132 | +extern int key_task_permission(const key_ref_t key_ref, | |
133 | + struct task_struct *context, | |
134 | + key_perm_t perm); | |
135 | + | |
136 | +static inline int key_permission(const key_ref_t key_ref, key_perm_t perm) | |
137 | +{ | |
138 | + return key_task_permission(key_ref, current, perm); | |
139 | +} | |
140 | + | |
141 | +/* required permissions */ | |
142 | +#define KEY_VIEW 0x01 /* require permission to view attributes */ | |
143 | +#define KEY_READ 0x02 /* require permission to read content */ | |
144 | +#define KEY_WRITE 0x04 /* require permission to update / modify */ | |
145 | +#define KEY_SEARCH 0x08 /* require permission to search (keyring) or find (key) */ | |
146 | +#define KEY_LINK 0x10 /* require permission to link */ | |
147 | +#define KEY_SETATTR 0x20 /* require permission to change attributes */ | |
148 | +#define KEY_ALL 0x3f /* all the above permissions */ | |
120 | 149 | |
121 | 150 | /* |
122 | 151 | * request_key authorisation |
security/keys/keyring.c
security/keys/request_key.c