Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a5596d63 authored by Herbert Xu's avatar Herbert Xu
Browse files

crypto: hash - Add crypto_ahash_has_setkey



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

Cc: stable@vger.kernel.org
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent a0fa2d03
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -451,6 +451,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;

@@ -463,8 +464,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)
+3 −1
Original line number Diff line number Diff line
@@ -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)
+6 −0
Original line number Diff line number Diff line
@@ -204,6 +204,7 @@ struct crypto_ahash {
		      unsigned int keylen);

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

@@ -375,6 +376,11 @@ 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;
}

/**
 * crypto_ahash_finup() - update and finalize message digest
 * @req: reference to the ahash_request handle that holds all information