121 Commits

Author SHA1 Message Date
Pravek Sharma
e520ec1c38
Integrate Kyber from libjade (#1745)
* Add copy_from_libjade.yml

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Modify copy_from_upstream.py

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Add patches for libjade Kyber code

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Update alg_support.cmake templates

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Update KEM famiy templates

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Fix copy_from_upstream.py

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Correct copy_from_upstream.py

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Modify copy_from_upstream.yml

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Update KEM family templates

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Fix copy_from_upstream.py

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Fix KEM family templates

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Fix KEM family templates

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Update templates for build system files

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Update build system files

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Fix add_enable_by_alg_conditional.libjade

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Run copy_from_upstream.py

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Update KEM family templates

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Update KEM templates

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Update KEM templates

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Update copy_from_upstream.yml with libjade implementation info

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Update KEM templates

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Edit KEM templates

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Run copy_from_upstream.py

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Update copy_from_upstream.py

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Fix KEM temlates

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Run copy_from_upstream.py

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Add libjade_shim

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Add jasmin/libjade namespaces to test_binary.py

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Update testing

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Allow manually triggering CI tests

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Change container for upstreamcheck in unix.yml

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Update copy_from_upstream.py

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Edit unix.yml

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Edit unix.yml

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Restrict copying of code from libjade repo to relevant files

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Remove irrelevant libjade code

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Remove redundant KEM templates

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Update KEM template to accomodate new dir structure

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Debug: tweak unix.yml

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Re-build libjade with jasmin version used in CI

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Debug: undo unix.yml tweak

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Allow MSVC to ignore libjade_shims

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Simplify name scheme for libjade code

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Update alg docs, libjade code name scheme, and license

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Update copy_from_upstream documentation

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Fix copy_from_upstream.py and simply libjade code name scheme

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Update alg docs and CBOM

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Correct alg doc generation

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Generate CBOM with unique bom-ref

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Cleanup unix.yml

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* fix patches to include api.c; fix kem templates

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* fix kyber patch

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* turn off weekly constant time tests for libjade implementations

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* update documentation

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* change upstream to stable libjade release

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* fix kyber documentation

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* fix kyber documentation

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* fix kem template again

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* fix weekly.yml and unix.yml to test libjade code

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* rename libjade asm files from *.s to *.S

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* end libjade_kyber*/api.c files with newline

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* fix kem template to prevent duplicate symbols in object files

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* fix indentation in weekly.yml

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* skip testing libjade on macos-14 in CI

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* use release tag/branch with libjade upstream url instead of commit

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* fix build error when OQS_ENABLE_LIBJADE_KEM_ALG=OFF

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* initialize LIBJADE_RANDOMBYTES when OQS_LIBJADE_BUILD=OFF

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* remove redundant comment

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* fix comment typo

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* make string explicit when comparing with variable in cmake

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* add libjade kyber licensing to README.md

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* remove reference to oldpqclean_kyber* code from libjade if branchin kem_kyber_*.c

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Update CMakeLists.txt

Co-authored-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* track jasminc version in copy_from_libjade.yml; check jasminc version in copy_from_upstream.py

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* add OQS_LIBJADE_BUILD to build flags output

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* remove link from CONFIGURE.md

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Update libjade to dual license

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Patch gcc version for MacOS CI runs

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Fix doc generation

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* Fix libjade docs

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* fix license info in README.md

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

* update libjade_randombytes spdx-license

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>

---------

Signed-off-by: Pravek Sharma <sharmapravek@gmail.com>
Co-authored-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
2024-08-18 12:02:37 -04:00
Spencer Wilson
4f8c9e2c67
Don't hardcode OPENSSL_ROOT_DIR to /usr on Linux (#1873)
* Don't hardcode OPENSSL_ROOT_DIR to /usr on Linux

* Run buildcheck with latest docker image

---------

Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
2024-08-09 13:14:47 -04:00
Basil Hess
4cc88845e8
Add MAYO signature scheme from NIST onramp (#1707)
Add MAYO signature scheme from NIST onramp, C and AVX2 versions
Add AES128CTR to common code

Signed-off-by: Basil Hess <bhe@zurich.ibm.com>
2024-07-13 21:38:01 +02:00
Daiki Ueno
26feef2e8a
Expose callback API for replacing low-level cryptographic primitives (#1832)
This makes the callback API to replace low-level cryptographic
implementation public again after open-quantum-safe#1667.

Signed-off-by: Daiki Ueno <dueno@redhat.com>
2024-07-11 11:53:46 -04:00
Spencer Wilson
21ab5930f0
Increment version [skip ci] (#1813)
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
2024-06-18 13:31:43 -04:00
Norman Ashley
971173ad82
Add Stateful Signature (XMSS and LMS) (#1650)
Add support for LMS and XMSS. Key generation and signing are disabled behind a feature flag labelled "hazardous experimental."

---------

Signed-off-by: Duc Tri Nguyen <dnguye69@gmu.edu>
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
Signed-off-by: Norman Ashley <nashley@cisco.com>
Signed-off-by: Douglas Stebila <dstebila@uwaterloo.ca>
Co-authored-by: Duc Tri Nguyen <dnguye69@gmu.edu>
Co-authored-by: Douglas Stebila <dstebila@uwaterloo.ca>
Co-authored-by: Duc Nguyen <106774416+ducnguyen-sb@users.noreply.github.com>
Co-authored-by: Douglas Stebila <dstebila@users.noreply.github.com>
Co-authored-by: Duc Nguyen <ductri.nguyen@sandboxquantum.com>
Co-authored-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
Co-authored-by: Jason Goertzen <133878263+jgoertzen-sb@users.noreply.github.com>
2024-06-05 15:59:40 -04:00
d0p1
edfed5f0b9
fix build shared lib on msys (#1758)
Signed-off-by: d0p1 <contact@d0p1.eu>
2024-04-23 11:37:34 -04:00
Daiki Ueno
32afec8fcc
Add option to dynamically load libcrypto.so.* (#1603)
* sha2: Use EVP_MD_CTX_free instead of EVP_MD_CTX_destroy

According to the manual page, EVP_MD_CTX_destroy has been renamed to
EVP_MD_CTX_free in OpenSSL 1.1.0 and only provided as a compatibility
macro in later OpenSSL releases:
https://www.openssl.org/docs/man1.1.1/man3/EVP_MD_CTX_free.html

Signed-off-by: Daiki Ueno <dueno@redhat.com>

* ossl_helpers: Use pthread_once instead of CRYPTO_THREAD_run_once

Throughout the code base, liboqs uses pthread_once for one-shot
initialization and falls back to thread-unsafe code if it is not
supported nor enabled on the system.  For consistency and to remove
additional dependency on OpenSSL, this switches the use of
CRYPTO_THREAD_run_once with that.

Signed-off-by: Daiki Ueno <dueno@redhat.com>

* Make common algorithms pluggable

This allows applications to replace the implementation of common
cryptographic algorithms at runtime, by setting callback functions for
each operations with OQS_AES_set_callbacks, OQS_SHA2_set_callbacks,
OQS_SHA3_set_callbacks, and OQS_SHA3_x4_callbacks.  Those functions
may be called once before OQS_init; otherwise the default
implementation will be used.

Signed-off-by: Daiki Ueno <dueno@redhat.com>

* Add option to dynamically load libcrypto.so.*

This adds OQS_DLOPEN_OPENSSL build option to use OpenSSL through
dynamically loaded libcrypto.so.* with dlopen, instead of linking to
the library at build time.

That way the applications could use their favorite implementation of
common cryptographic primitives without pulling in the OpenSSL as a
hard dependency.

Signed-off-by: Daiki Ueno <dueno@redhat.com>

* Add tests for OQS_*_set_callbacks

This adds tests that exercise OQS_*_set_callbacks by overriding one of
the function of each and ensuring the wrapper function is called.

Signed-off-by: Daiki Ueno <dueno@redhat.com>

---------

Signed-off-by: Daiki Ueno <dueno@redhat.com>
2024-04-05 16:20:17 +02:00
Michael Baentsch
5ac9bcfb2f
switching to dev mode again (#1743)
* switching to dev mode again

* activating backwards compatible pip3 mode

Signed-off-by: Michael Baentsch <57787676+baentsch@users.noreply.github.com>
2024-04-03 15:19:33 +02:00
Douglas Stebila
36be57445d
0.10.0 release (#1734)
* Bump version string, add release notes, dates, and update support level

Signed-off-by: Michael Baentsch <57787676+baentsch@users.noreply.github.com>

---------

Signed-off-by: Michael Baentsch <57787676+baentsch@users.noreply.github.com>
Co-authored-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
Co-authored-by: Michael Baentsch <57787676+baentsch@users.noreply.github.com>
2024-03-23 13:34:28 +01:00
Basil Hess
60adf53107
Add ML-DSA-ipd and ML-KEM-ipd & NIST supplied test vectors (#1626)
Pulls ML-DSA-ipd and ML-KEM-ipd
Adds test cases with NIST supplied test vectors for ML-DSA/ML-KEM
Adds aliases (ML-<name> are aliases of ML-<name>-ipd)
[trigger downstream]
2024-02-19 10:28:28 +01:00
Spencer Wilson
cc453db4a6
Make internal API available to (only) test programs (#1667)
* Separate public and internal headers

* Add necessary #include statements in FrodoKem code

* Build oqs-internal library

* Link test programs with oqs-internal

* Update header file documentation

* Refactor test Makefile

* Move rand_nist to internal API only

* Delete nistseedexpander shim

* Remove internal headers from Doxyfile
2024-01-22 09:03:35 -05:00
trigpolynom
bb23b3f61b
Riscv zephyr support (#1641)
* added riscv32 to zephyr (qemu)

* added to PLATFORMS.md
2024-01-14 08:37:50 +01:00
Michael Baentsch
ed86578c03
Correct cmake version requirement (#1643)
* upgrade minimum cmake version supported: cmake 3.15 is first version accepting object lists for TARGET_OBJECTS
2024-01-04 11:05:47 +01:00
Tobias Frauenschläger
4906c3fc88
Add support for embedded Zephyr RTOS (#1621)
* Zephyr RTOS support

This commit adds initial support for the zephyr operating system. Some
minor changes to the library build system have been made for it to be
compilable with zephyr. Furthermore, we added support for an embedded
build option to disable standard library methods for random number
generation.

* Zephyr: added algorithm selection

The algorithms can now be selected with Kconfig. Per default, we only
enable the algorithms selected by NIST to be standardized. However, all
supported algorithms can be enabled or disabled individually on a per
project basis.

* Zephyr: added testable samples

Added two sample applications within the zephyr directory for KEMs and
Signatures. These are also intended for CI testing.

* Zephyr: added CI tests

* Zephyr: Add documentation

Signed-off-by: Tobias Frauenschläger <t.frauenschlaeger@me.com>
2023-12-20 08:20:56 +01:00
Michael Baentsch
78e65bf143
add uninstall support (#1604) 2023-11-07 16:59:03 -05:00
Spencer Wilson
aeac3a441d
Pull new HQC implementation from upstream (#1585)
* Update Sphincs+ PQClean patch

* Don't apply PQClean Dilithium and Kyber patches

* Run copy_from_upstream; don't apply Dilithium and Kyber changes

* Run HQC KATs with custom PRNG

* Satisfy astyle

* Add licence for common code

* Fix CI build errors

* Update HQC version, OQS version, and SOVERSION

* Move HQC PRNG into test file

* Satisfy astyle

* Fix SHA3 link error

* Reset HQC issues/passes

* fixup! Fix SHA3 link error

* fix kat_kem linkage to make HQC PR pass CI (#1601)

* fix kat_kem linkage

* remove armhf CI support

* Revert "remove armhf CI support"

This reverts commit af759bbf743bb3ecc2e7315cf10c1785e93bcc05.

---------

Co-authored-by: Michael Baentsch <57787676+baentsch@users.noreply.github.com>
2023-11-06 16:40:50 -05:00
Douglas Stebila
7c3a0e9aa7 liboqs 0.9.0 release 2023-10-12 16:42:15 -04:00
Spencer Wilson
f0326a4220
liboqs 0.9.0 release candidate 1 (#1570)
* Update version number and add release notes

* Fix noregress script

* Fix date in release notes
2023-09-29 15:31:56 -04:00
Pravek Sharma
0b64ca3c91
Update Classic McEliece (#1470)
* Update Classic McEliece

* Run copy_from_upstream.py

* Change crypto_declassify.h license

* Remove old McEliece vec/avx directories

* Add add_compile_options(-Wno-language-extension-token) to comipler_opts.cmake

* Fix CI errors. Reduce McEliece optimisation from -03 to -01. Patch PQClean McEliece.

* Update liboqs version number. Fix comments.

* Increment SOVERSION.

* Update Classic McEliece advisories. Replace

* Update Classic McEliece documentation YAML. Update KEM CMakeLists Jinja template.
2023-07-17 09:43:45 -04:00
Michael Baentsch
d81c64cc0f
update version and remove CCI triggers (#1498) 2023-06-15 06:02:47 +02:00
Douglas Stebila
db08f12b5a liboqs 0.8.0 release 2023-06-07 20:50:36 -04:00
Douglas Stebila
7728f20d4d 0.8.0-rc1 2023-05-22 19:41:41 -04:00
Michael Baentsch
d704da0c5f
Limit gcc version supported (#1451)
* tie down minimal gcc version
2023-05-09 06:47:33 +02:00
Douglas Stebila
d5be452ec8
Add missing x86 check in CMakeLists (#1445) 2023-04-28 16:19:18 -04:00
dkostic
a1bdce9894
BIKE Round-4 update (#1369)
* BIKE Round-4 update

* Export BIKE symbols

---------

Co-authored-by: dkostic <dkostic@amazon.com>
Co-authored-by: Douglas Stebila <dstebila@users.noreply.github.com>
2023-02-08 06:54:30 +01:00
Michael Baentsch
04ff6fd871
compiler future-proofing Release builds (#1378)
* compiler future-proofing Release builds
2023-02-07 07:24:40 +01:00
Goutam Tamvada
924ea88cb0
Updated PQClean commit in copy_from_upstream.yml (#1359) 2023-01-16 11:06:08 -05:00
Michael Baentsch
1d76b2e6a1
add cpack (for .deb packages) (#1362) 2023-01-16 07:09:33 +01:00
Michael Baentsch
da0dd47c5d
Config update (#1361)
* update default configs docs and DIST_BUILD

* toggle OQS_DIST_BUILD CCI tests

* setting ARM64 default for CMAKE_ARGS
2023-01-16 07:08:56 +01:00
Douglas Stebila
aed3b4965f
Build Doxygen docs in whatever the CMake build directory is (#1357)
* Build Doxygen docs in whatever the CMake build directory is

Fixes #1341.

* Missing Doxygen build directory in CI
2023-01-13 16:58:03 -05:00
Jeevesh Rishi Dindyal (Sarvesh)
2e42595804
Add ntruprime (#1328)
* Add back sntrup761
2022-12-22 07:37:44 +01:00
Goutam Tamvada
a7e1b8a32f
Removed NTRU. (#1335) 2022-12-15 12:19:29 -05:00
Goutam Tamvada
f5d96cab5c
Removed SABER. (#1326) 2022-12-01 14:04:08 -05:00
Goutam Tamvada
c50d38e5a8
Removed NTRU-Prime. (#1325) 2022-11-29 07:31:53 +01:00
Goutam Tamvada
fac5a818ed
Removed the Picnic signature scheme. (#1323) 2022-11-28 15:29:10 -05:00
Goutam Tamvada
203c9c269b
Removed the rainbow signature scheme (#1321). 2022-11-28 11:34:59 -05:00
Michael Baentsch
e9cd9a5c55
automatically activate USE_RASPBERRY_PI define (#1313)
* automatically activate USE_RASPERRY_PI define

* prefix RASPBERRY_PI define with OQS_
2022-11-18 08:12:19 +01:00
Michael Baentsch
46deaac9a9
update version string indicating dev status (#1305) 2022-09-14 17:17:09 +02:00
Douglas Stebila
ea44f391fd 0.7.2 2022-08-21 15:54:09 -04:00
Douglas Stebila
da6e54103a 0.7.2-rc2 2022-08-10 13:26:37 -04:00
Douglas Stebila
3cf9849cc4 0.7.2-rc1 2022-08-03 17:07:33 -04:00
Douglas Stebila
1e47e14556
Remove SIDH and SIKE (#1272)
Due to https://eprint.iacr.org/2022/975.

Fixes #1268.
2022-08-03 10:19:28 -04:00
Michael Baentsch
7d7fd33879
improve Windows crosscompile handling (#1236) 2022-06-29 07:40:32 +02:00
Michael Baentsch
d9c2cd2136
doxygen update (#1228)
* upgrade script to support doxygen 1.9.3

* update CI script for doc generation

* add license identifiers
2022-06-21 10:53:16 -04: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
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
Douglas Stebila
2f4f301b18 Switch version to 0.7.2-dev [skip ci] 2021-12-20 11:01:00 -05:00
Douglas Stebila
a39d08e00a liboqs 0.7.1 2021-12-16 13:34:53 -05:00
Douglas Stebila
0a61d5d066 0.7.1-rc1 [skip ci] 2021-12-09 14:23:49 -05:00