#define pr_fmt(fmt) …
#include <crypto/akcipher.h>
#include <crypto/public_key.h>
#include <crypto/sig.h>
#include <keys/asymmetric-subtype.h>
#include <linux/asn1.h>
#include <linux/err.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/seq_file.h>
#include <linux/slab.h>
#include <linux/string.h>
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;
static void public_key_describe(const struct key *asymmetric_key,
struct seq_file *m)
{ … }
void public_key_free(struct public_key *key)
{ … }
EXPORT_SYMBOL_GPL(…);
static void public_key_destroy(void *payload0, void *payload3)
{ … }
static int
software_key_determine_akcipher(const struct public_key *pkey,
const char *encoding, const char *hash_algo,
char alg_name[CRYPTO_MAX_ALG_NAME], bool *sig,
enum kernel_pkey_operation op)
{ … }
static u8 *pkey_pack_u32(u8 *dst, u32 val)
{ … }
static int software_key_query(const struct kernel_pkey_params *params,
struct kernel_pkey_query *info)
{ … }
static int software_key_eds_op(struct kernel_pkey_params *params,
const void *in, void *out)
{ … }
int public_key_verify_signature(const struct public_key *pkey,
const struct public_key_signature *sig)
{ … }
EXPORT_SYMBOL_GPL(…);
static int public_key_verify_signature_2(const struct key *key,
const struct public_key_signature *sig)
{ … }
struct asymmetric_key_subtype public_key_subtype = …;
EXPORT_SYMBOL_GPL(…);