hashes icon indicating copy to clipboard operation
hashes copied to clipboard

Kupyna hasher

Open jkoudys opened this issue 1 year ago • 4 comments

We've implemented this hashing algorithm for kupyna, a Ukrainian algo specified here: https://eprint.iacr.org/2015/885.pdf

I'm opening this PR just to get the ball rolling. The hash function we've made works and we've included a bunch of test units. Next step is to implement the Digest and associated RustCrypto traits. I don't think this should go into RustCrypto/hashes master branch, but figured I'd open this and you could setup a new branch (or let us know the best way to build this). Any tips you could give to get us started on impl'ing the Digest trait would be appreciated.

Is there an existing hash implementation with a variable size hash? Most seem to hardcode it, but kupyna allows from 8 to 512, so it ought to be part of its digest struct. Is there a precedent for this already? I'd like to avoid reinventing the wheel.

jkoudys avatar Jul 08 '24 19:07 jkoudys

See comments in #597.

Is there an existing hash implementation with a variable size hash?

The groestl crate probably will be the easiest to read. You need to implement the VariableOutputCore trait and define appropriate type aliases.

newpavlov avatar Jul 08 '24 20:07 newpavlov

Nice, thanks this helps.

Can we merge this into a new wip branch, or just get it using a basic Digest and merge to master?

jkoudys avatar Jul 08 '24 21:07 jkoudys

@jkoudys Hi! Do you plan to work on this? As noted in the linked comment, we can not merge it in the current form.

newpavlov avatar Sep 20 '24 13:09 newpavlov

Yes had a delay but I'm using the groetsl as a guide and putting the kupyna hashing logic around that now.

jkoudys avatar Sep 20 '24 13:09 jkoudys

Hi! Do you plan to work on this PR further? If so, please take a look at comments in #621.

newpavlov avatar Jan 03 '25 05:01 newpavlov

@newpavlov I'll close this one. We're working together in #621.

jkoudys avatar Mar 02 '25 16:03 jkoudys