Commit 71061191 authored by Herbert Xu's avatar Herbert Xu Committed by Kamal Mostafa

crypto: skcipher - Add crypto_skcipher_has_setkey

commit a1383cd8 upstream.

This patch adds a way for skcipher users to determine whether a key
is required by a transform.
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
[bwh: Backported to 3.2: add to ablkcipher API instead]
Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
Signed-off-by: default avatarLuis Henriques <luis.henriques@canonical.com>
[kamal: plus bwh http://article.gmane.org/gmane.linux.kernel.stable/169083]
Signed-off-by: default avatarKamal Mostafa <kamal@canonical.com>
parent 563eaf39
...@@ -377,6 +377,7 @@ static int crypto_init_ablkcipher_ops(struct crypto_tfm *tfm, u32 type, ...@@ -377,6 +377,7 @@ static int crypto_init_ablkcipher_ops(struct crypto_tfm *tfm, u32 type,
} }
crt->base = __crypto_ablkcipher_cast(tfm); crt->base = __crypto_ablkcipher_cast(tfm);
crt->ivsize = alg->ivsize; crt->ivsize = alg->ivsize;
crt->has_setkey = alg->max_keysize;
return 0; return 0;
} }
...@@ -458,6 +459,7 @@ static int crypto_init_givcipher_ops(struct crypto_tfm *tfm, u32 type, ...@@ -458,6 +459,7 @@ static int crypto_init_givcipher_ops(struct crypto_tfm *tfm, u32 type,
crt->givdecrypt = alg->givdecrypt ?: no_givdecrypt; crt->givdecrypt = alg->givdecrypt ?: no_givdecrypt;
crt->base = __crypto_ablkcipher_cast(tfm); crt->base = __crypto_ablkcipher_cast(tfm);
crt->ivsize = alg->ivsize; crt->ivsize = alg->ivsize;
crt->has_setkey = alg->max_keysize;
return 0; return 0;
} }
......
...@@ -472,6 +472,7 @@ static int crypto_init_blkcipher_ops_async(struct crypto_tfm *tfm) ...@@ -472,6 +472,7 @@ static int crypto_init_blkcipher_ops_async(struct crypto_tfm *tfm)
} }
crt->base = __crypto_ablkcipher_cast(tfm); crt->base = __crypto_ablkcipher_cast(tfm);
crt->ivsize = alg->ivsize; crt->ivsize = alg->ivsize;
crt->has_setkey = alg->max_keysize;
return 0; return 0;
} }
......
...@@ -552,6 +552,7 @@ struct ablkcipher_tfm { ...@@ -552,6 +552,7 @@ struct ablkcipher_tfm {
unsigned int ivsize; unsigned int ivsize;
unsigned int reqsize; unsigned int reqsize;
bool has_setkey;
}; };
struct blkcipher_tfm { struct blkcipher_tfm {
...@@ -922,6 +923,13 @@ static inline int crypto_ablkcipher_setkey(struct crypto_ablkcipher *tfm, ...@@ -922,6 +923,13 @@ static inline int crypto_ablkcipher_setkey(struct crypto_ablkcipher *tfm,
return crt->setkey(crt->base, key, keylen); return crt->setkey(crt->base, key, keylen);
} }
static inline bool crypto_ablkcipher_has_setkey(struct crypto_ablkcipher *tfm)
{
struct ablkcipher_tfm *crt = crypto_ablkcipher_crt(tfm);
return crt->has_setkey;
}
/** /**
* crypto_ablkcipher_reqtfm() - obtain cipher handle from request * crypto_ablkcipher_reqtfm() - obtain cipher handle from request
* @req: ablkcipher_request out of which the cipher handle is to be obtained * @req: ablkcipher_request out of which the cipher handle is to be obtained
......
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