Blame view
crypto/akcipher.c
4.04 KB
2874c5fd2 treewide: Replace... |
1 |
// SPDX-License-Identifier: GPL-2.0-or-later |
3c339ab83 crypto: akcipher ... |
2 3 4 5 6 |
/* * Public Key Encryption * * Copyright (c) 2015, Intel Corporation * Authors: Tadeusz Struk <tadeusz.struk@intel.com> |
3c339ab83 crypto: akcipher ... |
7 8 9 10 11 12 13 14 |
*/ #include <linux/errno.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/seq_file.h> #include <linux/slab.h> #include <linux/string.h> #include <linux/crypto.h> |
d8c34b949 crypto: Replaced ... |
15 |
#include <linux/compiler.h> |
3c339ab83 crypto: akcipher ... |
16 17 18 19 |
#include <crypto/algapi.h> #include <linux/cryptouser.h> #include <net/netlink.h> #include <crypto/akcipher.h> |
28a4618ad crypto: akcipher ... |
20 |
#include <crypto/internal/akcipher.h> |
3c339ab83 crypto: akcipher ... |
21 22 23 24 25 26 |
#include "internal.h" #ifdef CONFIG_NET static int crypto_akcipher_report(struct sk_buff *skb, struct crypto_alg *alg) { struct crypto_report_akcipher rakcipher; |
37db69e0b crypto: user - cl... |
27 |
memset(&rakcipher, 0, sizeof(rakcipher)); |
3c339ab83 crypto: akcipher ... |
28 |
|
37db69e0b crypto: user - cl... |
29 |
strscpy(rakcipher.type, "akcipher", sizeof(rakcipher.type)); |
3c339ab83 crypto: akcipher ... |
30 |
|
37db69e0b crypto: user - cl... |
31 32 |
return nla_put(skb, CRYPTOCFGA_REPORT_AKCIPHER, sizeof(rakcipher), &rakcipher); |
3c339ab83 crypto: akcipher ... |
33 34 35 36 37 38 39 40 41 |
} #else static int crypto_akcipher_report(struct sk_buff *skb, struct crypto_alg *alg) { return -ENOSYS; } #endif static void crypto_akcipher_show(struct seq_file *m, struct crypto_alg *alg) |
d8c34b949 crypto: Replaced ... |
42 |
__maybe_unused; |
3c339ab83 crypto: akcipher ... |
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
static void crypto_akcipher_show(struct seq_file *m, struct crypto_alg *alg) { seq_puts(m, "type : akcipher "); } static void crypto_akcipher_exit_tfm(struct crypto_tfm *tfm) { struct crypto_akcipher *akcipher = __crypto_akcipher_tfm(tfm); struct akcipher_alg *alg = crypto_akcipher_alg(akcipher); alg->exit(akcipher); } static int crypto_akcipher_init_tfm(struct crypto_tfm *tfm) { struct crypto_akcipher *akcipher = __crypto_akcipher_tfm(tfm); struct akcipher_alg *alg = crypto_akcipher_alg(akcipher); if (alg->exit) akcipher->base.exit = crypto_akcipher_exit_tfm; if (alg->init) return alg->init(akcipher); return 0; } |
28a4618ad crypto: akcipher ... |
71 72 73 74 75 76 |
static void crypto_akcipher_free_instance(struct crypto_instance *inst) { struct akcipher_instance *akcipher = akcipher_instance(inst); akcipher->free(akcipher); } |
3c339ab83 crypto: akcipher ... |
77 78 79 |
static const struct crypto_type crypto_akcipher_type = { .extsize = crypto_alg_extsize, .init_tfm = crypto_akcipher_init_tfm, |
28a4618ad crypto: akcipher ... |
80 |
.free = crypto_akcipher_free_instance, |
3c339ab83 crypto: akcipher ... |
81 82 83 84 85 86 87 88 89 |
#ifdef CONFIG_PROC_FS .show = crypto_akcipher_show, #endif .report = crypto_akcipher_report, .maskclear = ~CRYPTO_ALG_TYPE_MASK, .maskset = CRYPTO_ALG_TYPE_MASK, .type = CRYPTO_ALG_TYPE_AKCIPHER, .tfmsize = offsetof(struct crypto_akcipher, base), }; |
73bed26f7 crypto: akcipher ... |
90 91 92 |
int crypto_grab_akcipher(struct crypto_akcipher_spawn *spawn, struct crypto_instance *inst, const char *name, u32 type, u32 mask) |
28a4618ad crypto: akcipher ... |
93 94 |
{ spawn->base.frontend = &crypto_akcipher_type; |
de95c9574 crypto: algapi - ... |
95 |
return crypto_grab_spawn(&spawn->base, inst, name, type, mask); |
28a4618ad crypto: akcipher ... |
96 97 |
} EXPORT_SYMBOL_GPL(crypto_grab_akcipher); |
3c339ab83 crypto: akcipher ... |
98 99 100 101 102 103 |
struct crypto_akcipher *crypto_alloc_akcipher(const char *alg_name, u32 type, u32 mask) { return crypto_alloc_tfm(alg_name, &crypto_akcipher_type, type, mask); } EXPORT_SYMBOL_GPL(crypto_alloc_akcipher); |
28a4618ad crypto: akcipher ... |
104 |
static void akcipher_prepare_alg(struct akcipher_alg *alg) |
3c339ab83 crypto: akcipher ... |
105 106 107 108 109 110 |
{ struct crypto_alg *base = &alg->base; base->cra_type = &crypto_akcipher_type; base->cra_flags &= ~CRYPTO_ALG_TYPE_MASK; base->cra_flags |= CRYPTO_ALG_TYPE_AKCIPHER; |
28a4618ad crypto: akcipher ... |
111 |
} |
78a0324f4 crypto: akcipher ... |
112 113 114 115 |
static int akcipher_default_op(struct akcipher_request *req) { return -ENOSYS; } |
28a4618ad crypto: akcipher ... |
116 117 118 |
int crypto_register_akcipher(struct akcipher_alg *alg) { struct crypto_alg *base = &alg->base; |
78a0324f4 crypto: akcipher ... |
119 120 121 122 123 124 125 126 |
if (!alg->sign) alg->sign = akcipher_default_op; if (!alg->verify) alg->verify = akcipher_default_op; if (!alg->encrypt) alg->encrypt = akcipher_default_op; if (!alg->decrypt) alg->decrypt = akcipher_default_op; |
28a4618ad crypto: akcipher ... |
127 |
akcipher_prepare_alg(alg); |
3c339ab83 crypto: akcipher ... |
128 129 130 131 132 133 134 135 136 |
return crypto_register_alg(base); } EXPORT_SYMBOL_GPL(crypto_register_akcipher); void crypto_unregister_akcipher(struct akcipher_alg *alg) { crypto_unregister_alg(&alg->base); } EXPORT_SYMBOL_GPL(crypto_unregister_akcipher); |
28a4618ad crypto: akcipher ... |
137 138 139 |
int akcipher_register_instance(struct crypto_template *tmpl, struct akcipher_instance *inst) { |
d4fdc2dfa crypto: algapi - ... |
140 141 |
if (WARN_ON(!inst->free)) return -EINVAL; |
28a4618ad crypto: akcipher ... |
142 143 144 145 |
akcipher_prepare_alg(&inst->alg); return crypto_register_instance(tmpl, akcipher_crypto_instance(inst)); } EXPORT_SYMBOL_GPL(akcipher_register_instance); |
3c339ab83 crypto: akcipher ... |
146 |
MODULE_LICENSE("GPL"); |
338a9de03 crypto: akcipher ... |
147 |
MODULE_DESCRIPTION("Generic public key cipher type"); |