[PATCH 4.4 087/117] crypto: skcipher - Add crypto_skcipher_has_setkey

Greg Kroah-Hartman
2016-02-15T00:25:44Z

From: Herbert Xu <herbert@gondor.apana.org.au>

commit a1383cd86a062fc798899ab20f0ec2116cce39cb upstream.

This patch adds a way for skcipher users to determine whether a key
is required by a transform.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
crypto/skcipher.c | 2 ++
include/crypto/skcipher.h | 7 +++++++
2 files changed, 9 insertions(+)

--- a/crypto/skcipher.c
+++ b/crypto/skcipher.c
@@ -118,6 +118,7 @@ static int crypto_init_skcipher_ops_blkc
skcipher->decrypt = skcipher_decrypt_blkcipher;

skcipher->ivsize = crypto_blkcipher_ivsize(blkcipher);
+ skcipher->has_setkey = calg->cra_blkcipher.max_keysize;

return 0;
}
@@ -210,6 +211,7 @@ static int crypto_init_skcipher_ops_ablk
skcipher->ivsize = crypto_ablkcipher_ivsize(ablkcipher);
skcipher->reqsize = crypto_ablkcipher_reqsize(ablkcipher) +
sizeof(struct ablkcipher_request);
+ skcipher->has_setkey = calg->cra_ablkcipher.max_keysize;

return 0;
}
--- a/include/crypto/skcipher.h
+++ b/include/crypto/skcipher.h
@@ -61,6 +61,8 @@ struct crypto_skcipher {
unsigned int ivsize;
unsigned int reqsize;

+ bool has_setkey;
+
struct crypto_tfm base;
};

@@ -305,6 +307,11 @@ static inline int crypto_skcipher_setkey
return tfm->setkey(tfm, key, keylen);
}

+static inline bool crypto_skcipher_has_setkey(struct crypto_skcipher *tfm)
+{
+ return tfm->has_setkey;
+}
+
/**
* crypto_skcipher_reqtfm() - obtain cipher handle from request
* @req: skcipher_request out of which the cipher handle is to be obtained