Branch data Line data Source code
1 : : /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 : : /* Asymmetric public-key cryptography key subtype 3 : : * 4 : : * See Documentation/crypto/asymmetric-keys.txt 5 : : * 6 : : * Copyright (C) 2012 Red Hat, Inc. All Rights Reserved. 7 : : * Written by David Howells (dhowells@redhat.com) 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 : : 16 : : struct kernel_pkey_query; 17 : : struct kernel_pkey_params; 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 */ 33 : : void (*destroy)(void *payload_crypto, void *payload_auth); 34 : : 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 : : 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 : : { 57 : 404 : return key->payload.data[asym_subtype]; 58 : : } 59 : : 60 : : #endif /* _KEYS_ASYMMETRIC_SUBTYPE_H */