diff options
| author | James Morris <james.l.morris@oracle.com> | 2014-09-22 08:54:56 -0400 |
|---|---|---|
| committer | James Morris <james.l.morris@oracle.com> | 2014-09-22 08:54:56 -0400 |
| commit | 35e1efd25a9e7d5cf2884fa23441ab87353849bb (patch) | |
| tree | aa0e546b39fa4d0a434919ff106721dfc3777a3d /include/linux | |
| parent | 6f98e892884c32b9273ecce1332b849bcad3b8b1 (diff) | |
| parent | d1ac5540455c3a2a11e943e19e2dc044cebe147d (diff) | |
Merge tag 'keys-next-20140922' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs into next
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/kernel.h | 1 | ||||
| -rw-r--r-- | include/linux/key-type.h | 34 |
2 files changed, 28 insertions, 7 deletions
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 4c52907a6d8b..89a0b8e5a952 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h | |||
| @@ -500,6 +500,7 @@ static inline char * __deprecated pack_hex_byte(char *buf, u8 byte) | |||
| 500 | 500 | ||
| 501 | extern int hex_to_bin(char ch); | 501 | extern int hex_to_bin(char ch); |
| 502 | extern int __must_check hex2bin(u8 *dst, const char *src, size_t count); | 502 | extern int __must_check hex2bin(u8 *dst, const char *src, size_t count); |
| 503 | extern char *bin2hex(char *dst, const void *src, size_t count); | ||
| 503 | 504 | ||
| 504 | int mac_pton(const char *s, u8 *mac); | 505 | int mac_pton(const char *s, u8 *mac); |
| 505 | 506 | ||
diff --git a/include/linux/key-type.h b/include/linux/key-type.h index 44792ee649de..ff9f1d394235 100644 --- a/include/linux/key-type.h +++ b/include/linux/key-type.h | |||
| @@ -53,6 +53,24 @@ typedef int (*request_key_actor_t)(struct key_construction *key, | |||
| 53 | const char *op, void *aux); | 53 | const char *op, void *aux); |
| 54 | 54 | ||
| 55 | /* | 55 | /* |
| 56 | * Preparsed matching criterion. | ||
| 57 | */ | ||
| 58 | struct key_match_data { | ||
| 59 | /* Comparison function, defaults to exact description match, but can be | ||
| 60 | * overridden by type->match_preparse(). Should return true if a match | ||
| 61 | * is found and false if not. | ||
| 62 | */ | ||
| 63 | bool (*cmp)(const struct key *key, | ||
| 64 | const struct key_match_data *match_data); | ||
| 65 | |||
| 66 | const void *raw_data; /* Raw match data */ | ||
| 67 | void *preparsed; /* For ->match_preparse() to stash stuff */ | ||
| 68 | unsigned lookup_type; /* Type of lookup for this search. */ | ||
| 69 | #define KEYRING_SEARCH_LOOKUP_DIRECT 0x0000 /* Direct lookup by description. */ | ||
| 70 | #define KEYRING_SEARCH_LOOKUP_ITERATE 0x0001 /* Iterative search. */ | ||
| 71 | }; | ||
| 72 | |||
| 73 | /* | ||
| 56 | * kernel managed key type definition | 74 | * kernel managed key type definition |
| 57 | */ | 75 | */ |
| 58 | struct key_type { | 76 | struct key_type { |
| @@ -65,11 +83,6 @@ struct key_type { | |||
| 65 | */ | 83 | */ |
| 66 | size_t def_datalen; | 84 | size_t def_datalen; |
| 67 | 85 | ||
| 68 | /* Default key search algorithm. */ | ||
| 69 | unsigned def_lookup_type; | ||
| 70 | #define KEYRING_SEARCH_LOOKUP_DIRECT 0x0000 /* Direct lookup by description. */ | ||
| 71 | #define KEYRING_SEARCH_LOOKUP_ITERATE 0x0001 /* Iterative search. */ | ||
| 72 | |||
| 73 | /* vet a description */ | 86 | /* vet a description */ |
| 74 | int (*vet_description)(const char *description); | 87 | int (*vet_description)(const char *description); |
| 75 | 88 | ||
| @@ -96,8 +109,15 @@ struct key_type { | |||
| 96 | */ | 109 | */ |
| 97 | int (*update)(struct key *key, struct key_preparsed_payload *prep); | 110 | int (*update)(struct key *key, struct key_preparsed_payload *prep); |
| 98 | 111 | ||
| 99 | /* match a key against a description */ | 112 | /* Preparse the data supplied to ->match() (optional). The |
| 100 | int (*match)(const struct key *key, const void *desc); | 113 | * data to be preparsed can be found in match_data->raw_data. |
| 114 | * The lookup type can also be set by this function. | ||
| 115 | */ | ||
| 116 | int (*match_preparse)(struct key_match_data *match_data); | ||
| 117 | |||
| 118 | /* Free preparsed match data (optional). This should be supplied it | ||
| 119 | * ->match_preparse() is supplied. */ | ||
| 120 | void (*match_free)(struct key_match_data *match_data); | ||
| 101 | 121 | ||
| 102 | /* clear some of the data from a key on revokation (optional) | 122 | /* clear some of the data from a key on revokation (optional) |
| 103 | * - the key's semaphore will be write-locked by the caller | 123 | * - the key's semaphore will be write-locked by the caller |
