New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added Serpent #60
Added Serpent #60
Conversation
Awesome, it will be really useful for Lucid! |
I'd be wary of merging this until that's implemented as generally all implementations we currently provide at least attempt to be constant-time. Curious what @newpavlov thinks. |
Hello @newpavlov @tarcieri I'm currently implementing bitslicing (this code includes bitslicing in key schedule already). I have a question about it though, do we let users to choose to be in bitslice mode? |
IMO it should always use the bitsliced version to ensure consant time(ish) operation |
When it will be merged? I'll need it in the next week! 🎉 Thanks |
I'll try to review it this weekend. I'm not terribly familiar with Serpent for anything other than its historical place in the AES competition, but I'm wary to merge any cipher implementations that haven't been thoroughly reviewed. Hopefully @newpavlov can take a look as well, and we'll need him to release the @clintnetwork in the meantime can you use a git dependency? |
Oh very nice! Don't worry @tarcieri do as you can :) |
Hey @tarcieri, any news about Serpent? 🐍 |
@newpavlov Sorry to bother you, you might be needed for this : Serpent Implementation. Are you guys busy? How can I help you in order to make it merge? |
I'm flying home from the RealWorldCrypto conference today, and @newpavlov is working on his PhD defense, so yes we're both busy. I should hopefully have some time this weekend to review (I know that's what I said over a month ago, mea culpa), but I'm not familiar with Serpent internals so I would need to study up first. If you're looking for something to do in the interim to improve confidence in the implementation, you could use e.g. You could also run |
Alright, I did a few passes on it and I don't see anything obviously wrong with it, so I can go ahead and merge. Would appreciate if @newpavlov can do a second pass. He's also the only one with access to publish the crate. |
I just released |
Thank you! |
Serpent1 first implementation. Some work to do for optimization.
Bitslicing implemented.
No benchmark.
Tested on 128bits, 192bits and 256bits key official vectors.
There is one
panic
in the code (inround
andround_inverse
), should it returns anErr
instead?EDIT : Bitslicing is now implemented. No more panic in the code.