d0edffc7da
Non FIPS algorithms are not normally allowed in FIPS mode. Any attempt to use them via high level functions will return an error. The low level non-FIPS algorithm functions cannot return errors so they produce assertion failures. HMAC also has to give an assertion error because it (erroneously) can't return an error either. There are exceptions (such as MD5 in TLS and non cryptographic use of algorithms) and applications can override the blocking and use non FIPS algorithms anyway. For low level functions the override is perfomed by prefixing the algorithm initalization function with "private_" for example private_MD5_Init(). For high level functions an override is performed by setting a flag in the context. |
||
---|---|---|
.. | ||
asm | ||
.cvsignore | ||
Makefile | ||
README | ||
ripemd.h | ||
rmd160.c | ||
rmd_dgst.c | ||
rmd_locl.h | ||
rmd_one.c | ||
rmdconst.h | ||
rmdtest.c |
RIPEMD-160 http://www.esat.kuleuven.ac.be/~bosselae/ripemd160.html This is my implementation of RIPEMD-160. The pentium assember is a little off the pace since I only get 1050 cycles, while the best is 1013. I have a few ideas for how to get another 20 or so cycles, but at this point I will not bother right now. I belive the trick will be to remove my 'copy X array onto stack' until inside the RIP1() finctions the first time round. To do this I need another register and will only have one temporary one. A bit tricky.... I can also cleanup the saving of the 5 words after the first half of the calculation. I should read the origional value, add then write. Currently I just save the new and read the origioal. I then read both at the end. Bad. eric (20-Jan-1998)