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.h20
1 files changed, 12 insertions, 8 deletions
diff --git a/include/linux/key.h b/include/linux/key.h
index 53513a3be53b..cbf464ad9589 100644
--- a/include/linux/key.h
+++ b/include/linux/key.h
@@ -177,6 +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);
181
180struct key_type { 182struct key_type {
181 /* name of the type */ 183 /* name of the type */
182 const char *name; 184 const char *name;
@@ -193,14 +195,6 @@ struct key_type {
193 */ 195 */
194 int (*instantiate)(struct key *key, const void *data, size_t datalen); 196 int (*instantiate)(struct key *key, const void *data, size_t datalen);
195 197
196 /* duplicate a key of this type (optional)
197 * - the source key will be locked against change
198 * - the new description will be attached
199 * - the quota will have been adjusted automatically from
200 * source->quotalen
201 */
202 int (*duplicate)(struct key *key, const struct key *source);
203
204 /* update a key of this type (optional) 198 /* update a key of this type (optional)
205 * - this method should call key_payload_reserve() to recalculate the 199 * - this method should call key_payload_reserve() to recalculate the
206 * quota consumption 200 * quota consumption
@@ -226,6 +220,16 @@ struct key_type {
226 */ 220 */
227 long (*read)(const struct key *key, char __user *buffer, size_t buflen); 221 long (*read)(const struct key *key, char __user *buffer, size_t buflen);
228 222
223 /* handle request_key() for this type instead of invoking
224 * /sbin/request-key (optional)
225 * - key is the key to instantiate
226 * - authkey is the authority to assume when instantiating this key
227 * - op is the operation to be done, usually "create"
228 * - the call must not return until the instantiation process has run
229 * its course
230 */
231 request_key_actor_t request_key;
232
229 /* internal fields */ 233 /* internal fields */
230 struct list_head link; /* link in types list */ 234 struct list_head link; /* link in types list */
231}; 235};