On 11/23/14 07:31, [email protected] wrote: > If you look into the scrypt codebase, you will find three files: > > crypto_scrypt-nosse.c > crypto_scrypt-sse.c > crypto_scrypt-ref.c > > All of them implement the same function crypto_scrypt() in different ways.
Yes. -ref is the reference code (easy to understand, follows the algorithm in the paper precisely), while -nosse is optimized and -sse is optimized and uses SSE cpu features. > * All of them give the same output for the same input. (For the data I > tried, at least.) I'd certainly hope so! > * The ref implementation makes the algorithm use approximately 128*N*r > bytes of memory. > > * The sse and nosse implementations use much less memory. They seem to > disregard the parameters for determining memory usage entirely. They're using mmap instead of malloc. Whatever tool you're using for measuring memory usage is broken. > 3. Finally, a C question: I was able to put all three .c files into my > project and compile without errors. I find this strange. I was expecting > to get a "duplicate symbols" error from my linker because crypto_scrypt() > is implemented in all three files. So my question is, why don't I get any > errors? I don't know what's wrong with your linker. But you don't want to do that anyway. Pick either -nosse or -sse based on which CPU you'll be running on. (Or use an #ifdef to include both and select at compile-time.) -- Colin Percival Security Officer Emeritus, FreeBSD | The power to serve Founder, Tarsnap | www.tarsnap.com | Online backups for the truly paranoid
