diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2007-12-04 04:07:27 -0500 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2008-01-10 16:16:32 -0500 |
commit | fe70f5dfe1a7b5caab96531089dac3d8728c0ebd (patch) | |
tree | 8528d52f86d8c37a431e09b423f0a4ecaad4e6e3 | |
parent | 6160b289929c0b622e64aa36106d8e6e53fcd826 (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>
-rw-r--r-- | crypto/authenc.c | 2 | ||||
-rw-r--r-- | crypto/gcm.c | 2 |
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 | ||
206 | static void crypto_authenc_decrypt_done(struct crypto_async_request *req, | 206 | static 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 | } |