crypto: algif_skcipher - initialize upon init request
authorStephan Mueller <smueller@chronox.de>
Sun, 30 Nov 2014 09:55:26 +0000 (10:55 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Tue, 2 Dec 2014 14:55:46 +0000 (22:55 +0800)
commitf26b7b8052daee7ba8bc3f732aa2c20e8c69aea6
tree361d232716f9b532789ec7480c35bba37afb33e9
parent9ba0905f1740f4dbd26c51883511079944e9c97d
crypto: algif_skcipher - initialize upon init request

When using the algif_skcipher, the following call sequence causess a
re-initialization:

1. sendmsg with ALG_SET_OP and iov == NULL, iovlen == 0 (i.e
initializing the cipher, but not sending data)

2. sendmsg with msg->msg-controllen == 0 and iov != NULL (using the initalized
cipher handle by sending data)

In step 2, the cipher operation type (encryption or decryption) is reset
to always decryption, because the local variable of enc is put into
ctx->enc as ctx->user is still zero.

The same applies when all send data is processed and ctx->used falls to
zero followed by user space to send new data.

This patch changes the behavior to only reset the cipher operation type
(and the IV) if such configuration request is received.

Signed-off-by: Stephan Mueller <smueller@chronox.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/algif_skcipher.c