Commit Graph

91 Commits

Author SHA1 Message Date
Thomas Pornin
dba40c7d43 Removed 'restrict' keyword (it's C99, but MSVC 2017 does not support it...). This does not seem to impact performance. 2019-07-20 21:27:27 -04:00
Thomas Pornin
87bc13c761 Some cosmetic changes to appease clang-tidy. 2019-07-20 20:35:30 -04:00
Thomas Pornin
192e72144b Falcon implementations (integer-only code, constant-time). 2019-07-20 19:44:25 -04:00
Thom Wiggers
debc9f8fd8
Document what exactly hash_state.h defines 2019-07-18 09:16:50 +02:00
Thom Wiggers
12c8a642ce
Fix Makefile (primitive.h->hash_state.h) 2019-07-17 15:53:33 +02:00
Thom Wiggers
74efb10807
Incorporate feedback
* Names passed around (mostly constant) value more clearly
* Put ``const`` where applicable (almost everywhere)
* Renamed ``primitive.h``
* Fixed some nits
2019-07-17 08:37:38 +02:00
Douglas Stebila
33ce5e14ce Remove const
This was causing compilation failures with clang, that there were 
duplicate const keywords once the macro was expanded in hash.h
2019-07-16 20:22:45 -04:00
Thom Wiggers
aa4611a4d1 Eliminate the global state
This PR sacrifices passing some extra arguments to get rid of the global
state.

* Haraka needs state in all hash calls, this results in changes to the
  hash functions specified in `hash.h`.  The extra pointers passed would
  not be necessary for SHA256 or SHAKE256.
* SHAKE256 did not have global state, but uniformity in the implementations
  requires us to pass  around the new state context anyway. Otherwise,
  @joostrijneveld's SPHINCS+ generator doesn't really work anymore).

