From 57308e3d60fbf9b9bd4d8198ad42756d6be61a79 Mon Sep 17 00:00:00 2001 From: "Ganyu (Bruce) Xu" Date: Fri, 26 Sep 2025 13:56:23 -0400 Subject: [PATCH] fixed invalid markdown anchors Signed-off-by: Ganyu (Bruce) Xu --- README.md | 55 +++++++++++++++-------------- scripts/update_alg_support_table.py | 8 ++--- 2 files changed, 32 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 722979bb9..15725a413 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ liboqs is an open source C library for quantum-safe cryptographic algorithms. - [Supported Algorithms](#supported-algorithms) - [Key encapsulation mechanisms](#key-encapsulation-mechanisms) - [Signature schemes](#signature-schemes) + - [Stateful signature schemes](#stateful-signature-schemes) - [Limitations and Security](#limitations-and-security) - [Platform limitations](#platform-limitations) - [Support limitations](#support-limitations) @@ -54,35 +55,35 @@ Falcon and SPHINCS+ have also been [selected for standardization](https://csrc.n All names other than `ML-KEM` and `ML-DSA` are subject to change. `liboqs` makes available a [selection mechanism for algorithms on the NIST standards track, continued NIST competition, or purely experimental nature by way of the configuration variable OQS_ALGS_ENABLED](CONFIGURE.md#oQS_ALGS_ENABLED). By default `liboqs` is built supporting all, incl. experimental, PQ algorithms listed below. -### KEMs -| Algorithm family | Standardization status | Primary implementation | -|:--------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------| -| [NTRU-Prime](./docs/algorithms/kem/ntruprime.md) | [Not selected](https://csrc.nist.gov/CSRC/media/Projects/post-quantum-cryptography/documents/round-3/submissions/NTRU-Prime-Round3.zip) | [`PQClean/PQClean@4c9e5a3`](https://github.com/PQClean/PQClean/commit/4c9e5a3aa715cc8d1d0e377e4e6e682ebd7602d6) | -| [HQC](./docs/algorithms/kem/hqc.md) | [Selected by NIST](https://pqc-hqc.org/doc/hqc_specifications_2025_08_22.pdf) | [`PQClean/PQClean@1eacfda`](https://github.com/PQClean/PQClean/commit/1eacfdafc15ddc5d5759d0b85b4cef26627df181) | -| [FrodoKEM](./docs/algorithms/kem/frodokem.md) | [Not selected](https://csrc.nist.gov/CSRC/media/Projects/post-quantum-cryptography/documents/round-3/submissions/FrodoKEM-Round3.zip) | [`microsoft/PQCrypto-LWEKE@b6609d3`](https://github.com/microsoft/PQCrypto-LWEKE/commit/b6609d30a9982318d7f2937aa3c7b92147b917a2) | -| [BIKE](./docs/algorithms/kem/bike.md) | [Not selected](https://csrc.nist.gov/csrc/media/Projects/post-quantum-cryptography/documents/round-4/submissions/BIKE-Round4.zip) | [`awslabs/bike-kem`](https://github.com/awslabs/bike-kem) | -| [NTRU](./docs/algorithms/kem/ntru.md) | [Not selected](https://csrc.nist.gov/CSRC/media/Projects/post-quantum-cryptography/documents/round-3/submissions/NTRU-Round3.zip) | [`PQClean/PQClean@4c9e5a3`](https://github.com/PQClean/PQClean/commit/4c9e5a3aa715cc8d1d0e377e4e6e682ebd7602d6) | -| [ML-KEM](./docs/algorithms/kem/ml_kem.md) | [Standardized by NIST](https://csrc.nist.gov/pubs/fips/203/final) | [`pq-code-package/mlkem-native@048fc2a`](https://github.com/pq-code-package/mlkem-native/commit/048fc2a7a7b4ba0ad4c989c1ac82491aa94d5bfa) | -| [Classic McEliece](./docs/algorithms/kem/classic_mceliece.md) | [Under ISO consideration](https://classic.mceliece.org/mceliece-spec-20221023.pdf) | [`PQClean/PQClean@1eacfda`](https://github.com/PQClean/PQClean/commit/1eacfdafc15ddc5d5759d0b85b4cef26627df181) | -| [Kyber](./docs/algorithms/kem/kyber.md) | [Selected by NIST](https://csrc.nist.gov/CSRC/media/Projects/post-quantum-cryptography/documents/round-3/submissions/Kyber-Round3.zip) | [`pq-crystals/kyber@441c051`](https://github.com/pq-crystals/kyber/commit/441c0519a07e8b86c8d079954a6b10bd31d29efc) | +#### Key encapsulation mechanisms +| Algorithm family | Standardization status | Primary implementation | +|:------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------| +| [NTRU-Prime](docs/algorithms/kem/ntruprime.md) | [Not selected](https://csrc.nist.gov/CSRC/media/Projects/post-quantum-cryptography/documents/round-3/submissions/NTRU-Prime-Round3.zip) | [`PQClean/PQClean@4c9e5a3`](https://github.com/PQClean/PQClean/commit/4c9e5a3aa715cc8d1d0e377e4e6e682ebd7602d6) | +| [HQC](docs/algorithms/kem/hqc.md) | [Selected by NIST](https://pqc-hqc.org/doc/hqc_specifications_2025_08_22.pdf) | [`PQClean/PQClean@1eacfda`](https://github.com/PQClean/PQClean/commit/1eacfdafc15ddc5d5759d0b85b4cef26627df181) | +| [FrodoKEM](docs/algorithms/kem/frodokem.md) | [Not selected](https://csrc.nist.gov/CSRC/media/Projects/post-quantum-cryptography/documents/round-3/submissions/FrodoKEM-Round3.zip) | [`microsoft/PQCrypto-LWEKE@b6609d3`](https://github.com/microsoft/PQCrypto-LWEKE/commit/b6609d30a9982318d7f2937aa3c7b92147b917a2) | +| [BIKE](docs/algorithms/kem/bike.md) | [Not selected](https://csrc.nist.gov/csrc/media/Projects/post-quantum-cryptography/documents/round-4/submissions/BIKE-Round4.zip) | [`awslabs/bike-kem`](https://github.com/awslabs/bike-kem) | +| [NTRU](docs/algorithms/kem/ntru.md) | [Not selected](https://csrc.nist.gov/CSRC/media/Projects/post-quantum-cryptography/documents/round-3/submissions/NTRU-Round3.zip) | [`PQClean/PQClean@4c9e5a3`](https://github.com/PQClean/PQClean/commit/4c9e5a3aa715cc8d1d0e377e4e6e682ebd7602d6) | +| [ML-KEM](docs/algorithms/kem/ml_kem.md) | [Standardized by NIST](https://csrc.nist.gov/pubs/fips/203/final) | [`pq-code-package/mlkem-native@048fc2a`](https://github.com/pq-code-package/mlkem-native/commit/048fc2a7a7b4ba0ad4c989c1ac82491aa94d5bfa) | +| [Classic McEliece](docs/algorithms/kem/classic_mceliece.md) | [Under ISO consideration](https://classic.mceliece.org/mceliece-spec-20221023.pdf) | [`PQClean/PQClean@1eacfda`](https://github.com/PQClean/PQClean/commit/1eacfdafc15ddc5d5759d0b85b4cef26627df181) | +| [Kyber](docs/algorithms/kem/kyber.md) | [Selected by NIST](https://csrc.nist.gov/CSRC/media/Projects/post-quantum-cryptography/documents/round-3/submissions/Kyber-Round3.zip) | [`pq-crystals/kyber@441c051`](https://github.com/pq-crystals/kyber/commit/441c0519a07e8b86c8d079954a6b10bd31d29efc) | -### Digital signatures -| Algorithm family | Standardization status | Primary implementation | -|:---------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------| -| [Falcon](./docs/algorithms/sig/falcon.md) | [Selected by NIST](https://csrc.nist.gov/CSRC/media/Projects/post-quantum-cryptography/documents/round-3/submissions/Falcon-Round3.zip) | [`PQClean/PQClean@1eacfda`](https://github.com/PQClean/PQClean/commit/1eacfdafc15ddc5d5759d0b85b4cef26627df181) | -| [SLH-DSA](./docs/algorithms/sig/slh_dsa.md) | [Standardized by NIST](https://csrc.nist.gov/pubs/fips/205/final) | [`pq-code-package/slhdsa-c@a0fc1ff`](https://github.com/pq-code-package/slhdsa-c/commit/a0fc1ff253930060d0246aebca06c2538eb92b88) | -| [UOV](./docs/algorithms/sig/uov.md) | [Under NIST consideration](https://csrc.nist.gov/csrc/media/Projects/pqc-dig-sig/documents/round-2/spec-files/uov-spec-round2-web.pdf) | [`pqov/pqov@7e0832b`](https://github.com/pqov/pqov/commit/7e0832b6732a476119742c4acabd11b7c767aefb) | -| [MAYO](./docs/algorithms/sig/mayo.md) | [Under NIST consideration](https://csrc.nist.gov/csrc/media/Projects/pqc-dig-sig/documents/round-2/spec-files/mayo-spec-round2-web.pdf) | [`PQCMayo/MAYO-C@4b7cd94`](https://github.com/PQCMayo/MAYO-C/commit/4b7cd94c96b9522864efe40c6ad1fa269584a807) | -| [CROSS](./docs/algorithms/sig/cross.md) | [Under NIST consideration](https://www.cross-crypto.com/CROSS_Specification_v2.2.pdf) | [`CROSS-signature/CROSS-lib-oqs@c8f7411`](https://github.com/CROSS-signature/CROSS-lib-oqs/commit/c8f7411fed136f0e37600973fa3dbed53465e54f) | -| [SNOVA](./docs/algorithms/sig/snova.md) | [Under NIST consideration](https://csrc.nist.gov/csrc/media/Projects/pqc-dig-sig/documents/round-2/spec-files/snova-spec-round2-web.pdf) | [`vacuas/SNOVA@1c3ca6f`](https://github.com/vacuas/SNOVA/commit/1c3ca6f4f7286c0bde98d7d6f222cf63b9d52bff) | -| [ML-DSA](./docs/algorithms/sig/ml_dsa.md) | [Standardized by NIST](https://csrc.nist.gov/pubs/fips/204/final) | [`pq-crystals/dilithium@444cdcc`](https://github.com/pq-crystals/dilithium/commit/444cdcc84eb36b66fe27b3a2529ee48f6d8150c2) | -| [SPHINCS+](./docs/algorithms/sig/sphincs.md) | [Selected by NIST](https://csrc.nist.gov/CSRC/media/Projects/post-quantum-cryptography/documents/round-3/submissions/SPHINCS-Round3.zip) | [`PQClean/PQClean@1eacfda`](https://github.com/PQClean/PQClean/commit/1eacfdafc15ddc5d5759d0b85b4cef26627df181) | +#### Signature schemes +| Algorithm family | Standardization status | Primary implementation | +|:-------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------| +| [Falcon](docs/algorithms/sig/falcon.md) | [Selected by NIST](https://csrc.nist.gov/CSRC/media/Projects/post-quantum-cryptography/documents/round-3/submissions/Falcon-Round3.zip) | [`PQClean/PQClean@1eacfda`](https://github.com/PQClean/PQClean/commit/1eacfdafc15ddc5d5759d0b85b4cef26627df181) | +| [SLH-DSA](docs/algorithms/sig/slh_dsa.md) | [Standardized by NIST](https://csrc.nist.gov/pubs/fips/205/final) | [`pq-code-package/slhdsa-c@a0fc1ff`](https://github.com/pq-code-package/slhdsa-c/commit/a0fc1ff253930060d0246aebca06c2538eb92b88) | +| [UOV](docs/algorithms/sig/uov.md) | [Under NIST consideration](https://csrc.nist.gov/csrc/media/Projects/pqc-dig-sig/documents/round-2/spec-files/uov-spec-round2-web.pdf) | [`pqov/pqov@7e0832b`](https://github.com/pqov/pqov/commit/7e0832b6732a476119742c4acabd11b7c767aefb) | +| [MAYO](docs/algorithms/sig/mayo.md) | [Under NIST consideration](https://csrc.nist.gov/csrc/media/Projects/pqc-dig-sig/documents/round-2/spec-files/mayo-spec-round2-web.pdf) | [`PQCMayo/MAYO-C@4b7cd94`](https://github.com/PQCMayo/MAYO-C/commit/4b7cd94c96b9522864efe40c6ad1fa269584a807) | +| [CROSS](docs/algorithms/sig/cross.md) | [Under NIST consideration](https://www.cross-crypto.com/CROSS_Specification_v2.2.pdf) | [`CROSS-signature/CROSS-lib-oqs@c8f7411`](https://github.com/CROSS-signature/CROSS-lib-oqs/commit/c8f7411fed136f0e37600973fa3dbed53465e54f) | +| [SNOVA](docs/algorithms/sig/snova.md) | [Under NIST consideration](https://csrc.nist.gov/csrc/media/Projects/pqc-dig-sig/documents/round-2/spec-files/snova-spec-round2-web.pdf) | [`vacuas/SNOVA@1c3ca6f`](https://github.com/vacuas/SNOVA/commit/1c3ca6f4f7286c0bde98d7d6f222cf63b9d52bff) | +| [ML-DSA](docs/algorithms/sig/ml_dsa.md) | [Standardized by NIST](https://csrc.nist.gov/pubs/fips/204/final) | [`pq-crystals/dilithium@444cdcc`](https://github.com/pq-crystals/dilithium/commit/444cdcc84eb36b66fe27b3a2529ee48f6d8150c2) | +| [SPHINCS+](docs/algorithms/sig/sphincs.md) | [Selected by NIST](https://csrc.nist.gov/CSRC/media/Projects/post-quantum-cryptography/documents/round-3/submissions/SPHINCS-Round3.zip) | [`PQClean/PQClean@1eacfda`](https://github.com/PQClean/PQClean/commit/1eacfdafc15ddc5d5759d0b85b4cef26627df181) | -### Stateful digital signatures -| Algorithm family | Standardization status | Primary implementation | -|:-------------------------------------------|:-----------------------------------------------------------------------------------------------------------------|:----------------------------------------------------------------| -| [XMSS](./docs/algorithms/sig_stfl/xmss.md) | [Standardized by Internet Research Task Force (IRTF), approved by NIST](https://www.rfc-editor.org/info/rfc8391) | [`XMSS/xmss-reference`](https://github.com/XMSS/xmss-reference) | -| [LMS](./docs/algorithms/sig_stfl/lms.md) | [Standardized by Internet Research Task Force (IRTF), approved by NIST](https://www.rfc-editor.org/info/rfc8554) | [`cisco/hash-sigs`](https://github.com/cisco/hash-sigs) | +#### Stateful signature schemes +| Algorithm family | Standardization status | Primary implementation | +|:-----------------------------------------|:-----------------------------------------------------------------------------------------------------------------|:----------------------------------------------------------------| +| [XMSS](docs/algorithms/sig_stfl/xmss.md) | [Standardized by Internet Research Task Force (IRTF), approved by NIST](https://www.rfc-editor.org/info/rfc8391) | [`XMSS/xmss-reference`](https://github.com/XMSS/xmss-reference) | +| [LMS](docs/algorithms/sig_stfl/lms.md) | [Standardized by Internet Research Task Force (IRTF), approved by NIST](https://www.rfc-editor.org/info/rfc8554) | [`cisco/hash-sigs`](https://github.com/cisco/hash-sigs) | Note that for algorithms marked with a dagger (†), liboqs contains at least one implementation that uses a large amount of stack space; this may cause failures when run in threads or in constrained environments. For more information, consult the algorithm information sheets in the [docs/algorithms](https://github.com/open-quantum-safe/liboqs/tree/main/docs/algorithms) folder. diff --git a/scripts/update_alg_support_table.py b/scripts/update_alg_support_table.py index a87f63e6a..77d23532a 100755 --- a/scripts/update_alg_support_table.py +++ b/scripts/update_alg_support_table.py @@ -68,7 +68,7 @@ def render_alg_support_tbl(doc_dir: str) -> str: elif "sig_stfl/" in yaml_path: dirname = "sig_stfl" md_basename = os.path.splitext(os.path.split(yaml_path)[1])[0] - md_url = f"./docs/algorithms/{dirname}/{md_basename}.md" + md_url = f"docs/algorithms/{dirname}/{md_basename}.md" std_status = algdata["standardization-status"] spec_url = algdata["spec-url"] primary_impl = format_upstream_source(algdata["primary-upstream"]["source"]) @@ -101,13 +101,13 @@ def update_readme(liboqs_dir: str): sig_tbl = render_alg_support_tbl(sig_doc_dir) sig_stfl_doc_dir = os.path.join(liboqs_dir, "docs", "algorithms", "sig_stfl") sig_stfl_tbl = render_alg_support_tbl(sig_stfl_doc_dir) - md_str = f"""### KEMs + md_str = f"""#### Key encapsulation mechanisms {kem_tbl} -### Digital signatures +#### Signature schemes {sig_tbl} -### Stateful digital signatures +#### Stateful signature schemes {sig_stfl_tbl} """ readme_path = os.path.join(liboqs_dir, "README.md")