Nikos Mavrogiannopoulos <n...@redhat.com> writes:

> On Tue, 2017-05-16 at 22:47 +0200, Niels Möller wrote:
>

>> > +  while(left > 0) {
>> > +          /* T(i) */
>> > +          set_key(mac_ctx, prk_size, prk);
>> > +          if (started != 0) {
>> > +                  update(mac_ctx, digest_size, Ttmp);
>> > +          } else {
>> > +                  started = 1;
>> > +          }
>> > +          if (info_size)
>> > +                  update(mac_ctx, info_size, info);
>> > +          update(mac_ctx, 1, &i);
>> > +
>> > +          if (left < digest_size)
>> > +                  digest_size = left;
>> > +
>> > +          digest(mac_ctx, digest_size, dst);
>> > +          Ttmp = dst;
>> > +
>> > +          left -= digest_size;
>> > +          dst += digest_size;
>> > +          i++;
>> > +  }
>> 
>> I think this loop would clearer if Ttmp was replaced by (dst -
>> digest_size), and maybe it would make sense to take out the first
>> and/or final iterations.
>
> Patch 0005 unrolls the first loop and does that change. I find that
> longer and not as easy to follow, but I may have not caught what you
> meant.

I was thinking of something like

  if (!length)
    return;

  for (;; dst += digest_size, length -= digest_size, i++)
    {
      update(mac_ctx, info_size, info); /* info_size == 0 should work fine */
      update(mac_ctx, 1, &i);
      if (left <= digest_size) 
        {
          digest(mac_ctx, left, dst);
          return;
        }
      digest(max_ctx, digest_size, dst);
      update(mac_ctx, digest_size, dst);
    }

Regards,
/Niels

-- 
Niels Möller. PGP-encrypted email is preferred. Keyid 368C6677.
Internet email is subject to wholesale government surveillance.
_______________________________________________
nettle-bugs mailing list
nettle-bugs@lists.lysator.liu.se
http://lists.lysator.liu.se/mailman/listinfo/nettle-bugs

Reply via email to