aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/crypto/ccree/cc_aead.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/crypto/ccree/cc_aead.c')
-rw-r--r--drivers/crypto/ccree/cc_aead.c24
1 files changed, 4 insertions, 20 deletions
diff --git a/drivers/crypto/ccree/cc_aead.c b/drivers/crypto/ccree/cc_aead.c
index a9779a212b18..d3e8faa03f15 100644
--- a/drivers/crypto/ccree/cc_aead.c
+++ b/drivers/crypto/ccree/cc_aead.c
@@ -6,7 +6,7 @@
6#include <crypto/algapi.h> 6#include <crypto/algapi.h>
7#include <crypto/internal/aead.h> 7#include <crypto/internal/aead.h>
8#include <crypto/authenc.h> 8#include <crypto/authenc.h>
9#include <crypto/des.h> 9#include <crypto/internal/des.h>
10#include <linux/rtnetlink.h> 10#include <linux/rtnetlink.h>
11#include "cc_driver.h" 11#include "cc_driver.h"
12#include "cc_buffer_mgr.h" 12#include "cc_buffer_mgr.h"
@@ -649,33 +649,17 @@ static int cc_des3_aead_setkey(struct crypto_aead *aead, const u8 *key,
649 unsigned int keylen) 649 unsigned int keylen)
650{ 650{
651 struct crypto_authenc_keys keys; 651 struct crypto_authenc_keys keys;
652 u32 flags;
653 int err; 652 int err;
654 653
655 err = crypto_authenc_extractkeys(&keys, key, keylen); 654 err = crypto_authenc_extractkeys(&keys, key, keylen);
656 if (unlikely(err)) 655 if (unlikely(err))
657 goto badkey; 656 return err;
658
659 err = -EINVAL;
660 if (keys.enckeylen != DES3_EDE_KEY_SIZE)
661 goto badkey;
662 657
663 flags = crypto_aead_get_flags(aead); 658 err = verify_aead_des3_key(aead, keys.enckey, keys.enckeylen) ?:
664 err = __des3_verify_key(&flags, keys.enckey); 659 cc_aead_setkey(aead, key, keylen);
665 if (unlikely(err)) {
666 crypto_aead_set_flags(aead, flags);
667 goto out;
668 }
669 660
670 err = cc_aead_setkey(aead, key, keylen);
671
672out:
673 memzero_explicit(&keys, sizeof(keys)); 661 memzero_explicit(&keys, sizeof(keys));
674 return err; 662 return err;
675
676badkey:
677 crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
678 goto out;
679} 663}
680 664
681static int cc_rfc4309_ccm_setkey(struct crypto_aead *tfm, const u8 *key, 665static int cc_rfc4309_ccm_setkey(struct crypto_aead *tfm, const u8 *key,