浏览代码

[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>
Herbert Xu 17 年之前
父节点
当前提交
fe70f5dfe1
共有 2 个文件被更改,包括 2 次插入2 次删除
  1. 1 1
      crypto/authenc.c
  2. 1 1
      crypto/gcm.c

+ 1 - 1
crypto/authenc.c

@@ -200,7 +200,7 @@ auth_unlock:
 
 
 	authsize = crypto_aead_authsize(authenc);
 	authsize = crypto_aead_authsize(authenc);
 	scatterwalk_map_and_copy(ihash, src, cryptlen, authsize, 0);
 	scatterwalk_map_and_copy(ihash, src, cryptlen, authsize, 0);
-	return memcmp(ihash, ohash, authsize) ? -EINVAL : 0;
+	return memcmp(ihash, ohash, authsize) ? -EBADMSG: 0;
 }
 }
 
 
 static void crypto_authenc_decrypt_done(struct crypto_async_request *req,
 static void crypto_authenc_decrypt_done(struct crypto_async_request *req,

+ 1 - 1
crypto/gcm.c

@@ -327,7 +327,7 @@ static int crypto_gcm_decrypt(struct aead_request *req)
 
 
 	scatterwalk_map_and_copy(iauth_tag, req->src, cryptlen, authsize, 0);
 	scatterwalk_map_and_copy(iauth_tag, req->src, cryptlen, authsize, 0);
 	if (memcmp(iauth_tag, auth_tag, authsize))
 	if (memcmp(iauth_tag, auth_tag, authsize))
-		return -EINVAL;
+		return -EBADMSG;
 
 
 	return crypto_ablkcipher_decrypt(&abreq);
 	return crypto_ablkcipher_decrypt(&abreq);
 }
 }