diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-12-05 13:46:44 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-12-05 13:46:44 -0500 |
| commit | 9cfe5212745a41fbe7cba1a74289f5c66fc45c1f (patch) | |
| tree | 5e2cf7b4b8ea1f0a9b318aa411602d4e48483489 /drivers | |
| parent | 849ee3d46a7334e950fb17d1ac2cbe2c6b088f65 (diff) | |
| parent | 79960943fdc114fd4583c9ab164b5c89da7aa601 (diff) | |
Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Pull crypto fixes from Herbert Xu:
"This fixes a couple of crypto drivers that were using memcmp to verify
authentication tags. They now use crypto_memneq instead"
* 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
crypto: talitos - Fix timing leak in ESP ICV verification
crypto: nx - Fix timing leak in GCM and CCM decryption
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/crypto/nx/nx-aes-ccm.c | 2 | ||||
| -rw-r--r-- | drivers/crypto/nx/nx-aes-gcm.c | 3 | ||||
| -rw-r--r-- | drivers/crypto/talitos.c | 2 |
3 files changed, 4 insertions, 3 deletions
diff --git a/drivers/crypto/nx/nx-aes-ccm.c b/drivers/crypto/nx/nx-aes-ccm.c index 73ef49922788..7038f364acb5 100644 --- a/drivers/crypto/nx/nx-aes-ccm.c +++ b/drivers/crypto/nx/nx-aes-ccm.c | |||
| @@ -409,7 +409,7 @@ static int ccm_nx_decrypt(struct aead_request *req, | |||
| 409 | processed += to_process; | 409 | processed += to_process; |
| 410 | } while (processed < nbytes); | 410 | } while (processed < nbytes); |
| 411 | 411 | ||
| 412 | rc = memcmp(csbcpb->cpb.aes_ccm.out_pat_or_mac, priv->oauth_tag, | 412 | rc = crypto_memneq(csbcpb->cpb.aes_ccm.out_pat_or_mac, priv->oauth_tag, |
| 413 | authsize) ? -EBADMSG : 0; | 413 | authsize) ? -EBADMSG : 0; |
| 414 | out: | 414 | out: |
| 415 | spin_unlock_irqrestore(&nx_ctx->lock, irq_flags); | 415 | spin_unlock_irqrestore(&nx_ctx->lock, irq_flags); |
diff --git a/drivers/crypto/nx/nx-aes-gcm.c b/drivers/crypto/nx/nx-aes-gcm.c index eee624f589b6..abd465f479c4 100644 --- a/drivers/crypto/nx/nx-aes-gcm.c +++ b/drivers/crypto/nx/nx-aes-gcm.c | |||
| @@ -21,6 +21,7 @@ | |||
| 21 | 21 | ||
| 22 | #include <crypto/internal/aead.h> | 22 | #include <crypto/internal/aead.h> |
| 23 | #include <crypto/aes.h> | 23 | #include <crypto/aes.h> |
| 24 | #include <crypto/algapi.h> | ||
| 24 | #include <crypto/scatterwalk.h> | 25 | #include <crypto/scatterwalk.h> |
| 25 | #include <linux/module.h> | 26 | #include <linux/module.h> |
| 26 | #include <linux/types.h> | 27 | #include <linux/types.h> |
| @@ -418,7 +419,7 @@ mac: | |||
| 418 | itag, req->src, req->assoclen + nbytes, | 419 | itag, req->src, req->assoclen + nbytes, |
| 419 | crypto_aead_authsize(crypto_aead_reqtfm(req)), | 420 | crypto_aead_authsize(crypto_aead_reqtfm(req)), |
| 420 | SCATTERWALK_FROM_SG); | 421 | SCATTERWALK_FROM_SG); |
| 421 | rc = memcmp(itag, otag, | 422 | rc = crypto_memneq(itag, otag, |
| 422 | crypto_aead_authsize(crypto_aead_reqtfm(req))) ? | 423 | crypto_aead_authsize(crypto_aead_reqtfm(req))) ? |
| 423 | -EBADMSG : 0; | 424 | -EBADMSG : 0; |
| 424 | } | 425 | } |
diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c index 46f531e19ccf..b6f9f42e2985 100644 --- a/drivers/crypto/talitos.c +++ b/drivers/crypto/talitos.c | |||
| @@ -977,7 +977,7 @@ static void ipsec_esp_decrypt_swauth_done(struct device *dev, | |||
| 977 | } else | 977 | } else |
| 978 | oicv = (char *)&edesc->link_tbl[0]; | 978 | oicv = (char *)&edesc->link_tbl[0]; |
| 979 | 979 | ||
| 980 | err = memcmp(oicv, icv, authsize) ? -EBADMSG : 0; | 980 | err = crypto_memneq(oicv, icv, authsize) ? -EBADMSG : 0; |
| 981 | } | 981 | } |
| 982 | 982 | ||
| 983 | kfree(edesc); | 983 | kfree(edesc); |