We introduce a new header file called `primitive.h` which defines the
required state type for the generic functions. I did not go into
replacing _all_ occurrences of state variables by the new `hash_state`
macro.
2019-07-16 15:46:27 -04:00
Thom Wiggers
4cea81d15f
Convert principal-submitter into a list
There are schemes, like SABER (#192) that have more than one principal
submitter. Consistency warrants that we turn it into a list for all
schemes and don't do something with allowing either a str or a list:
that would just be very annoying to parse.

Closes #194
2019-06-21 09:30:55 +02:00
Matthias J. Kannwischer
2d2211791f polish dilithium 2019-06-11 17:04:36 +02:00
Matthias J. Kannwischer
d5818a40b0 change include order; add missing includes (#185) 2019-06-11 15:09:07 +02:00
Matthias J. Kannwischer
e56b2e5556
Add Dilithium (#172)
* fixes dynamic memory allocation test. previously a function called freeze() would trigger it

* this adds DilithiumII. Preprocessor conditionals still need to be removed

* fix ms Makefile

* fix MS compiler warnings

* clean-up

* remove preprocessor conditionals

* add dilithium3

* add dilithium4

* add duplicate consistency checks

* SHA2 state constants in common

* clean up symmetric.h

* Port SPHINCS+-SHA256 to sha256ctx struct

* Implement ctx struct for fips202

* Port Kyber{512,768,1024} to fips202 ctx struct

* Port NewHope to fips202 structs

* Port SPHINCS+-SHAKE256 to fips202 ctx structs

* Use opaque fips202 structs in MQDSS

* port dilithium to use fips202 ctx structs

* include -Wredundant-decls

* remove comment; format NTT constants

* reduce casts in power2round
2019-06-11 04:18:05 -05:00
Joost Rijneveld
2244735a87
Merge pull request #175 from PQClean/hash_state_struct
Use opaque structs for the hashing API
2019-05-21 17:03:50 +02:00
Thom Wiggers
199adb8072
Add -Wredundant-decls 2019-05-20 16:12:01 +02:00
Thom Wiggers
0e73f2dda2
Use opaque fips202 structs in MQDSS 2019-05-20 10:52:28 +02:00
Thom Wiggers
692fba119c
Port SPHINCS+-SHAKE256 to fips202 ctx structs 2019-05-20 10:38:31 +02:00
Thom Wiggers
6953a0b32e
Port SPHINCS+-SHA256 to sha256ctx struct 2019-05-20 10:21:52 +02:00
Joost Rijneveld
cae06d3e19
Merge pull request #170 from PQClean/nistkat_signature
Check NIST KAT test vectors for signatures as well
2019-05-16 13:29:54 +02:00
Matthias J. Kannwischer
951f7a0824 check nist kats for signatures. resolves #169 2019-05-16 11:20:18 +02:00
Joost Rijneveld
299ffc951d
Mark variable as extern in .h; declare in .c 2019-05-15 11:09:25 +02:00
Joost Rijneveld
f846727acb
Revert "Remove redundant array decl SPHINCS+"
This reverts commit 00639575b0.
2019-05-15 10:44:38 +02:00
Joost Rijneveld
00639575b0
Remove redundant array decl SPHINCS+ 2019-05-15 10:23:33 +02:00
Douglas Stebila
4270a54161
Merge pull request #162 from PQClean/mqdss
MQDSS
2019-05-10 10:43:59 -04:00
Joost Rijneveld
2502ed604b
Add windows Makefiles 2019-04-30 11:35:51 +02:00
Joost Rijneveld
a91df71776
Add MQDSS-64 2019-04-30 11:16:50 +02:00
Joost Rijneveld
bd2dd0b126
Add MQDSS-48 license 2019-04-30 11:12:31 +02:00
Joost Rijneveld
46698bf4c8
Prevent unnecessary type coercion 2019-04-30 11:04:37 +02:00
Joost Rijneveld
8357fb1c80
Format mqdss-48 2019-04-30 10:54:16 +02:00
Joost Rijneveld
2e304246c4
Implement detached MQDSS signatures 2019-04-30 10:53:58 +02:00
Joost Rijneveld
db6f71086f
MQDSS-48 before detached signatures 2019-04-30 10:29:48 +02:00
Joost Rijneveld
f3980cf033
Fix input/output overwrite for MGF1 2019-04-24 14:04:33 +02:00
Joost Rijneveld
08e6c6c052
Use more standard -Wvla 2019-04-24 13:57:19 +02:00
Joost Rijneveld
68b12866ce
Use more standard Wvla 2019-04-24 13:52:02 +02:00
Joost Rijneveld
713f6788b9
Fix VLAs in SHA256 2019-04-24 12:57:51 +02:00
Joost Rijneveld
821916bc98
Prevent VLA in Haraka 2019-04-24 12:52:02 +02:00
Joost Rijneveld
908329e0e8
Throw errors when using variable-length arrays
Windows already complains about this in CI, but this will
let us catch these issues on Linux as well.
2019-04-24 12:42:59 +02:00
Joost Rijneveld
e32666a0ab
Throw errors when using variable-length arrays
Windows already complains about this in CI, but this will
let us catch these issues on Linux as well.
2019-04-24 12:35:17 +02:00
Joost Rijneveld
7ee9b2cabb
Update testvector hashes after 8c007bf 2019-04-23 13:09:16 +02:00
Joost Rijneveld
5783c2d74f
Move SPHINCS secret key length to scheme META 2019-04-23 13:09:16 +02:00
Joost Rijneveld
87cb0befee
Update Haraka to constant-time implementation
Thanks to Stefan Kölbl
2019-04-23 13:09:16 +02:00
Thom Wiggers
1017c10d0a
Add -O3 to CFLAGS 2019-04-23 13:09:16 +02:00
Joost Rijneveld
c6af1c768e
Fix SPHINCS api.h constants 2019-04-23 13:09:16 +02:00
Joost Rijneveld
fae8313664
Add the other 35 SPHINCS+ variants 2019-04-23 13:09:16 +02:00
Joost Rijneveld
baf93e2826
Merge pull request #146 from PQClean/move-secret-key-to-scheme-meta
Move secret key length back to scheme-level META
2019-04-18 17:14:08 +02:00
Thom Wiggers
b5d4e93478
Add -O3 to CFLAGS 2019-04-17 11:56:16 +02:00
Joost Rijneveld
972315dec5
Move secret key length back to scheme-level META 2019-04-17 11:08:45 +02:00
Joost Rijneveld
db7843c5eb
SPHINCS: make integer promotion explicit 2019-04-16 10:35:08 +02:00
Matthias J. Kannwischer
5587cdb4a8 Add -Wmissing-prototypes (#109)
* fix prototypes for sphincs and static functions in aes.c

* fix missing prototypes in all frodo variants

* fix missing prototypes in kyber

* remove const from non-pointer arguments in Frodo

* add missing prototypes to requirements in README
2019-04-13 11:47:29 -04:00
Douglas Stebila
0bc19b3633
Fix a few nits (#107)
* Minor changes

* Gracefully degrade if clang-tidy segfaults

* Typo on returncode
2019-04-11 13:47:53 -04:00
Joost Rijneveld
26ffedc86b
SPHINCS: strictly check integer conversions 2019-04-11 11:14:49 +02:00