summaryrefslogtreecommitdiffstats
path: root/drivers/crypto
diff options
context:
space:
mode:
authorAntoine Tenart <antoine.tenart@bootlin.com>2018-05-14 15:10:57 +0200
committerHerbert Xu <herbert@gondor.apana.org.au>2018-05-26 18:11:36 +0200
commit3a5ca230bbb64b5a6330559671bd67cfd8b4a170 (patch)
treebe3677ac83de1f624f2984541c6f878220132f1a /drivers/crypto
parentcrypto: inside-secure - rework cipher functions for future AEAD support (diff)
downloadlinux-3a5ca230bbb64b5a6330559671bd67cfd8b4a170.tar.xz
linux-3a5ca230bbb64b5a6330559671bd67cfd8b4a170.zip
crypto: inside-secure - rework the alg type settings in the context
This patches reworks the way the algorithm type is set in the context, by using the fact that the decryption algorithms are just a combination of the algorithm encryption type and CONTEXT_CONTROL_TYPE_NULL_IN. This will help having simpler code when adding the AEAD support, to avoid ending up with an endless switch case block. Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto')
-rw-r--r--drivers/crypto/inside-secure/safexcel_cipher.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/crypto/inside-secure/safexcel_cipher.c b/drivers/crypto/inside-secure/safexcel_cipher.c
index 51f88f93ed99..9ed3f2641ef3 100644
--- a/drivers/crypto/inside-secure/safexcel_cipher.c
+++ b/drivers/crypto/inside-secure/safexcel_cipher.c
@@ -104,10 +104,13 @@ static int safexcel_context_control(struct safexcel_cipher_ctx *ctx,
struct safexcel_crypto_priv *priv = ctx->priv;
int ctrl_size;
- if (sreq->direction == SAFEXCEL_ENCRYPT)
- cdesc->control_data.control0 |= CONTEXT_CONTROL_TYPE_CRYPTO_OUT;
- else
- cdesc->control_data.control0 |= CONTEXT_CONTROL_TYPE_CRYPTO_IN;
+ cdesc->control_data.control0 |= CONTEXT_CONTROL_TYPE_CRYPTO_OUT;
+
+ /* The decryption control type is a combination of the encryption type
+ * and CONTEXT_CONTROL_TYPE_NULL_IN, for all types.
+ */
+ if (sreq->direction == SAFEXCEL_DECRYPT)
+ cdesc->control_data.control0 |= CONTEXT_CONTROL_TYPE_NULL_IN;
cdesc->control_data.control0 |= CONTEXT_CONTROL_KEY_EN;
cdesc->control_data.control1 |= ctx->mode;