Use CRYPTO_API() etc. from include/crypto/api.h in preparation for compilation as part of support for FIPS 140 standalone modules. Generated using: ./fipsify.py --config CONFIG_CRYPTO_KPP2 --source crypto/kpp.c --header include/crypto/kpp.h include/crypto/internal/kpp.h Signed-off-by: Vegard Nossum <vegard.nossum@xxxxxxxxxx> --- crypto/fips140-api.c | 19 +++++++++++++++++++ crypto/kpp.c | 24 ++++++++++++------------ include/crypto/internal/kpp.h | 21 ++++++++++++++------- include/crypto/kpp.h | 9 +++++++-- 4 files changed, 52 insertions(+), 21 deletions(-) diff --git a/crypto/fips140-api.c b/crypto/fips140-api.c index 09f5818cebe2..9c9f9d57f99d 100644 --- a/crypto/fips140-api.c +++ b/crypto/fips140-api.c @@ -423,3 +423,22 @@ DEFINE_CRYPTO_API_STUB(aead_exit_geniv); #endif +/* + * crypto/kpp.c + */ +#if !IS_BUILTIN(CONFIG_CRYPTO_KPP2) + +#include <crypto/kpp.h> + +DEFINE_CRYPTO_API_STUB(crypto_alloc_kpp); +DEFINE_CRYPTO_API_STUB(crypto_has_kpp); + +#include <crypto/internal/kpp.h> + +DEFINE_CRYPTO_API_STUB(crypto_register_kpp); +DEFINE_CRYPTO_API_STUB(crypto_unregister_kpp); +DEFINE_CRYPTO_API_STUB(kpp_register_instance); +DEFINE_CRYPTO_API_STUB(crypto_grab_kpp); + +#endif + diff --git a/crypto/kpp.c b/crypto/kpp.c index 2e0cefe7a25f..7769cfe8bfde 100644 --- a/crypto/kpp.c +++ b/crypto/kpp.c @@ -83,26 +83,26 @@ static const struct crypto_type crypto_kpp_type = { .algsize = offsetof(struct kpp_alg, base), }; -struct crypto_kpp *crypto_alloc_kpp(const char *alg_name, u32 type, u32 mask) +struct crypto_kpp *CRYPTO_API(crypto_alloc_kpp)(const char *alg_name, u32 type, u32 mask) { return crypto_alloc_tfm(alg_name, &crypto_kpp_type, type, mask); } -EXPORT_SYMBOL_GPL(crypto_alloc_kpp); +DEFINE_CRYPTO_API(crypto_alloc_kpp); -int crypto_grab_kpp(struct crypto_kpp_spawn *spawn, +int CRYPTO_API(crypto_grab_kpp)(struct crypto_kpp_spawn *spawn, struct crypto_instance *inst, const char *name, u32 type, u32 mask) { spawn->base.frontend = &crypto_kpp_type; return crypto_grab_spawn(&spawn->base, inst, name, type, mask); } -EXPORT_SYMBOL_GPL(crypto_grab_kpp); +DEFINE_CRYPTO_API(crypto_grab_kpp); -int crypto_has_kpp(const char *alg_name, u32 type, u32 mask) +int CRYPTO_API(crypto_has_kpp)(const char *alg_name, u32 type, u32 mask) { return crypto_type_has_alg(alg_name, &crypto_kpp_type, type, mask); } -EXPORT_SYMBOL_GPL(crypto_has_kpp); +DEFINE_CRYPTO_API(crypto_has_kpp); static void kpp_prepare_alg(struct kpp_alg *alg) { @@ -113,22 +113,22 @@ static void kpp_prepare_alg(struct kpp_alg *alg) base->cra_flags |= CRYPTO_ALG_TYPE_KPP; } -int crypto_register_kpp(struct kpp_alg *alg) +int CRYPTO_API(crypto_register_kpp)(struct kpp_alg *alg) { struct crypto_alg *base = &alg->base; kpp_prepare_alg(alg); return crypto_register_alg(base); } -EXPORT_SYMBOL_GPL(crypto_register_kpp); +DEFINE_CRYPTO_API(crypto_register_kpp); -void crypto_unregister_kpp(struct kpp_alg *alg) +void CRYPTO_API(crypto_unregister_kpp)(struct kpp_alg *alg) { crypto_unregister_alg(&alg->base); } -EXPORT_SYMBOL_GPL(crypto_unregister_kpp); +DEFINE_CRYPTO_API(crypto_unregister_kpp); -int kpp_register_instance(struct crypto_template *tmpl, +int CRYPTO_API(kpp_register_instance)(struct crypto_template *tmpl, struct kpp_instance *inst) { if (WARN_ON(!inst->free)) @@ -138,7 +138,7 @@ int kpp_register_instance(struct crypto_template *tmpl, return crypto_register_instance(tmpl, kpp_crypto_instance(inst)); } -EXPORT_SYMBOL_GPL(kpp_register_instance); +DEFINE_CRYPTO_API(kpp_register_instance); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Key-agreement Protocol Primitives"); diff --git a/include/crypto/internal/kpp.h b/include/crypto/internal/kpp.h index 0a6db8c4a9a0..f69e1e311ef4 100644 --- a/include/crypto/internal/kpp.h +++ b/include/crypto/internal/kpp.h @@ -7,6 +7,8 @@ */ #ifndef _CRYPTO_KPP_INT_H #define _CRYPTO_KPP_INT_H + +#include <crypto/api.h> #include <crypto/kpp.h> #include <crypto/algapi.h> @@ -159,7 +161,9 @@ static inline void *kpp_instance_ctx(struct kpp_instance *inst) * * Return: zero on success; error code in case of error */ -int crypto_register_kpp(struct kpp_alg *alg); +DECLARE_CRYPTO_API(crypto_register_kpp, int, + (struct kpp_alg *alg), + (alg)); /** * crypto_unregister_kpp() -- Unregister key-agreement protocol primitive @@ -170,7 +174,9 @@ int crypto_register_kpp(struct kpp_alg *alg); * * @alg: algorithm definition */ -void crypto_unregister_kpp(struct kpp_alg *alg); +DECLARE_CRYPTO_API(crypto_unregister_kpp, void, + (struct kpp_alg *alg), + (alg)); /** * kpp_register_instance() - Register a KPP template instance. @@ -178,8 +184,9 @@ void crypto_unregister_kpp(struct kpp_alg *alg); * @inst: The KPP template instance to be registered. * Return: %0 on success, negative error code otherwise. */ -int kpp_register_instance(struct crypto_template *tmpl, - struct kpp_instance *inst); +DECLARE_CRYPTO_API(kpp_register_instance, int, + (struct crypto_template *tmpl, struct kpp_instance *inst), + (tmpl, inst)); /* * KPP spawn related functions. @@ -193,9 +200,9 @@ int kpp_register_instance(struct crypto_template *tmpl, * @mask: The mask bismask to pass on to the lookup. * Return: %0 on success, a negative error code otherwise. */ -int crypto_grab_kpp(struct crypto_kpp_spawn *spawn, - struct crypto_instance *inst, - const char *name, u32 type, u32 mask); +DECLARE_CRYPTO_API(crypto_grab_kpp, int, + (struct crypto_kpp_spawn *spawn, struct crypto_instance *inst, const char *name, u32 type, u32 mask), + (spawn, inst, name, type, mask)); /** * crypto_drop_kpp() - Release a spawn previously bound via crypto_grab_kpp(). diff --git a/include/crypto/kpp.h b/include/crypto/kpp.h index 2d9c4de57b69..f4b0af4afdb7 100644 --- a/include/crypto/kpp.h +++ b/include/crypto/kpp.h @@ -9,6 +9,7 @@ #ifndef _CRYPTO_KPP_ #define _CRYPTO_KPP_ +#include <crypto/api.h> #include <linux/atomic.h> #include <linux/container_of.h> #include <linux/crypto.h> @@ -107,9 +108,13 @@ struct kpp_alg { * Return: allocated handle in case of success; IS_ERR() is true in case of * an error, PTR_ERR() returns the error code. */ -struct crypto_kpp *crypto_alloc_kpp(const char *alg_name, u32 type, u32 mask); +DECLARE_CRYPTO_API(crypto_alloc_kpp, struct crypto_kpp *, + (const char *alg_name, u32 type, u32 mask), + (alg_name, type, mask)); -int crypto_has_kpp(const char *alg_name, u32 type, u32 mask); +DECLARE_CRYPTO_API(crypto_has_kpp, int, + (const char *alg_name, u32 type, u32 mask), + (alg_name, type, mask)); static inline struct crypto_tfm *crypto_kpp_tfm(struct crypto_kpp *tfm) { -- 2.39.3