Commit Graph

31 Commits

Author SHA1 Message Date
d9344d6956 improves makefile 2021-06-22 01:10:08 +01:00
ced21a0c79 makes MSan happy 2021-06-21 09:20:48 +01:00
77ca982b4c Redesign CMakeLists.txt for MemorySanitizer
The test programs use googletest and google-benchmark
libraries in order to ensure right level of optimizations
and proper unit testing.
Those two libraries are written in C++ and they
use C++ standard library.

If you want MemorySanitizer to work properly and not
produce any false positives, you must ensure that all
the code in your program and in libraries it uses is
instrumented. That includes C++ standard library.

(see here: https://github.com/google/sanitizers/wiki/MemorySanitizerLibcxxHowTo)

With this change, the Memory Sanitizer build (enabled
by -DMEMSAN=1) will also build MSan-instrumented libc++
from LLVM and will use it as a standard C++ library
when building unit tests and benchmarks.

In particular what I do is this:
1. Clone LLVM project and build libcxx and libcxxabi with
   MSan enabled
2. Build GTEST and GBENCH with -fsanitize=memory and -stdlib=libc++.
   Additionally link against -lc++abi
3. Then use this special version of libc++ and GTEST/GBENCH
   in order to build final binaries containing unit/benchmark tests

The actuall tests with memory sanitizer are disabled, as
I'm getting some errors which need to be investigated first.

Additionally I've splitted single build into multiple, for
release,debug,clang,gcc and AddressSanitizer.

On unrelated note, I've also added flags to ignore some errors
which I'm getting when using newer GCC (see GH#10 GH#11).
2021-06-20 21:34:58 +01:00
7be2562de5 Build libcxx and libcxxabi with Memory Sanitizer 2021-06-20 21:34:58 +01:00
af2cee5b17 adds address and memory sanitizer 2021-06-20 21:34:58 +01:00
a0e38afc59 Adds flags for memory and address sanitizer 2021-06-20 21:34:58 +01:00
950479bdee adds fpic 2021-06-20 21:34:58 +01:00
6cef14338a updates gbench 2021-06-20 21:34:58 +01:00
c98780b4d5 adds McEliece 2021-05-26 13:39:05 +01:00
f3aa725c4c don't use submodules
Use cmake FetchContent instead
2021-05-26 11:15:24 +01:00
7ff8d8fcef Implelments Falcon 512/1024 Round3
* Enable KAT testing for Falcon
* Prefix all algorithms with PQC_ALG_SIG/KEM_
2021-05-25 12:29:54 +01:00
832da09aa8 fix build 2021-04-26 12:36:24 +01:00
89a34ac04b SIKE: enable optimized version
Adds cpu_features library from Google to
recognize CPU capabilities on which implementation
is running.

Uses that library to run either generic-C
or assembly optimized implementation of
some field operations
2021-04-26 12:20:39 +01:00
9cb7e5a265 SIKE/p434
Pulls SIKE/p434 from CECPQ2 implementation
changed to use SHAKE instead of SHA2
2021-04-26 12:20:39 +01:00
56629c53f9 add benchmarking framework 2021-04-22 21:41:46 +01:00
0b72f78582 Adds DRBG based on AES
In order to enable all KAT tests, the AES based
DRBG is need (for seed expansion). This PR adds
port of DRBG, initialy written by NIST.

Afterwards, the katrunner is modified to enable
key generation, encapsulation and signing KATs.

Testing of NTRU prime is disabled, as it doesn't
pass KAT tests now. The tests for SPHINCS+ are
now very slow.
2021-03-30 01:12:51 +01:00
fddd697fc4 adds HQC-RMS-128/192/256 2021-03-27 00:34:03 +00:00
5cf635a26b change name of the librarry 2021-03-25 00:59:41 +00:00
81ccb71992 adds gtest 2021-03-24 23:48:29 +00:00
f02248d478 pqapi.h -> pqc.h 2021-03-24 23:34:34 +00:00
dbea135685 KEM and Sign C-API 2021-03-24 21:06:56 +00:00
09db976f4c Adds method registration 2021-03-24 21:02:52 +00:00
badd0c81a6 adds C-API 2021-03-24 21:02:51 +00:00
9d3e07e8d8 Use CMake 2021-03-24 21:02:51 +00:00
d01efc9f01 Reorg 2021-03-24 21:02:51 +00:00
d9a051d053 move to separated folders 2021-03-24 21:02:50 +00:00
bdcc631260 Removes some variations 2021-03-24 21:02:50 +00:00
94ec8d340e Fix 2021-03-24 21:02:50 +00:00
424bd89890 Add one AVX target 2021-03-24 21:02:50 +00:00
67f275c898 Defines structure of the CMake 2021-03-24 21:02:50 +00:00
9cc316c41f init: cmake 2021-03-24 21:02:50 +00:00