Commit | Line | Data |
---|---|---|
b4d0d230 | 1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
964f3b3b DH |
2 | /* Asymmetric public-key cryptography key subtype |
3 | * | |
0efaaa86 | 4 | * See Documentation/crypto/asymmetric-keys.rst |
964f3b3b DH |
5 | * |
6 | * Copyright (C) 2012 Red Hat, Inc. All Rights Reserved. | |
7 | * Written by David Howells (dhowells@redhat.com) | |
964f3b3b DH |
8 | */ |
9 | ||
10 | #ifndef _KEYS_ASYMMETRIC_SUBTYPE_H | |
11 | #define _KEYS_ASYMMETRIC_SUBTYPE_H | |
12 | ||
13 | #include <linux/seq_file.h> | |
14 | #include <keys/asymmetric-type.h> | |
15 | ||
5a307718 DH |
16 | struct kernel_pkey_query; |
17 | struct kernel_pkey_params; | |
964f3b3b DH |
18 | struct public_key_signature; |
19 | ||
20 | /* | |
21 | * Keys of this type declare a subtype that indicates the handlers and | |
22 | * capabilities. | |
23 | */ | |
24 | struct asymmetric_key_subtype { | |
25 | struct module *owner; | |
26 | const char *name; | |
27 | unsigned short name_len; /* length of name */ | |
28 | ||
29 | /* Describe a key of this subtype for /proc/keys */ | |
30 | void (*describe)(const struct key *key, struct seq_file *m); | |
31 | ||
32 | /* Destroy a key of this subtype */ | |
3b764563 | 33 | void (*destroy)(void *payload_crypto, void *payload_auth); |
964f3b3b | 34 | |
5a307718 DH |
35 | int (*query)(const struct kernel_pkey_params *params, |
36 | struct kernel_pkey_query *info); | |
37 | ||
38 | /* Encrypt/decrypt/sign data */ | |
39 | int (*eds_op)(struct kernel_pkey_params *params, | |
40 | const void *in, void *out); | |
41 | ||
964f3b3b DH |
42 | /* Verify the signature on a key of this subtype (optional) */ |
43 | int (*verify_signature)(const struct key *key, | |
44 | const struct public_key_signature *sig); | |
45 | }; | |
46 | ||
47 | /** | |
48 | * asymmetric_key_subtype - Get the subtype from an asymmetric key | |
49 | * @key: The key of interest. | |
50 | * | |
51 | * Retrieves and returns the subtype pointer of the asymmetric key from the | |
52 | * type-specific data attached to the key. | |
53 | */ | |
54 | static inline | |
55 | struct asymmetric_key_subtype *asymmetric_key_subtype(const struct key *key) | |
56 | { | |
146aa8b1 | 57 | return key->payload.data[asym_subtype]; |
964f3b3b DH |
58 | } |
59 | ||
60 | #endif /* _KEYS_ASYMMETRIC_SUBTYPE_H */ |