aboutsummaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2007-12-04 04:07:27 -0500
committerHerbert Xu <herbert@gondor.apana.org.au>2008-01-10 16:16:32 -0500
commitfe70f5dfe1a7b5caab96531089dac3d8728c0ebd (patch)
tree8528d52f86d8c37a431e09b423f0a4ecaad4e6e3 /crypto
parent6160b289929c0b622e64aa36106d8e6e53fcd826 (diff)
[CRYPTO] aead: Return EBADMSG for ICV mismatch
This patch changes gcm/authenc to return EBADMSG instead of EINVAL for ICV mismatches. This convention has already been adopted by IPsec. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/authenc.c2
-rw-r--r--crypto/gcm.c2
2 files changed, 2 insertions, 2 deletions
diff --git a/crypto/authenc.c b/crypto/authenc.c
index 82e03ffa6245..6c9104ebf2f4 100644
--- a/crypto/authenc.c
+++ b/crypto/authenc.c
@@ -200,7 +200,7 @@ auth_unlock:
200 200
201 authsize = crypto_aead_authsize(authenc); 201 authsize = crypto_aead_authsize(authenc);
202 scatterwalk_map_and_copy(ihash, src, cryptlen, authsize, 0); 202 scatterwalk_map_and_copy(ihash, src, cryptlen, authsize, 0);
203 return memcmp(ihash, ohash, authsize) ? -EINVAL : 0; 203 return memcmp(ihash, ohash, authsize) ? -EBADMSG: 0;
204} 204}
205 205
206static void crypto_authenc_decrypt_done(struct crypto_async_request *req, 206static void crypto_authenc_decrypt_done(struct crypto_async_request *req,
diff --git a/crypto/gcm.c b/crypto/gcm.c
index ed8a6261b346..d60c340b0b9d 100644
--- a/crypto/gcm.c
+++ b/crypto/gcm.c
@@ -327,7 +327,7 @@ static int crypto_gcm_decrypt(struct aead_request *req)
327 327
328 scatterwalk_map_and_copy(iauth_tag, req->src, cryptlen, authsize, 0); 328 scatterwalk_map_and_copy(iauth_tag, req->src, cryptlen, authsize, 0);
329 if (memcmp(iauth_tag, auth_tag, authsize)) 329 if (memcmp(iauth_tag, auth_tag, authsize))
330 return -EINVAL; 330 return -EBADMSG;
331 331
332 return crypto_ablkcipher_decrypt(&abreq); 332 return crypto_ablkcipher_decrypt(&abreq);
333} 333}