lkml.org 
[lkml]   [2016]   [Feb]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.16.y-ckt 123/180] crypto: hash - Add crypto_ahash_has_setkey
    Date
    3.16.7-ckt24 -stable review patch.  If anyone has any objections, please let me know.

    ---8<------------------------------------------------------------

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

    commit a5596d6332787fd383b3b5427b41f94254430827 upstream.

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

    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    [ luis: backported to 3.16: adjusted context ]
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    ---
    crypto/ahash.c | 5 ++++-
    crypto/shash.c | 4 +++-
    include/crypto/hash.h | 7 +++++++
    3 files changed, 14 insertions(+), 2 deletions(-)

    diff --git a/crypto/ahash.c b/crypto/ahash.c
    index d3e86a46ecea..4f5e0eb3547f 100644
    --- a/crypto/ahash.c
    +++ b/crypto/ahash.c
    @@ -444,6 +444,7 @@ static int crypto_ahash_init_tfm(struct crypto_tfm *tfm)
    struct ahash_alg *alg = crypto_ahash_alg(hash);

    hash->setkey = ahash_nosetkey;
    + hash->has_setkey = false;
    hash->export = ahash_no_export;
    hash->import = ahash_no_import;

    @@ -456,8 +457,10 @@ static int crypto_ahash_init_tfm(struct crypto_tfm *tfm)
    hash->finup = alg->finup ?: ahash_def_finup;
    hash->digest = alg->digest;

    - if (alg->setkey)
    + if (alg->setkey) {
    hash->setkey = alg->setkey;
    + hash->has_setkey = true;
    + }
    if (alg->export)
    hash->export = alg->export;
    if (alg->import)
    diff --git a/crypto/shash.c b/crypto/shash.c
    index 47c713954bf3..aa3e505045e0 100644
    --- a/crypto/shash.c
    +++ b/crypto/shash.c
    @@ -355,8 +355,10 @@ int crypto_init_shash_ops_async(struct crypto_tfm *tfm)
    crt->finup = shash_async_finup;
    crt->digest = shash_async_digest;

    - if (alg->setkey)
    + if (alg->setkey) {
    crt->setkey = shash_async_setkey;
    + crt->has_setkey = true;
    + }
    if (alg->export)
    crt->export = shash_async_export;
    if (alg->import)
    diff --git a/include/crypto/hash.h b/include/crypto/hash.h
    index 26cb1eb16f4c..4bdd795dfaf9 100644
    --- a/include/crypto/hash.h
    +++ b/include/crypto/hash.h
    @@ -94,6 +94,7 @@ struct crypto_ahash {
    unsigned int keylen);

    unsigned int reqsize;
    + bool has_setkey;
    struct crypto_tfm base;
    };

    @@ -181,6 +182,12 @@ static inline void *ahash_request_ctx(struct ahash_request *req)

    int crypto_ahash_setkey(struct crypto_ahash *tfm, const u8 *key,
    unsigned int keylen);
    +
    +static inline bool crypto_ahash_has_setkey(struct crypto_ahash *tfm)
    +{
    + return tfm->has_setkey;
    +}
    +
    int crypto_ahash_finup(struct ahash_request *req);
    int crypto_ahash_final(struct ahash_request *req);
    int crypto_ahash_digest(struct ahash_request *req);
    \
     
     \ /
      Last update: 2016-02-04 00:41    [W:2.398 / U:0.136 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site