aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/key.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/key.h')
-rw-r--r--include/linux/key.h21
1 files changed, 17 insertions, 4 deletions
diff --git a/include/linux/key.h b/include/linux/key.h
index e81ebf910d0..169f05e4863 100644
--- a/include/linux/key.h
+++ b/include/linux/key.h
@@ -177,7 +177,8 @@ struct key {
177/* 177/*
178 * kernel managed key type definition 178 * kernel managed key type definition
179 */ 179 */
180typedef int (*request_key_actor_t)(struct key *key, struct key *authkey, const char *op); 180typedef int (*request_key_actor_t)(struct key *key, struct key *authkey,
181 const char *op, void *aux);
181 182
182struct key_type { 183struct key_type {
183 /* name of the type */ 184 /* name of the type */
@@ -248,7 +249,14 @@ extern struct key *key_alloc(struct key_type *type,
248 const char *desc, 249 const char *desc,
249 uid_t uid, gid_t gid, 250 uid_t uid, gid_t gid,
250 struct task_struct *ctx, 251 struct task_struct *ctx,
251 key_perm_t perm, int not_in_quota); 252 key_perm_t perm,
253 unsigned long flags);
254
255
256#define KEY_ALLOC_IN_QUOTA 0x0000 /* add to quota, reject if would overrun */
257#define KEY_ALLOC_QUOTA_OVERRUN 0x0001 /* add to quota, permit even if overrun */
258#define KEY_ALLOC_NOT_IN_QUOTA 0x0002 /* not in quota */
259
252extern int key_payload_reserve(struct key *key, size_t datalen); 260extern int key_payload_reserve(struct key *key, size_t datalen);
253extern int key_instantiate_and_link(struct key *key, 261extern int key_instantiate_and_link(struct key *key,
254 const void *data, 262 const void *data,
@@ -278,6 +286,11 @@ extern struct key *request_key(struct key_type *type,
278 const char *description, 286 const char *description,
279 const char *callout_info); 287 const char *callout_info);
280 288
289extern struct key *request_key_with_auxdata(struct key_type *type,
290 const char *description,
291 const char *callout_info,
292 void *aux);
293
281extern int key_validate(struct key *key); 294extern int key_validate(struct key *key);
282 295
283extern key_ref_t key_create_or_update(key_ref_t keyring, 296extern key_ref_t key_create_or_update(key_ref_t keyring,
@@ -285,7 +298,7 @@ extern key_ref_t key_create_or_update(key_ref_t keyring,
285 const char *description, 298 const char *description,
286 const void *payload, 299 const void *payload,
287 size_t plen, 300 size_t plen,
288 int not_in_quota); 301 unsigned long flags);
289 302
290extern int key_update(key_ref_t key, 303extern int key_update(key_ref_t key,
291 const void *payload, 304 const void *payload,
@@ -299,7 +312,7 @@ extern int key_unlink(struct key *keyring,
299 312
300extern struct key *keyring_alloc(const char *description, uid_t uid, gid_t gid, 313extern struct key *keyring_alloc(const char *description, uid_t uid, gid_t gid,
301 struct task_struct *ctx, 314 struct task_struct *ctx,
302 int not_in_quota, 315 unsigned long flags,
303 struct key *dest); 316 struct key *dest);
304 317
305extern int keyring_clear(struct key *keyring); 318extern int keyring_clear(struct key *keyring);