key-type.h

来自「linux 内核源代码」· C头文件 代码 · 共 113 行

H
113
字号
/* Definitions for key type implementations * * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. * Written by David Howells (dhowells@redhat.com) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Licence * as published by the Free Software Foundation; either version * 2 of the Licence, or (at your option) any later version. */#ifndef _LINUX_KEY_TYPE_H#define _LINUX_KEY_TYPE_H#include <linux/key.h>#ifdef CONFIG_KEYS/* * key under-construction record * - passed to the request_key actor if supplied */struct key_construction {	struct key	*key;	/* key being constructed */	struct key	*authkey;/* authorisation for key being constructed */};typedef int (*request_key_actor_t)(struct key_construction *key,				   const char *op, void *aux);/* * kernel managed key type definition */struct key_type {	/* name of the type */	const char *name;	/* default payload length for quota precalculation (optional)	 * - this can be used instead of calling key_payload_reserve(), that	 *   function only needs to be called if the real datalen is different	 */	size_t def_datalen;	/* instantiate a key of this type	 * - this method should call key_payload_reserve() to determine if the	 *   user's quota will hold the payload	 */	int (*instantiate)(struct key *key, const void *data, size_t datalen);	/* update a key of this type (optional)	 * - this method should call key_payload_reserve() to recalculate the	 *   quota consumption	 * - the key must be locked against read when modifying	 */	int (*update)(struct key *key, const void *data, size_t datalen);	/* match a key against a description */	int (*match)(const struct key *key, const void *desc);	/* clear some of the data from a key on revokation (optional)	 * - the key's semaphore will be write-locked by the caller	 */	void (*revoke)(struct key *key);	/* clear the data from a key (optional) */	void (*destroy)(struct key *key);	/* describe a key */	void (*describe)(const struct key *key, struct seq_file *p);	/* read a key's data (optional)	 * - permission checks will be done by the caller	 * - the key's semaphore will be readlocked by the caller	 * - should return the amount of data that could be read, no matter how	 *   much is copied into the buffer	 * - shouldn't do the copy if the buffer is NULL	 */	long (*read)(const struct key *key, char __user *buffer, size_t buflen);	/* handle request_key() for this type instead of invoking	 * /sbin/request-key (optional)	 * - key is the key to instantiate	 * - authkey is the authority to assume when instantiating this key	 * - op is the operation to be done, usually "create"	 * - the call must not return until the instantiation process has run	 *   its course	 */	request_key_actor_t request_key;	/* internal fields */	struct list_head	link;		/* link in types list */};extern struct key_type key_type_keyring;extern int register_key_type(struct key_type *ktype);extern void unregister_key_type(struct key_type *ktype);extern int key_payload_reserve(struct key *key, size_t datalen);extern int key_instantiate_and_link(struct key *key,				    const void *data,				    size_t datalen,				    struct key *keyring,				    struct key *instkey);extern int key_negate_and_link(struct key *key,			       unsigned timeout,			       struct key *keyring,			       struct key *instkey);extern void complete_request_key(struct key_construction *cons, int error);#endif /* CONFIG_KEYS */#endif /* _LINUX_KEY_TYPE_H */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?