diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-21 17:46:51 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-21 17:46:51 -0400 |
commit | 2a8ba8f032160552a3beffab8aae9019ff477504 (patch) | |
tree | b50f70a3c8f7c2e179e1587d33ea3542d68525f9 /crypto/authenc.c | |
parent | ec2a7587e0a91d5c1afe23a0a73edfce06c5e4e0 (diff) | |
parent | e954bc91bdd4bb08b8325478c5004b24a23a3522 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (46 commits)
random: simplify fips mode
crypto: authenc - Fix cryptlen calculation
crypto: talitos - add support for sha224
crypto: talitos - add hash algorithms
crypto: talitos - second prepare step for adding ahash algorithms
crypto: talitos - prepare for adding ahash algorithms
crypto: n2 - Add Niagara2 crypto driver
crypto: skcipher - Add ablkcipher_walk interfaces
crypto: testmgr - Add testing for async hashing and update/final
crypto: tcrypt - Add speed tests for async hashing
crypto: scatterwalk - Fix scatterwalk_done() test
crypto: hifn_795x - Rename ablkcipher_walk to hifn_cipher_walk
padata: Use get_online_cpus/put_online_cpus in padata_free
padata: Add some code comments
padata: Flush the padata queues actively
padata: Use a timer to handle remaining objects in the reorder queues
crypto: shash - Remove usage of CRYPTO_MINALIGN
crypto: mv_cesa - Use resource_size
crypto: omap - OMAP macros corrected
padata: Use get_online_cpus/put_online_cpus
...
Fix up conflicts in arch/arm/mach-omap2/devices.c
Diffstat (limited to 'crypto/authenc.c')
-rw-r--r-- | crypto/authenc.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/crypto/authenc.c b/crypto/authenc.c index 05eb32e0d949..b9884ee0adb6 100644 --- a/crypto/authenc.c +++ b/crypto/authenc.c | |||
@@ -181,6 +181,7 @@ static void authenc_verify_ahash_update_done(struct crypto_async_request *areq, | |||
181 | struct crypto_authenc_ctx *ctx = crypto_aead_ctx(authenc); | 181 | struct crypto_authenc_ctx *ctx = crypto_aead_ctx(authenc); |
182 | struct authenc_request_ctx *areq_ctx = aead_request_ctx(req); | 182 | struct authenc_request_ctx *areq_ctx = aead_request_ctx(req); |
183 | struct ahash_request *ahreq = (void *)(areq_ctx->tail + ctx->reqoff); | 183 | struct ahash_request *ahreq = (void *)(areq_ctx->tail + ctx->reqoff); |
184 | unsigned int cryptlen = req->cryptlen; | ||
184 | 185 | ||
185 | if (err) | 186 | if (err) |
186 | goto out; | 187 | goto out; |
@@ -196,6 +197,7 @@ static void authenc_verify_ahash_update_done(struct crypto_async_request *areq, | |||
196 | goto out; | 197 | goto out; |
197 | 198 | ||
198 | authsize = crypto_aead_authsize(authenc); | 199 | authsize = crypto_aead_authsize(authenc); |
200 | cryptlen -= authsize; | ||
199 | ihash = ahreq->result + authsize; | 201 | ihash = ahreq->result + authsize; |
200 | scatterwalk_map_and_copy(ihash, areq_ctx->sg, areq_ctx->cryptlen, | 202 | scatterwalk_map_and_copy(ihash, areq_ctx->sg, areq_ctx->cryptlen, |
201 | authsize, 0); | 203 | authsize, 0); |
@@ -209,7 +211,7 @@ static void authenc_verify_ahash_update_done(struct crypto_async_request *areq, | |||
209 | ablkcipher_request_set_callback(abreq, aead_request_flags(req), | 211 | ablkcipher_request_set_callback(abreq, aead_request_flags(req), |
210 | req->base.complete, req->base.data); | 212 | req->base.complete, req->base.data); |
211 | ablkcipher_request_set_crypt(abreq, req->src, req->dst, | 213 | ablkcipher_request_set_crypt(abreq, req->src, req->dst, |
212 | req->cryptlen, req->iv); | 214 | cryptlen, req->iv); |
213 | 215 | ||
214 | err = crypto_ablkcipher_decrypt(abreq); | 216 | err = crypto_ablkcipher_decrypt(abreq); |
215 | 217 | ||
@@ -228,11 +230,13 @@ static void authenc_verify_ahash_done(struct crypto_async_request *areq, | |||
228 | struct crypto_authenc_ctx *ctx = crypto_aead_ctx(authenc); | 230 | struct crypto_authenc_ctx *ctx = crypto_aead_ctx(authenc); |
229 | struct authenc_request_ctx *areq_ctx = aead_request_ctx(req); | 231 | struct authenc_request_ctx *areq_ctx = aead_request_ctx(req); |
230 | struct ahash_request *ahreq = (void *)(areq_ctx->tail + ctx->reqoff); | 232 | struct ahash_request *ahreq = (void *)(areq_ctx->tail + ctx->reqoff); |
233 | unsigned int cryptlen = req->cryptlen; | ||
231 | 234 | ||
232 | if (err) | 235 | if (err) |
233 | goto out; | 236 | goto out; |
234 | 237 | ||
235 | authsize = crypto_aead_authsize(authenc); | 238 | authsize = crypto_aead_authsize(authenc); |
239 | cryptlen -= authsize; | ||
236 | ihash = ahreq->result + authsize; | 240 | ihash = ahreq->result + authsize; |
237 | scatterwalk_map_and_copy(ihash, areq_ctx->sg, areq_ctx->cryptlen, | 241 | scatterwalk_map_and_copy(ihash, areq_ctx->sg, areq_ctx->cryptlen, |
238 | authsize, 0); | 242 | authsize, 0); |
@@ -246,7 +250,7 @@ static void authenc_verify_ahash_done(struct crypto_async_request *areq, | |||
246 | ablkcipher_request_set_callback(abreq, aead_request_flags(req), | 250 | ablkcipher_request_set_callback(abreq, aead_request_flags(req), |
247 | req->base.complete, req->base.data); | 251 | req->base.complete, req->base.data); |
248 | ablkcipher_request_set_crypt(abreq, req->src, req->dst, | 252 | ablkcipher_request_set_crypt(abreq, req->src, req->dst, |
249 | req->cryptlen, req->iv); | 253 | cryptlen, req->iv); |
250 | 254 | ||
251 | err = crypto_ablkcipher_decrypt(abreq); | 255 | err = crypto_ablkcipher_decrypt(abreq); |
252 | 256 | ||