2019-05-20 20:08:01 +03:00
/* SPDX-License-Identifier: GPL-2.0-or-later */
2012-09-13 18:17:21 +04:00
/* Asymmetric public-key cryptography key subtype
*
2020-06-15 09:50:08 +03:00
* See Documentation / crypto / asymmetric - keys . rst
2012-09-13 18:17:21 +04:00
*
* Copyright ( C ) 2012 Red Hat , Inc . All Rights Reserved .
* Written by David Howells ( dhowells @ redhat . com )
*/
# ifndef _KEYS_ASYMMETRIC_SUBTYPE_H
# define _KEYS_ASYMMETRIC_SUBTYPE_H
# include <linux/seq_file.h>
# include <keys/asymmetric-type.h>
2018-10-09 19:47:07 +03:00
struct kernel_pkey_query ;
struct kernel_pkey_params ;
2012-09-13 18:17:21 +04:00
struct public_key_signature ;
/*
* Keys of this type declare a subtype that indicates the handlers and
* capabilities .
*/
struct asymmetric_key_subtype {
struct module * owner ;
const char * name ;
unsigned short name_len ; /* length of name */
/* Describe a key of this subtype for /proc/keys */
void ( * describe ) ( const struct key * key , struct seq_file * m ) ;
/* Destroy a key of this subtype */
2016-04-06 18:13:33 +03:00
void ( * destroy ) ( void * payload_crypto , void * payload_auth ) ;
2012-09-13 18:17:21 +04:00
2018-10-09 19:47:07 +03:00
int ( * query ) ( const struct kernel_pkey_params * params ,
struct kernel_pkey_query * info ) ;
/* Encrypt/decrypt/sign data */
int ( * eds_op ) ( struct kernel_pkey_params * params ,
const void * in , void * out ) ;
2012-09-13 18:17:21 +04:00
/* Verify the signature on a key of this subtype (optional) */
int ( * verify_signature ) ( const struct key * key ,
const struct public_key_signature * sig ) ;
} ;
/**
* asymmetric_key_subtype - Get the subtype from an asymmetric key
* @ key : The key of interest .
*
* Retrieves and returns the subtype pointer of the asymmetric key from the
* type - specific data attached to the key .
*/
static inline
struct asymmetric_key_subtype * asymmetric_key_subtype ( const struct key * key )
{
2015-10-21 16:04:48 +03:00
return key - > payload . data [ asym_subtype ] ;
2012-09-13 18:17:21 +04:00
}
# endif /* _KEYS_ASYMMETRIC_SUBTYPE_H */