diff options
Diffstat (limited to 'drivers/crypto/sunxi-ss/sun4i-ss-cipher.c')
| -rw-r--r-- | drivers/crypto/sunxi-ss/sun4i-ss-cipher.c | 26 | 
1 files changed, 6 insertions, 20 deletions
diff --git a/drivers/crypto/sunxi-ss/sun4i-ss-cipher.c b/drivers/crypto/sunxi-ss/sun4i-ss-cipher.c index 6f7cbf6c2b55..6536fd4bee65 100644 --- a/drivers/crypto/sunxi-ss/sun4i-ss-cipher.c +++ b/drivers/crypto/sunxi-ss/sun4i-ss-cipher.c @@ -542,25 +542,11 @@ int sun4i_ss_des_setkey(struct crypto_skcipher *tfm, const u8 *key,  			unsigned int keylen)  {  	struct sun4i_tfm_ctx *op = crypto_skcipher_ctx(tfm); -	struct sun4i_ss_ctx *ss = op->ss; -	u32 flags; -	u32 tmp[DES_EXPKEY_WORDS]; -	int ret; - -	if (unlikely(keylen != DES_KEY_SIZE)) { -		dev_err(ss->dev, "Invalid keylen %u\n", keylen); -		crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN); -		return -EINVAL; -	} - -	flags = crypto_skcipher_get_flags(tfm); +	int err; -	ret = des_ekey(tmp, key); -	if (unlikely(!ret) && (flags & CRYPTO_TFM_REQ_FORBID_WEAK_KEYS)) { -		crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_WEAK_KEY); -		dev_dbg(ss->dev, "Weak key %u\n", keylen); -		return -EINVAL; -	} +	err = verify_skcipher_des_key(tfm, key); +	if (err) +		return err;  	op->keylen = keylen;  	memcpy(op->key, key, keylen); @@ -578,8 +564,8 @@ int sun4i_ss_des3_setkey(struct crypto_skcipher *tfm, const u8 *key,  	struct sun4i_tfm_ctx *op = crypto_skcipher_ctx(tfm);  	int err; -	err = des3_verify_key(tfm, key); -	if (unlikely(err)) +	err = verify_skcipher_des3_key(tfm, key); +	if (err)  		return err;  	op->keylen = keylen;  |