[Libre-soc-dev] Poly1305

Luke Kenneth Casson Leighton lkcl at lkcl.net
Thu Sep 7 17:21:22 BST 2023


https://loup-vaillant.fr/tutorials/poly1305-design

Sadoon this is a great page.  Can you create a bug report, link it into the
right parent (Jacob can advise), there are *three* bug reports you can do
work under: docs algorithm tests.

Below, those "u +=..." you'll have to check, we *may* have to design a 3-in
2-out instruction that does "+" instead of "|" but is otherwise identical
to dsrd.

I did describe it on IRC, linked it to the ed25519 discussion, and yes
there is enough budget to cover doing it, that is the whole point of the
crypto primitives grant.

But we seriously need to get a move on, it is well overdue (the entire
grant that is)

L.


// carry propagation (put the result back in h) const uint64_t msb = x4 +
(x3 >> 32); uint64_t u = (msb >> 2) * 5; // lose 2 bottom bits... u += (x0
& 0xffffffff) ; h[0] = u & 0xffffffff; u >>= 32; u += (x1 & 0xffffffff) +
(x0 >> 32); h[1] = u & 0xffffffff; u >>= 32; u += (x2 & 0xffffffff) + (x1
>> 32); h[2] = u & 0xffffffff; u >>= 32; u += (x3 & 0xffffffff) + (x2 >>
32); h[3] = u & 0xffffffff; u >>= 32; u += msb & 3 /* ...recover them */ ;
h[4] = u;



-- 
---
crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68


More information about the Libre-soc-dev mailing list