Commit 4e2c8208 authored by Ard Biesheuvel's avatar Ard Biesheuvel Committed by Herbert Xu

crypto: s390/des - switch to new verification routines

Switch to the refactored DES key verification routines. While at it,
rename the DES encrypt/decrypt routines so they will not conflict with
the DES library later on.
Reviewed-by: default avatarHarald Freudenberger <freude@linux.ibm.com>
Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 6ee41e54
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
#include <linux/fips.h> #include <linux/fips.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <crypto/algapi.h> #include <crypto/algapi.h>
#include <crypto/des.h> #include <crypto/internal/des.h>
#include <asm/cpacf.h> #include <asm/cpacf.h>
#define DES3_KEY_SIZE (3 * DES_KEY_SIZE) #define DES3_KEY_SIZE (3 * DES_KEY_SIZE)
...@@ -35,27 +35,24 @@ static int des_setkey(struct crypto_tfm *tfm, const u8 *key, ...@@ -35,27 +35,24 @@ static int des_setkey(struct crypto_tfm *tfm, const u8 *key,
unsigned int key_len) unsigned int key_len)
{ {
struct s390_des_ctx *ctx = crypto_tfm_ctx(tfm); struct s390_des_ctx *ctx = crypto_tfm_ctx(tfm);
u32 tmp[DES_EXPKEY_WORDS]; int err;
/* check for weak keys */ err = crypto_des_verify_key(tfm, key);
if (!des_ekey(tmp, key) && if (err)
(tfm->crt_flags & CRYPTO_TFM_REQ_FORBID_WEAK_KEYS)) { return err;
tfm->crt_flags |= CRYPTO_TFM_RES_WEAK_KEY;
return -EINVAL;
}
memcpy(ctx->key, key, key_len); memcpy(ctx->key, key, key_len);
return 0; return 0;
} }
static void des_encrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in) static void s390_des_encrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in)
{ {
struct s390_des_ctx *ctx = crypto_tfm_ctx(tfm); struct s390_des_ctx *ctx = crypto_tfm_ctx(tfm);
cpacf_km(CPACF_KM_DEA, ctx->key, out, in, DES_BLOCK_SIZE); cpacf_km(CPACF_KM_DEA, ctx->key, out, in, DES_BLOCK_SIZE);
} }
static void des_decrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in) static void s390_des_decrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in)
{ {
struct s390_des_ctx *ctx = crypto_tfm_ctx(tfm); struct s390_des_ctx *ctx = crypto_tfm_ctx(tfm);
...@@ -76,8 +73,8 @@ static struct crypto_alg des_alg = { ...@@ -76,8 +73,8 @@ static struct crypto_alg des_alg = {
.cia_min_keysize = DES_KEY_SIZE, .cia_min_keysize = DES_KEY_SIZE,
.cia_max_keysize = DES_KEY_SIZE, .cia_max_keysize = DES_KEY_SIZE,
.cia_setkey = des_setkey, .cia_setkey = des_setkey,
.cia_encrypt = des_encrypt, .cia_encrypt = s390_des_encrypt,
.cia_decrypt = des_decrypt, .cia_decrypt = s390_des_decrypt,
} }
} }
}; };
...@@ -227,8 +224,8 @@ static int des3_setkey(struct crypto_tfm *tfm, const u8 *key, ...@@ -227,8 +224,8 @@ static int des3_setkey(struct crypto_tfm *tfm, const u8 *key,
struct s390_des_ctx *ctx = crypto_tfm_ctx(tfm); struct s390_des_ctx *ctx = crypto_tfm_ctx(tfm);
int err; int err;
err = __des3_verify_key(&tfm->crt_flags, key); err = crypto_des3_ede_verify_key(tfm, key);
if (unlikely(err)) if (err)
return err; return err;
memcpy(ctx->key, key, key_len); memcpy(ctx->key, key, key_len);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment