aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorEvgeniy Polyakov <johnpol@2ka.mipt.ru>2007-10-11 07:58:16 -0400
committerHerbert Xu <herbert@gondor.apana.org.au>2008-01-10 16:16:03 -0500
commitc3041f9c93e31159f4e321abea7c1549d271e6a7 (patch)
tree12a4b27c2717f2935ccac0f1873c19e09492d4c7 /drivers
parent16d004a2eda7be2c6a2de63eca2ad3c6b57307b3 (diff)
[CRYPTO] hifn_795x: Detect weak keys
HIFN driver update to use DES weak key checks (exported in this patch). Signed-off-by: Evgeniy Polyakov <johnpol@2ka.mipt.ru> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/crypto/Kconfig2
-rw-r--r--drivers/crypto/hifn_795x.c11
2 files changed, 12 insertions, 1 deletions
diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig
index 1ef7697fc99..c2de1351819 100644
--- a/drivers/crypto/Kconfig
+++ b/drivers/crypto/Kconfig
@@ -85,9 +85,9 @@ config ZCRYPT_MONOLITHIC
85 85
86config CRYPTO_DEV_HIFN_795X 86config CRYPTO_DEV_HIFN_795X
87 tristate "Driver HIFN 795x crypto accelerator chips" 87 tristate "Driver HIFN 795x crypto accelerator chips"
88 select CRYPTO_DES
88 select CRYPTO_ALGAPI 89 select CRYPTO_ALGAPI
89 select CRYPTO_ABLKCIPHER 90 select CRYPTO_ABLKCIPHER
90 select CRYPTO_BLKCIPHER
91 help 91 help
92 This option allows you to have support for HIFN 795x crypto adapters. 92 This option allows you to have support for HIFN 795x crypto adapters.
93 93
diff --git a/drivers/crypto/hifn_795x.c b/drivers/crypto/hifn_795x.c
index e3376f2236b..391c20a3dff 100644
--- a/drivers/crypto/hifn_795x.c
+++ b/drivers/crypto/hifn_795x.c
@@ -29,6 +29,7 @@
29#include <linux/crypto.h> 29#include <linux/crypto.h>
30 30
31#include <crypto/algapi.h> 31#include <crypto/algapi.h>
32#include <crypto/des.h>
32 33
33#include <asm/kmap_types.h> 34#include <asm/kmap_types.h>
34 35
@@ -1924,6 +1925,16 @@ static int hifn_setkey(struct crypto_ablkcipher *cipher, const u8 *key,
1924 return -1; 1925 return -1;
1925 } 1926 }
1926 1927
1928 if (len == HIFN_DES_KEY_LENGTH) {
1929 u32 tmp[DES_EXPKEY_WORDS];
1930 int ret = des_ekey(tmp, key);
1931
1932 if (unlikely(ret == 0) && (tfm->crt_flags & CRYPTO_TFM_REQ_WEAK_KEY)) {
1933 tfm->crt_flags |= CRYPTO_TFM_RES_WEAK_KEY;
1934 return -EINVAL;
1935 }
1936 }
1937
1927 dev->flags &= ~HIFN_FLAG_OLD_KEY; 1938 dev->flags &= ~HIFN_FLAG_OLD_KEY;
1928 1939
1929 memcpy(ctx->key, key, len); 1940 memcpy(ctx->key, key, len);