Releases: open-quantum-safe/liboqs
Release list
liboqs version 0.16.0
The Open Quantum Safe (OQS) project has the goal of developing and prototyping quantum-resistant cryptography. More information on OQS can be found on our website: https://openquantumsafe.org/ and on Github at https://github.com/open-quantum-safe/.
liboqs is an open source C library for quantum-resistant cryptographic algorithms. Details about liboqs can be found in README.md. See in particular limitations on intended use.
liboqs can be used with the following Open Quantum Safe application integrations:
- oqs-provider: A standalone prototype OpenSSL 3 provider enabling liboqs-based quantum-safe and hybrid key authentication and exchange for TLS 1.3, X.509 certificate generation and CMS operations.
- OQS-BoringSSL: A prototype integration of liboqs-based authentication and key exchange into TLS 1.3 in our fork of BoringSSL; see https://github.com/open-quantum-safe/boringssl.
- OQS-OpenSSH: A prototype integration of liboqs-based authentication and key exchange into Secure Shell (SSH) version 2 in our fork of OpenSSH; see https://github.com/open-quantum-safe/openssh.
Several demos are available for using the above libraries in applications, including Apache, Chromium, curl, haproxy, nginx, and Wireshark.
liboqs can also be used in the following programming languages via language-specific wrappers:
- C++, via https://github.com/open-quantum-safe/liboqs-cpp
- Go, via https://github.com/open-quantum-safe/liboqs-go
- Java, via https://github.com/open-quantum-safe/liboqs-java
- Python 3, via https://github.com/open-quantum-safe/liboqs-python
- Rust, via https://github.com/open-quantum-safe/liboqs-rust
Release notes
liboqs 0.16.0 was released on Thursday, July 9, 2026.
Deprecation notice
SPHINCS+ was removed in 0.16.0.
Security issues
- Fixed uninitialized
encaps_derandpointer dereference #2460 - Fixed out-of-bounds read in XMSS/XMSS^MT signature verification 077e32a, #2384
- Fixed Integer underflow in CROSS
crypto_sign_open()25d0a9e - Fixed incorrect array size when calling
secure_cleanab0e07c - Implemented optimization barrier
OQS_MEM_BLACK_BOXand applied to
ct_selectin FrodoKEM #2431
Significant change
FrodoKEM algorithm change
Existing FrodoKEM in 0.15.0 was renamed to ephemeral FrodoKEM (KEM_efrodokem_<640|976|1344>_<aes|shake>), and the salted variant of FrodoKEM was added under the prior names (KEM_frodokem_<640|976|1344>_<aes|shake>).
Ephemeral FrodoKEM is recommended for applications where each keypair will encapsulate only a small number of shared secrets and ciphertexts. Standard (salted) FrodoKEM is recommended for applications where each keypair is expected to encapsulate large number of ciphertexts. Please consult upstream for more details.
mldsa-native integration
mldsa-native is a secure, fast, and portable C90 implementation of the ML-DSA post-quantum signature standard. It also includes optimized builds for x86_64 and aarch64. It is now the default implementation behind SIG_ml_dsa_<44|65|87>.
Updated HQC implementation
The HQC implementations in liboqs were updated to 20250822 spec. Its upstream switched from PQClean to the official repo. KEM_hqc_<1|3|5> is now enabled by default.
MQOM integration and memory-optimized build flag
MQOM is a third-round candidate in NIST's Additional Digital Signatures for the PQC Standardization Process. Portable, x86_64-optimized, and memory-optimized implementations were integrate into liboqs under OQS_ENABLE_SIG_MQOM.
A new build flag OQS_MEMOPT_BUILD can now be used to switch to memory-optimized builds for algorithms that have memory-optimized implementations.
OpenSSH implementation of NTRU Prime
A public-domain OpenSSH implementation of NTRUPrime761 replaced the PQClean implementation as the default backend for KEM_ntruprime_sntrup761.
Bug fixes
- Fixed incremental absorption bug in AVX512VL SHA3-512 #2442
- Implemented fallback for when
EVP_DigestSqueezeis unavailable #2433 - Added API for detecting stateful signature support at runtime #2434
- Fixed missing initialization and indexing bug in LMS #2416
- Fixed erroneous MAYO_OK despite failed sample_solution() attempts in MAYO #2403
- Limited pytest parallelism to prevent memory exhaustion in constrained environment #2397
- Fixed cuPQC ML-KEM derand symbol names and
#if/#elifchains #2396 - Tightened Windows compiler detection #2394
- Fixed mismatched macros in LMS #2379
- Made fuzzers tolerant to disabled algorithms #2359
- Removed inlined exponentiation in CROSS-RSDPG-1 #2357
- Fixed incorrect arg register update in AVX512 Keccak #2330
Miscellaneous
- Update mlkem-native to v1.2.0 #2470
- Removed legacy HQC constant-time test #2467
- Download Intel SDE from alternative source #2463
- Updated algorithm support information #2441
- Added NIST LMS Signature verify KATs #2435
- Fixed comments on SHA3-AVX512VL assembly file. Thank you Anthony Plank for reporting the issue #2438
- Fixed latent warnings exposed by refreshed CI container images #2430
- Added common dependencies with
include_onlyincopy_from_upstream#2382 - Documented algorithm support levels #2413
- Updated Dependabot configuration #2420
- Added @loganaden as codeowner for Kyber #2421
- Bumped
gitpythonversion forcopy_from_upstream#2414 - Updated GOVERNANCE.md and CODEOWNERS #2410
- Added fuzz harness for LMS/XMSS signature verification #2398, #2412
- Added fuzz harness for XMSS signature verification #2399, #2400
- Moved compiler optimization level to CMAKE_BUILD_TYPE #2383
- Updated pytest package version #2408
- Demoted armhf to tier 3 supported platform #2406
- Added Wycheproof tests for ML-DSA #2378
- Added overflow check for OQS_MEM_calloc arguments #2377
- Updated Wycheproof tests ML-KEM #2373
- Updated Zephyr CI tests to recent versions #2369
- Documented KAT sources and hash verification process #2363
- Added support for ML-DSA pre-hash sign ACVP test vectors #2362
- Added external-mu sign gen ACVP tests for ML-DSA #2352
- Cached ACVP test vectors #2354
- Added OQS_SIG_sign methods tests in vectors_sig #2350
- Added the path to the binary include dir #2312
- Removed local copies of ACVP test vectors [#...
liboqs version 0.16.0-rc1
The Open Quantum Safe (OQS) project has the goal of developing and prototyping quantum-resistant cryptography. More information on OQS can be found on our website: https://openquantumsafe.org/ and on Github at https://github.com/open-quantum-safe/.
liboqs is an open source C library for quantum-resistant cryptographic algorithms. Details about liboqs can be found in README.md. See in particular limitations on intended use.
liboqs can be used with the following Open Quantum Safe application integrations:
- oqs-provider: A standalone prototype OpenSSL 3 provider enabling liboqs-based quantum-safe and hybrid key authentication and exchange for TLS 1.3, X.509 certificate generation and CMS operations.
- OQS-BoringSSL: A prototype integration of liboqs-based authentication and key exchange into TLS 1.3 in our fork of BoringSSL; see https://github.com/open-quantum-safe/boringssl.
- OQS-OpenSSH: A prototype integration of liboqs-based authentication and key exchange into Secure Shell (SSH) version 2 in our fork of OpenSSH; see https://github.com/open-quantum-safe/openssh.
Several demos are available for using the above libraries in applications, including Apache, Chromium, curl, haproxy, nginx, and Wireshark.
liboqs can also be used in the following programming languages via language-specific wrappers:
- C++, via https://github.com/open-quantum-safe/liboqs-cpp
- Go, via https://github.com/open-quantum-safe/liboqs-go
- Java, via https://github.com/open-quantum-safe/liboqs-java
- Python 3, via https://github.com/open-quantum-safe/liboqs-python
- Rust, via https://github.com/open-quantum-safe/liboqs-rust
Release notes
liboqs 0.16.0-rc1 was released on Wednesday, June 24, 2026.
Deprecation notice
SPHINCS+ was removed in 0.16.0.
Security issues
- Fixed uninitialized
encaps_derandpointer dereference #2460 - Fixed out-of-bounds read in XMSS/XMSS^MT signature verification 077e32a, #2384
- Fixed Integer underflow in CROSS
crypto_sign_open()25d0a9e - Fixed incorrect array size when calling
secure_cleanab0e07c - Implemented optimization barrier
OQS_MEM_BLACK_BOXand applied toct_selectin FrodoKEM #2431
Significant change
FrodoKEM algorithm change
Existing FrodoKEM in 0.15.0 was renamed to ephemeral FrodoKEM (KEM_efrodokem_<640|976|1344>_<aes|shake>), and the salted variant of FrodoKEM was added under the prior names (KEM_frodokem_<640|976|1344>_<aes|shake>).
Ephemeral FrodoKEM is recommended for applications where each keypair will encapsulate only a small number of shared secrets and ciphertexts. Standard (salted) FrodoKEM is recommended for applications where each keypair is
expected to encapsulate large number of ciphertexts. Please consult upstream for more details.
mldsa-native integration
mldsa-native is a secure, fast, and portable C90 implementation of the ML-DSA post-quantum signature standard. It also includes optimized builds for x86_64 and aarch64. It is now the default implementation behind SIG_ml_dsa_<44|65|87>.
Updated HQC implementation
The HQC implementations in liboqs were updated to 20250822 spec. Its upstream switched from PQClean to the official repo. KEM_hqc_<1|3|5> is now enabled by default.
MQOM integration and memory-optimized build flag
MQOM is a third-round candidate in NIST's Additional Digital Signatures for the PQC Standardization Process. Portable, x86_64-optimized, and memory-optimized implementations were integrate into liboqs under OQS_ENABLE_SIG_MQOM.
A new build flag OQS_MEMOPT_BUILD can now be used to switch to memory-optimized builds for algorithms that have memory-optimized implementations.
OpenSSH implementation of NTRU Prime
A public-domain OpenSSH implementation of NTRUPrime761 replaced the PQClean implementation as the default backend for KEM_ntruprime_sntrup761.
Bug fixes
- Fixed incremental absorption bug in AVX512VL SHA3-512 #2442
- Implemented fallback for when
EVP_DigestSqueezeis unavailable #2433 - Added API for detecting stateful signature support at runtime #2434
- Fixed missing initialization and indexing bug in LMS #2416
- Fixed erroneous MAYO_OK despite failed sample_solution() attempts in MAYO #2403
- Limited pytest parallelism to prevent memory exhaustion in constrained
environment #2397 - Fixed cuPQC ML-KEM derand symbol names and
#if/#elifchains #2396 - Tightened Windows compiler detection #2394
- Fixed mismatched macros in LMS #2379
- Made fuzzers tolerant to disabled algorithms #2359
- Removed inlined exponentiation in CROSS-RSDPG-1 #2357
- Fixed incorrect arg register update in AVX512 Keccak #2330
Miscellaneous
- Update mlkem-native to v1.2.0 #2470
- Removed legacy HQC constant-time test #2467
- Download Intel SDE from alternative source #2463
- Updated algorithm support information #2441
- Added NIST LMS Signature verify KATs #2435
- Fixed comments on SHA3-AVX512VL assembly file. Thank you Anthony Plank for
reporting the issue #2438 - Fixed latent warnings exposed by refreshed CI container images #2430
- Added common dependencies with
include_onlyincopy_from_upstream#2382 - Documented algorithm support levels #2413
- Updated Dependabot configuration #2420
- Added @loganaden as codeowner for Kyber #2421
- Bumped
gitpythonversion forcopy_from_upstream#2414 - Updated GOVERNANCE.md and CODEOWNERS #2410
- Added fuzz harness for LMS/XMSS signature verification #2398 #2412
- Added fuzz harness for XMSS signature verification #2399 #2400
- Moved compiler optimization level to CMAKE_BUILD_TYPE #2383
- Updated pytest package version #2408
- Demoted armhf to tier 3 supported platform #2406
- Added Wycheproof tests for ML-DSA #2378
- Added overflow check for OQS_MEM_calloc arguments #2377
- Updated Wycheproof tests ML-KEM #2373
- Updated Zephyr CI tests to recent versions #2369
- Documented KAT sources and hash verification process #2363
- Added support for ML-DSA pre-hash sign ACVP test vectors #2362
- Added external-mu sign gen ACVP tests for ML-DSA #2352
- Cached ACVP test vectors #2354
- Added OQS_SIG_sign methods tests in vectors_sig [#2350](https://github.com/open-quantum-...
liboqs version 0.15.0
The Open Quantum Safe (OQS) project has the goal of developing and prototyping quantum-resistant cryptography. More information on OQS can be found on our website: https://openquantumsafe.org/ and on Github at https://github.com/open-quantum-safe/.
liboqs is an open source C library for quantum-resistant cryptographic algorithms. Details about liboqs can be found in README.md. See in particular limitations on intended use.
liboqs can be used with the following Open Quantum Safe application integrations:
- oqs-provider: A standalone prototype OpenSSL 3 provider enabling liboqs-based quantum-safe and hybrid key authentication and exchange for TLS 1.3, X.509 certificate generation and CMS operations.
- OQS-BoringSSL: A prototype integration of liboqs-based authentication and key exchange into TLS 1.3 in our fork of BoringSSL; see https://github.com/open-quantum-safe/boringssl.
- OQS-OpenSSH: A prototype integration of liboqs-based authentication and key exchange into Secure Shell (SSH) version 2 in our fork of OpenSSH; see https://github.com/open-quantum-safe/openssh.
Several demos are available for using the above libraries in applications, including Apache, Chromium, curl, haproxy, nginx, and Wireshark.
liboqs can also be used in the following programming languages via language-specific wrappers:
- C++, via https://github.com/open-quantum-safe/liboqs-cpp
- Go, via https://github.com/open-quantum-safe/liboqs-go
- Java, via https://github.com/open-quantum-safe/liboqs-java
- Python 3, via https://github.com/open-quantum-safe/liboqs-python
- Rust, via https://github.com/open-quantum-safe/liboqs-rust
Release notes
liboqs 0.15.0 was released on Friday, Nov 14, 2025.
Deprecation notice
liboqs 0.15.0 is the last version to officially support SPHINCS+. SPHINCS+ will be removed in the 0.16.0 release and replaced by SLH-DSA. liboqs 0.15.0 also removes support for Dilithium.
Security issues
None reported
Significant changes
- Integrated SLH-DSA implementation from pq-code-package/slhdsa-c
- Added NTRU back (#2176)
- Removed all Dilithium implementations (#2275)
- Replaced SPHINCS+ with SLH-DSA for CMake build option
OQS_ALGS_ENABLED=STD(#2290) - Updated CROSS to version 2.2 (#2247)
- Included DeriveEncapsulation functionality (#2221)
- Integrated ML-KEM implementation from ICICLE-PQC (#2216)
Bug fixes
- Fixed erroneously disabled LMS variants with build flag
OQS_ENABLE_SIG_STFL_LMS(#2310) - Fixed incorrect import in OV-III-pkc_skc (#2299)
- Fixed incorrect actual signature length in signature full-cycle speed test (#2293)
- Fixed ICICLE ML-KEM integration (#2288)
- Disabled strict aliasing on SPHINCS+-SHAKE (#2264)
- Fixed typo in
test_kem.c(#2281) - Fixed uninitialized
length_encaps_seedfor NTRU implementations (#2266)
- Changed 64 bit add to 32 bit add to wrap on 32 bit counter for AES-CTR AES-NI implementation (#2252)
- Improved random number generator security (#2225)
- Avoided invalid compiler options for MSVC (#2239)
- Added Classic McEliece sanitization patch (#2218)
Miscellaneous
- Deprecated
noregressscripts (#2295) - Updated no-pass explanation for constant-time testing (#2294)
- Fixed weekly test failures in GitHub Action (#2285)
- Improved algorithm support readability in README.md (#2286)
- Re-enabled all ACVP tests (#2283)
- Moved continuous benchmarking to weekly tests (#2276)
- Linked to contribution wishlist from CONTRIBUTING.md (#2273)
- Added content:read permission to scorecard workflow (#2261)
- Added guidance and questions on generative AI use (#2269)
- Moved
linux_arm_emulatedto extended tests (#2236) - Fixed pluralization in docs: "key encapsulation mechanisms (KEMs)" (#2255)
- Fixed permissions for poutine_analysis job (#2246)
- Disabled testing on Travis CI (#2248)
- Upgraded Jinja to 3.1.6 (#2214)
- Updated license info for ML-KEM (#2250)
- Fixed typos across codebase (#2244)
- Restructured basic checks (#2233)
- Fixed code scanning workflow (#2217)
- Changed Nix install action to verified (#2212)
- Removed
armelcomment (#2231) - Removed
armelsupport fromPLATFORMS.md(#2232) - Added Poutine SASL (#2213)
- Updated nixpkgs from 24.05 to 25.05 (#2187)
- Added Custom Timeout to CI (#2189)
- Updated ACVP to 1.1.0.40 (#2172)
- Switched to dev mode for 0.14.1 (#2199)
New contributors
- Ganyu (Bruce) Xu (@xuganyu96)
- Ethan Li (@lir2002)
- @nonam3e (associated with Ingonyama)
- Saito Masataka (@saitomst)
- @max-p-log-p
- Vibhav Tiwari (@vibhav950)
- Dmitry (@mdqst)
- Rodrigo Martín (@RodriM11)
- @sukrucildirr
- Kitsios Konstantinos (@kitsiosk)
liboqs version 0.15.0-rc2
liboqs version 0.15.0-rc2
The Open Quantum Safe (OQS) project has the goal of developing and prototyping quantum-resistant cryptography. More information on OQS can be found on our website: https://openquantumsafe.org/ and on Github at https://github.com/open-quantum-safe/.
liboqs is an open source C library for quantum-resistant cryptographic algorithms. Details about liboqs can be found in README.md. See in particular limitations on intended use.
liboqs can be used with the following Open Quantum Safe application integrations:
- oqs-provider: A standalone prototype OpenSSL 3 provider enabling liboqs-based quantum-safe and hybrid key authentication and exchange for TLS 1.3, X.509 certificate generation and CMS operations.
- OQS-BoringSSL: A prototype integration of liboqs-based authentication and key exchange into TLS 1.3 in our fork of BoringSSL; see https://github.com/open-quantum-safe/boringssl.
- OQS-OpenSSH: A prototype integration of liboqs-based authentication and key exchange into Secure Shell (SSH) version 2 in our fork of OpenSSH; see https://github.com/open-quantum-safe/openssh.
Several demos are available for using the above libraries in applications, including Apache, Chromium, curl, haproxy, nginx, and Wireshark.
liboqs can also be used in the following programming languages via language-specific wrappers:
- C++, via https://github.com/open-quantum-safe/liboqs-cpp
- Go, via https://github.com/open-quantum-safe/liboqs-go
- Java, via https://github.com/open-quantum-safe/liboqs-java
- Python 3, via https://github.com/open-quantum-safe/liboqs-python
- Rust, via https://github.com/open-quantum-safe/liboqs-rust
Release notes
Release candidate 2 for liboqs 0.15.0 was released on Nov 10, 2025.
Deprecation notice
liboqs 0.15.0 is the last version to officially support SPHINCS+. SPHINCS+ will be removed in the 0.16.0 release and replaced by SLH-DSA. liboqs 0.15.0 also removes support for Dilithium.
Security issues
None reported
Significant changes
- Integrated SLH-DSA implementation from pq-code-package/slhdsa-c
- Added NTRU back (#2176)
- Removed all Dilithium implementations (#2275)
- Replaced SPHINCS+ with SLH-DSA for CMake build option
OQS_ALGS_ENABLED=STD(#2290) - Updated CROSS to version 2.2 (#2247)
- Included DeriveEncapsulation functionality (#2221)
- Integrated ML-KEM implementation from ICICLE-PQC (#2216)
Bug fixes
- Fixed erroneously disabled LMS variants with build flag
OQS_ENABLE_SIG_STFL_LMS(#2310) - Fixed incorrect import in OV-III-pkc_skc (#2299)
- Fixed incorrect actual signature length in signature full-cycle speed test (#2293)
- Fixed ICICLE ML-KEM integration (#2288)
- Disabled strict aliasing on SPHINCS+-SHAKE (#2264)
- Fixed typo in
test_kem.c(#2281) - Fixed uninitialized
length_encaps_seedfor NTRU implementations (#2266)
- Changed 64 bit add to 32 bit add to wrap on 32 bit counter for AES-CTR AES-NI implementation (#2252)
- Improved random number generator security (#2225)
- Avoided invalid compiler options for MSVC (#2239)
- Added Classic McEliece sanitization patch (#2218)
Miscellaneous
- Deprecated
noregressscripts (#2295) - Updated no-pass explanation for constant-time testing (#2294)
- Fixed weekly test failures in GitHub Action (#2285)
- Improved algorithm support readability in README.md (#2286)
- Re-enabled all ACVP tests (#2283)
- Moved continuous benchmarking to weekly tests (#2276)
- Linked to contribution wishlist from CONTRIBUTING.md (#2273)
- Added content:read permission to scorecard workflow (#2261)
- Added guidance and questions on generative AI use (#2269)
- Moved
linux_arm_emulatedto extended tests (#2236) - Fixed pluralization in docs: "key encapsulation mechanisms (KEMs)" (#2255)
- Fixed permissions for poutine_analysis job (#2246)
- Disabled testing on Travis CI (#2248)
- Upgraded Jinja to 3.1.6 (#2214)
- Updated license info for ML-KEM (#2250)
- Fixed typos across codebase (#2244)
- Restructured basic checks (#2233)
- Fixed code scanning workflow (#2217)
- Changed Nix install action to verified (#2212)
- Removed
armelcomment (#2231) - Removed
armelsupport fromPLATFORMS.md(#2232) - Added Poutine SASL (#2213)
- Updated nixpkgs from 24.05 to 25.05 (#2187)
- Added Custom Timeout to CI (#2189)
- Updated ACVP to 1.1.0.40 (#2172)
- Switched to dev mode for 0.14.1 (#2199)
New contributors
- Ganyu (Bruce) Xu (@xuganyu96)
- Ethan Li (@lir2002)
- @nonam3e (associated with Ingonyama)
- Saito Masataka (@saitomst)
- @max-p-log-p
- Vibhav Tiwari (@vibhav950)
- Dmitry (@mdqst)
- Rodrigo Martín (@RodriM11)
- @sukrucildirr
- Kitsios Konstantinos (@kitsiosk)
liboqs version 0.15.0-rc1
liboqs version 0.15.0-rc1
The Open Quantum Safe (OQS) project has the goal of developing and prototyping quantum-resistant cryptography. More information on OQS can be found on our website: https://openquantumsafe.org/ and on Github at https://github.com/open-quantum-safe/.
liboqs is an open source C library for quantum-resistant cryptographic algorithms. Details about liboqs can be found in README.md. See in particular limitations on intended use.
liboqs can be used with the following Open Quantum Safe application integrations:
- oqs-provider: A standalone prototype OpenSSL 3 provider enabling liboqs-based quantum-safe and hybrid key authentication and exchange for TLS 1.3, X.509 certificate generation and CMS operations.
- OQS-BoringSSL: A prototype integration of liboqs-based authentication and key exchange into TLS 1.3 in our fork of BoringSSL; see https://github.com/open-quantum-safe/boringssl.
- OQS-OpenSSH: A prototype integration of liboqs-based authentication and key exchange into Secure Shell (SSH) version 2 in our fork of OpenSSH; see https://github.com/open-quantum-safe/openssh.
Several demos are available for using the above libraries in applications, including Apache, Chromium, curl, haproxy, nginx, and Wireshark.
liboqs can also be used in the following programming languages via language-specific wrappers:
- C++, via https://github.com/open-quantum-safe/liboqs-cpp
- Go, via https://github.com/open-quantum-safe/liboqs-go
- Java, via https://github.com/open-quantum-safe/liboqs-java
- Python 3, via https://github.com/open-quantum-safe/liboqs-python
- Rust, via https://github.com/open-quantum-safe/liboqs-rust
Release notes
Release candidate 1 for liboqs 0.15.0 was released on Oct 22, 2025.
Deprecation notice
liboqs 0.15.0 is the last version to officially support SPHINCS+. SPHINCS+ will be removed in the 0.16.0 release and replaced by SLH-DSA. liboqs 0.15.0 also removes support for Dilithium.
Security issues
None reported
Significant changes
- Integrated SLH-DSA implementation from pq-code-package/slhdsa-c
- Added NTRU back #2176
- Removed all Dilithium implementations (#2275)
- Replaced SPHINCS+ with SLH-DSA for CMake build option
OQS_ALGS_ENABLED=STD(#2290) - Updated CROSS to version 2.2 #2247
- Included DeriveEncapsulation functionality (Issue #2135) #2221
- Integrated ML-KEM implementation from ICICLE-PQC #2216
Bug fixes
- Fixed incorrect import in OV-III-pkc_skc (#2299)
- Fixed incorrect actual signature length in signature full-cycle speed test (#2293)
- Fixed ICICLE ML-KEM integration (#2288)
- Disabled strict aliasing on SPHINCS+-SHAKE (#2264)
- Fixed typo in
test_kem.c(#2281) - Fixed uninitialized
length_encaps_seedfor NTRU implementations (#2266)
- Changed 64 bit add to 32 bit add to wrap on 32 bit counter for AES-CTR AES-NI implementation #2252
- Improved random number generator security #2225
- Avoided invalid compiler options for MSVC #2239
- Added Classic McEliece sanitization patch #2218
Miscellaneous
- Deprecated
noregressscripts (#2295) - Updated no-pass explanation for constant-time testing (#2294)
- Fixed weekly test failures in GitHub Action (#2285)
- Improved algorithm support readability in README.md (#2286)
- Re-enabled all ACVP tests (#2283)
- Moved continuous benchmarking to weekly tests (#2276)
- Linked to contribution wishlist from CONTRIBUTING.md (#2273)
- Added content:read permission to scorecard workflow (#2261)
- Added guidance and questions on generative AI use (#2269)
- Moved
linux_arm_emulatedto extended tests #2236 - Fixed pluralization in docs: "key encapsulation mechanisms (KEMs)" #2255
- Fixed permissions for poutine_analysis job #2246
- Disabled testing on Travis CI #2248
- Upgraded Jinja to 3.1.6 #2214
- Updated license info for ML-KEM #2250
- Fixed typos across codebase #2244
- Restructured basic checks #2233
- Fixed code scanning workflow #2217
- Changed Nix install action to verified #2212
- Removed
armelcomment #2231 - Removed
armelsupport fromPLATFORMS.md#2232 - Added Poutine SASL #2213
- Updated nixpkgs from 24.05 to 25.05 #2187
- Added Custom Timeout to CI #2189
- Updated ACVP to 1.1.0.40 #2172
- Switched to dev mode for 0.14.1 #2199
New contributors
- Ganyu (Bruce) Xu (@xuganyu96)
- Ethan Li (@lir2002)
- @nonam3e (associated with Ingonyama)
- Saito Masataka (@saitomst)
- @max-p-log-p
- Vibhav Tiwari (@vibhav950)
- Dmitry (@mdqst)
- Rodrigo Martín (@RodriM11)
- @sukrucildirr
- Kitsios Konstantinos (@kitsiosk)
liboqs version 0.14.0
liboqs version 0.14.0
About
The Open Quantum Safe (OQS) project has the goal of developing and prototyping quantum-resistant cryptography. More information on OQS can be found on our website: https://openquantumsafe.org/ and on Github at https://github.com/open-quantum-safe/.
liboqs is an open source C library for quantum-resistant cryptographic algorithms. Details about liboqs can be found in README.md. See in particular limitations on intended use.
liboqs can be used with the following Open Quantum Safe application integrations:
- oqs-provider: A standalone prototype OpenSSL 3 provider enabling liboqs-based quantum-safe and hybrid key authentication and exchange for TLS 1.3, X.509 certificate generation and CMS operations.
- OQS-BoringSSL: A prototype integration of liboqs-based authentication and key exchange into TLS 1.3 in our fork of BoringSSL; see https://github.com/open-quantum-safe/boringssl.
- OQS-OpenSSH: A prototype integration of liboqs-based authentication and key exchange into Secure Shell (SSH) version 2 in our fork of OpenSSH; see https://github.com/open-quantum-safe/openssh.
Several demos are available for using the above libraries in applications, including Apache, Chromium, curl, haproxy, nginx, and Wireshark.
liboqs can also be used in the following programming languages via language-specific wrappers:
- C++, via https://github.com/open-quantum-safe/liboqs-cpp
- Go, via https://github.com/open-quantum-safe/liboqs-go
- Java, via https://github.com/open-quantum-safe/liboqs-java
- Python 3, via https://github.com/open-quantum-safe/liboqs-python
- Rust, via https://github.com/open-quantum-safe/liboqs-rust
Release notes
This is version 0.14.0 of liboqs. It was released on July 10, 2025.
This release contains a security fix for secret-dependent branching in HQC. It introduces support for SNOVA, a NIST Additional Signatures Round 2 candidate, and a new optimized implementation of SHA3 using AVX-512VL instructions. Additionally, this is the first liboqs release to include the stable 1.0.0 version of PQ Code Package's mlkem-native.
This release also introduces a number of improvements to testing and infrastructure. The OQS project is now publishing benchmarking data on https://openquantumsafe.org/benchmarking and code coverage data on https://coveralls.io/github/open-quantum-safe/liboqs.
Deprecation notice
This will be the last release of liboqs to include Dilithium (that is, the NIST Round 3 version of Dilithium, prior to its standardization by NIST as ML-DSA in FIPS 204). Applications should switch to ML-DSA (FIPS 204). Please contact us if you have any concerns.
Security issues
- CVE-2025-52473: Disabled compiler optimizations for HQC to avoid secret-dependent branches. Thank you to Zhenzhi Lai and Zhiyuan Zhang from from the University of Melbourne and the Max Planck Institute for Security and Privacy for identifying the issue.
What's New
This release continues from the 0.13.0 release of liboqs.
Key encapsulation mechanisms
- HQC: Disabled compiler optimizations to avoid secret-dependent branching in certain configurations. HQC remains disabled by default.
- ML-KEM: Updated the default ML-KEM implementation to PQCP's mlkem-native v1.0.0.
Digital signature schemes
- New API: added an API function to check if a signature scheme supports signing with a context string.
- SNOVA: added SNOVA from NIST Additional Signature Schemes Round 2.
Other changes
- Added an AVX512VL-optimized backend for SHA3.
- Improved memory management throughout the codebase.
Detailed changelog
What's Changed
- Switch to dev mode after 0.13.0 release by @praveksharma in #2125
- Restrict -Wno-maybe-uninitialized to GCC and fix stack size typo by @alraddady in #2111
- Promote @SWilson4 from Committer to Maintainer [skip ci] by @SWilson4 in #2120
- Update Nix flake inputs by @aidenfoxivey in #2126
- Change cuPQC upstream repo by @praveksharma in #2115
- Integrate SNOVA into liboqs by @vacuas in #2109
- Update ACVP vectors to latest release by @abhinav-thales in #2131
- Add a function to check if context string is supported by @M-AlNoaimi in #2142
- Skip failing CI test by @dstebila in #2157
- Use OQS_MEM_cleanse() instead of memset() by @Hussain1811 in #2158
- Check for NULL dereference before using secure free by @Hussain1811 in #2151
- Update mlkem-native to v1.0.0 by @mkannwischer in #2146
- test: Use secure free for freeing secret key objects by @Hussain1811 in #2149
- tests: Remove unused variables by @Hussain1811 in #2152
- Wycheproof by @h2parson in #2145
- tests: Check OQS_STATUS of RNG and fstore functions by @Hussain1811 in #2153
- Adjust constant-time test exception for mlkem-native by @mkannwischer in #2162
- Continuous Benchmarking using Github Actions by @pablo-gf in #2134
- test: Add basic kem fuzz testing by @nathaniel-brough in #2133
- Increase alert threshold for continuous benchmarking by @pablo-gf in #2166
- Benchmarking comments only on alerts by @dstebila in #2168
- Adding code coverage by @aidenfoxivey in #2148
- Add AVX512VL-Optimized SHA3/SHAKE Implementations by @mdcornu in #2167
- Zeroize memory in SHA3 implementation by @aidenfoxivey in #2171
- Disable compiler optimizations for HQC by @SWilson4 in 4215362
- liboqs 0.14.0 release candidate 1 by @SWilson4 in #2180
- Document public / internal API split [skip ci] by @SWilson4 in #2182
New Contributors
- @alraddady made their first contribution in #2111
- @vacuas made their first contribution in #2109
- @M-AlNoaimi made their first contribution in #2142
- @Hussain1811 made their first contribution in #2158
- @h2parson made their first contribution in #2145
- @mdcornu made their first contribution in #2167
Full Changelog: 0.13.0...0.14.0
liboqs version 0.14.0-rc1
liboqs version 0.14.0-rc1
About
The Open Quantum Safe (OQS) project has the goal of developing and prototyping quantum-resistant cryptography. More information on OQS can be found on our website: https://openquantumsafe.org/ and on Github at https://github.com/open-quantum-safe/.
liboqs is an open source C library for quantum-resistant cryptographic algorithms. Details about liboqs can be found in README.md. See in particular limitations on intended use.
liboqs can be used with the following Open Quantum Safe application integrations:
- oqs-provider: A standalone prototype OpenSSL 3 provider enabling liboqs-based quantum-safe and hybrid key authentication and exchange for TLS 1.3, X.509 certificate generation and CMS operations.
- OQS-BoringSSL: A prototype integration of liboqs-based authentication and key exchange into TLS 1.3 in our fork of BoringSSL; see https://github.com/open-quantum-safe/boringssl.
- OQS-OpenSSH: A prototype integration of liboqs-based authentication and key exchange into Secure Shell (SSH) version 2 in our fork of OpenSSH; see https://github.com/open-quantum-safe/openssh.
Several demos are available for using the above libraries in applications, including Apache, Chromium, curl, haproxy, nginx, and Wireshark.
liboqs can also be used in the following programming languages via language-specific wrappers:
- C++, via https://github.com/open-quantum-safe/liboqs-cpp
- Go, via https://github.com/open-quantum-safe/liboqs-go
- Java, via https://github.com/open-quantum-safe/liboqs-java
- Python 3, via https://github.com/open-quantum-safe/liboqs-python
- Rust, via https://github.com/open-quantum-safe/liboqs-rust
Release notes
This is release candidate 1 for version 0.14.0 of liboqs. It was released on June 25, 2025.
This release contains a security fix for secret-dependent branching in HQC. It introduces support for SNOVA, a NIST Additional Signatures Round 2 candidate, and a new optimized implementation of SHA3 using AVX-512VL instructions. Additionally, this is the first liboqs release to include the stable 1.0.0 version of PQ Code Package's mlkem-native.
This release also introduces a number of improvements to testing and infrastructure. The OQS project is now publishing benchmarking data on https://openquantumsafe.org/benchmarking and code coverage data on https://coveralls.io/github/open-quantum-safe/liboqs.
Deprecation notice
This will be the last release of liboqs to include Dilithium (that is, the NIST Round 3 version of Dilithium, prior to its standardization by NIST as ML-DSA in FIPS 204). Applications should switch to ML-DSA (FIPS 204). Please contact us if you have any concerns.
Security issues
- CVE-2025-52473: Disabled compiler optimizations for HQC to avoid secret-dependent branches. Thank you to Zhenzhi Lai and Zhiyuan Zhang from from the University of Melbourne and the Max Planck Institute for Security and Privacy for identifying the issue.
What's New
This release continues from the 0.13.0 release of liboqs.
Key encapsulation mechanisms
- HQC: Disabled compiler optimizations to avoid secret-dependent branching in certain configurations. HQC remains disabled by default.
- ML-KEM: Updated the default ML-KEM implementation to PQCP's mlkem-native v1.0.0.
Digital signature schemes
- New API: added an API function to check if a signature scheme supports signing with a context string.
- SNOVA: added SNOVA from NIST Additional Signature Schemes Round 2.
Other changes
- Added an AVX512VL-optimized backend for SHA3.
- Improved memory management throughout the codebase.
What's Changed
- Switch to dev mode after 0.13.0 release by @praveksharma in #2125
- Restrict -Wno-maybe-uninitialized to GCC and fix stack size typo by @alraddady in #2111
- Promote @SWilson4 from Committer to Maintainer [skip ci] by @SWilson4 in #2120
- Update Nix flake inputs by @aidenfoxivey in #2126
- Change cuPQC upstream repo by @praveksharma in #2115
- Integrate SNOVA into liboqs by @vacuas in #2109
- Update ACVP vectors to latest release by @abhinav-thales in #2131
- Add a function to check if context string is supported by @M-AlNoaimi in #2142
- Skip failing CI test by @dstebila in #2157
- Use OQS_MEM_cleanse() instead of memset() by @Hussain1811 in #2158
- Check for NULL dereference before using secure free by @Hussain1811 in #2151
- Update mlkem-native to v1.0.0 by @mkannwischer in #2146
- test: Use secure free for freeing secret key objects by @Hussain1811 in #2149
- tests: Remove unused variables by @Hussain1811 in #2152
- Wycheproof by @h2parson in #2145
- tests: Check OQS_STATUS of RNG and fstore functions by @Hussain1811 in #2153
- Adjust constant-time test exception for mlkem-native by @mkannwischer in #2162
- Continuous Benchmarking using Github Actions by @pablo-gf in #2134
- test: Add basic kem fuzz testing by @nathaniel-brough in #2133
- Increase alert threshold for continuous benchmarking by @pablo-gf in #2166
- Benchmarking comments only on alerts by @dstebila in #2168
- Adding code coverage by @aidenfoxivey in #2148
- Add AVX512VL-Optimized SHA3/SHAKE Implementations by @mdcornu in #2167
- Zeroize memory in SHA3 implementation by @aidenfoxivey in #2171
- Disable compiler optimizations for HQC by @SWilson4 in 4215362
New Contributors
- @alraddady made their first contribution in #2111
- @vacuas made their first contribution in #2109
- @M-AlNoaimi made their first contribution in #2142
- @Hussain1811 made their first contribution in #2158
- @h2parson made their first contribution in #2145
- @mdcornu made their first contribution in #2167
Full Changelog: 0.13.0...0.14.0-rc1
liboqs version 0.13.0
liboqs version 0.13.0
About
The Open Quantum Safe (OQS) project has the goal of developing and prototyping quantum-resistant cryptography. More information on OQS can be found on our website: https://openquantumsafe.org/ and on Github at https://github.com/open-quantum-safe/.
liboqs is an open source C library for quantum-resistant cryptographic algorithms. Details about liboqs can be found in README.md. See in particular limitations on intended use.
liboqs can be used with the following Open Quantum Safe application integrations:
- oqs-provider: A standalone prototype OpenSSL 3 provider enabling liboqs-based quantum-safe and hybrid key authentication and exchange for TLS 1.3, X.509 certificate generation and CMS operations.
- OQS-BoringSSL: A prototype integration of liboqs-based authentication and key exchange into TLS 1.3 in our fork of BoringSSL; see https://github.com/open-quantum-safe/boringssl.
- OQS-OpenSSH: A prototype integration of liboqs-based authentication and key exchange into Secure Shell (SSH) version 2 in our fork of OpenSSH; see https://github.com/open-quantum-safe/openssh.
Several demos are available for using the above libraries in applications, including Apache, Chromium, curl, haproxy, nginx, and Wireshark.
liboqs can also be used in the following programming languages via language-specific wrappers:
- C++, via https://github.com/open-quantum-safe/liboqs-cpp
- Go, via https://github.com/open-quantum-safe/liboqs-go
- Java, via https://github.com/open-quantum-safe/liboqs-java
- Python 3, via https://github.com/open-quantum-safe/liboqs-python
- Rust, via https://github.com/open-quantum-safe/liboqs-rust
Release notes
This is version 0.13.0 of liboqs. It was released on April 16, 2025.
This release improves support for NIST Additional Signatures Round 2 candidates: CROSS and MAYO implementations are updated and support is added for UOV. This release also adds a new KEM API for deterministic key generation (only supported by ML-KEM at the moment). Finally, this release adds support for ML-KEM implementations from 2 new sources: formally verified portable C, AVX2, and AArch64 implementations from PQCP's mlkem-native and a GPU accelerated CUDA implementation from Nvidia cuPQC.
OQS is running a survey to better understand our community. We would like to hear from organizations and individuals about their interest in and use of the Open Quantum Safe project. Please take a few minutes to fill out the survey: https://linuxfoundation.surveymonkey.com/r/oqssurvey
What's New
This release continues from the 0.12.0 release of liboqs.
Key encapsulation mechanisms
- New API: Added a deterministic key generation and API for KEMs (only ML-KEM supported at the moment).
- ML-KEM: Changed the default ML-KEM implementation to PQCP's mlkem-native. There are three variants: Portable C, AVX2, and AArch64. Large parts of these implementations are formally verified: all of the C code is verified for memory and type safety using CBMC and the functional correctness of the core AArch64 assembly routines is verified using HOL-Light.
- ML-KEM: Added support for the ML-KEM implementation from Nvidia cuPQC, a GPU accelerated cryptography library.
- ML-KEM: Implementation from mlkem-native upstream updated to add Pair-wise Consistency Test (PCT) and Intel CET support.
- ML-KEM: Improved testing of ML-KEM keys.
- HQC: Disabled HQC by default until a new security flaw is fixed.
Digital signature schemes
- ML-DSA: Improved testing for ML-DSA.
- CROSS: Updated to NIST Additional Signatures Round 2 version.
- MAYO: Updated to NIST Additional Signatures Round 2 version.
- UOV: Added support for UOV algorithm from NIST Additional Signatures Round 2.
Other changes
- Added support for loongarch64 architecture.
Detailed changelog
What's Changed
- Bump version to 0.12.1-dev by @dstebila in #2015
- Add loongarch64 support by @zhaixiaojuan in #2010
- Minor changes to ML_DSA ACVP tests by @abhinav-thales in #2007
- Update upload-artifact action to v4 by @dstebila in #2017
- Remove hardcoded build paths & modify basic workflow to build in random path by @iyanmv in #2019
- Trigger liboqs-java and liboqs-rust downstream CI by @SWilson4 in #2021
- #1830 update scorecard to v5 (gh action 2.4.0) by @planetf1 in #1890
- Update PQClean commit and delete patch for HQC by @SWilson4 in #2026
- Bump jinja2 from 3.1.4 to 3.1.5 in /scripts/copy_from_upstream in the pip group by @dependabot in #2036
- Avoid unresolved symbols from libcrypto when compiled with OQS_DLOPEN_OPENSSL by @ueno in #2043
- Update to public Ubuntu 24.04 ARM runner by @SWilson4 in #2050
- NVIDIA: Adding cuPQC as a backend for ML-KEM. by @stevenireeves in #2044
- Update ACVP vectors for KEM and DSA by @abhinav-thales in #2051
- CI: Check unresolved symbols when compiled with OQS_DLOPEN_OPENSSL by @ueno in #2058
- Fix failing zephyr CI workflows, pinning v0.27.4 by @bhess in #2063
- Update sig_stfl Doxygen documentation by @pablo-gf in #2059
- Import ML-KEM from mlkem-native/PQ code package by @bhess in #2041
- Update example files by @SWilson4 in #2071
- GitHub runner updates by @SWilson4 in #2069
- Disable cupqc-buildcheck by @praveksharma in #2075
- Add threat model by @dstebila in #2033
- Update CROSS to version 2.0 by @rtjk in #2078
- improving CONTRIBUTING.md for maintainability [skip ci] by @baentsch in #2081
- Ensure that building against liboqs build directory works by @levitte in #2086
- Added alg_version details to test output by @pablo-gf in #2080
- Add checks for ML-KEM keys by @abhinav-thales in #2009
- Update actions/cache to v4.2.2 by @mkannwischer in #2093
- Add Nix flake by @aidenfoxivey in #1970
- Update MAYO to NIST round 2 by @bhess in #2095
- Update mlkem-native to v1.0.0-beta by @mkannwischer in #2092
- Add references to security response process by @SWilson4 in #2077
- Bump version to 0.13.0-dev [skip ci] by @SWilson4 in #2099
- Add UOV by @mkannwischer in #2094
- Add bitflip test for trivial SUF-CMA forgeries by @rtjk in #2090
- Update MAYO version in algorithm datasheet by @bhess in #2103
- Add DeriveKeyPair API by @SWilson4 in #2070
- Update nist-round in UOV and MAYO data sheet by @bhess in #2105
- build: search unistd.h separately from sys/random.h for getentropy by @mkroening in #2104
- Add support caveat by @SWilson4 in #2114
- Temporarily disable HQC by @dstebila in #2122
- Fix PR workflow runs by @SWilson4 in #2123
New Contributors
- @zhaixiaojuan made their first contribution in #2010
- @stevenireeves made their first contribution in #2044
- @pablo-gf made their first contribution in #2059
- @levitte made their first contribution in #2086
- @mkannwischer made their first contribution in #2093
- @mkroening made their first contribution in #2104
Full Changelog: 0.12.0...0.13.0
liboqs version 0.13.0-rc1
liboqs version 0.13.0-rc1
About
The Open Quantum Safe (OQS) project has the goal of developing and prototyping quantum-resistant cryptography. More information on OQS can be found on our website: https://openquantumsafe.org/ and on Github at https://github.com/open-quantum-safe/.
liboqs is an open source C library for quantum-resistant cryptographic algorithms. Details about liboqs can be found in README.md. See in particular limitations on intended use.
liboqs can be used with the following Open Quantum Safe application integrations:
- oqs-provider: A standalone prototype OpenSSL 3 provider enabling liboqs-based quantum-safe and hybrid key authentication and exchange for TLS 1.3, X.509 certificate generation and CMS operations.
- OQS-BoringSSL: A prototype integration of liboqs-based authentication and key exchange into TLS 1.3 in our fork of BoringSSL; see https://github.com/open-quantum-safe/boringssl.
- OQS-OpenSSH: A prototype integration of liboqs-based authentication and key exchange into Secure Shell (SSH) version 2 in our fork of OpenSSH; see https://github.com/open-quantum-safe/openssh.
Several demos are available for using the above libraries in applications, including Apache, Chromium, curl, haproxy, nginx, and Wireshark.
liboqs can also be used in the following programming languages via language-specific wrappers:
- C++, via https://github.com/open-quantum-safe/liboqs-cpp
- Go, via https://github.com/open-quantum-safe/liboqs-go
- Java, via https://github.com/open-quantum-safe/liboqs-java
- Python 3, via https://github.com/open-quantum-safe/liboqs-python
- Rust, via https://github.com/open-quantum-safe/liboqs-rust
Release notes
This is version 0.13.0-rc1 of liboqs. It was released on March 19, 2025.
This release improves support for NIST Additional Signatures Round 2 candidates: CROSS and MAYO implementations are updated and support is added for UOV. This release also adds a new KEM API for deterministic key generation (only supported by ML-KEM at the moment). Finally, this release adds support for ML-KEM implementations from 2 new sources: formally verified portable C, AVX2, and AArch64 implementations from PQCP's mlkem-native and a GPU accelerated CUDA implementation from Nvidia cuPQC.
What's New
This release continues from the 0.12.0 release of liboqs.
Key encapsulation mechanisms
- New API: Added a deterministic key generation and API for KEMs (only ML-KEM supported at the moment).
- ML-KEM: Changed the default ML-KEM implementation to PQCP's mlkem-native. There are three variants: Portable C, AVX2, and AArch64. Large parts of these implementations are formally verified: all of the C code is verified for memory and type safety using CBMC and the functional correctness of the core AArch64 assembly routines is verified using HOL-Light.
- ML-KEM: Added support for the ML-KEM implementation from Nvidia cuPQC, a GPU accelerated cryptography library.
- ML-KEM: Implementation from mlkem-native upstream updated to add Pair-wise Consistency Test (PCT) and Intel CET support.
- ML-KEM: Improved testing of ML-KEM keys.
Digital signature schemes
- ML-DSA: Improved testing for ML-DSA.
- CROSS: Updated to NIST Additional Signatures Round 2 version.
- MAYO: Updated to NIST Additional Signatures Round 2 version.
- UOV: Added support for UOV algorithm from NIST Additional Signatures Round 2.
Other changes
- Added support for loongarch64 architecture.
Detailed changelog
What's Changed
- Bump version to 0.12.1-dev by @dstebila in #2015
- Add loongarch64 support by @zhaixiaojuan in #2010
- Minor changes to ML_DSA ACVP tests by @abhinav-thales in #2007
- Update upload-artifact action to v4 by @dstebila in #2017
- Remove hardcoded build paths & modify basic workflow to build in random path by @iyanmv in #2019
- Trigger liboqs-java and liboqs-rust downstream CI by @SWilson4 in #2021
- #1830 update scorecard to v5 (gh action 2.4.0) by @planetf1 in #1890
- Update PQClean commit and delete patch for HQC by @SWilson4 in #2026
- Bump jinja2 from 3.1.4 to 3.1.5 in /scripts/copy_from_upstream in the pip group by @dependabot in #2036
- Avoid unresolved symbols from libcrypto when compiled with OQS_DLOPEN_OPENSSL by @ueno in #2043
- Update to public Ubuntu 24.04 ARM runner by @SWilson4 in #2050
- NVIDIA: Adding cuPQC as a backend for ML-KEM. by @stevenireeves in #2044
- Update ACVP vectors for KEM and DSA by @abhinav-thales in #2051
- CI: Check unresolved symbols when compiled with OQS_DLOPEN_OPENSSL by @ueno in #2058
- Fix failing zephyr CI workflows, pinning v0.27.4 by @bhess in #2063
- Update sig_stfl Doxygen documentation by @pablo-gf in #2059
- Import ML-KEM from mlkem-native/PQ code package by @bhess in #2041
- Update example files by @SWilson4 in #2071
- GitHub runner updates by @SWilson4 in #2069
- Disable cupqc-buildcheck by @praveksharma in #2075
- Add threat model by @dstebila in #2033
- Update CROSS to version 2.0 by @rtjk in #2078
- improving CONTRIBUTING.md for maintainability [skip ci] by @baentsch in #2081
- Ensure that building against liboqs build directory works by @levitte in #2086
- Added alg_version details to test output by @pablo-gf in #2080
- Add checks for ML-KEM keys by @abhinav-thales in #2009
- Update actions/cache to v4.2.2 by @mkannwischer in #2093
- Add Nix flake by @aidenfoxivey in #1970
- Update MAYO to NIST round 2 by @bhess in #2095
- Update mlkem-native to v1.0.0-beta by @mkannwischer in #2092
- Add references to security response process by @SWilson4 in #2077
- Bump version to 0.13.0-dev [skip ci] by @SWilson4 in #2099
- Add UOV by @mkannwischer in #2094
- Add bitflip test for trivial SUF-CMA forgeries by @rtjk in #2090
- Update MAYO version in algorithm datasheet by @bhess in #2103
- Add DeriveKeyPair API by @SWilson4 in #2070
- Update nist-round in UOV and MAYO data sheet by @bhess in #2105
- build: search unistd.h separately from sys/random.h for getentropy by @mkroening in #2104
New Contributors
- @zhaixiaojuan made their first contribution in #2010
- @stevenireeves made their first contribution in #2044
- @pablo-gf made their first contribution in #2059
- @levitte made their first contribution in #2086
- @mkannwischer made their first contribution in #2093
- @mkroening made their first contribution in #2104
Full Changelog: 0.12.0...0.13.0-rc1
liboqs version 0.12.0
liboqs version 0.12.0
About
The Open Quantum Safe (OQS) project has the goal of developing and prototyping quantum-resistant cryptography. More information on OQS can be found on our website: https://openquantumsafe.org/ and on Github at https://github.com/open-quantum-safe/.
liboqs is an open source C library for quantum-resistant cryptographic algorithms. Details about liboqs can be found in README.md. See in particular limitations on intended use.
liboqs can be used with the following Open Quantum Safe application integrations:
- oqs-provider: A standalone prototype OpenSSL 3 provider enabling liboqs-based quantum-safe and hybrid key authentication and exchange for TLS 1.3, X.509 certificate generation and CMS operations.
- OQS-BoringSSL: A prototype integration of liboqs-based authentication and key exchange into TLS 1.3 in our fork of BoringSSL; see https://github.com/open-quantum-safe/boringssl.
- OQS-OpenSSH: A prototype integration of liboqs-based authentication and key exchange into Secure Shell (SSH) version 2 in our fork of OpenSSH; see https://github.com/open-quantum-safe/openssh.
Several demos are available for using the above libraries in applications, including Apache, Chromium, curl, haproxy, nginx, and Wireshark.
liboqs can also be used in the following programming languages via language-specific wrappers:
- C++, via https://github.com/open-quantum-safe/liboqs-cpp
- Go, via https://github.com/open-quantum-safe/liboqs-go
- Java, via https://github.com/open-quantum-safe/liboqs-java
- Python 3, via https://github.com/open-quantum-safe/liboqs-python
- Rust, via https://github.com/open-quantum-safe/liboqs-rust
Release notes
This is version 0.12.0 of liboqs. It was released on December 9, 2024.
This release updates the ML-DSA implementation to the final FIPS 204 version. This release still includes the NIST Round 3 version of Dilithium for interoperability purposes, but we plan to remove Dilithium Round 3 in a future release.
Deprecation notice
This will be the last release of liboqs to include Kyber (that is, the NIST Round 3 version of Kyber, prior to its standardization by NIST as ML-KEM in FIPS 203). Applications should switch to ML-KEM (FIPS 203).
The addition of ML-DSA FIPS 204 final version to liboqs has introduced a new signature API which includes a context string parameter. We are planning to remove the old version of the API without a context string in the next release to streamline the API and bring it in line with NIST specifications. Users who have an opinion on this removal are invited to provide input at #2001.
Security issues
- CVE-2024-54137: Fixed bug in HQC decapsulation that leads to incorrect shared secret value during decapsulation when called with an invalid ciphertext. Thank you to Célian Glénaz and Dahmun Goudarzi from Quarkslab for identifying the issue.
What's New
This release continues from the 0.11.0 release of liboqs.
Key encapsulation mechanisms
- HQC: Fixed bug in decapsulation that leads to incorrect shared secret value during decapsulation when called with an invalid ciphertext. Thank you to Célian Glénaz and Dahmun Goudarzi from Quarkslab for identifying the issue.
- Kyber: This is the last release of liboqs to include Kyber.
- ML-KEM: Improved testing of ML-KEM.
Digital signature schemes
- LMS: Fixed crashing bug.
- ML-DSA: Removed FIPS 204-ipd (initial public draft) and replaced it with FIPS 204 final version.
- Added new API for digital signatures with context strings; see #2001 for plan to remove old API without context string.
- Added fuzzing tests for signature schemes.
- Added benchmarking for stateful hash-based signature schemes.
Other changes
- Updated CBOM format to version 1.6.
- Added a function
OQS_thread_stopto be called by multi-threaded applications to properly deallocate resources in a threaded execution. - Added preprocessor macros conveying liboqs version information.
Detailed changelog
What's Changed
- 0.11.0 release by @praveksharma in #1939
- Bump version to 0.11.1-dev by @SWilson4 in #1940
- Remove hardcoded build patch from test script by @iyanmv in #1938
- Don't include dlfcn.h for Windows by @steenrasmussen in #1936
- Update CBOM format to upstream v1.6 by @bhess in #1834
- Downgrade zephyr container to v0.26.14 to avoid build failures by @bhess in #1949
- Fix for Zephyr CI by @Frauschi in #1953
- Add a basic fuzz testing harness for Dilithium2 by @nathaniel-brough in #1905
- [#1823] replace malloc/calloc/strdup/free with openssl allocator by @songlingatpan in #1926
- Add benchmarking for stateful hash based schemes: speed_sig_stfl by @cr-marcstevens in #1952
- Update CODEOWNERS by @dstebila in #1943
- Add new API to cleanup OpenSSL threads. by @ashman-p in #1959
- Adapt existing sig fuzz harness including more algorithms by @nathaniel-brough in #1955
- add C++ linking test by @aidenfoxivey in #1971
- Make random/functions deterministic during fuzzing by @nathaniel-brough in #1974
- Remove SPHINCS+ aarch64 code by @SWilson4 in #1972
- Remove macos-12 runner due to GitHub deprecation. by @SWilson4 in #1977
- Revert "Disable erroring TravisCI build" by @bhess in #1960
- imported fix from CROSS upstream: endianness-aware csprng by @rtjk in #1983
- chore: Add CI badges to README.md by @ChinoUkaegbu in #1987
- Update PLATFORMS.md / re-enable CROSS on s390x by @SWilson4 in #1988
- Avoid OpenSSL functions are unconditionally called at OQS_destroy by @ueno in #1982
- Test Improvements for ML-KEM by @abhinav-thales in #1947
- Add patch to fix HQC decapsulation in 95f904b
- Run copy_from_upstream.py in cce1bfd
- Fix LMS crash by @ashman-p in #1998
- Set ML-KEM alg_version to "FIPS203" by @SWilson4 in #1997
- Add ML-DSA / FIPS 204 final by @bhess in #1919
- Add defines for OQS version components by @dstebila in #2000
- Create liboqs 0.12.0 release candidate 1 by @dstebila in #2006
New Contributors
- @steenrasmussen made their first contribution in #1936
- @nathaniel-brough made their first contribution in #1905
- @songlingatpan made their first contribution in #1926
- @cr-marcstevens made their first contribution in #1952
- @aidenfoxivey made their first contribution in #1971
- @ChinoUkaegbu made their first contribution in #1987
- @abhinav-thales made their first contribution in #1947
Full Changelog: 0.11.0...0.12.0