761 Commits

Author SHA1 Message Date
Basil Hess
a9629e0a48
Updated Dilithium sign.c patch with AES context release (#1238) 2022-06-28 09:57:57 -04:00
Basil Hess
719a84ecdd
Integrates pqcrystals with common-aes / extends common code AES CTR-API (#1221)
* Integrates pqcrystals (ref and avx2) with liboqs common AES code (for Kyber-90s and Dilithium-AES).
* Extends libOQS AES-CTR with Incremental API: OQS_AES256_CTR_inc_init, OQS_AES256_CTR_inc_iv, OQS_AES256_CTR_inc_ivu64, OQS_AES256_CTR_inc_stream_iv, OQS_AES256_CTR_inc_stream_blks.
* Adds some AES-CTR shim API.
* Faster AESNI CTR code (improved iv handling, 4x interleaved blocks for higher throughput).
* OpenSSL AES supporting CTR API.
* Updated pqcrystals patches (API, context releases).
* Removes redundant AES implementations from Kyber and Dilithium.
* Copy-from-upstream with updated patches.
* Uses internal AES on x86_64 (dist & AES) because of increased performance with the internal AESNI code.
* Adds AES-CTR benchmarks to speed_common
* Update CONFIGURE.md
2022-06-23 14:44:36 +02:00
Jason Goertzen
38d3014dc2
Adding aarch64 CPU feature detection for FreeBSD (#1210)
* Added FreeBSD cpu feature detection to common/common.c

* Updated common/common.c to use __FreeBSD__ instead of __FREEBSD__

* added FreeBSD support to SIKE's CmakeLists.txt

* Added FreeBSD cpu feature detection to common/common.c

* Updated common/common.c to use __FreeBSD__ instead of __FREEBSD__

* added FreeBSD support to SIKE's CmakeLists.txt

* Added in comment to common.c to keep consistent with other platforms

* Added FreeBSD cpu feature detection to common/common.c

* Updated common/common.c to use __FreeBSD__ instead of __FREEBSD__

* added FreeBSD support to SIKE's CmakeLists.txt

* Added in comment to common.c to keep consistent with other platforms

* Updated documentation to say FreeBSD is support on aarch64

* Updated docs to indicated that SIKE is supported on FreeBSD on aarch64
2022-06-07 20:28:23 -04:00
Zane Beckwith
25f3e56b2e
Use SecRandomCopyBytes for system randomness on iOS (to allow building on iOS) (#1219)
* Use SecRandomCopyBytes on iOS for system randomness

* Link iOS Security Framework as a library dependency

* Fix style
2022-06-05 14:05:24 -04:00
Douglas Stebila
fc7d89c074
Deal with some issues identified by clang scan-build (#1211)
* Fix memory leak detected by scan-build

* Remove unused statement (identified via clang scan-build)
2022-05-14 06:20:25 +02:00
Michael Baentsch
9dea0430ed
Correct OQS_DIST_BUILD for ARM (#1202)
* unify naming for OQS_DIST_ARM64_V8_BUILD

* Unified naming for OQS_DIST_ARM32_V7_BUILD

Co-authored-by: Jason Goertzen <Martyrshot@gmail.com>
2022-04-24 14:09:35 -04:00
Ted Eaton
be8fc96df7
Edits to key scheduling for AES on ARM to be constant time (#1200) 2022-04-08 11:22:16 -04:00
Jason Goertzen
55bc8cb38d
ARMv8 optimized Dilithium (#1194)
* Updated sig templates to add support for arch specific upstreams. Currently behaves as expected, but still need to test (and integrate) dilithium

* Fixed a couple of build errors, and started work on dilithium integration from pqclean. Currently failing kat tests

* Updated templating for both sig and kem to make them look a little better

* Renamed dilithium folders so they are consistent across pqclean and pqcrystals so that copy_from_upstream script will function correctly

* Added arm optimized version of dilithium[2|3|5]

* Updating other signature schemes CMakeLists.txt to be the output of the updated templates

* Arm optimized implementation of dilithium is added, with randomized signing patched into it. copy_from_upstream script is working properly. Still need to update the update_docs scripts before ready to merge

* Finished updating docs scripts and yml files. Builds pass, so should be ready for a merge

* Fixed template issue with multiple compile flags

* Updated doc generation scripts so that all '_' in scheme names are replaced with '\_'
2022-03-09 15:17:42 -05:00
Michael Baentsch
5894d9af56
create and install cmake import files (#1191)
* create and install cmake package import files

* add openssl cmake includes only where needed
2022-02-26 10:51:42 +01:00
Jason Goertzen
5b8e2bd4d5
Resolves an issue when building sha2 using arm crypto extensions with gcc on Darwin. (#1184) 2022-02-01 16:04:24 -05:00
Sebastian Ramacher
0a0adf1639
Update to picnic 3.0.11 (fixes #1178) (#1181) 2022-01-25 12:42:26 -05:00
Jason Goertzen
4ec538e3c8
Fixed build issue on arm based macs when using gcc11 (#1177)
* Fixed a build issue when trying to use gcc11 on an arm based mac. Also updated kem templates so that any pqclean scheme that has a similar problem in the future can be fixed by just patching the assembly files

* adding M1 CI for gcc-11

Co-authored-by: Michael <57787676+baentsch@users.noreply.github.com>
2022-01-20 10:27:46 -05:00
Sebastian Ramacher
9227b2a233
Update to Picnic 3.0.9 (#1167)
* Update to Picnic 3.0.10 (fixes #1165)

* Disable Picnic SIMD optimizations on Cygwin (fixes #1163)

* Set WITH_OPT only if required

* Revert "remove picnic from cygwin build (#1171)"

This reverts commit 5608b465748281c8f84a97858dbd9887e77d6bd3.

* Update supported CPU extensions for Picnic
2022-01-09 11:28:56 -05:00
John Schanck
4d938b1d04
Update XKCP and avoid assembler .ifdef directives (#1173)
* copy_from_xkcp: Update to latest version and fix merge conflicts

* Add macOS gcc-11 CI job

Co-authored-by: Douglas Stebila <dstebila@uwaterloo.ca>
2022-01-03 07:25:23 +01:00
pkubaj
5ea49c2a44
Add support for powerpc64. (#1160)
This is 64-bit POWER big-endian. Since s390x (64-bit big-endian) and ppc64le
(64-bit POWER) are already supported, this shouldn't be an issue.
2021-12-23 18:03:25 -05:00
Sebastian Ramacher
4479f50da8
Update Picnic to 3.0.7 (#1158)
* Define PICNIC_EXPORT instead of PICNIC_STATIC

PICNIC_STATIC builds some internal functions only required for testing.

* Handle SSE2/AVX2/NEON in Picnic similar to other schemes

* Update to Picnic 3.0.8
2021-12-20 11:01:10 -05:00
Michael Baentsch
ae6c7b4798
Output documented build options (#1155)
* explaining all config options in system_info output
2021-12-13 15:33:19 +01:00
Michael Baentsch
3b7b8d7816
aarch64 dist build (#1148)
* aarch64 dist generator run

* removing undocumented OQS_DIST_ARM64_V8_BUILD

* re-activate ARMV8 specific dist build
2021-12-09 11:47:45 -05:00
Douglas Stebila
c97706c6b3
Option to use PMU for benchmarking on ARM (#1147)
* Add CMake option and compiler flag for using ARM PMU in speed

* Enabling use of ARM PMU for benchmarking when compiler flag is enabled (#1141)

* Enabling use of ARM PMU for benchmarking when compiler flag is enabled

* Adding documentation in code on how to enable PMU

Co-authored-by: Ted Eaton <ted@eeaton.ca>
2021-12-08 12:28:14 -05:00
Michael Baentsch
8e22871ff6
NIST copyright clarification (#1142)
* added NIST license clarification

* corrected style
2021-12-05 14:18:54 -05:00
Jason Goertzen
71b570c59c
Adding arm64_v8 optimized versions of saber. (#1131)
* Added aarch64 optimized version of saber, lightsaber, and firesaber from pqclean

* Updated to latest commit of pqclean which fixes saber aarch64.

* Updated saber docs as per @dstebila's comment

* Removed duplicate lines from README.md

* Fixed local issue for duplicate lines in README.md. This is the output of the update docs script after fixing my local issue
2021-11-27 15:24:05 -05:00
Christian Paquin
f067882704
Added supported-platforms compile guards in the SIKE CMakeLists (#1136)
* Added supported-platforms compile guards in the SIKE CMakeLists

* Disable SIKE globally on unsupported platforms
2021-11-26 09:02:22 -05:00
Michael Baentsch
f5d7afae47
LF everywhere (#1133) 2021-11-22 09:35:07 -05:00
Douglas Stebila
14d64d379d
Fix gcc 11 error for Kyber on arm64 (#1127)
* Set new version of Kyber ARM to use from PQClean

* Result of running copy_from_upstream

* Removed the need for pqclean aarch64 patches

* Updating doc generation to be a little more careful about when required flags is an empty list

Co-authored-by: Jason Goertzen <Martyrshot@gmail.com>
2021-11-19 16:40:04 -05:00
Michael Baentsch
2c98b97fa4
adding ntruhps40961229 ntruhrss1373
clean code only added (https://github.com/PQClean/PQClean/pull/427)
2021-11-19 06:43:43 +01:00
Jason Goertzen
769412623c
Adding multiple upstream support to doc generation (#1123)
* Fix an issue where run_tests tried to run tests from upstream. Fix by @DStebila

* No longer checking spdx on files copied from upstream

* Added compiler checking for gcc. Must be at least 9.4.0.

* Added pqclean's aarch64 optimized kyber implementation to liboqs

* stripping asimd flag for ARM64_V8 as it isn't needed and will cause errors when trying to specify it during compilation

* Updated kyber docs

* Updated kyber markdown so that no-secret-dependent-branching-checked-by-valgrind correctly says false for the new aarch64 implementation

* Added automated updating of legacy yaml format, and added some yaml files which don't get automatically updated

* Fixed a bug where optimized upstreams would use the primary upstream's supported platform

* Fixed a bug with copy_from_upstream.py's verify function where it would always use the default upstream location when comparing with diff

* Added reporting for implementations that are in upstream but aren't yet integrated into liboqs

* Added support to ignore implementations from upstream in copy_from_upstream.yml. This is to prevent implementations that haven't been integrated into LIBOQS yet from being pulled in by copy_from_upstream.py. It also silences the warning when verifying.

* Adding updated ymls and md files for docs

* copy_from_upstream.py now also calls update_docs_from_yaml.py
2021-11-18 06:56:19 +01:00
Jason Goertzen
0807ecf9af
Adding support for multiple upstream to copy_from_upstream, as well as pqclean's aarch64 kyber implementation (#1117)
* currently there is a bug where pytest doesn't work but the individual tests work... looking into it still.

* Fix an issue where run_tests tried to run tests from upstream. Fix by @DStebila

* No longer checking spdx on files copied from upstream

* pqclean's aarch64 kyber implementation is now being pulled from. Still need to clean things up.

* pqclean kyber fragment was left behind. It's now added

* Added compiler checking for gcc. Must be at least 9.4.0. Need to track down clang and appleclang

* Need to figure out how to handle commen dependencies from multiple upstreams

* Cleaned up copy_from_upstream.py a bit

* Added pqclean's aarch64 optimized kyber implementation to liboqs

* Added pqclean's aarch64 optimized kyber implementation to liboqs

* Fixed an isssue where 'empty' conditionals were added to kem_scheme.c files when there were no required flags

* reverting sabre to version prior to updated copy_from_upstream script

* stripping asimd flag for ARM64_V8 as it isn't needed and will cause errors when trying to specify it during compilation

* Fixed an issue where empty conditionals would appear when no required flags were specified

* Updated kyber docs

* Updated kyber docs with better formatting

* Adding updated kyber documentation

* Reverting documentation that was erroniously updated while updating kyber.

* Reverted ntruprime too far back by mistake

* Updated kyber doc's yml no-secret-dependent-branching-checked-by-valgrind to false

* Updated kyber markdown so that no-secret-dependent-branching-checked-by-valgrind correctly says false for the new aarch64 implementation
2021-11-10 14:22:49 -05:00
Christian Paquin
468533abea
Updated Picnic to v3.0.5 (#1116)
* Updated Picnic to v3.0.5
2021-10-30 07:52:56 +02:00
Michael Baentsch
6175da8246
Add S/NTRUP1277 (#1111)
* adds S/NTRUP1277

* disable McEliece for OSX shared CCI runs

* known sntrup constant_time issue suppressed
2021-10-22 09:31:47 -04:00
Basil Hess
016404076d
S390x support (#1103)
* s390x support

* - Fix for FrodoKEM-SHAKE for big endian support
- Fix unused variable in Keccak code on big endian
2021-10-12 14:39:56 -04:00
Douglas Stebila
36d8a49c88
Update to PQClean commit 5b8ef3baea3ffdfbf688a3a1bb8f02de44a67ec0 (#1097)
* Update to PQClean commit 5b8ef3baea3ffdfbf688a3a1bb8f02de44a67ec0

* executed python3 scripts/update_docs_from_yaml.py

Co-authored-by: Michael <57787676+baentsch@users.noreply.github.com>
2021-10-01 12:31:31 -04:00
Ted Eaton
001a3aa3c6
Adding armv8 crypto extensions to AES (#1086)
* Adding armv8 crypto extensions to AES

* Adding SPDX License identifier for aes arm files

* tidying up some whitespace in armv8 encryption functions

* Prettyprint

* Remove whitespace [skip ci]

Co-authored-by: Ted Eaton <eeaton@uwaterloo.ca>
Co-authored-by: Douglas Stebila <dstebila@uwaterloo.ca>
2021-09-15 19:59:02 -04:00
Basil Hess
75b648e9f6
Kyber/Dilithium copy_from_upstream (#1088)
* Kyber/Dilithium copy_from_upstream

* Updated algorithm docs
2021-09-13 21:07:25 +02:00
Christian Paquin
8a5c29819d
Updated SIKE to upstream commit effa60, addressing issue 1056. (#1079) 2021-08-27 22:09:10 -04:00
Douglas Stebila
2049555b7c
Compile-time guard for some BIKE AVX2 and AVX512 code (#1067)
* Compile-time guard for some BIKE AVX512 code

* Compile-time guard for some BIKE AVX2 code

* Typo PCLMUL->PCLMULQDQ
2021-08-05 09:41:26 -04:00
Douglas Stebila
6e911621f8
Remove UNUSED macro from OQS API (#1065) 2021-08-04 09:43:22 -04:00
Douglas Stebila
30fbfd826f
Sync with PQClean (#1061)
* Sync with PQClean 6c1ea921ee4a06a6b50c742ca540bb9b5e51aee2

* Update documentation YML from PQClean

* Update documentation from PQClean
2021-08-01 17:02:22 -04:00
Jason Goertzen
636d9725b2
Adding armv8 crypto extensions to SHA256/224 (#1052)
* sha256 cyrpto extensions seem to work, want to add neon version if crypto isn't available

* Added additional files to CMakeLists.txt

* SHA256 armv8 implementation is done. Still need to double check that everything is happen when complied on a non-arm system, and an arm system that doesn't have the cyrpto extensions

* Updated sha2 CMakeList.txt to resolve issue compiling on aws ARM system

* I think I have resolved the aws/rock1 build issues

* Removed an resolved TODO comment

* Fixed a cmake build bug when OQS_DIST_BUILD is "ON"

* Made CMAKE sha2 build more flexible when using OQS_DIST_BUILD

* Signature datasheets (#1053).

* Fixed a typo in the common CMakeLists.txt file related to SHA2

* Add runtime feature detection for macOS on Apple Silicon

* Changed macos_feature_detection to return unsigned int to fix warnings, and updated some uint32_t to const uint32_t to fix warnings on macOS on Apple silicon

Co-authored-by: Goutam Tamvada <xvzcf@users.noreply.github.com>
Co-authored-by: Douglas Stebila <dstebila@uwaterloo.ca>
2021-07-29 20:09:47 -04:00
Karolin Varner
e0c7f33689
Fixes necessary to compile on raspberry pi 4 with clang (#1055)
* Make compile on raspberry pi 4 with clang

* asm -> __asm__

* Prettyprint

Co-authored-by: Douglas Stebila <dstebila@uwaterloo.ca>
2021-07-29 13:25:52 -04:00
Vitaly Chikunov
9c2b485cd0
Support for x86 and ppc64le architectures (#1037)
* x86: Optimistic port to x86

No processor extensions support.
Tests are passed.

Signed-off-by: Vitaly Chikunov <vt@altlinux.org>

* ppc64le: Optimistic port to ppc64le

No (AltiVec/VSX) processor extensions support is detected.
Tests are passed.

Note that `secure_cmp32` may require additional treatment for this
architecture.

Signed-off-by: Vitaly Chikunov <vt@altlinux.org>
2021-07-09 10:30:20 -04:00
Christian Paquin
c4122ecfea
Added macOS formatting rules for exported arm assembly symbols (#1042)
* Added macOS formatting rules for exported arm assembly symbols

* namespaced assembly exports

* Added alignment instruction in ARM asm files.
2021-07-02 14:12:50 -04:00
Michael Baentsch
f3caccff9e
Removing default algs (#1044)
* change to retain OQS_MINIMAL_BUILD logic

* remove default alg support
2021-07-01 11:42:12 +02:00
John Schanck
21dcba4eae
Remove old versions of BIKE (#1045)
* oqsconfig.h: CLMUL definitions

* BIKE: unhook old versions from OQS

* BIKE: improve cpu_features.h

* BIKE: update CMakeLists.txt

* BIKE: support dist build on compilers without -mvpclmulqdq

* BIKE: compile with -Wno-missing-braces -Wno-missing-field-initializers

* Manually update algorithm count
2021-07-01 07:05:49 +02:00
Christian Paquin
c071b01272
Sike June updates (#1028)
* Integrated SIKE's latest commits.

* Integrated SIKE June 2021 commits, part 2

* Reverted back asm macro guards
2021-06-29 15:08:45 -04:00
Michael Baentsch
a822f0e62d
PQClean / NTRU Prime update (#1039)
* updating upstream algorithms

* update Kyber upstream ref

* adding compat.h

* add SPDX

* move to PQClean shims

* alpine-breaking gcc feature check changed

* remove error case as per PR review comment
2021-06-29 15:05:34 -04:00
John Schanck
d9fb4e0e81
Add OQS_PERMIT_UNSUPPORTED_ARCHITECTURE flag (#1021)
* Add OQS_PERMIT_UNSUPPORTED_ARCHITECTURE flag

* Add warning for unsupported architecture

Co-authored-by: Douglas Stebila <dstebila@uwaterloo.ca>
2021-06-24 20:57:34 -04:00
Geovandro Pereira
7a5097dbd4
Make BIKE compile for different CMake versions when AVX512 is used (#1033) 2021-06-24 10:22:57 -04:00
John Schanck
bf0e388545
Remove Picnic's compatibility layer (#1023)
* Add OQS_MEM_secure_bcmp

* Replace picnic compat.h with OQS shims

* Remove exceptions from test_namespace
2021-06-17 16:07:06 -04:00
dkostic
17d3e0bab5
Import BIKE Round-3 Additional code (#1013)
* Import BIKE Round-3 Additional code

* astyle fix

* Fix for the shared build

* Added KATs sha256sum for BIKE-L1 and BIKE-L3

* Add check if the compiler supports VPCLMUL flag (some older ones don't)

* Disable BIKE build on 32-bit ARM

* Addressing comments on the PR

Co-authored-by: Dusan Kostic <dkostic@amazon.com>
2021-06-17 11:17:22 -04:00
Douglas Stebila
70eae32dd5
Quick fix to Kyber768-90s NIST level (#1014) 2021-06-05 07:08:07 +02:00