From: Eric Biggers <ebiggers@kernel.org>
To: Ondrej Mosnacek <omosnace@redhat.com>
Cc: linux-crypto@vger.kernel.org,
Herbert Xu <herbert@gondor.apana.org.au>,
Linux kernel mailing list <linux-kernel@vger.kernel.org>,
"Jason A . Donenfeld" <Jason@zx2c4.com>,
stable@vger.kernel.org
Subject: Re: [RFC/RFT PATCH 02/15] crypto: morus - fix handling chunked inputs
Date: Thu, 31 Jan 2019 21:25:07 -0800 [thread overview]
Message-ID: <20190201052506.GA765@sol.localdomain> (raw)
In-Reply-To: <CAFqZXNv+=qgg+Jo4iC72D++BmoxK4S0XiKED47M7MQJjFtMYRw@mail.gmail.com>
On Thu, Jan 31, 2019 at 10:05:17AM +0100, Ondrej Mosnacek wrote:
> Hi Eric,
>
> On Wed, Jan 23, 2019 at 11:52 PM Eric Biggers <ebiggers@kernel.org> wrote:
> > From: Eric Biggers <ebiggers@google.com>
> >
> > The generic MORUS implementations all fail the improved AEAD tests
> > because they produce the wrong result with some data layouts. Fix them.
> >
> > Fixes: 396be41f16fd ("crypto: morus - Add generic MORUS AEAD implementations")
> > Cc: <stable@vger.kernel.org> # v4.18+
> > Cc: Ondrej Mosnacek <omosnace@redhat.com>
> > Signed-off-by: Eric Biggers <ebiggers@google.com>
> > ---
> > crypto/morus1280.c | 13 +++++++------
> > crypto/morus640.c | 13 +++++++------
> > 2 files changed, 14 insertions(+), 12 deletions(-)
> >
> > diff --git a/crypto/morus1280.c b/crypto/morus1280.c
> > index 3889c188f266..b83576b4eb55 100644
> > --- a/crypto/morus1280.c
> > +++ b/crypto/morus1280.c
> > @@ -366,18 +366,19 @@ static void crypto_morus1280_process_crypt(struct morus1280_state *state,
> > const struct morus1280_ops *ops)
> > {
> > struct skcipher_walk walk;
> > - u8 *dst;
> > - const u8 *src;
> >
> > ops->skcipher_walk_init(&walk, req, false);
> >
> > while (walk.nbytes) {
> > - src = walk.src.virt.addr;
> > - dst = walk.dst.virt.addr;
> > + unsigned int nbytes = walk.nbytes;
> >
> > - ops->crypt_chunk(state, dst, src, walk.nbytes);
> > + if (nbytes < walk.total)
> > + nbytes = round_down(nbytes, walk.stride);
> >
> > - skcipher_walk_done(&walk, 0);
> > + ops->crypt_chunk(state, walk.dst.virt.addr, walk.src.virt.addr,
> > + nbytes);
> > +
> > + skcipher_walk_done(&walk, walk.nbytes - nbytes);
> > }
>
> Hm... I assume the problem was that skcipher_walk may give you nbytes
> that is not rounded to the algorithm's walksize (aka walk.stride) even
> in the middle of the stream, right? I must have misread the code in
> skcipher.c and assumed that it automatically makes every step of a
> round size, with the exception of the very last one, which may include
> a final partial block. Thinking about it now it makes sense to me that
> this isn't the case, since for stream ciphers it would mean some
> unnecessary memcpy'ing in the skcipher_walk code...
>
> Maybe you could explain the problem in one or two sentences in the
> commit message(s), since the contract of skcipher_walk doesn't seem to
> be documented anywhere and so it is not obvious why the change is
> necessary.
>
> Thank you for all your work on this - the improved testmgr tests were
> long needed!
>
Yes, that's correct. I'll add an explanation to the commit messages. I'm
actually not convinced that this behavior should be the default (vs. allowing
the caller to opt-in to it if needed), but this is how it works now...
A while back I also started work on a documentation patch for the skcipher_walk
functions, but it's still pretty incomplete. I'll see if I can get it in a
state to send out.
- Eric
next prev parent reply other threads:[~2019-02-01 5:25 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-23 22:49 [RFC/RFT PATCH 00/15] crypto: improved skcipher, aead, and hash tests Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 01/15] crypto: aegis - fix handling chunked inputs Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 02/15] crypto: morus " Eric Biggers
2019-01-31 9:05 ` Ondrej Mosnacek
2019-02-01 5:25 ` Eric Biggers [this message]
2019-01-23 22:49 ` [RFC/RFT PATCH 03/15] crypto: x86/aegis - fix handling chunked inputs and MAY_SLEEP Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 04/15] crypto: x86/morus " Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 05/15] crypto: x86/aesni-gcm - fix crash on empty plaintext Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 06/15] crypto: ahash - fix another early termination in hash walk Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 07/15] crypto: arm64/aes-neonbs - fix returning final keystream block Eric Biggers
2019-01-24 12:11 ` Ard Biesheuvel
2019-01-23 22:49 ` [RFC/RFT PATCH 08/15] crypto: testmgr - add testvec_config struct and helper functions Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 09/15] crypto: testmgr - introduce CONFIG_CRYPTO_MANAGER_EXTRA_TESTS Eric Biggers
2019-02-01 5:31 ` Herbert Xu
2019-02-01 7:00 ` Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 10/15] crypto: testmgr - implement random testvec_config generation Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 11/15] crypto: testmgr - convert skcipher testing to use testvec_configs Eric Biggers
2019-01-24 12:36 ` Ard Biesheuvel
2019-01-24 13:14 ` Corentin Labbe
2019-01-24 14:09 ` Ard Biesheuvel
2019-01-23 22:49 ` [RFC/RFT PATCH 12/15] crypto: testmgr - convert aead " Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 13/15] crypto: testmgr - convert hash " Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 14/15] crypto: testmgr - check for skcipher_request corruption Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 15/15] crypto: testmgr - check for aead_request corruption Eric Biggers
2019-01-24 8:48 ` [RFC/RFT PATCH 00/15] crypto: improved skcipher, aead, and hash tests Eric Biggers
2019-01-24 8:50 ` Ard Biesheuvel
2019-01-24 9:23 ` Herbert Xu
2019-01-24 10:16 ` Ard Biesheuvel
2019-01-24 10:20 ` Herbert Xu
2019-01-24 18:22 ` Eric Biggers
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=20190201052506.GA765@sol.localdomain \
--to=ebiggers@kernel.org \
--cc=Jason@zx2c4.com \
--cc=herbert@gondor.apana.org.au \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=omosnace@redhat.com \
--cc=stable@vger.kernel.org \
/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.