* Use macros to create versions of Frodo functions with hard-coded parameters to enable compiler optimization
* Undefine macros to avoid any confusion later.
* Enables Windows build.
* Modified CAPI call to avoid error when no key container is present for the user.
* Removed spurious white spaces.
* Enabled building Frodo on Windows using the Visual Studio solution.
* Replaced non-portable packed bit fields with bit masks.
* Removed commented-out code and defined macro that has been moved to preprocessor defs.
* Disabled AES NI when using x86 Visual Studio projects.
* Prettyprint.
* Fix memory leaks with named_parameters.
They were not being freed in the Frodo and NewHope implementions. The bcns15 implementation never allocates them.
* Fix memory leaks in speed tests.
Many of the tests were running through many iterations of the same command, but were not cleaning up the memory used after each iteration.
As a result, running the tests would leak tons of memory onto the heap.
To help, created the TIME_OPERATION_SECONDS_CLEANUP function, that allows timing of a function with a cleanup function run after each iteration.
Verified no memory was leaked by running valgrind through each of the test cases:
valgrind --leak-check=full ./test_kex
valgrind --leak-check=full ./test_aes
valgrind --leak-check=full ./test_rand
Each case verified that heap use was cleaned up after running the tests:
All heap blocks were freed -- no leaks are possible
* Fix inlen passed into oqs_kex_lwe_frodo_pack function.
Was passing the number of bits allocated for the array, rather than the length of the array. This caused an invalid read of size 2 when running the test cases.
Verified with valgrind there is no more invalid read.
* Run 'make prettyprint' to fix up the formatting. Should pass the Travis CI build now.
* Change TIME_OPERATION_SECONDS macro so it can handle multiple operations.
* Make OQS_AES128 use a void schedule pointer.
* Fewer functions in AES public API.
* Reorganize RAND_urandom_aesctr to not use cache for n.
* Focus AES API on ECB mode rather than raw operations.
* Optionally use OpenSSL for AES.