crypto: aead - Add crypto_aead_alg_ivsize/maxauthsize

AEAD algorithm implementors need to figure out a given algorithm's
IV size and maximum authentication size.  During the transition
this is difficult to do as an algorithm could be new style or old
style.

This patch creates two helpers to make this easier.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
Herbert Xu
2015-05-22 16:30:48 +08:00
parent 445a8e0df3
commit 30e4c010ae
3 changed files with 28 additions and 27 deletions

View File

@@ -69,7 +69,7 @@ int crypto_aead_setauthsize(struct crypto_aead *tfm, unsigned int authsize)
{
int err;
if (authsize > tfm->maxauthsize)
if (authsize > crypto_aead_maxauthsize(tfm))
return -EINVAL;
if (tfm->setauthsize) {
@@ -162,8 +162,6 @@ static int crypto_old_aead_init_tfm(struct crypto_tfm *tfm)
crt->givdecrypt = aead_null_givdecrypt;
}
crt->child = __crypto_aead_cast(tfm);
crt->ivsize = alg->ivsize;
crt->maxauthsize = alg->maxauthsize;
crt->authsize = alg->maxauthsize;
return 0;
@@ -182,8 +180,6 @@ static int crypto_aead_init_tfm(struct crypto_tfm *tfm)
aead->encrypt = alg->encrypt;
aead->decrypt = alg->decrypt;
aead->child = __crypto_aead_cast(tfm);
aead->ivsize = alg->ivsize;
aead->maxauthsize = alg->maxauthsize;
aead->authsize = alg->maxauthsize;
return 0;
@@ -418,13 +414,8 @@ struct aead_instance *aead_geniv_alloc(struct crypto_template *tmpl,
alg = crypto_spawn_aead_alg(spawn);
if (alg->base.cra_aead.encrypt) {
ivsize = alg->base.cra_aead.ivsize;
maxauthsize = alg->base.cra_aead.maxauthsize;
} else {
ivsize = alg->ivsize;
maxauthsize = alg->maxauthsize;
}
ivsize = crypto_aead_alg_ivsize(alg);
maxauthsize = crypto_aead_alg_maxauthsize(alg);
err = -EINVAL;
if (!ivsize)