Conversation
a5d3284 to
2356f56
Compare
|
Force-pushed after #3888, to fix CI. |
FAlbertDev
left a comment
There was a problem hiding this comment.
I really like Kyber with strong types! Also, the buffer stuffer fits very well. No more nasty pointer arithmetic 🎉
95143b8 to
3fc1233
Compare
FAlbertDev
left a comment
There was a problem hiding this comment.
Nice! I have the code on my left and the FIPS 203 spec on my right screen, and can easily compare it 👍
56b1741 to
c5a5396
Compare
c5a5396 to
dc661f6
Compare
dc661f6 to
d523931
Compare
|
Rebased and resolved conflicts after #3874 got merged. |
|
Thanks for the review! We have a further iteration for this in the pipeline, though. It'll be a few weeks before we're done with it, unfortunately. Currently busy preparing the concluding workshop for BSI's project 481. |
|
Resolved a conflict with master. |
* BufferStuff/Slicer * Strong types * Prepare for introduction of ML-KEM (ipd) * introduce nomenclature of FIPS 203
|
I realized that the planned changes, I mentioned last month, can be easily added on top of this. So, let's merge this now and we'll continue working on master. |
See: randombit/botan#3887 This is a fairly minimal adaption, once the full refactoring is merged, we'll have to rewrite this more substantially. That won't happen before Botan 3.5.0, though. See also: randombit/botan#4024
This is an iteration of the Kyber internals, in preparation of an ML-KEM implementation. Also, it retrofits the helpers we added along the way in the last two years. Most notably:
BufferStufferandBufferSlicerandStrong<>types. Especially the strong types made it possible to restrict the "symmetric algorithms" inkyber_symmetric_primitives.h.Before, most of the algorithm (i.e. the Polynomial structures) was hidden away in the
kyber.cppcompilation unit in thekyber_commonmodule. For added flexibility, I restructured the code into a few distinct header and implementation files. Also, thekyberandkyber_90smodules now moved inside a new internalkyber_round3module. These changes make room for an upcoming ML-KEM-ipd implementation that reuses as much of the implementation as possible.The public interface isn't affected by any of those changes.