This commit includes following changes:
* Revert "Removed NTRU. (#1335)"
* Replace the uses of malloc with OQS_MEM_malloc
* Add a derandomized keypair function
* Add "all" entries of NTRU algorithms to the KATs file
* Fix reflecting the removal of NTRU from PQClean
* Update NTRU documents with the latest manners
* Change the CODEOWNERS of NTRU KEM
Signed-off-by: Saito Masataka <saitomst@intellilink.co.jp>
* Initial derive keypair commit
Signed-off-by: Eddy Kim <Eddy.M.Kim@outlook.com>
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Add pqcrystals-ml_kem_ipd.patch
Signed-off-by: Eddy Kim <Eddy.M.Kim@outlook.com>
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Fix encaps key in scheme and revert whitespace changes
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Hopefully corrected patch file
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Corrected missing derand in kem_scheme
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Fix indentation
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Run copy_from_upstream
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
derand testing tentative changes
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Add missing function declarations
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Add template for avx2 derand functions
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Run copy_from_upstream
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
WIP: Add changes for coin length
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Update patch to include coin lengths
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
Bootstrap
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
Conditional copy
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
Run copy_from_upstream
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
Separate coins variable into two distinct variables
Signed-off-by: Eddy Kim <Eddy.M.Kim@outlook.com>
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
Add derand fixes
- Add support for BIKE, FrodoKEM, sntrup
- Add hooks for testing
- Add missing kem comment to documentation
- Don't run decaps() in test_kem_derand if encaps_derand() fails
- Add markdown documentation changes
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
WIP trying to fix build errors
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
Fix remaining build issues
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
Resolve unused parameter issues for BIKE
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
Resolve unused paramter issues for FrodoKEM
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
Fix whitespace inconsistency
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
Fix whitepace issue
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
Insert unused attributes
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
Void all unused parameters
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
Use tab instead of spaces in kem_scheme
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
Run copy_from_upstream
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
Fix kem_derand python tests
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
Initialize coins in test_kem_derand
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
* Update patch to work with mlkem-native
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
* Update docs generation and templating
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
* Run copy_from_upstream [full tests] [extended tests]
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
* Don't call randombytes on zero-length arrays
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
* Run format script
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
* Remove encaps_derand support
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
* Run copy_from_upstream
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
* Skip encaps/decaps in test_kem_derand
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
* Refactor test code
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
* s/coins/seed/g
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
* Improve output
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
* Improve formatting [full tests] [extended tests]
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
---------
Signed-off-by: Eddy Kim <e84kim@uwaterloo.ca>
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
Co-authored-by: Eddy Kim <Eddy.M.Kim@outlook.com>
* Add a --delete option to copy_from_upstream to remove unwanted implementation subdirectories.
* Enable the --delete option in CI to detect files included by mistake
* Switch to git status --porcelain in CI for script stability
* Remove unused SPHINCS+ aarch64 implementation using the --delete option
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
* Refactor liboqs CI to utilize reusable workflows
* Add CI.md documentation file
* Update all Focal jobs to Noble (the latest Ubuntu LTS)
* Minor fixes to address issues related to the update (CT files / syntax / static analysis)
Signed-off-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
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>
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]
Run full KAT tests weekly. All should pass except Falcon-1024, which is pending upstream changes.
---------
Co-authored-by: Michael Baentsch <57787676+baentsch@users.noreply.github.com>
* Switch to new PQClean commit for SPHINCS+ and remove old patch file
* Improve "compilability" on Apple M1 (ARM) (#1421)
* correct ARM SHA3 extension addition
* correct compile option for ARM SHA
* correct SHA3 enablement
* Remove SPHINCS+ robust and Haraka variants
* Fix SHA2 block sizes in OpenSSL wrapper
* enable Keccak for Sphincs even if OpenSSL shall provide SHA3
* properly handle xkcp enablement if only specific algorithms are selected
* correct conditional setting
* re-enable XKCP for other platforms
* Windows support
* alternate pqcrystals-AES removal
---------
Co-authored-by: Michael Baentsch <57787676+baentsch@users.noreply.github.com>
* Refactor update_cbom and update_docs_from_yaml, allow copy_from_upstream to import them.
Workaround for issue in GitPython, caused update_cbom to fail in Github CI.
* updates after copy_from_upstream
* 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 '\_'
* 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>
* 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
* 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
* Update copy_from_pqclean / copy_from_upstream (#880)
* Renames copy_from_pqclean to copy_from_upstream.
* Adds 'upstreams' field to copy_from_upstream.yml, allowing to specify upstream repositories, branches and commits.
* Modifies "copy" command in copy_from_upstream: sources are pulled from specified git-repositories. Implementation folders in $LIBOQS_DIR/src will be prefixed with the upstream-name.
* Adds "verify" command in copy_from_upstream: Implementations in $LIBOQS_DIR/src are compared with expected upstream versions.
* Prepares for copying pqclean, pqcrystals-kyber and pqcrystals-dilithium from upstream.
* Updates copy_from_upstream to process common dependencies from an upstream.
* Adds reminder text to manually update algorithm docs .md files after copying