crypto: bcm - fix normal/non key hash algorithm failure
authorRaveendra Padasalagi <raveendra.padasalagi@broadcom.com>
Tue, 6 Nov 2018 08:28:58 +0000 (13:58 +0530)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 16 Nov 2018 06:09:40 +0000 (14:09 +0800)
Remove setkey() callback handler for normal/non key
hash algorithms and keep it for AES-CBC/CMAC which needs key.

Fixes: 9d12ba86f818 ("crypto: brcm - Add Broadcom SPU driver")
Signed-off-by: Raveendra Padasalagi <raveendra.padasalagi@broadcom.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/bcm/cipher.c

index 2d1f1db9f807448c45bc228d7c4f500d3ac6152c..4d67e22a466446d7a3a555dffe5325ab35b7355e 100644 (file)
@@ -4652,12 +4652,16 @@ static int spu_register_ahash(struct iproc_alg_s *driver_alg)
        hash->halg.statesize = sizeof(struct spu_hash_export_s);
 
        if (driver_alg->auth_info.mode != HASH_MODE_HMAC) {
-               hash->setkey = ahash_setkey;
                hash->init = ahash_init;
                hash->update = ahash_update;
                hash->final = ahash_final;
                hash->finup = ahash_finup;
                hash->digest = ahash_digest;
+               if ((driver_alg->auth_info.alg == HASH_ALG_AES) &&
+                   ((driver_alg->auth_info.mode == HASH_MODE_XCBC) ||
+                   (driver_alg->auth_info.mode == HASH_MODE_CMAC))) {
+                       hash->setkey = ahash_setkey;
+               }
        } else {
                hash->setkey = ahash_hmac_setkey;
                hash->init = ahash_hmac_init;