Add cSHAKE128 and cSHAKE256 implementations #325
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
A few notes about the implementation:
Sha3State
soCSHAKE
can implementReset
without allocating the customization string. but because of that I couldn't use the state macro.has_customization
boolean that if it's not it makes it the same as SHAKE.digest::dev
because nothing there could support a hash function that doesn't implement Default (We could prob extendxof_test
to accept a constructor, but we'll need a differentnew_test!
macro that will support Blob3 and know to callnew
on the hasher with the customization)The test vectors are from https://github.com/damaki/libkeccak/tree/master/tests/kat/testvectors/cSHAKE together with the current SHAKE tests for an empty customization.