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_ASYMMETRIC_KEY_TYPE --source crypto/asymmetric_keys/asymmetric_type.c --header include/keys/asymmetric-parser.h include/keys/asymmetric-type.h Signed-off-by: Vegard Nossum <vegard.nossum@xxxxxxxxxx> --- crypto/asymmetric_keys/asymmetric_type.c | 30 ++++++++++++------------ crypto/fips140-api.c | 19 +++++++++++++++ include/keys/asymmetric-parser.h | 8 +++++-- include/keys/asymmetric-type.h | 26 ++++++++++---------- 4 files changed, 53 insertions(+), 30 deletions(-) diff --git a/crypto/asymmetric_keys/asymmetric_type.c b/crypto/asymmetric_keys/asymmetric_type.c index ba2d9d1ea235..7c0a73d17eb9 100644 --- a/crypto/asymmetric_keys/asymmetric_type.c +++ b/crypto/asymmetric_keys/asymmetric_type.c @@ -38,7 +38,7 @@ static DECLARE_RWSEM(asymmetric_key_parsers_sem); * exactly. If both are missing, id_2 must match the sought key's third * identifier exactly. */ -struct key *find_asymmetric_key(struct key *keyring, +struct key *CRYPTO_API(find_asymmetric_key)(struct key *keyring, const struct asymmetric_key_id *id_0, const struct asymmetric_key_id *id_1, const struct asymmetric_key_id *id_2, @@ -124,7 +124,7 @@ struct key *find_asymmetric_key(struct key *keyring, key_put(key); return ERR_PTR(-EKEYREJECTED); } -EXPORT_SYMBOL_GPL(find_asymmetric_key); +DEFINE_CRYPTO_API(find_asymmetric_key); /** * asymmetric_key_generate_id: Construct an asymmetric key ID @@ -135,7 +135,7 @@ EXPORT_SYMBOL_GPL(find_asymmetric_key); * * Construct an asymmetric key ID from a pair of binary blobs. */ -struct asymmetric_key_id *asymmetric_key_generate_id(const void *val_1, +struct asymmetric_key_id *CRYPTO_API(asymmetric_key_generate_id)(const void *val_1, size_t len_1, const void *val_2, size_t len_2) @@ -151,14 +151,14 @@ struct asymmetric_key_id *asymmetric_key_generate_id(const void *val_1, memcpy(kid->data + len_1, val_2, len_2); return kid; } -EXPORT_SYMBOL_GPL(asymmetric_key_generate_id); +DEFINE_CRYPTO_API(asymmetric_key_generate_id); /** * asymmetric_key_id_same - Return true if two asymmetric keys IDs are the same. * @kid1: The key ID to compare * @kid2: The key ID to compare */ -bool asymmetric_key_id_same(const struct asymmetric_key_id *kid1, +bool CRYPTO_API(asymmetric_key_id_same)(const struct asymmetric_key_id *kid1, const struct asymmetric_key_id *kid2) { if (!kid1 || !kid2) @@ -167,7 +167,7 @@ bool asymmetric_key_id_same(const struct asymmetric_key_id *kid1, return false; return memcmp(kid1->data, kid2->data, kid1->len) == 0; } -EXPORT_SYMBOL_GPL(asymmetric_key_id_same); +DEFINE_CRYPTO_API(asymmetric_key_id_same); /** * asymmetric_key_id_partial - Return true if two asymmetric keys IDs @@ -175,7 +175,7 @@ EXPORT_SYMBOL_GPL(asymmetric_key_id_same); * @kid1: The key ID to compare * @kid2: The key ID to compare */ -bool asymmetric_key_id_partial(const struct asymmetric_key_id *kid1, +bool CRYPTO_API(asymmetric_key_id_partial)(const struct asymmetric_key_id *kid1, const struct asymmetric_key_id *kid2) { if (!kid1 || !kid2) @@ -185,7 +185,7 @@ bool asymmetric_key_id_partial(const struct asymmetric_key_id *kid1, return memcmp(kid1->data + (kid1->len - kid2->len), kid2->data, kid2->len) == 0; } -EXPORT_SYMBOL_GPL(asymmetric_key_id_partial); +DEFINE_CRYPTO_API(asymmetric_key_id_partial); /** * asymmetric_match_key_ids - Search asymmetric key IDs 1 & 2 @@ -281,7 +281,7 @@ static bool asymmetric_key_cmp_name(const struct key *key, const struct asymmetric_key_ids *kids = asymmetric_key_ids(key); const struct asymmetric_key_id *match_id = match_data->preparsed; - return kids && asymmetric_key_id_same(kids->id[2], match_id); + return kids && CRYPTO_API(asymmetric_key_id_same)(kids->id[2], match_id); } /* @@ -617,7 +617,7 @@ EXPORT_SYMBOL_GPL(key_type_asymmetric); * register_asymmetric_key_parser - Register a asymmetric key blob parser * @parser: The parser to register */ -int register_asymmetric_key_parser(struct asymmetric_key_parser *parser) +int CRYPTO_API(register_asymmetric_key_parser)(struct asymmetric_key_parser *parser) { struct asymmetric_key_parser *cursor; int ret; @@ -642,13 +642,13 @@ int register_asymmetric_key_parser(struct asymmetric_key_parser *parser) up_write(&asymmetric_key_parsers_sem); return ret; } -EXPORT_SYMBOL_GPL(register_asymmetric_key_parser); +DEFINE_CRYPTO_API(register_asymmetric_key_parser); /** * unregister_asymmetric_key_parser - Unregister a asymmetric key blob parser * @parser: The parser to unregister */ -void unregister_asymmetric_key_parser(struct asymmetric_key_parser *parser) +void CRYPTO_API(unregister_asymmetric_key_parser)(struct asymmetric_key_parser *parser) { down_write(&asymmetric_key_parsers_sem); list_del(&parser->link); @@ -656,7 +656,7 @@ void unregister_asymmetric_key_parser(struct asymmetric_key_parser *parser) pr_notice("Asymmetric key parser '%s' unregistered\n", parser->name); } -EXPORT_SYMBOL_GPL(unregister_asymmetric_key_parser); +DEFINE_CRYPTO_API(unregister_asymmetric_key_parser); /* * Module stuff @@ -671,5 +671,5 @@ static void __exit asymmetric_key_cleanup(void) unregister_key_type(&key_type_asymmetric); } -module_init(asymmetric_key_init); -module_exit(asymmetric_key_cleanup); +crypto_module_init(asymmetric_key_init); +crypto_module_exit(asymmetric_key_cleanup); diff --git a/crypto/fips140-api.c b/crypto/fips140-api.c index 5599cfa963d8..81d920836e1b 100644 --- a/crypto/fips140-api.c +++ b/crypto/fips140-api.c @@ -620,3 +620,22 @@ DEFINE_CRYPTO_API_STUB(alg_test); #endif +/* + * crypto/asymmetric_keys/asymmetric_type.c + */ +#if !IS_BUILTIN(CONFIG_ASYMMETRIC_KEY_TYPE) + +#include <keys/asymmetric-parser.h> + +DEFINE_CRYPTO_API_STUB(register_asymmetric_key_parser); +DEFINE_CRYPTO_API_STUB(unregister_asymmetric_key_parser); + +#include <keys/asymmetric-type.h> + +DEFINE_CRYPTO_API_STUB(asymmetric_key_id_same); +DEFINE_CRYPTO_API_STUB(asymmetric_key_id_partial); +DEFINE_CRYPTO_API_STUB(asymmetric_key_generate_id); +DEFINE_CRYPTO_API_STUB(find_asymmetric_key); + +#endif + diff --git a/include/keys/asymmetric-parser.h b/include/keys/asymmetric-parser.h index 516a3f51179e..682c82588cee 100644 --- a/include/keys/asymmetric-parser.h +++ b/include/keys/asymmetric-parser.h @@ -29,7 +29,11 @@ struct asymmetric_key_parser { int (*parse)(struct key_preparsed_payload *prep); }; -extern int register_asymmetric_key_parser(struct asymmetric_key_parser *); -extern void unregister_asymmetric_key_parser(struct asymmetric_key_parser *); +DECLARE_CRYPTO_API(register_asymmetric_key_parser, int, + (struct asymmetric_key_parser *parser), + (parser)); +DECLARE_CRYPTO_API(unregister_asymmetric_key_parser, void, + (struct asymmetric_key_parser *parser), + (parser)); #endif /* _KEYS_ASYMMETRIC_PARSER_H */ diff --git a/include/keys/asymmetric-type.h b/include/keys/asymmetric-type.h index 69a13e1e5b2e..fb7f82527978 100644 --- a/include/keys/asymmetric-type.h +++ b/include/keys/asymmetric-type.h @@ -10,6 +10,7 @@ #ifndef _KEYS_ASYMMETRIC_TYPE_H #define _KEYS_ASYMMETRIC_TYPE_H +#include <crypto/api.h> #include <linux/key-type.h> #include <linux/verification.h> @@ -56,16 +57,17 @@ struct asymmetric_key_ids { void *id[3]; }; -extern bool asymmetric_key_id_same(const struct asymmetric_key_id *kid1, - const struct asymmetric_key_id *kid2); +DECLARE_CRYPTO_API(asymmetric_key_id_same, bool, + (const struct asymmetric_key_id *kid1, const struct asymmetric_key_id *kid2), + (kid1, kid2)); -extern bool asymmetric_key_id_partial(const struct asymmetric_key_id *kid1, - const struct asymmetric_key_id *kid2); +DECLARE_CRYPTO_API(asymmetric_key_id_partial, bool, + (const struct asymmetric_key_id *kid1, const struct asymmetric_key_id *kid2), + (kid1, kid2)); -extern struct asymmetric_key_id *asymmetric_key_generate_id(const void *val_1, - size_t len_1, - const void *val_2, - size_t len_2); +DECLARE_CRYPTO_API(asymmetric_key_generate_id, struct asymmetric_key_id *, + (const void *val_1, size_t len_1, const void *val_2, size_t len_2), + (val_1, len_1, val_2, len_2)); static inline const struct asymmetric_key_ids *asymmetric_key_ids(const struct key *key) { @@ -78,11 +80,9 @@ const struct public_key *asymmetric_key_public_key(const struct key *key) return key->payload.data[asym_crypto]; } -extern struct key *find_asymmetric_key(struct key *keyring, - const struct asymmetric_key_id *id_0, - const struct asymmetric_key_id *id_1, - const struct asymmetric_key_id *id_2, - bool partial); +DECLARE_CRYPTO_API(find_asymmetric_key, struct key *, + (struct key *keyring, const struct asymmetric_key_id *id_0, const struct asymmetric_key_id *id_1, const struct asymmetric_key_id *id_2, bool partial), + (keyring, id_0, id_1, id_2, partial)); int x509_load_certificate_list(const u8 cert_list[], const unsigned long list_size, const struct key *keyring); -- 2.39.3