Commit e5d6181d authored by Thara Gopinath's avatar Thara Gopinath Committed by Herbert Xu

crypto: qce - Clean up qce_auth_cfg

Remove various redundant checks in qce_auth_cfg. Also allow qce_auth_cfg
to take auth_size as a parameter which is a required setting for ccm(aes)
algorithms
Signed-off-by: default avatarThara Gopinath <thara.gopinath@linaro.org>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 9363efb4
...@@ -97,11 +97,11 @@ static inline void qce_crypto_go(struct qce_device *qce, bool result_dump) ...@@ -97,11 +97,11 @@ static inline void qce_crypto_go(struct qce_device *qce, bool result_dump)
} }
#ifdef CONFIG_CRYPTO_DEV_QCE_SHA #ifdef CONFIG_CRYPTO_DEV_QCE_SHA
static u32 qce_auth_cfg(unsigned long flags, u32 key_size) static u32 qce_auth_cfg(unsigned long flags, u32 key_size, u32 auth_size)
{ {
u32 cfg = 0; u32 cfg = 0;
if (IS_AES(flags) && (IS_CCM(flags) || IS_CMAC(flags))) if (IS_CCM(flags) || IS_CMAC(flags))
cfg |= AUTH_ALG_AES << AUTH_ALG_SHIFT; cfg |= AUTH_ALG_AES << AUTH_ALG_SHIFT;
else else
cfg |= AUTH_ALG_SHA << AUTH_ALG_SHIFT; cfg |= AUTH_ALG_SHA << AUTH_ALG_SHIFT;
...@@ -119,15 +119,16 @@ static u32 qce_auth_cfg(unsigned long flags, u32 key_size) ...@@ -119,15 +119,16 @@ static u32 qce_auth_cfg(unsigned long flags, u32 key_size)
cfg |= AUTH_SIZE_SHA256 << AUTH_SIZE_SHIFT; cfg |= AUTH_SIZE_SHA256 << AUTH_SIZE_SHIFT;
else if (IS_CMAC(flags)) else if (IS_CMAC(flags))
cfg |= AUTH_SIZE_ENUM_16_BYTES << AUTH_SIZE_SHIFT; cfg |= AUTH_SIZE_ENUM_16_BYTES << AUTH_SIZE_SHIFT;
else if (IS_CCM(flags))
cfg |= (auth_size - 1) << AUTH_SIZE_SHIFT;
if (IS_SHA1(flags) || IS_SHA256(flags)) if (IS_SHA1(flags) || IS_SHA256(flags))
cfg |= AUTH_MODE_HASH << AUTH_MODE_SHIFT; cfg |= AUTH_MODE_HASH << AUTH_MODE_SHIFT;
else if (IS_SHA1_HMAC(flags) || IS_SHA256_HMAC(flags) || else if (IS_SHA1_HMAC(flags) || IS_SHA256_HMAC(flags))
IS_CBC(flags) || IS_CTR(flags))
cfg |= AUTH_MODE_HMAC << AUTH_MODE_SHIFT; cfg |= AUTH_MODE_HMAC << AUTH_MODE_SHIFT;
else if (IS_AES(flags) && IS_CCM(flags)) else if (IS_CCM(flags))
cfg |= AUTH_MODE_CCM << AUTH_MODE_SHIFT; cfg |= AUTH_MODE_CCM << AUTH_MODE_SHIFT;
else if (IS_AES(flags) && IS_CMAC(flags)) else if (IS_CMAC(flags))
cfg |= AUTH_MODE_CMAC << AUTH_MODE_SHIFT; cfg |= AUTH_MODE_CMAC << AUTH_MODE_SHIFT;
if (IS_SHA(flags) || IS_SHA_HMAC(flags)) if (IS_SHA(flags) || IS_SHA_HMAC(flags))
...@@ -136,10 +137,6 @@ static u32 qce_auth_cfg(unsigned long flags, u32 key_size) ...@@ -136,10 +137,6 @@ static u32 qce_auth_cfg(unsigned long flags, u32 key_size)
if (IS_CCM(flags)) if (IS_CCM(flags))
cfg |= QCE_MAX_NONCE_WORDS << AUTH_NONCE_NUM_WORDS_SHIFT; cfg |= QCE_MAX_NONCE_WORDS << AUTH_NONCE_NUM_WORDS_SHIFT;
if (IS_CBC(flags) || IS_CTR(flags) || IS_CCM(flags) ||
IS_CMAC(flags))
cfg |= BIT(AUTH_LAST_SHIFT) | BIT(AUTH_FIRST_SHIFT);
return cfg; return cfg;
} }
...@@ -171,7 +168,7 @@ static int qce_setup_regs_ahash(struct crypto_async_request *async_req) ...@@ -171,7 +168,7 @@ static int qce_setup_regs_ahash(struct crypto_async_request *async_req)
qce_clear_array(qce, REG_AUTH_KEY0, 16); qce_clear_array(qce, REG_AUTH_KEY0, 16);
qce_clear_array(qce, REG_AUTH_BYTECNT0, 4); qce_clear_array(qce, REG_AUTH_BYTECNT0, 4);
auth_cfg = qce_auth_cfg(rctx->flags, rctx->authklen); auth_cfg = qce_auth_cfg(rctx->flags, rctx->authklen, digestsize);
} }
if (IS_SHA_HMAC(rctx->flags) || IS_CMAC(rctx->flags)) { if (IS_SHA_HMAC(rctx->flags) || IS_CMAC(rctx->flags)) {
...@@ -199,7 +196,7 @@ static int qce_setup_regs_ahash(struct crypto_async_request *async_req) ...@@ -199,7 +196,7 @@ static int qce_setup_regs_ahash(struct crypto_async_request *async_req)
qce_write_array(qce, REG_AUTH_BYTECNT0, qce_write_array(qce, REG_AUTH_BYTECNT0,
(u32 *)rctx->byte_count, 2); (u32 *)rctx->byte_count, 2);
auth_cfg = qce_auth_cfg(rctx->flags, 0); auth_cfg = qce_auth_cfg(rctx->flags, 0, digestsize);
if (rctx->last_blk) if (rctx->last_blk)
auth_cfg |= BIT(AUTH_LAST_SHIFT); auth_cfg |= BIT(AUTH_LAST_SHIFT);
......
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