mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	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: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
		
							parent
							
								
									a0fa2d0371
								
							
						
					
					
						commit
						a5596d6332
					
				
					 3 changed files with 13 additions and 2 deletions
				
			
		| 
						 | 
					@ -451,6 +451,7 @@ static int crypto_ahash_init_tfm(struct crypto_tfm *tfm)
 | 
				
			||||||
	struct ahash_alg *alg = crypto_ahash_alg(hash);
 | 
						struct ahash_alg *alg = crypto_ahash_alg(hash);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	hash->setkey = ahash_nosetkey;
 | 
						hash->setkey = ahash_nosetkey;
 | 
				
			||||||
 | 
						hash->has_setkey = false;
 | 
				
			||||||
	hash->export = ahash_no_export;
 | 
						hash->export = ahash_no_export;
 | 
				
			||||||
	hash->import = ahash_no_import;
 | 
						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->finup = alg->finup ?: ahash_def_finup;
 | 
				
			||||||
	hash->digest = alg->digest;
 | 
						hash->digest = alg->digest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (alg->setkey)
 | 
						if (alg->setkey) {
 | 
				
			||||||
		hash->setkey = alg->setkey;
 | 
							hash->setkey = alg->setkey;
 | 
				
			||||||
 | 
							hash->has_setkey = true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	if (alg->export)
 | 
						if (alg->export)
 | 
				
			||||||
		hash->export = alg->export;
 | 
							hash->export = alg->export;
 | 
				
			||||||
	if (alg->import)
 | 
						if (alg->import)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -355,8 +355,10 @@ int crypto_init_shash_ops_async(struct crypto_tfm *tfm)
 | 
				
			||||||
	crt->finup = shash_async_finup;
 | 
						crt->finup = shash_async_finup;
 | 
				
			||||||
	crt->digest = shash_async_digest;
 | 
						crt->digest = shash_async_digest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (alg->setkey)
 | 
						if (alg->setkey) {
 | 
				
			||||||
		crt->setkey = shash_async_setkey;
 | 
							crt->setkey = shash_async_setkey;
 | 
				
			||||||
 | 
							crt->has_setkey = true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	if (alg->export)
 | 
						if (alg->export)
 | 
				
			||||||
		crt->export = shash_async_export;
 | 
							crt->export = shash_async_export;
 | 
				
			||||||
	if (alg->import)
 | 
						if (alg->import)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -204,6 +204,7 @@ struct crypto_ahash {
 | 
				
			||||||
		      unsigned int keylen);
 | 
							      unsigned int keylen);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	unsigned int reqsize;
 | 
						unsigned int reqsize;
 | 
				
			||||||
 | 
						bool has_setkey;
 | 
				
			||||||
	struct crypto_tfm base;
 | 
						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,
 | 
					int crypto_ahash_setkey(struct crypto_ahash *tfm, const u8 *key,
 | 
				
			||||||
			unsigned int keylen);
 | 
								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
 | 
					 * crypto_ahash_finup() - update and finalize message digest
 | 
				
			||||||
 * @req: reference to the ahash_request handle that holds all information
 | 
					 * @req: reference to the ahash_request handle that holds all information
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue