Re: [RFC PATCH v3 10/15] crypto: poly1305 - use structures for key and accumulator

From: Eric Biggers
Date: Fri Nov 16 2018 - 19:17:32 EST


Hi Herbert,

On Fri, Nov 16, 2018 at 02:02:27PM +0800, Herbert Xu wrote:
> Hi Eric:
>
> On Mon, Nov 12, 2018 at 10:58:17AM -0800, Eric Biggers wrote:
> >
> > I prefer separate types so that the type system enforces that a key is never
> > accidentally used as an accumulator, and vice versa. Then the poly1305_core_*
> > functions will be harder to misuse, and the Poly1305 MAC implementations harder
> > to get wrong.
> >
> > The key also has certain bits clear whereas the accumulator does not. In the
> > future, the Poly1305 C implementation might use base 2^32 and take advantage of
> > this. In that case, the two inputs to each multiplication won't be
> > interchangeable, so using the same type for both would be extra confusing.
> >
> > Having a poly1305_val nested inside poly1305_key and poly1305_state would work,
> > but seemed excessive.
>
> So it looks like there are no more unresolved issues with this
> patch series. Please let me know when you want it to go in.
>

I believe it's ready to go in. I'll need to rebase it onto cryptodev, to
resolve some small conflicts with the recent ChaCha20-related changes. Also
I'll probably omit the fscrypt patch (patch 15/15) so that that patch can be
taken through the fscrypt tree instead.

Do you prefer that this be merged before or after Zinc? It seems it may still
be a while before the community is satisfied with Zinc (and Wireguard which is
in the same patchset), and I don't want this blocked unnecessarily... So on my
part I'd prefer to just have this merged as-is.

Of course, it's always possible to change the xchacha12 and xchacha20
implementations later, whether that's to use "Zinc" or otherwise. And
NHPoly1305 and Adiantum itself will be the same either way, except that the
Poly1305 helpers may change slightly.

What do you think?

Thanks!

- Eric