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

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
Loading
Loading
Loading
Loading
+23 −50
Original line number Diff line number Diff line
@@ -727,12 +727,6 @@ static int crypto_gcm_create(struct crypto_template *tmpl, struct rtattr **tb)
					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,
				  struct rtattr **tb)
{
@@ -756,12 +750,6 @@ static int crypto_gcm_base_create(struct crypto_template *tmpl,
					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,
				 unsigned int keylen)
{
@@ -989,12 +977,6 @@ out_free_inst:
	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,
				 unsigned int keylen)
{
@@ -1231,10 +1213,24 @@ out_free_inst:
	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",
		.create = crypto_rfc4543_create,
		.module = THIS_MODULE,
	},
};

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));

	err = crypto_register_template(&crypto_gcm_base_tmpl);
	if (err)
		goto out;

	err = crypto_register_template(&crypto_gcm_tmpl);
	err = crypto_register_templates(crypto_gcm_tmpls,
					ARRAY_SIZE(crypto_gcm_tmpls));
	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);

	return err;
}

static void __exit crypto_gcm_module_exit(void)
{
	kfree(gcm_zeroes);
	crypto_unregister_template(&crypto_rfc4543_tmpl);
	crypto_unregister_template(&crypto_rfc4106_tmpl);
	crypto_unregister_template(&crypto_gcm_tmpl);
	crypto_unregister_template(&crypto_gcm_base_tmpl);
	crypto_unregister_templates(crypto_gcm_tmpls,
				    ARRAY_SIZE(crypto_gcm_tmpls));
}

module_init(crypto_gcm_module_init);