Patch "crypto: ccp - Add hash state import and export support" has been added to the 3.14-stable tree
This is a note to let you know that I've just added the patch titled
crypto: ccp - Add hash state import and export support
to the 3.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
crypto-ccp-add-hash-state-import-and-export-support.patch
and it can be found in the queue-3.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
952bce9792e6bf36fda09c2e5718abb5d9327369Mon Sep 17 00:00:00 2001
From: Tom Lendacky <[email protected]>
Date: Tue, 12 Jan 2016 11:17:38 -0600
Subject: crypto: ccp - Add hash state import and export support
From: Tom Lendacky <[email protected]>
commit 952bce9792e6bf36fda09c2e5718abb5d9327369 upstream.
Commit 8996eafdcbad ("crypto: ahash - ensure statesize is non-zero") added a check to prevent ahash algorithms from successfully registering if the import and export functions were not implemented. This prevents an oops in the hash_accept function of algif_hash. This commit causes the ccp-crypto module SHA support and AES CMAC support from successfully registering and causing the ccp-crypto module load to fail because the ahash import and export functions are not implemented.
Update the CCP Crypto API support to provide import and export support for ahash algorithms.
--- drivers/crypto/ccp/ccp-crypto-aes-cmac.c | 23 +++++++++++++++++++++++ drivers/crypto/ccp/ccp-crypto-sha.c | 23 +++++++++++++++++++++++ 2 files changed, 46 insertions(+)
drivers/crypto/ccp/ccp-crypto-aes-cmac.c +23 -0
@@ -201,6 +201,26 @@ static int ccp_aes_cmac_digest(struct ahreturn ccp_aes_cmac_finup (req); } +static int ccp_aes_cmac_export (struct ahash_request *req,void *out) +{ +struct ccp_aes_cmac_req_ctx *rctx =ahash_request_ctx (req); +struct ccp_aes_cmac_req_ctx *state = out; + + *state = *rctx; + +return 0 ; +} + +static int ccp_aes_cmac_import (struct ahash_request *req,const void *in) +{ +struct ccp_aes_cmac_req_ctx *rctx =ahash_request_ctx (req); +const struct ccp_aes_cmac_req_ctx *state = in; + + *rctx = *state; + +return 0 ; +} +static int ccp_aes_cmac_setkey (struct crypto_ahash *tfm,const u8 *key,unsigned int key_len) {
@@ -332,10 +352,13 @@ int ccp_register_aes_cmac_algs(struct li alg->final = ccp_aes_cmac_final; alg->finup = ccp_aes_cmac_finup; alg->digest = ccp_aes_cmac_digest; + alg->export = ccp_aes_cmac_export; + alg->import = ccp_aes_cmac_import; alg->setkey = ccp_aes_cmac_setkey; halg = &alg->halg; halg->digestsize =AES_BLOCK_SIZE ; + halg->statesize =sizeof (struct ccp_aes_cmac_req_ctx ); base = &halg->base;snprintf (base->cra_name,CRYPTO_MAX_ALG_NAME ,"cmac(aes)" );
drivers/crypto/ccp/ccp-crypto-sha.c +23 -0
@@ -257,6 +257,26 @@ static int ccp_sha_digest(struct ahash_rreturn ccp_sha_finup (req); } +static int ccp_sha_export (struct ahash_request *req,void *out) +{ +struct ccp_sha_req_ctx *rctx =ahash_request_ctx (req); +struct ccp_sha_req_ctx *state = out; + + *state = *rctx; + +return 0 ; +} + +static int ccp_sha_import (struct ahash_request *req,const void *in) +{ +struct ccp_sha_req_ctx *rctx =ahash_request_ctx (req); +const struct ccp_sha_req_ctx *state = in; + + *rctx = *state; + +return 0 ; +} +static int ccp_sha_setkey (struct crypto_ahash *tfm,const u8 *key,unsigned int key_len) {
@@ -469,9 +489,12 @@ static int ccp_register_sha_alg(struct l alg->final = ccp_sha_final; alg->finup = ccp_sha_finup; alg->digest = ccp_sha_digest; + alg->export = ccp_sha_export; + alg->import = ccp_sha_import; halg = &alg->halg; halg->digestsize = def->digest_size; + halg->statesize =sizeof (struct ccp_sha_req_ctx ); base = &halg->base;snprintf (base->cra_name,CRYPTO_MAX_ALG_NAME ,"%s" , def->name);
Patches currently in stable-queue which might be from [email protected] are
queue-3.14/crypto-ccp-add-hash-state-import-and-export-support.patch queue-3.14/crypto-ccp-don-t-assume-export-import-areas-are-aligned.patch queue-3.14/crypto-ccp-memset-request-context-to-zero-during-import.patch queue-3.14/crypto-ccp-limit-the-amount-of-information-exported.patch