From: Dan Carpenter <dan.carpenter@oracle.com>
To: Dominik Paulus <dominik.paulus@fau.de>
Cc: usbip-devel@lists.sourceforge.net,
Anthony Foiani <anthony.foiani@gmail.com>,
devel@driverdev.osuosl.org, linux-kernel@i4.cs.fau.de,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-usb@vger.kernel.org,
Kurt Kanzenbach <ly80toro@cip.cs.fau.de>,
Tobias Polzer <tobias.polzer@fau.de>,
Harvey Yang <harvey.huawei.yang@gmail.com>,
linux-kernel@vger.kernel.org,
Ilija Hadzic <ihadzic@research.bell-labs.com>,
Bart Westgeest <bart@elbrys.com>, Joe Perches <joe@perches.com>,
Jake Champlin <jake.champlin.27@gmail.com>,
Stefan Reif <ke42caxa@cip.cs.fau.de>,
Bernard Blackham <b-linuxgit@largestprime.net>
Subject: Re: [PATCH 5/7] staging: usbip: Add encryption support to kernel
Date: Mon, 23 Sep 2013 13:58:42 +0300 [thread overview]
Message-ID: <20130923105842.GH6192@mwanda> (raw)
In-Reply-To: <1379599919-24763-6-git-send-email-dominik.paulus@fau.de>
On Thu, Sep 19, 2013 at 04:11:57PM +0200, Dominik Paulus wrote:
> +/*
> + * Perform encryption/decryption on one chunk of data.
> + * Uses global crypto state stored in usbip_device.
> + * Parameters:
> + * encrypt: 1 to perform encryption, 0 to perform decryption operation
Make this a define:
#define USBIP_ENCRYPT 1
#define USBIP_ENCRYPT 0
> + * packetsize: Size of the encrypted packet, including the authentication tag,
> + * not including the associated data (length field).
> + * plaintext and ciphertext have to be appropiately managed by the caller
> + * (i.e. they must be at least packetsize bytes long).
> + * Returns: 0 on success
> + */
> +static int usbip_crypt(struct usbip_device *ud, int encrypt, uint32_t
> + packetsize, unsigned char *plaintext, unsigned char
> + *ciphertext)
Don't break put line breaks between the type and the variable name. It
should be:
static int usbip_crypt(struct usbip_device *ud, int encrypt,
uint32_t packetsize, unsigned char *plaintext,
unsigned char *ciphertext)
This applies to earlier patches in this series as well.
> +{
> + struct crypto_aead *tfm;
> + struct aead_request *req;
> + struct tcrypt_result result;
> + struct scatterlist plain, cipher, assoc;
> + char iv[16];
> + u64 *iv_num;
> + u64 iv_net;
> + const int plainsize = packetsize - USBIP_AUTHSIZE;
Is it possible that packetsize is less than USBIP_AUTHSIZE?
> + int ret;
> +
> + memset(iv, 0, sizeof(iv));
> + if (encrypt) {
> + tfm = ud->tfm_send;
> + iv_num = &ud->ctr_send;
> + } else {
> + tfm = ud->tfm_recv;
> + iv_num = &ud->ctr_recv;
> + }
> + iv_net = cpu_to_be64(*iv_num);
> + memcpy(iv, &iv_net, sizeof(iv_net));
> +
> + req = aead_request_alloc(tfm, GFP_KERNEL);
> + if (IS_ERR(req))
> + return -PTR_ERR(req);
> +
> + init_completion(&result.completion);
> + aead_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG,
> + tcrypt_complete, &result);
Align this up like:
aead_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG,
tcrypt_complete, &result);
> +
> + sg_init_one(&cipher, ciphertext, packetsize);
> + sg_init_one(&plain, plaintext, plainsize);
> + crypto_aead_clear_flags(tfm, ~0);
> +
> + if (encrypt)
> + aead_request_set_crypt(req, &plain, &cipher, plainsize, iv);
> + else
> + aead_request_set_crypt(req, &cipher, &plain, packetsize, iv);
> + packetsize = cpu_to_be32(packetsize);
> + sg_init_one(&assoc, &packetsize, sizeof(packetsize));
> + /* Associated data: Unencrypted length tag */
> + aead_request_set_assoc(req, &assoc, sizeof(packetsize));
> +
> + if (encrypt)
> + ret = crypto_aead_encrypt(req);
> + else
> + ret = crypto_aead_decrypt(req);
> +
Good on you for figuring out what crypto_aead_en/decrypt() returns.
Where are these functions documented?
> + switch (ret) {
> + case 0: /* Success */
> + break;
> + case -EINPROGRESS:
> + case -EBUSY:
> + wait_for_completion(&result.completion);
> + break;
> + default:
> + aead_request_free(req);
> + return ret;
> + }
> +
regards,
dan carpenter
next prev parent reply other threads:[~2013-09-23 11:03 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-19 14:11 [PATCH 0/7] staging: usbip: Extend crypto support Dominik Paulus
2013-09-19 14:11 ` [PATCH 1/7] staging: usbip: TLS for all userspace communication Dominik Paulus
2013-09-19 14:11 ` [PATCH 2/7] staging: usbip: Exchange session keys in userspace Dominik Paulus
2013-09-19 14:11 ` [PATCH 3/7] staging: usbip: Pass session keys to the kernel Dominik Paulus
2013-09-19 14:11 ` [PATCH 4/7] staging: usbip: Wrap kernel_sendmsg()/recvmsg() Dominik Paulus
2013-09-19 14:11 ` [PATCH 5/7] staging: usbip: Add encryption support to kernel Dominik Paulus
2013-09-23 9:59 ` Dan Carpenter
2013-09-26 10:18 ` Dominik Paulus
2013-09-26 11:48 ` Dan Carpenter
2013-09-23 10:35 ` Dan Carpenter
2013-09-23 10:58 ` Dan Carpenter [this message]
2013-09-19 14:11 ` [PATCH 6/7] staging: usbip: Update documentation Dominik Paulus
2013-09-19 14:11 ` [PATCH 7/7] staging: usbip: Increment version number to 1.2.1 Dominik Paulus
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130923105842.GH6192@mwanda \
--to=dan.carpenter@oracle.com \
--cc=anthony.foiani@gmail.com \
--cc=b-linuxgit@largestprime.net \
--cc=bart@elbrys.com \
--cc=devel@driverdev.osuosl.org \
--cc=dominik.paulus@fau.de \
--cc=gregkh@linuxfoundation.org \
--cc=harvey.huawei.yang@gmail.com \
--cc=ihadzic@research.bell-labs.com \
--cc=jake.champlin.27@gmail.com \
--cc=joe@perches.com \
--cc=ke42caxa@cip.cs.fau.de \
--cc=linux-kernel@i4.cs.fau.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=ly80toro@cip.cs.fau.de \
--cc=tobias.polzer@fau.de \
--cc=usbip-devel@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.