Re: [PATCH v3 1/3] crypto: streebog - add Streebog hash function

From: Ard Biesheuvel
Date: Mon Nov 05 2018 - 13:58:09 EST


On 5 November 2018 at 19:23, Vitaly Chikunov <vt@xxxxxxxxxxxx> wrote:
> Ard,
>
> On Mon, Nov 05, 2018 at 02:22:21PM +0100, Ard Biesheuvel wrote:
>>
>> > +static const struct streebog_uint512 buffer512 = { {
>> > + cpu_to_le64(0x200ULL),
>>
>> Can we keep the memory representation in native endianness, and only
>> swab the in/output [where needed]?
>
> I hope you do not insist on that?
>
> The code is using same primitives to add/xor/permute with data from
> these arrays (buffer512[] and C[], those which use cpu_to_le64), and
> from generic data buffers. Having these arrays in native endianness will
> cause complexities - code split and duplications. For example, XLPS
> permutation will require two versions, with one accessing (y) as is and
> another as cpu_to_le64(y).
>
> The code is based on canonical implementation by RFC 6986 ("GOST R
> 34.11-2012: Hash Function") author, and I don't want it do deviate that
> much from the original, which would complicate algorithm reviews.
>

That is a very good reason, so unless anyone has concerns about the
performance on BE systems, let's leave it as is.