Commit 56a00d9d authored by Xiongfeng Wang's avatar Xiongfeng Wang Committed by Herbert Xu

crypto: gcm - use template array registering API to simplify the code

Use crypto template array registering API to simplify the code.
Signed-off-by: default avatarXiongfeng Wang <xiongfeng.wang@linaro.org>
Reviewed-by: default avatarEric Biggers <ebiggers@google.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 0db19035
...@@ -727,12 +727,6 @@ static int crypto_gcm_create(struct crypto_template *tmpl, struct rtattr **tb) ...@@ -727,12 +727,6 @@ static int crypto_gcm_create(struct crypto_template *tmpl, struct rtattr **tb)
ctr_name, "ghash"); ctr_name, "ghash");
} }
static struct crypto_template crypto_gcm_tmpl = {
.name = "gcm",
.create = crypto_gcm_create,
.module = THIS_MODULE,
};
static int crypto_gcm_base_create(struct crypto_template *tmpl, static int crypto_gcm_base_create(struct crypto_template *tmpl,
struct rtattr **tb) struct rtattr **tb)
{ {
...@@ -756,12 +750,6 @@ static int crypto_gcm_base_create(struct crypto_template *tmpl, ...@@ -756,12 +750,6 @@ static int crypto_gcm_base_create(struct crypto_template *tmpl,
ctr_name, ghash_name); ctr_name, ghash_name);
} }
static struct crypto_template crypto_gcm_base_tmpl = {
.name = "gcm_base",
.create = crypto_gcm_base_create,
.module = THIS_MODULE,
};
static int crypto_rfc4106_setkey(struct crypto_aead *parent, const u8 *key, static int crypto_rfc4106_setkey(struct crypto_aead *parent, const u8 *key,
unsigned int keylen) unsigned int keylen)
{ {
...@@ -989,12 +977,6 @@ static int crypto_rfc4106_create(struct crypto_template *tmpl, ...@@ -989,12 +977,6 @@ static int crypto_rfc4106_create(struct crypto_template *tmpl,
goto out; goto out;
} }
static struct crypto_template crypto_rfc4106_tmpl = {
.name = "rfc4106",
.create = crypto_rfc4106_create,
.module = THIS_MODULE,
};
static int crypto_rfc4543_setkey(struct crypto_aead *parent, const u8 *key, static int crypto_rfc4543_setkey(struct crypto_aead *parent, const u8 *key,
unsigned int keylen) unsigned int keylen)
{ {
...@@ -1231,10 +1213,24 @@ static int crypto_rfc4543_create(struct crypto_template *tmpl, ...@@ -1231,10 +1213,24 @@ static int crypto_rfc4543_create(struct crypto_template *tmpl,
goto out; goto out;
} }
static struct crypto_template crypto_rfc4543_tmpl = { static struct crypto_template crypto_gcm_tmpls[] = {
{
.name = "gcm_base",
.create = crypto_gcm_base_create,
.module = THIS_MODULE,
}, {
.name = "gcm",
.create = crypto_gcm_create,
.module = THIS_MODULE,
}, {
.name = "rfc4106",
.create = crypto_rfc4106_create,
.module = THIS_MODULE,
}, {
.name = "rfc4543", .name = "rfc4543",
.create = crypto_rfc4543_create, .create = crypto_rfc4543_create,
.module = THIS_MODULE, .module = THIS_MODULE,
},
}; };
static int __init crypto_gcm_module_init(void) static int __init crypto_gcm_module_init(void)
...@@ -1247,42 +1243,19 @@ static int __init crypto_gcm_module_init(void) ...@@ -1247,42 +1243,19 @@ static int __init crypto_gcm_module_init(void)
sg_init_one(&gcm_zeroes->sg, gcm_zeroes->buf, sizeof(gcm_zeroes->buf)); sg_init_one(&gcm_zeroes->sg, gcm_zeroes->buf, sizeof(gcm_zeroes->buf));
err = crypto_register_template(&crypto_gcm_base_tmpl); err = crypto_register_templates(crypto_gcm_tmpls,
if (err) ARRAY_SIZE(crypto_gcm_tmpls));
goto out;
err = crypto_register_template(&crypto_gcm_tmpl);
if (err) if (err)
goto out_undo_base;
err = crypto_register_template(&crypto_rfc4106_tmpl);
if (err)
goto out_undo_gcm;
err = crypto_register_template(&crypto_rfc4543_tmpl);
if (err)
goto out_undo_rfc4106;
return 0;
out_undo_rfc4106:
crypto_unregister_template(&crypto_rfc4106_tmpl);
out_undo_gcm:
crypto_unregister_template(&crypto_gcm_tmpl);
out_undo_base:
crypto_unregister_template(&crypto_gcm_base_tmpl);
out:
kfree(gcm_zeroes); kfree(gcm_zeroes);
return err; return err;
} }
static void __exit crypto_gcm_module_exit(void) static void __exit crypto_gcm_module_exit(void)
{ {
kfree(gcm_zeroes); kfree(gcm_zeroes);
crypto_unregister_template(&crypto_rfc4543_tmpl); crypto_unregister_templates(crypto_gcm_tmpls,
crypto_unregister_template(&crypto_rfc4106_tmpl); ARRAY_SIZE(crypto_gcm_tmpls));
crypto_unregister_template(&crypto_gcm_tmpl);
crypto_unregister_template(&crypto_gcm_base_tmpl);
} }
module_init(crypto_gcm_module_init); module_init(crypto_gcm_module_init);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment