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_GENIV --source crypto/geniv.c --header include/crypto/internal/geniv.h Signed-off-by: Vegard Nossum <vegard.nossum@xxxxxxxxxx> --- crypto/fips140-api.c | 13 +++++++++++++ crypto/geniv.c | 12 ++++++------ include/crypto/internal/geniv.h | 14 ++++++++++---- 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/crypto/fips140-api.c b/crypto/fips140-api.c index fab12d65a312..09f5818cebe2 100644 --- a/crypto/fips140-api.c +++ b/crypto/fips140-api.c @@ -410,3 +410,16 @@ DEFINE_CRYPTO_API_STUB(crypto_ecdh_decode_key); #endif +/* + * crypto/geniv.c + */ +#if !IS_BUILTIN(CONFIG_CRYPTO_GENIV) + +#include <crypto/internal/geniv.h> + +DEFINE_CRYPTO_API_STUB(aead_geniv_alloc); +DEFINE_CRYPTO_API_STUB(aead_init_geniv); +DEFINE_CRYPTO_API_STUB(aead_exit_geniv); + +#endif + diff --git a/crypto/geniv.c b/crypto/geniv.c index 0b18240ac813..61d81aa2d4ff 100644 --- a/crypto/geniv.c +++ b/crypto/geniv.c @@ -37,7 +37,7 @@ static void aead_geniv_free(struct aead_instance *inst) kfree(inst); } -struct aead_instance *aead_geniv_alloc(struct crypto_template *tmpl, +struct aead_instance *CRYPTO_API(aead_geniv_alloc)(struct crypto_template *tmpl, struct rtattr **tb) { struct crypto_aead_spawn *spawn; @@ -103,9 +103,9 @@ struct aead_instance *aead_geniv_alloc(struct crypto_template *tmpl, inst = ERR_PTR(err); goto out; } -EXPORT_SYMBOL_GPL(aead_geniv_alloc); +DEFINE_CRYPTO_API(aead_geniv_alloc); -int aead_init_geniv(struct crypto_aead *aead) +int CRYPTO_API(aead_init_geniv)(struct crypto_aead *aead) { struct aead_geniv_ctx *ctx = crypto_aead_ctx(aead); struct aead_instance *inst = aead_alg_instance(aead); @@ -138,15 +138,15 @@ int aead_init_geniv(struct crypto_aead *aead) out: return err; } -EXPORT_SYMBOL_GPL(aead_init_geniv); +DEFINE_CRYPTO_API(aead_init_geniv); -void aead_exit_geniv(struct crypto_aead *tfm) +void CRYPTO_API(aead_exit_geniv)(struct crypto_aead *tfm) { struct aead_geniv_ctx *ctx = crypto_aead_ctx(tfm); crypto_free_aead(ctx->child); } -EXPORT_SYMBOL_GPL(aead_exit_geniv); +DEFINE_CRYPTO_API(aead_exit_geniv); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Shared IV generator code"); diff --git a/include/crypto/internal/geniv.h b/include/crypto/internal/geniv.h index 012f5fb22d43..c7aaad2ab534 100644 --- a/include/crypto/internal/geniv.h +++ b/include/crypto/internal/geniv.h @@ -8,6 +8,7 @@ #ifndef _CRYPTO_INTERNAL_GENIV_H #define _CRYPTO_INTERNAL_GENIV_H +#include <crypto/api.h> #include <crypto/internal/aead.h> #include <linux/spinlock.h> #include <linux/types.h> @@ -18,9 +19,14 @@ struct aead_geniv_ctx { u8 salt[] __attribute__ ((aligned(__alignof__(u32)))); }; -struct aead_instance *aead_geniv_alloc(struct crypto_template *tmpl, - struct rtattr **tb); -int aead_init_geniv(struct crypto_aead *tfm); -void aead_exit_geniv(struct crypto_aead *tfm); +DECLARE_CRYPTO_API(aead_geniv_alloc, struct aead_instance *, + (struct crypto_template *tmpl, struct rtattr **tb), + (tmpl, tb)); +DECLARE_CRYPTO_API(aead_init_geniv, int, + (struct crypto_aead *tfm), + (tfm)); +DECLARE_CRYPTO_API(aead_exit_geniv, void, + (struct crypto_aead *tfm), + (tfm)); #endif /* _CRYPTO_INTERNAL_GENIV_H */ -- 2.39.3