Commit Graph

348 Commits

Author SHA1 Message Date
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
944543c9b9 fix bug in kyber
previous commit introduced a bug in Barrett reduction
2021-05-27 10:16:04 +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
f0c2436311 change comment 2021-05-17 16:00:10 +01:00
4e10c0925f prefix structs with pqc_ 2021-05-10 16:36:24 +01:00
895d9c0abd bench ntt 2021-05-09 18:11:18 +01:00
395896dc92 basemul bench 2021-05-06 12:09:28 +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
15b97bc74e Change variable name 2021-04-25 22:34:30 +01:00
128b5406cc Add bench for rejection sampling 2021-04-25 22:23:54 +01:00
40e3fff409 remove gtest header 2021-04-22 23:30:21 +01:00
2e14f263b0 kyber512 benchmarks 2021-04-22 23:05:15 +01:00
6e0b153ed3 kyber matrix generation bench 2021-04-22 22:34:14 +01:00
56629c53f9 add benchmarking framework 2021-04-22 21:41:46 +01:00
188e672764 use aes_ctr_drbg crate 2021-04-14 06:56:10 +01:00
de8d3ba43e fix KEM 2021-04-04 15:32:25 +01:00
95cc52f554 Run KAT in parallel 4 threads 2021-04-04 13:09:47 +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
2a4b051819 kat: add KEM schemes 2021-03-26 23:25:45 +00:00
b24f31c7bd adds kat tests for sphincs 2021-03-26 19:51:45 +00:00
ec4f21b2de WIP 2021-03-26 10:05:25 +00:00
a8bb139ea6 Fix testing against KATs 2021-03-25 18:47:56 +00:00
7023b7f0ff fix some deteails in tests 2021-03-25 01:11:53 +00:00
5cf635a26b change name of the librarry 2021-03-25 00:59:41 +00:00
58dabbafef add first version of katrunner 2021-03-25 00:46:42 +00:00
f02248d478 pqapi.h -> pqc.h 2021-03-24 23:34:34 +00:00
b36a5ff8da adds support for most of the schemes 2021-03-24 23:22:44 +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
0450bc3215 remove all Makefiles 2021-03-24 21:02:50 +00:00
John Schanck
32c613e8ec Round 3 update for Dilithium (from github source) (#369)
* Update Dilithium

* Alternative montgomery reduce to avoid i386 functest errors

* Explicit casts for msvc

* More casts; bump upstream version; fix metadata

* another cast
2021-03-24 21:02:50 +00:00
Thom Wiggers
87c40ab558 Disable SPHINCS+ test taking too much RAM in ASAN 2021-03-24 21:02:50 +00:00
Thom Wiggers
578a9d66ce Disable asan if clang is mentioned in CC (like in 'ccache clang') 2021-03-24 21:02:50 +00:00
Thom Wiggers
f5b1c258c4 Disable skipping slow tests 2021-03-24 21:02:50 +00:00
John M. Schanck
acbb632daf Use PQClean AES 2021-03-24 21:02:50 +00:00
John M. Schanck
127e9ec326 Round 3 Kyber 2021-03-24 21:02:49 +00:00
John M. Schanck
60111b36b2 Prepare for round 3 update with packaging script 2021-03-24 21:02:49 +00:00
Thom Wiggers
c0f56ccdc2 Update Kyber from upstream
Makes Kyber-AVX run on MacOS (#251)
2021-03-24 21:02:49 +00:00
Matthias J. Kannwischer
7aef8a6f80 Update Rainbow to round 3 parameter sets (#361)
* rainbow update

* update workflows

* re-add /O2 in nmake Makefile
2021-03-24 21:02:49 +00:00
John M. Schanck
4406f00784 simplify pack_unpack.c 2021-03-24 21:02:49 +00:00
John M. Schanck
df9f4a17a4 Clean up AVX2 code 2021-03-24 21:02:49 +00:00
John M. Schanck
39c00e8c47 Update Saber and add AVX2 implementation 2021-03-24 21:02:49 +00:00
John M. Schanck
de8665bff2 duplicate_consistency: strip spaces before comparison 2021-03-24 21:02:49 +00:00
John M. Schanck
79623b0765 Add AVX2 Falcon 2021-03-24 21:02:49 +00:00
John M. Schanck
1113fdce69 HQC: remove bitmask macro 2021-03-24 21:02:49 +00:00