mirror of
https://github.com/open-quantum-safe/liboqs.git
synced 2025-10-04 00:02:01 -04:00
Refactoring documentation generation. (#1057)
This commit is contained in:
parent
636d9725b2
commit
4de651c723
18
README.md
18
README.md
@ -34,31 +34,35 @@ More information on OQS can be found [here](https://openquantumsafe.org/) and in
|
|||||||
|
|
||||||
### Supported Algorithms
|
### Supported Algorithms
|
||||||
|
|
||||||
Details on each supported algorithm can be found in the [docs/algorithms folder](https://github.com/open-quantum-safe/liboqs/tree/main/docs/algorithms).
|
Details on each supported algorithm can be found in the [docs/algorithms](https://github.com/open-quantum-safe/liboqs/tree/main/docs/algorithms) folder.
|
||||||
|
|
||||||
#### Key encapsulation mechanisms
|
#### Key encapsulation mechanisms
|
||||||
|
|
||||||
|
<!--- OQS_TEMPLATE_FRAGMENT_LIST_KEXS_START -->
|
||||||
- **BIKE**: BIKE-L1, BIKE-L3
|
- **BIKE**: BIKE-L1, BIKE-L3
|
||||||
- **Classic McEliece**: Classic-McEliece-348864†, Classic-McEliece-348864f†, Classic-McEliece-460896†, Classic-McEliece-460896f†, Classic-McEliece-6688128†, Classic-McEliece-6688128f†, Classic-McEliece-6960119†, Classic-McEliece-6960119f†, Classic-McEliece-8192128†, Classic-McEliece-8192128f†
|
- **Classic McEliece**: Classic-McEliece-348864†, Classic-McEliece-348864f†, Classic-McEliece-460896†, Classic-McEliece-460896f†, Classic-McEliece-6688128†, Classic-McEliece-6688128f†, Classic-McEliece-6960119†, Classic-McEliece-6960119f†, Classic-McEliece-8192128†, Classic-McEliece-8192128f†
|
||||||
- **FrodoKEM**: FrodoKEM-640-AES, FrodoKEM-640-SHAKE, FrodoKEM-976-AES, FrodoKEM-976-SHAKE, FrodoKEM-1344-AES, FrodoKEM-1344-SHAKE
|
- **FrodoKEM**: FrodoKEM-640-AES, FrodoKEM-640-SHAKE, FrodoKEM-976-AES, FrodoKEM-976-SHAKE, FrodoKEM-1344-AES, FrodoKEM-1344-SHAKE
|
||||||
- **HQC**: HQC-128-1-CCA2, HQC-192-1-CCA2, HQC-192-2-CCA2, HQC-256-1-CCA2†, HQC-256-2-CCA2†, HQC-256-3-CCA2†
|
- **HQC**: HQC-128, HQC-192, HQC-256†
|
||||||
- **Kyber**: Kyber512, Kyber768, Kyber1024, Kyber512-90s, Kyber768-90s, Kyber1024-90s
|
- **Kyber**: Kyber512, Kyber512-90s, Kyber768, Kyber768-90s, Kyber1024, Kyber1024-90s
|
||||||
- **NTRU**: NTRU-HPS-2048-509, NTRU-HPS-2048-677, NTRU-HPS-4096-821, NTRU-HRSS-701
|
- **NTRU**: NTRU-HPS-2048-509, NTRU-HPS-2048-677, NTRU-HPS-4096-821, NTRU-HRSS-701
|
||||||
- **NTRU-Prime**: ntrulpr653, ntrulpr761, ntrulpr857, sntrup653, sntrup761, sntrup857
|
- **NTRU-Prime**: ntrulpr653, ntrulpr761, ntrulpr857, sntrup653, sntrup761, sntrup857
|
||||||
- **SABER**: LightSaber-KEM, Saber-KEM, FireSaber-KEM
|
- **SABER**: LightSaber-KEM, Saber-KEM, FireSaber-KEM
|
||||||
- **SIKE**: SIDH-p434, SIDH-p503, SIDH-p610, SIDH-p751, SIKE-p434, SIKE-p503, SIKE-p610, SIKE-p751, SIDH-p434-compressed, SIDH-p503-compressed, SIDH-p610-compressed, SIDH-p751-compressed, SIKE-p434-compressed, SIKE-p503-compressed, SIKE-p610-compressed, SIKE-p751-compressed
|
- **SIKE**: SIDH-p434, SIDH-p434-compressed, SIDH-p503, SIDH-p503-compressed, SIDH-p610, SIDH-p610-compressed, SIDH-p751, SIDH-p751-compressed, SIKE-p434, SIKE-p434-compressed, SIKE-p503, SIKE-p503-compressed, SIKE-p610, SIKE-p610-compressed, SIKE-p751, SIKE-p751-compressed
|
||||||
|
<!--- OQS_TEMPLATE_FRAGMENT_LIST_KEXS_END -->
|
||||||
|
|
||||||
#### Signature schemes
|
#### Signature schemes
|
||||||
|
|
||||||
- **Dilithium**: Dilithium2, Dilithium2-AES, Dilithium3, Dilithium3-AES, Dilithium5, Dilithium5-AES
|
<!--- OQS_TEMPLATE_FRAGMENT_LIST_SIGS_START -->
|
||||||
|
- **CRYSTALS-Dilithium**: Dilithium2, Dilithium3, Dilithium5, Dilithium2-AES, Dilithium3-AES, Dilithium5-AES
|
||||||
- **Falcon**: Falcon-512, Falcon-1024
|
- **Falcon**: Falcon-512, Falcon-1024
|
||||||
- **Picnic**: Picnic-L1-FS, Picnic-L1-UR, Picnic-L1-full, Picnic-L3-FS, Picnic-L3-UR, Picnic-L3-full, Picnic-L5-FS, Picnic-L5-UR, Picnic-L5-full, Picnic3-L1, Picnic3-L3, Picnic3-L5
|
- **Picnic**: picnic\_L1\_FS, picnic\_L1\_UR, picnic\_L1\_full, picnic\_L3\_FS, picnic\_L3\_UR, picnic\_L3\_full, picnic\_L5\_FS, picnic\_L5\_UR, picnic\_L5\_full, picnic3\_L1, picnic3\_L3, picnic3\_L5
|
||||||
- **Rainbow**: Rainbow-I-Classic, Rainbow-I-Circumzenithal, Rainbow-I-Compressed, Rainbow-III-Classic†, Rainbow-III-Circumzenithal†, Rainbow-III-Compressed†, Rainbow-V-Classic†, Rainbow-V-Circumzenithal†, Rainbow-V-Compressed†
|
- **Rainbow**: Rainbow-I-Classic, Rainbow-I-Circumzenithal, Rainbow-I-Compressed, Rainbow-III-Classic†, Rainbow-III-Circumzenithal†, Rainbow-III-Compressed†, Rainbow-V-Classic†, Rainbow-V-Circumzenithal†, Rainbow-V-Compressed†
|
||||||
- **SPHINCS+-Haraka**: SPHINCS+-Haraka-128f-robust, SPHINCS+-Haraka-128f-simple, SPHINCS+-Haraka-128s-robust, SPHINCS+-Haraka-128s-simple, SPHINCS+-Haraka-192f-robust, SPHINCS+-Haraka-192f-simple, SPHINCS+-Haraka-192s-robust, SPHINCS+-Haraka-192s-simple, SPHINCS+-Haraka-256f-robust, SPHINCS+-Haraka-256f-simple, SPHINCS+-Haraka-256s-robust, SPHINCS+-Haraka-256s-simple
|
- **SPHINCS+-Haraka**: SPHINCS+-Haraka-128f-robust, SPHINCS+-Haraka-128f-simple, SPHINCS+-Haraka-128s-robust, SPHINCS+-Haraka-128s-simple, SPHINCS+-Haraka-192f-robust, SPHINCS+-Haraka-192f-simple, SPHINCS+-Haraka-192s-robust, SPHINCS+-Haraka-192s-simple, SPHINCS+-Haraka-256f-robust, SPHINCS+-Haraka-256f-simple, SPHINCS+-Haraka-256s-robust, SPHINCS+-Haraka-256s-simple
|
||||||
- **SPHINCS+-SHA256**: SPHINCS+-SHA256-128f-robust, SPHINCS+-SHA256-128f-simple, SPHINCS+-SHA256-128s-robust, SPHINCS+-SHA256-128s-simple, SPHINCS+-SHA256-192f-robust, SPHINCS+-SHA256-192f-simple, SPHINCS+-SHA256-192s-robust, SPHINCS+-SHA256-192s-simple, SPHINCS+-SHA256-256f-robust, SPHINCS+-SHA256-256f-simple, SPHINCS+-SHA256-256s-robust, SPHINCS+-SHA256-256s-simple
|
- **SPHINCS+-SHA256**: SPHINCS+-SHA256-128f-robust, SPHINCS+-SHA256-128f-simple, SPHINCS+-SHA256-128s-robust, SPHINCS+-SHA256-128s-simple, SPHINCS+-SHA256-192f-robust, SPHINCS+-SHA256-192f-simple, SPHINCS+-SHA256-192s-robust, SPHINCS+-SHA256-192s-simple, SPHINCS+-SHA256-256f-robust, SPHINCS+-SHA256-256f-simple, SPHINCS+-SHA256-256s-robust, SPHINCS+-SHA256-256s-simple
|
||||||
- **SPHINCS+-SHAKE256**: SPHINCS+-SHAKE256-128f-robust, SPHINCS+-SHAKE256-128f-simple, SPHINCS+-SHAKE256-128s-robust, SPHINCS+-SHAKE256-128s-simple, SPHINCS+-SHAKE256-192f-robust, SPHINCS+-SHAKE256-192f-simple, SPHINCS+-SHAKE256-192s-robust, SPHINCS+-SHAKE256-192s-simple, SPHINCS+-SHAKE256-256f-robust, SPHINCS+-SHAKE256-256f-simple, SPHINCS+-SHAKE256-256s-robust, SPHINCS+-SHAKE256-256s-simple
|
- **SPHINCS+-SHAKE256**: SPHINCS+-SHAKE256-128f-robust, SPHINCS+-SHAKE256-128f-simple, SPHINCS+-SHAKE256-128s-robust, SPHINCS+-SHAKE256-128s-simple, SPHINCS+-SHAKE256-192f-robust, SPHINCS+-SHAKE256-192f-simple, SPHINCS+-SHAKE256-192s-robust, SPHINCS+-SHAKE256-192s-simple, SPHINCS+-SHAKE256-256f-robust, SPHINCS+-SHAKE256-256f-simple, SPHINCS+-SHAKE256-256s-robust, SPHINCS+-SHAKE256-256s-simple
|
||||||
|
<!--- OQS_TEMPLATE_FRAGMENT_LIST_SIGS_END -->
|
||||||
|
|
||||||
Note that algorithms marked with a dagger (†) have large stack usage and may cause failures when run on threads or in constrained environments.
|
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.
|
||||||
|
|
||||||
### Limitations and Security
|
### Limitations and Security
|
||||||
|
|
||||||
|
@ -18,13 +18,15 @@
|
|||||||
|
|
||||||
## BIKE-L1 implementation characteristics
|
## BIKE-L1 implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage?‡ |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:----------------------|
|
||||||
| master | All | All | None | True | True | False |
|
| master | All | All | None | True | True | False |
|
||||||
| master | x86\_64 | Linux,Darwin | AVX2,AVX512,PCLMUL,SSE2 | True | True | False |
|
| master | x86\_64 | Linux,Darwin | AVX2,AVX512,PCLMUL,SSE2 | True | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
|
‡For an explanation of what this denotes, consult the [Explanation of Terms](#explanation-of-terms) section at the end of this file.
|
||||||
|
|
||||||
## BIKE-L3 implementation characteristics
|
## BIKE-L3 implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
@ -33,3 +35,7 @@ Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
|||||||
| master | x86\_64 | Linux,Darwin | AVX2,AVX512,PCLMUL,SSE2 | True | True | False |
|
| master | x86\_64 | Linux,Darwin | AVX2,AVX512,PCLMUL,SSE2 | True | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
|
## Explanation of Terms
|
||||||
|
|
||||||
|
- **Large Stack Usage**: Implementations identified as having such may cause failures when running in threads or in constrained environments.
|
@ -26,19 +26,21 @@
|
|||||||
|
|
||||||
## Classic-McEliece-348864 implementation characteristics
|
## Classic-McEliece-348864 implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage?‡ |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:----------------------|
|
||||||
| vec | All | All | None | True | True | False |
|
| vec | All | All | None | True | True | True |
|
||||||
| avx | x86\_64 | Linux,Darwin | AVX2,POPCNT | False | True | False |
|
| avx | x86\_64 | Linux,Darwin | AVX2,POPCNT | False | True | True |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
|
‡For an explanation of what this denotes, consult the [Explanation of Terms](#explanation-of-terms) section at the end of this file.
|
||||||
|
|
||||||
## Classic-McEliece-348864f implementation characteristics
|
## Classic-McEliece-348864f implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
||||||
| vec | All | All | None | True | True | False |
|
| vec | All | All | None | True | True | True |
|
||||||
| avx | x86\_64 | Linux,Darwin | AVX2,POPCNT,BMI1 | False | True | False |
|
| avx | x86\_64 | Linux,Darwin | AVX2,POPCNT,BMI1 | False | True | True |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
@ -46,8 +48,8 @@ Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
|||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
||||||
| vec | All | All | None | True | True | False |
|
| vec | All | All | None | True | True | True |
|
||||||
| avx | x86\_64 | Linux,Darwin | AVX2,POPCNT | False | True | False |
|
| avx | x86\_64 | Linux,Darwin | AVX2,POPCNT | False | True | True |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
@ -55,8 +57,8 @@ Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
|||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
||||||
| vec | All | All | None | True | True | False |
|
| vec | All | All | None | True | True | True |
|
||||||
| avx | x86\_64 | Linux,Darwin | AVX2,BMI1,POPCNT | False | True | False |
|
| avx | x86\_64 | Linux,Darwin | AVX2,BMI1,POPCNT | False | True | True |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
@ -64,8 +66,8 @@ Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
|||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
||||||
| vec | All | All | None | True | True | False |
|
| vec | All | All | None | True | True | True |
|
||||||
| avx | x86\_64 | Linux,Darwin | AVX2,POPCNT | False | True | False |
|
| avx | x86\_64 | Linux,Darwin | AVX2,POPCNT | False | True | True |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
@ -73,8 +75,8 @@ Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
|||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
||||||
| vec | All | All | None | True | True | False |
|
| vec | All | All | None | True | True | True |
|
||||||
| avx | x86\_64 | Linux,Darwin | AVX2,BMI1,POPCNT | False | True | False |
|
| avx | x86\_64 | Linux,Darwin | AVX2,BMI1,POPCNT | False | True | True |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
@ -82,8 +84,8 @@ Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
|||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
||||||
| vec | All | All | None | True | True | False |
|
| vec | All | All | None | True | True | True |
|
||||||
| avx | x86\_64 | Linux,Darwin | AVX2,POPCNT | False | True | False |
|
| avx | x86\_64 | Linux,Darwin | AVX2,POPCNT | False | True | True |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
@ -91,8 +93,8 @@ Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
|||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
||||||
| vec | All | All | None | True | True | False |
|
| vec | All | All | None | True | True | True |
|
||||||
| avx | x86\_64 | Linux,Darwin | AVX2,BMI1,POPCNT | False | True | False |
|
| avx | x86\_64 | Linux,Darwin | AVX2,BMI1,POPCNT | False | True | True |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
@ -100,8 +102,8 @@ Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
|||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
||||||
| vec | All | All | None | True | True | False |
|
| vec | All | All | None | True | True | True |
|
||||||
| avx | x86\_64 | Linux,Darwin | AVX2,POPCNT | False | True | False |
|
| avx | x86\_64 | Linux,Darwin | AVX2,POPCNT | False | True | True |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
@ -109,7 +111,11 @@ Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
|||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
||||||
| vec | All | All | None | True | True | False |
|
| vec | All | All | None | True | True | True |
|
||||||
| avx | x86\_64 | Linux,Darwin | AVX2,POPCNT,BMI1 | False | True | False |
|
| avx | x86\_64 | Linux,Darwin | AVX2,POPCNT,BMI1 | False | True | True |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
|
## Explanation of Terms
|
||||||
|
|
||||||
|
- **Large Stack Usage**: Implementations identified as having such may cause failures when running in threads or in constrained environments.
|
@ -39,7 +39,7 @@ parameter-sets:
|
|||||||
- SHA3: liboqs
|
- SHA3: liboqs
|
||||||
no-secret-dependent-branching-claimed: true
|
no-secret-dependent-branching-claimed: true
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- upstream-id: avx
|
- upstream-id: avx
|
||||||
supported-platforms:
|
supported-platforms:
|
||||||
- architecture: x86_64
|
- architecture: x86_64
|
||||||
@ -54,7 +54,7 @@ parameter-sets:
|
|||||||
- SHA3: liboqs
|
- SHA3: liboqs
|
||||||
no-secret-dependent-branching-claimed: false
|
no-secret-dependent-branching-claimed: false
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- name: Classic-McEliece-348864f
|
- name: Classic-McEliece-348864f
|
||||||
claimed-nist-level: 1
|
claimed-nist-level: 1
|
||||||
claimed-security: IND-CCA2
|
claimed-security: IND-CCA2
|
||||||
@ -71,7 +71,7 @@ parameter-sets:
|
|||||||
- SHA3: liboqs
|
- SHA3: liboqs
|
||||||
no-secret-dependent-branching-claimed: true
|
no-secret-dependent-branching-claimed: true
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- upstream-id: avx
|
- upstream-id: avx
|
||||||
supported-platforms:
|
supported-platforms:
|
||||||
- architecture: x86_64
|
- architecture: x86_64
|
||||||
@ -87,7 +87,7 @@ parameter-sets:
|
|||||||
- SHA3: liboqs
|
- SHA3: liboqs
|
||||||
no-secret-dependent-branching-claimed: false
|
no-secret-dependent-branching-claimed: false
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- name: Classic-McEliece-460896
|
- name: Classic-McEliece-460896
|
||||||
claimed-nist-level: 3
|
claimed-nist-level: 3
|
||||||
claimed-security: IND-CCA2
|
claimed-security: IND-CCA2
|
||||||
@ -104,7 +104,7 @@ parameter-sets:
|
|||||||
- SHA3: liboqs
|
- SHA3: liboqs
|
||||||
no-secret-dependent-branching-claimed: true
|
no-secret-dependent-branching-claimed: true
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- upstream-id: avx
|
- upstream-id: avx
|
||||||
supported-platforms:
|
supported-platforms:
|
||||||
- architecture: x86_64
|
- architecture: x86_64
|
||||||
@ -119,7 +119,7 @@ parameter-sets:
|
|||||||
- SHA3: liboqs
|
- SHA3: liboqs
|
||||||
no-secret-dependent-branching-claimed: false
|
no-secret-dependent-branching-claimed: false
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- name: Classic-McEliece-460896f
|
- name: Classic-McEliece-460896f
|
||||||
claimed-nist-level: 3
|
claimed-nist-level: 3
|
||||||
claimed-security: IND-CCA2
|
claimed-security: IND-CCA2
|
||||||
@ -136,7 +136,7 @@ parameter-sets:
|
|||||||
- SHA3: liboqs
|
- SHA3: liboqs
|
||||||
no-secret-dependent-branching-claimed: true
|
no-secret-dependent-branching-claimed: true
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- upstream-id: avx
|
- upstream-id: avx
|
||||||
supported-platforms:
|
supported-platforms:
|
||||||
- architecture: x86_64
|
- architecture: x86_64
|
||||||
@ -152,7 +152,7 @@ parameter-sets:
|
|||||||
- SHA3: liboqs
|
- SHA3: liboqs
|
||||||
no-secret-dependent-branching-claimed: false
|
no-secret-dependent-branching-claimed: false
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- name: Classic-McEliece-6688128
|
- name: Classic-McEliece-6688128
|
||||||
claimed-nist-level: 5
|
claimed-nist-level: 5
|
||||||
claimed-security: IND-CCA2
|
claimed-security: IND-CCA2
|
||||||
@ -169,7 +169,7 @@ parameter-sets:
|
|||||||
- SHA3: liboqs
|
- SHA3: liboqs
|
||||||
no-secret-dependent-branching-claimed: true
|
no-secret-dependent-branching-claimed: true
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- upstream-id: avx
|
- upstream-id: avx
|
||||||
supported-platforms:
|
supported-platforms:
|
||||||
- architecture: x86_64
|
- architecture: x86_64
|
||||||
@ -184,7 +184,7 @@ parameter-sets:
|
|||||||
- SHA3: liboqs
|
- SHA3: liboqs
|
||||||
no-secret-dependent-branching-claimed: false
|
no-secret-dependent-branching-claimed: false
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- name: Classic-McEliece-6688128f
|
- name: Classic-McEliece-6688128f
|
||||||
claimed-nist-level: 5
|
claimed-nist-level: 5
|
||||||
claimed-security: IND-CCA2
|
claimed-security: IND-CCA2
|
||||||
@ -201,7 +201,7 @@ parameter-sets:
|
|||||||
- SHA3: liboqs
|
- SHA3: liboqs
|
||||||
no-secret-dependent-branching-claimed: true
|
no-secret-dependent-branching-claimed: true
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- upstream-id: avx
|
- upstream-id: avx
|
||||||
supported-platforms:
|
supported-platforms:
|
||||||
- architecture: x86_64
|
- architecture: x86_64
|
||||||
@ -217,7 +217,7 @@ parameter-sets:
|
|||||||
- SHA3: liboqs
|
- SHA3: liboqs
|
||||||
no-secret-dependent-branching-claimed: false
|
no-secret-dependent-branching-claimed: false
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- name: Classic-McEliece-6960119
|
- name: Classic-McEliece-6960119
|
||||||
claimed-nist-level: 5
|
claimed-nist-level: 5
|
||||||
claimed-security: IND-CCA2
|
claimed-security: IND-CCA2
|
||||||
@ -234,7 +234,7 @@ parameter-sets:
|
|||||||
- SHA3: liboqs
|
- SHA3: liboqs
|
||||||
no-secret-dependent-branching-claimed: true
|
no-secret-dependent-branching-claimed: true
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- upstream-id: avx
|
- upstream-id: avx
|
||||||
supported-platforms:
|
supported-platforms:
|
||||||
- architecture: x86_64
|
- architecture: x86_64
|
||||||
@ -249,7 +249,7 @@ parameter-sets:
|
|||||||
- SHA3: liboqs
|
- SHA3: liboqs
|
||||||
no-secret-dependent-branching-claimed: false
|
no-secret-dependent-branching-claimed: false
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- name: Classic-McEliece-6960119f
|
- name: Classic-McEliece-6960119f
|
||||||
claimed-nist-level: 5
|
claimed-nist-level: 5
|
||||||
claimed-security: IND-CCA2
|
claimed-security: IND-CCA2
|
||||||
@ -266,7 +266,7 @@ parameter-sets:
|
|||||||
- SHA3: liboqs
|
- SHA3: liboqs
|
||||||
no-secret-dependent-branching-claimed: true
|
no-secret-dependent-branching-claimed: true
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- upstream-id: avx
|
- upstream-id: avx
|
||||||
supported-platforms:
|
supported-platforms:
|
||||||
- architecture: x86_64
|
- architecture: x86_64
|
||||||
@ -282,7 +282,7 @@ parameter-sets:
|
|||||||
- SHA3: liboqs
|
- SHA3: liboqs
|
||||||
no-secret-dependent-branching-claimed: false
|
no-secret-dependent-branching-claimed: false
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- name: Classic-McEliece-8192128
|
- name: Classic-McEliece-8192128
|
||||||
claimed-nist-level: 5
|
claimed-nist-level: 5
|
||||||
claimed-security: IND-CCA2
|
claimed-security: IND-CCA2
|
||||||
@ -299,7 +299,7 @@ parameter-sets:
|
|||||||
- SHA3: liboqs
|
- SHA3: liboqs
|
||||||
no-secret-dependent-branching-claimed: true
|
no-secret-dependent-branching-claimed: true
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- upstream-id: avx
|
- upstream-id: avx
|
||||||
supported-platforms:
|
supported-platforms:
|
||||||
- architecture: x86_64
|
- architecture: x86_64
|
||||||
@ -314,7 +314,7 @@ parameter-sets:
|
|||||||
- SHA3: liboqs
|
- SHA3: liboqs
|
||||||
no-secret-dependent-branching-claimed: false
|
no-secret-dependent-branching-claimed: false
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- name: Classic-McEliece-8192128f
|
- name: Classic-McEliece-8192128f
|
||||||
claimed-nist-level: 5
|
claimed-nist-level: 5
|
||||||
claimed-security: IND-CCA2
|
claimed-security: IND-CCA2
|
||||||
@ -331,7 +331,7 @@ parameter-sets:
|
|||||||
- SHA3: liboqs
|
- SHA3: liboqs
|
||||||
no-secret-dependent-branching-claimed: true
|
no-secret-dependent-branching-claimed: true
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- upstream-id: avx
|
- upstream-id: avx
|
||||||
supported-platforms:
|
supported-platforms:
|
||||||
- architecture: x86_64
|
- architecture: x86_64
|
||||||
@ -347,5 +347,4 @@ parameter-sets:
|
|||||||
- SHA3: liboqs
|
- SHA3: liboqs
|
||||||
no-secret-dependent-branching-claimed: false
|
no-secret-dependent-branching-claimed: false
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
auxiliary-submitters: []
|
|
||||||
|
@ -21,13 +21,15 @@
|
|||||||
|
|
||||||
## FrodoKEM-640-AES implementation characteristics
|
## FrodoKEM-640-AES implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage?‡ |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:----------------------|
|
||||||
| master | All | All | None | True | True | False |
|
| master | All | All | None | True | True | False |
|
||||||
| master | x86\_64 | Linux,Darwin,Windows | AVX2 | True | True | False |
|
| master | x86\_64 | Linux,Darwin,Windows | AVX2 | True | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
|
‡For an explanation of what this denotes, consult the [Explanation of Terms](#explanation-of-terms) section at the end of this file.
|
||||||
|
|
||||||
## FrodoKEM-640-SHAKE implementation characteristics
|
## FrodoKEM-640-SHAKE implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
@ -72,3 +74,7 @@ Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
|||||||
| master | x86\_64 | Linux,Darwin,Windows | AVX2 | True | True | False |
|
| master | x86\_64 | Linux,Darwin,Windows | AVX2 | True | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
|
## Explanation of Terms
|
||||||
|
|
||||||
|
- **Large Stack Usage**: Implementations identified as having such may cause failures when running in threads or in constrained environments.
|
@ -13,7 +13,6 @@ principal-submitters:
|
|||||||
- Christopher Peikert
|
- Christopher Peikert
|
||||||
- Ananth Raghunathan
|
- Ananth Raghunathan
|
||||||
- Douglas Stebila
|
- Douglas Stebila
|
||||||
auxiliary-submitters: []
|
|
||||||
crypto-assumption: learning with errors (LWE)
|
crypto-assumption: learning with errors (LWE)
|
||||||
website: https://frodokem.org/
|
website: https://frodokem.org/
|
||||||
nist-round: 3
|
nist-round: 3
|
||||||
|
@ -20,13 +20,15 @@
|
|||||||
|
|
||||||
## HQC-128 implementation characteristics
|
## HQC-128 implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage?‡ |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:----------------------|
|
||||||
| clean | All | All | None | True | True | False |
|
| clean | All | All | None | True | True | False |
|
||||||
| avx2 | x86\_64 | Linux,Darwin | AVX2,BMI1,PCLMULQDQ | False | True | False |
|
| avx2 | x86\_64 | Linux,Darwin | AVX2,BMI1,PCLMULQDQ | False | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
|
‡For an explanation of what this denotes, consult the [Explanation of Terms](#explanation-of-terms) section at the end of this file.
|
||||||
|
|
||||||
## HQC-192 implementation characteristics
|
## HQC-192 implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
@ -41,6 +43,10 @@ Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
|||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
||||||
| clean | All | All | None | True | True | False |
|
| clean | All | All | None | True | True | False |
|
||||||
| avx2 | x86\_64 | Linux,Darwin | AVX2,BMI1,PCLMULQDQ | False | True | False |
|
| avx2 | x86\_64 | Linux,Darwin | AVX2,BMI1,PCLMULQDQ | False | True | True |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
|
## Explanation of Terms
|
||||||
|
|
||||||
|
- **Large Stack Usage**: Implementations identified as having such may cause failures when running in threads or in constrained environments.
|
@ -115,4 +115,4 @@ parameter-sets:
|
|||||||
- SHA3: liboqs
|
- SHA3: liboqs
|
||||||
no-secret-dependent-branching-claimed: false
|
no-secret-dependent-branching-claimed: false
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
|
@ -22,13 +22,15 @@
|
|||||||
|
|
||||||
## Kyber512 implementation characteristics
|
## Kyber512 implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage?‡ |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:----------------------|
|
||||||
| ref | All | All | None | True | True | False |
|
| ref | All | All | None | True | True | False |
|
||||||
| avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,POPCNT | True | True | False |
|
| avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,POPCNT | True | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
|
‡For an explanation of what this denotes, consult the [Explanation of Terms](#explanation-of-terms) section at the end of this file.
|
||||||
|
|
||||||
## Kyber512-90s implementation characteristics
|
## Kyber512-90s implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
@ -73,3 +75,7 @@ Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
|||||||
| avx2 | x86\_64 | Linux,Darwin | AES,AVX2,BMI2,POPCNT | True | True | False |
|
| avx2 | x86\_64 | Linux,Darwin | AES,AVX2,BMI2,POPCNT | True | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
|
## Explanation of Terms
|
||||||
|
|
||||||
|
- **Large Stack Usage**: Implementations identified as having such may cause failures when running in threads or in constrained environments.
|
@ -21,13 +21,15 @@
|
|||||||
|
|
||||||
## NTRU-HPS-2048-509 implementation characteristics
|
## NTRU-HPS-2048-509 implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage?‡ |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:----------------------|
|
||||||
| clean | All | All | None | True | True | False |
|
| clean | All | All | None | True | True | False |
|
||||||
| avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2 | True | True | False |
|
| avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2 | True | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
|
‡For an explanation of what this denotes, consult the [Explanation of Terms](#explanation-of-terms) section at the end of this file.
|
||||||
|
|
||||||
## NTRU-HPS-2048-677 implementation characteristics
|
## NTRU-HPS-2048-677 implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
@ -54,3 +56,7 @@ Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
|||||||
| avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2 | True | True | False |
|
| avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2 | True | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
|
## Explanation of Terms
|
||||||
|
|
||||||
|
- **Large Stack Usage**: Implementations identified as having such may cause failures when running in threads or in constrained environments.
|
@ -23,13 +23,15 @@
|
|||||||
|
|
||||||
## ntrulpr653 implementation characteristics
|
## ntrulpr653 implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage?‡ |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:----------------------|
|
||||||
| clean | All | All | None | True | True | False |
|
| clean | All | All | None | True | True | False |
|
||||||
| avx2 | x86\_64 | Linux,Darwin | AVX2 | False | True | False |
|
| avx2 | x86\_64 | Linux,Darwin | AVX2 | False | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
|
‡For an explanation of what this denotes, consult the [Explanation of Terms](#explanation-of-terms) section at the end of this file.
|
||||||
|
|
||||||
## ntrulpr761 implementation characteristics
|
## ntrulpr761 implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
@ -74,3 +76,7 @@ Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
|||||||
| avx2 | x86\_64 | Linux,Darwin | AVX2 | False | True | False |
|
| avx2 | x86\_64 | Linux,Darwin | AVX2 | False | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
|
## Explanation of Terms
|
||||||
|
|
||||||
|
- **Large Stack Usage**: Implementations identified as having such may cause failures when running in threads or in constrained environments.
|
@ -20,13 +20,15 @@
|
|||||||
|
|
||||||
## LightSaber-KEM implementation characteristics
|
## LightSaber-KEM implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage?‡ |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:----------------------|
|
||||||
| clean | All | All | None | True | True | False |
|
| clean | All | All | None | True | True | False |
|
||||||
| avx2 | x86\_64 | Linux,Darwin | AVX2 | False | True | False |
|
| avx2 | x86\_64 | Linux,Darwin | AVX2 | False | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
|
‡For an explanation of what this denotes, consult the [Explanation of Terms](#explanation-of-terms) section at the end of this file.
|
||||||
|
|
||||||
## Saber-KEM implementation characteristics
|
## Saber-KEM implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
@ -44,3 +46,7 @@ Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
|||||||
| avx2 | x86\_64 | Linux,Darwin | AVX2 | False | True | False |
|
| avx2 | x86\_64 | Linux,Darwin | AVX2 | False | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
|
## Explanation of Terms
|
||||||
|
|
||||||
|
- **Large Stack Usage**: Implementations identified as having such may cause failures when running in threads or in constrained environments.
|
@ -31,15 +31,17 @@
|
|||||||
|
|
||||||
## SIDH-p434 implementation characteristics
|
## SIDH-p434 implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage?‡ |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:----------------------|
|
||||||
| optimized | All | All | None | True | True | False |
|
| optimized | All | All | None | True | True | False |
|
||||||
| additional\_amd64\_bmi2 | x86\_64 | Linux,Darwin | BMI2 | True | True | False |
|
| additional\_amd64\_bmi2 | x86\_64 | Linux,Darwin | BMI2 | True | True | False |
|
||||||
| additional\_amd64\_adx | x86\_64 | Linux,Darwin | BMI2,ADX | True | True | False |
|
| additional\_amd64\_adx | x86\_64 | Linux,Darwin | BMI2,ADX | True | True | False |
|
||||||
| additional\_arm64 | arm64v8 | Linux,Darwin | None | True | True | False |
|
| additional\_arm64 | arm64v8 | Linux,Darwin | None | True | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **No**.
|
Are implementations chosen based on runtime CPU feature detection? **No**.
|
||||||
|
|
||||||
|
‡For an explanation of what this denotes, consult the [Explanation of Terms](#explanation-of-terms) section at the end of this file.
|
||||||
|
|
||||||
## SIDH-p434-compressed implementation characteristics
|
## SIDH-p434-compressed implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
@ -212,3 +214,7 @@ Are implementations chosen based on runtime CPU feature detection? **No**.
|
|||||||
| additional\_arm64 | arm64v8 | Linux,Darwin | None | True | True | False |
|
| additional\_arm64 | arm64v8 | Linux,Darwin | None | True | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **No**.
|
Are implementations chosen based on runtime CPU feature detection? **No**.
|
||||||
|
|
||||||
|
## Explanation of Terms
|
||||||
|
|
||||||
|
- **Large Stack Usage**: Implementations identified as having such may cause failures when running in threads or in constrained environments.
|
@ -22,13 +22,15 @@
|
|||||||
|
|
||||||
## Dilithium2 implementation characteristics
|
## Dilithium2 implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage?‡ |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:----------------------|
|
||||||
| ref | All | All | None | True | True | False |
|
| ref | All | All | None | True | True | False |
|
||||||
| avx2 | x86\_64 | Linux,Darwin | AVX2,POPCNT,SSE2,SSSE3 | True | True | False |
|
| avx2 | x86\_64 | Linux,Darwin | AVX2,POPCNT,SSE2,SSSE3 | True | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
|
‡For an explanation of what this denotes, consult the [Explanation of Terms](#explanation-of-terms) section at the end of this file.
|
||||||
|
|
||||||
## Dilithium3 implementation characteristics
|
## Dilithium3 implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
@ -73,3 +75,7 @@ Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
|||||||
| avx2 | x86\_64 | Linux,Darwin | AES,AVX2,POPCNT,SSE2,SSSE3 | True | True | False |
|
| avx2 | x86\_64 | Linux,Darwin | AES,AVX2,POPCNT,SSE2,SSSE3 | True | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
|
## Explanation of Terms
|
||||||
|
|
||||||
|
- **Large Stack Usage**: Implementations identified as having such may cause failures when running in threads or in constrained environments.
|
@ -20,13 +20,15 @@
|
|||||||
|
|
||||||
## Falcon-512 implementation characteristics
|
## Falcon-512 implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage?‡ |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:----------------------|
|
||||||
| clean | All | All | None | True | True | False |
|
| clean | All | All | None | True | True | False |
|
||||||
| avx2 | x86\_64 | Linux,Darwin | AVX2 | True | True | False |
|
| avx2 | x86\_64 | Linux,Darwin | AVX2 | True | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
|
‡For an explanation of what this denotes, consult the [Explanation of Terms](#explanation-of-terms) section at the end of this file.
|
||||||
|
|
||||||
## Falcon-1024 implementation characteristics
|
## Falcon-1024 implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
@ -35,3 +37,7 @@ Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
|||||||
| avx2 | x86\_64 | Linux,Darwin | AVX2 | True | True | False |
|
| avx2 | x86\_64 | Linux,Darwin | AVX2 | True | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
|
## Explanation of Terms
|
||||||
|
|
||||||
|
- **Large Stack Usage**: Implementations identified as having such may cause failures when running in threads or in constrained environments.
|
@ -27,14 +27,16 @@
|
|||||||
|
|
||||||
## picnic\_L1\_FS implementation characteristics
|
## picnic\_L1\_FS implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage?‡ |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:----------------------|
|
||||||
| master | All | All | None | True | True | False |
|
| master | All | All | None | True | True | False |
|
||||||
| master | x86\_64 | Linux | AVX2,SSE2 | True | True | False |
|
| master | x86\_64 | Linux | AVX2,SSE2 | True | True | False |
|
||||||
| master | x86\_64 | Darwin,Windows | SSE2 | True | True | False |
|
| master | x86\_64 | Darwin,Windows | SSE2 | True | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **No**.
|
Are implementations chosen based on runtime CPU feature detection? **No**.
|
||||||
|
|
||||||
|
‡For an explanation of what this denotes, consult the [Explanation of Terms](#explanation-of-terms) section at the end of this file.
|
||||||
|
|
||||||
## picnic\_L1\_UR implementation characteristics
|
## picnic\_L1\_UR implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
@ -144,3 +146,7 @@ Are implementations chosen based on runtime CPU feature detection? **No**.
|
|||||||
| master | x86\_64 | Darwin,Windows | SSE2 | True | True | False |
|
| master | x86\_64 | Darwin,Windows | SSE2 | True | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **No**.
|
Are implementations chosen based on runtime CPU feature detection? **No**.
|
||||||
|
|
||||||
|
## Explanation of Terms
|
||||||
|
|
||||||
|
- **Large Stack Usage**: Implementations identified as having such may cause failures when running in threads or in constrained environments.
|
@ -26,9 +26,11 @@
|
|||||||
|
|
||||||
## Rainbow-I-Classic implementation characteristics
|
## Rainbow-I-Classic implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage?‡ |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:----------------------|
|
||||||
| clean | All | All | None | True | True | False |
|
| clean | All | All | None | True | True | False |
|
||||||
|
|
||||||
|
‡For an explanation of what this denotes, consult the [Explanation of Terms](#explanation-of-terms) section at the end of this file.
|
||||||
|
|
||||||
## Rainbow-I-Circumzenithal implementation characteristics
|
## Rainbow-I-Circumzenithal implementation characteristics
|
||||||
|
|
||||||
@ -46,34 +48,38 @@
|
|||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
||||||
| clean | All | All | None | True | True | False |
|
| clean | All | All | None | True | True | True |
|
||||||
|
|
||||||
## Rainbow-III-Circumzenithal implementation characteristics
|
## Rainbow-III-Circumzenithal implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
||||||
| clean | All | All | None | True | True | False |
|
| clean | All | All | None | True | True | True |
|
||||||
|
|
||||||
## Rainbow-III-Compressed implementation characteristics
|
## Rainbow-III-Compressed implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
||||||
| clean | All | All | None | True | True | False |
|
| clean | All | All | None | True | True | True |
|
||||||
|
|
||||||
## Rainbow-V-Classic implementation characteristics
|
## Rainbow-V-Classic implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
||||||
| clean | All | All | None | True | True | False |
|
| clean | All | All | None | True | True | True |
|
||||||
|
|
||||||
## Rainbow-V-Circumzenithal implementation characteristics
|
## Rainbow-V-Circumzenithal implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
||||||
| clean | All | All | None | True | True | False |
|
| clean | All | All | None | True | True | True |
|
||||||
|
|
||||||
## Rainbow-V-Compressed implementation characteristics
|
## Rainbow-V-Compressed implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
||||||
| clean | All | All | None | True | True | False |
|
| clean | All | All | None | True | True | True |
|
||||||
|
|
||||||
|
## Explanation of Terms
|
||||||
|
|
||||||
|
- **Large Stack Usage**: Implementations identified as having such may cause failures when running in threads or in constrained environments.
|
@ -77,7 +77,7 @@ parameter-sets:
|
|||||||
- SHA2: liboqs
|
- SHA2: liboqs
|
||||||
no-secret-dependent-branching-claimed: true
|
no-secret-dependent-branching-claimed: true
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- name: Rainbow-III-Circumzenithal
|
- name: Rainbow-III-Circumzenithal
|
||||||
claimed-nist-level: 3
|
claimed-nist-level: 3
|
||||||
claimed-security: EUF-CMA
|
claimed-security: EUF-CMA
|
||||||
@ -92,7 +92,7 @@ parameter-sets:
|
|||||||
- SHA2: liboqs
|
- SHA2: liboqs
|
||||||
no-secret-dependent-branching-claimed: true
|
no-secret-dependent-branching-claimed: true
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- name: Rainbow-III-Compressed
|
- name: Rainbow-III-Compressed
|
||||||
claimed-nist-level: 3
|
claimed-nist-level: 3
|
||||||
claimed-security: EUF-CMA
|
claimed-security: EUF-CMA
|
||||||
@ -107,7 +107,7 @@ parameter-sets:
|
|||||||
- SHA2: liboqs
|
- SHA2: liboqs
|
||||||
no-secret-dependent-branching-claimed: true
|
no-secret-dependent-branching-claimed: true
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- name: Rainbow-V-Classic
|
- name: Rainbow-V-Classic
|
||||||
claimed-nist-level: 5
|
claimed-nist-level: 5
|
||||||
claimed-security: EUF-CMA
|
claimed-security: EUF-CMA
|
||||||
@ -122,7 +122,7 @@ parameter-sets:
|
|||||||
- SHA2: liboqs
|
- SHA2: liboqs
|
||||||
no-secret-dependent-branching-claimed: true
|
no-secret-dependent-branching-claimed: true
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- name: Rainbow-V-Circumzenithal
|
- name: Rainbow-V-Circumzenithal
|
||||||
claimed-nist-level: 5
|
claimed-nist-level: 5
|
||||||
claimed-security: EUF-CMA
|
claimed-security: EUF-CMA
|
||||||
@ -137,7 +137,7 @@ parameter-sets:
|
|||||||
- SHA2: liboqs
|
- SHA2: liboqs
|
||||||
no-secret-dependent-branching-claimed: true
|
no-secret-dependent-branching-claimed: true
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
- name: Rainbow-V-Compressed
|
- name: Rainbow-V-Compressed
|
||||||
claimed-nist-level: 5
|
claimed-nist-level: 5
|
||||||
claimed-security: EUF-CMA
|
claimed-security: EUF-CMA
|
||||||
@ -152,4 +152,4 @@ parameter-sets:
|
|||||||
- SHA2: liboqs
|
- SHA2: liboqs
|
||||||
no-secret-dependent-branching-claimed: true
|
no-secret-dependent-branching-claimed: true
|
||||||
no-secret-dependent-branching-checked-by-valgrind: true
|
no-secret-dependent-branching-checked-by-valgrind: true
|
||||||
large-stack-usage: false
|
large-stack-usage: true
|
||||||
|
@ -53,13 +53,15 @@
|
|||||||
|
|
||||||
## SPHINCS+-Haraka-128f-robust implementation characteristics
|
## SPHINCS+-Haraka-128f-robust implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage?‡ |
|
||||||
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|:------------------------:|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:----------------------|
|
||||||
| clean | All | All | None | True | True | False |
|
| clean | All | All | None | True | True | False |
|
||||||
| aesni | x86\_64 | All | AES | True | True | False |
|
| aesni | x86\_64 | All | AES | True | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
|
‡For an explanation of what this denotes, consult the [Explanation of Terms](#explanation-of-terms) section at the end of this file.
|
||||||
|
|
||||||
## SPHINCS+-Haraka-128f-simple implementation characteristics
|
## SPHINCS+-Haraka-128f-simple implementation characteristics
|
||||||
|
|
||||||
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
| Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
||||||
@ -374,3 +376,7 @@ Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
|||||||
| avx2 | x86\_64 | All | AVX2 | True | True | False |
|
| avx2 | x86\_64 | All | AVX2 | True | True | False |
|
||||||
|
|
||||||
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
Are implementations chosen based on runtime CPU feature detection? **Yes**.
|
||||||
|
|
||||||
|
## Explanation of Terms
|
||||||
|
|
||||||
|
- **Large Stack Usage**: Implementations identified as having such may cause failures when running in threads or in constrained environments.
|
@ -13,7 +13,6 @@ import yaml
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import sys
|
import sys
|
||||||
import json
|
import json
|
||||||
import mdformat
|
|
||||||
|
|
||||||
# kats of all algs
|
# kats of all algs
|
||||||
kats = {}
|
kats = {}
|
||||||
@ -471,16 +470,6 @@ def process_families(instructions, basedir, with_kat, with_generator):
|
|||||||
scheme,
|
scheme,
|
||||||
)
|
)
|
||||||
|
|
||||||
generator(
|
|
||||||
os.path.join(os.environ['LIBOQS_DIR'], 'docs', 'algorithms', family['type'], '{}.md'.format(family['name'])),
|
|
||||||
os.path.join('docs', 'algorithms', family['type'], '{}.md'.format(family['name'])),
|
|
||||||
family,
|
|
||||||
None,
|
|
||||||
)
|
|
||||||
mdformat.file(os.path.join(os.environ['LIBOQS_DIR'], 'docs', 'algorithms', family['type'], '{}.md'.format(family['name'])),
|
|
||||||
extensions={"tables"})
|
|
||||||
|
|
||||||
|
|
||||||
def copy_from_upstream():
|
def copy_from_upstream():
|
||||||
for t in ["kem", "sig"]:
|
for t in ["kem", "sig"]:
|
||||||
with open(os.path.join(os.environ['LIBOQS_DIR'], 'tests', 'KATs', t, 'kats.json'), 'r') as fp:
|
with open(os.path.join(os.environ['LIBOQS_DIR'], 'tests', 'KATs', t, 'kats.json'), 'r') as fp:
|
||||||
@ -508,7 +497,7 @@ def copy_from_upstream():
|
|||||||
if not keepdata:
|
if not keepdata:
|
||||||
shutil.rmtree('repos')
|
shutil.rmtree('repos')
|
||||||
|
|
||||||
#print("Remember to update $LIBOQS_DIR/docs/algorithms/<family>/<scheme>.md")
|
#print("Remember to update the docs by running scripts/copy_from_upstream/update_pqclean_alg_docs.py -> scripts/format_docs_yaml.py -> scripts/update_docs_from_yaml.py")
|
||||||
|
|
||||||
|
|
||||||
def verify_from_upstream():
|
def verify_from_upstream():
|
||||||
|
@ -1,26 +0,0 @@
|
|||||||
Classic McEliece
|
|
||||||
================
|
|
||||||
|
|
||||||
- **Algorithm type**: key encapsulation mechanism
|
|
||||||
- **Main cryptographic assumption**: Niederreiter's dual version of McEliece's public key encryption using binary Goppa codes
|
|
||||||
- **Scheme authors**: Daniel J. Bernstein, Tung Chou, Tanja Lange, Ingo von Maurich, Rafael Misoczki, Ruben Niederhagen, Edoardo Persichetti, Christiane Peters, Peter Schwabe, Nicolas Sendrier, Jakub Szefer, Wen Wang
|
|
||||||
- **Authors' website**: https://classic.mceliece.org
|
|
||||||
- **Version**: SUPERCOP-20191221
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
--------------
|
|
||||||
|
|
||||||
- **Source of implementation**: SUPERCOP-20191221, "vec" and "avx" implementations
|
|
||||||
- **Implementation version**: {{ schemes[0]['git_url'] }}, {{ schemes[0]['git_branch'] }}, {{ schemes[0]['git_commit'] }}
|
|
||||||
- **License**: Public domain
|
|
||||||
- **Constant-time**: Yes
|
|
||||||
- **Optimizations**: Portable C {%- if all_required_flags|length > 0 %} with {% for flag in all_required_flags|sort -%}{{ flag|upper }}{%- if not loop.last %}, {% endif -%}{%- endfor %} instructions (if available at run-time){%- endif %}
|
|
||||||
|
|
||||||
Parameter sets
|
|
||||||
--------------
|
|
||||||
|
|
||||||
| Parameter set | Security model | Claimed NIST security level | Public key size (bytes) | Secret key size (bytes) | Ciphertext size (bytes) | Shared secret size (bytes) |
|
|
||||||
|---------------------------|----------------|-----------------------------|-------------------------|-------------------------|-------------------------|----------------------------|
|
|
||||||
{% for scheme in schemes -%}
|
|
||||||
| {{ scheme['pretty_name_full'] }} | {{ scheme['metadata']['claimed-security'] }} | {{ scheme['metadata']['claimed-nist-level'] }} | {{ scheme['metadata']['length-public-key'] }} | {{ scheme['metadata']['length-secret-key'] }} | {{ scheme['metadata']['length-ciphertext'] }} | {{ scheme['metadata']['length-shared-secret'] }} |
|
|
||||||
{% endfor -%}
|
|
@ -1,26 +0,0 @@
|
|||||||
HQC
|
|
||||||
===
|
|
||||||
|
|
||||||
- **Algorithm type**: key encapsulation mechanism
|
|
||||||
- **Main cryptographic assumption**: Syndrome decoding of structure codes (Hamming Quasi-Cyclic)
|
|
||||||
- **Scheme authors**: Carlos Aguilar Melchor, Nicolas Aragon, Slim Bettaieb, Loïc Bidoux, Olivier Blazy, Jurjen Bos, Jean-Christophe Deneuville, Arnaud Dion, Philippe Gaborit, Jérôme Lacan, Edoardo Persichetti, Jean-Marc Robert, Rascal Véron, Gilles Zémor
|
|
||||||
- **Authors' website**: http://pqc-hqc.org
|
|
||||||
- **Version**: 2020/10/01
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
--------------
|
|
||||||
|
|
||||||
- **Source of implementation**: hqc-submission_2020-10-01 via https://github.com/jschanck/package-pqclean/tree/c9181076/hqc
|
|
||||||
- **Implementation version**: {{ schemes[0]['git_url'] }}, {{ schemes[0]['git_branch'] }}, {{ schemes[0]['git_commit'] }}
|
|
||||||
- **License**: Public domain
|
|
||||||
- **Constant-time**: Yes
|
|
||||||
- **Optimizations**: Portable C {%- if all_required_flags|length > 0 %} with {% for flag in all_required_flags|sort -%}{{ flag|upper }}{%- if not loop.last %}, {% endif -%}{%- endfor %} instructions (if available at run-time){%- endif %}
|
|
||||||
|
|
||||||
Parameter sets
|
|
||||||
--------------
|
|
||||||
|
|
||||||
| Parameter set | Security model | Claimed NIST security level | Public key size (bytes) | Secret key size (bytes) | Ciphertext size (bytes) | Shared secret size (bytes) |
|
|
||||||
|---------------------------|----------------|-----------------------------|-------------------------|-------------------------|-------------------------|----------------------------|
|
|
||||||
{% for scheme in schemes -%}
|
|
||||||
| {{ scheme['pretty_name_full'] }} | {{ scheme['metadata']['claimed-security'] }} | {{ scheme['metadata']['claimed-nist-level'] }} | {{ scheme['metadata']['length-public-key'] }} | {{ scheme['metadata']['length-secret-key'] }} | {{ scheme['metadata']['length-ciphertext'] }} | {{ scheme['metadata']['length-shared-secret'] }} |
|
|
||||||
{% endfor -%}
|
|
@ -1,26 +0,0 @@
|
|||||||
CRYSTALS-Kyber
|
|
||||||
==============
|
|
||||||
|
|
||||||
- **Algorithm type**: key encapsulation mechanism
|
|
||||||
- **Main cryptographic assumption**: module learning with errors (MLWE)
|
|
||||||
- **Scheme authors**: Roberto Avanzi, Joppe Bos, Léo Ducas, Eike Kiltz, Tancrède Lepoint, Vadim Lyubashevsky, John M. Schanck, Peter Schwabe, Gregor Seiler, Damien Stehle
|
|
||||||
- **Authors' website**: https://pq-crystals.org/kyber
|
|
||||||
- **Version**: NIST Round 3 submission
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
--------------
|
|
||||||
|
|
||||||
- **Source of implementation**: https://github.com/pq-crystals/kyber
|
|
||||||
- **Implementation version**: {{ schemes[0]['git_url'] }}, {{ schemes[0]['git_branch'] }}, {{ schemes[0]['git_commit'] }}
|
|
||||||
- **License**: Public domain
|
|
||||||
- **Constant-time**: Yes
|
|
||||||
- **Optimizations**: Portable C {%- if all_required_flags|length > 0 %} with {% for flag in all_required_flags|sort -%}{{ flag|upper }}{%- if not loop.last %}, {% endif -%}{%- endfor %} instructions (if available at run-time){%- endif %}
|
|
||||||
|
|
||||||
Parameter sets
|
|
||||||
--------------
|
|
||||||
|
|
||||||
| Parameter set | Security model | Claimed NIST security level | Public key size (bytes) | Secret key size (bytes) | Ciphertext size (bytes) | Shared secret size (bytes) |
|
|
||||||
|---------------------------|----------------|-----------------------------|-------------------------|-------------------------|-------------------------|----------------------------|
|
|
||||||
{% for scheme in schemes -%}
|
|
||||||
| {{ scheme['pretty_name_full'] }} | {{ scheme['metadata']['claimed-security'] }} | {{ scheme['metadata']['claimed-nist-level'] }} | {{ scheme['metadata']['length-public-key'] }} | {{ scheme['metadata']['length-secret-key'] }} | {{ scheme['metadata']['length-ciphertext'] }} | {{ scheme['metadata']['length-shared-secret'] }} |
|
|
||||||
{% endfor -%}
|
|
@ -1,26 +0,0 @@
|
|||||||
NTRU
|
|
||||||
====
|
|
||||||
|
|
||||||
- **Algorithm type**: key encapsulation mechanism
|
|
||||||
- **Main cryptographic assumption**: NTRU
|
|
||||||
- **Scheme authors**: John M. Schanck, Cong Chen, Oussama Danba, Jeffrey Hoffstein, Andreas Hülsing, Joost Rijneveld, Peter Schwabe, William Whyte, Zhenfei Zhang
|
|
||||||
- **Authors' website**: https://ntru.org
|
|
||||||
- **Version**: NIST Round 3 submission
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
--------------
|
|
||||||
|
|
||||||
- **Source of implementation**: https://github.com/jschanck/ntru/tree/a43a4457
|
|
||||||
- **Implementation version**: {{ schemes[0]['git_url'] }}, {{ schemes[0]['git_branch'] }}, {{ schemes[0]['git_commit'] }}
|
|
||||||
- **License**: Public domain
|
|
||||||
- **Constant-time**: Yes
|
|
||||||
- **Optimizations**: Portable C {%- if all_required_flags|length > 0 %} with {% for flag in all_required_flags|sort -%}{{ flag|upper }}{%- if not loop.last %}, {% endif -%}{%- endfor %} instructions (if available at run-time){%- endif %}
|
|
||||||
|
|
||||||
Parameter sets
|
|
||||||
--------------
|
|
||||||
|
|
||||||
| Parameter set | Security model | Claimed NIST security level | Public key size (bytes) | Secret key size (bytes) | Ciphertext size (bytes) | Shared secret size (bytes) |
|
|
||||||
|---------------------------|----------------|-----------------------------|-------------------------|-------------------------|-------------------------|----------------------------|
|
|
||||||
{% for scheme in schemes -%}
|
|
||||||
| {{ scheme['pretty_name_full'] }} | {{ scheme['metadata']['claimed-security'] }} | {{ scheme['metadata']['claimed-nist-level'] }} | {{ scheme['metadata']['length-public-key'] }} | {{ scheme['metadata']['length-secret-key'] }} | {{ scheme['metadata']['length-ciphertext'] }} | {{ scheme['metadata']['length-shared-secret'] }} |
|
|
||||||
{% endfor -%}
|
|
@ -1,26 +0,0 @@
|
|||||||
NTRU-Prime
|
|
||||||
==========
|
|
||||||
|
|
||||||
- **Algorithm type**: key encapsulation mechanism
|
|
||||||
- **Main cryptographic assumption**: NTRU
|
|
||||||
- **Scheme authors**: Daniel J. Bernstein, Billy Bob Brumley, Ming-Shing Chen, Chitchanok Chuengsatiansup, Tanja Lange, Adrian Marotzke, Bo-Yuan Peng, Nicola Tuveri, Christine van Vredendaal, Bo-Yin Yang
|
|
||||||
- **Authors' website**: https://ntruprime.cr.yp.to
|
|
||||||
- **Version**: supercop-20200826
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
--------------
|
|
||||||
|
|
||||||
- **Source of implementation**: SUPERCOP-20200826
|
|
||||||
- **Implementation version**: {{ schemes[0]['git_url'] }}, {{ schemes[0]['git_branch'] }}, {{ schemes[0]['git_commit'] }}
|
|
||||||
- **License**: Public domain
|
|
||||||
- **Constant-time**: Yes
|
|
||||||
- **Optimizations**: Portable C {%- if all_required_flags|length > 0 %} with {% for flag in all_required_flags|sort -%}{{ flag|upper }}{%- if not loop.last %}, {% endif -%}{%- endfor %} instructions (if available at run-time){%- endif %}
|
|
||||||
|
|
||||||
Parameter sets
|
|
||||||
--------------
|
|
||||||
|
|
||||||
| Parameter set | Security model | Claimed NIST security level | Public key size (bytes) | Secret key size (bytes) | Ciphertext size (bytes) | Shared secret size (bytes) |
|
|
||||||
|---------------------------|----------------|-----------------------------|-------------------------|-------------------------|-------------------------|----------------------------|
|
|
||||||
{% for scheme in schemes -%}
|
|
||||||
| {{ scheme['pretty_name_full'] }} | {{ scheme['metadata']['claimed-security'] }} | {{ scheme['metadata']['claimed-nist-level'] }} | {{ scheme['metadata']['length-public-key'] }} | {{ scheme['metadata']['length-secret-key'] }} | {{ scheme['metadata']['length-ciphertext'] }} | {{ scheme['metadata']['length-shared-secret'] }} |
|
|
||||||
{% endfor -%}
|
|
@ -1,26 +0,0 @@
|
|||||||
SABER
|
|
||||||
=====
|
|
||||||
|
|
||||||
- **Algorithm type**: key encapsulation mechanism
|
|
||||||
- **Main cryptographic assumption**: module learning with rounding
|
|
||||||
- **Scheme authors**: Jan-Pieter D'Anvers, Angshuman Karmakar, Sujoy Sinha Roy, Frederic Vercauteren
|
|
||||||
- **Authors' website**: https://www.esat.kuleuven.be/cosic/pqcrypto/saber/
|
|
||||||
- **Version**: NIST Round 3 submission
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
--------------
|
|
||||||
|
|
||||||
- **Source of implementation**: https://github.com/KULeuven-COSIC/SABER/tree/509cc5ec3a7e12a751ccdd2ef5bd6e54e00bd350 via https://github.com/jschanck/package-pqclean/tree/1ae84c3c/saber
|
|
||||||
- **Implementation version**: {{ schemes[0]['git_url'] }}, {{ schemes[0]['git_branch'] }}, {{ schemes[0]['git_commit'] }}
|
|
||||||
- **License**: Public domain
|
|
||||||
- **Constant-time**: Yes
|
|
||||||
- **Optimizations**: Portable C {%- if all_required_flags|length > 0 %} with {% for flag in all_required_flags|sort -%}{{ flag|upper }}{%- if not loop.last %}, {% endif -%}{%- endfor %} instructions (if available at run-time){%- endif %}
|
|
||||||
|
|
||||||
Parameter sets
|
|
||||||
--------------
|
|
||||||
|
|
||||||
| Parameter set | Security model | Claimed NIST security level | Public key size (bytes) | Secret key size (bytes) | Ciphertext size (bytes) | Shared secret size (bytes) |
|
|
||||||
|---------------------------|----------------|-----------------------------|-------------------------|-------------------------|-------------------------|----------------------------|
|
|
||||||
{% for scheme in schemes -%}
|
|
||||||
| {{ scheme['pretty_name_full'] }} | {{ scheme['metadata']['claimed-security'] }} | {{ scheme['metadata']['claimed-nist-level'] }} | {{ scheme['metadata']['length-public-key'] }} | {{ scheme['metadata']['length-secret-key'] }} | {{ scheme['metadata']['length-ciphertext'] }} | {{ scheme['metadata']['length-shared-secret'] }} |
|
|
||||||
{% endfor -%}
|
|
@ -1,26 +0,0 @@
|
|||||||
CRYSTALS-Dilithium
|
|
||||||
==================
|
|
||||||
|
|
||||||
- **Algorithm type**: signature
|
|
||||||
- **Main cryptographic assumption**: hardness of lattice problems over module lattices.
|
|
||||||
- **Scheme authors**: Vadim Lyubashevsky, Leo Ducas, Eike Kiltz, Tancrede Lepoint, Peter Schwabe, Gregor Seiler, Damien Stehle
|
|
||||||
- **Authors' website**: https://pq-crystals.org/dilithium/
|
|
||||||
- **Version**: 3.1
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
--------------
|
|
||||||
|
|
||||||
- **Source of implementation**: https://github.com/pq-crystals/dilithium
|
|
||||||
- **Implementation version**: {{ schemes[0]['git_url'] }}, {{ schemes[0]['git_branch'] }}, {{ schemes[0]['git_commit'] }}
|
|
||||||
- **License**: public domain
|
|
||||||
- **Constant-time**: Yes
|
|
||||||
- **Optimizations**: Portable C {%- if all_required_flags|length > 0 %} with {% for flag in all_required_flags|sort -%}{{ flag|upper }}{%- if not loop.last %}, {% endif -%}{%- endfor %} instructions (if available at run-time){%- endif %}
|
|
||||||
|
|
||||||
Parameter sets
|
|
||||||
--------------
|
|
||||||
|
|
||||||
| Parameter set | Security model | Claimed NIST security level | Public key size (bytes) | Secret key size (bytes) | Signature size (bytes) |
|
|
||||||
|---------------------|----------------|-----------------------------|-------------------------|-------------------------|------------------------|
|
|
||||||
{% for scheme in schemes -%}
|
|
||||||
| {{ scheme['pretty_name_full'] }} | EUF-CMA | {{ scheme['metadata']['claimed-nist-level'] }} | {{ scheme['metadata']['length-public-key'] }} | {{ scheme['metadata']['length-secret-key'] }} | {{ scheme['metadata']['length-signature'] }} |
|
|
||||||
{% endfor -%}
|
|
@ -1,26 +0,0 @@
|
|||||||
Falcon
|
|
||||||
======
|
|
||||||
|
|
||||||
- **Algorithm type**: signature
|
|
||||||
- **Main cryptographic assumption**: hardness of NTRU lattice problems
|
|
||||||
- **Scheme authors**: Thomas Prest, Pierre-Alain Fouque, Jeffrey Hoffstein, Paul Kirchner, Vadim Lyubashevsky, Thomas Pornin, Thomas Ricosset, Gregor Seiler, William Whyte, Zhenfei Zhang
|
|
||||||
- **Authors' website**: https://falcon-sign.info
|
|
||||||
- **Version**: 20201018
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
--------------
|
|
||||||
|
|
||||||
- **Source of implementation**: supercop-20201018 via https://github.com/jschanck/package-pqclean/tree/cea1fa5a/falcon
|
|
||||||
- **Implementation version**: {{ schemes[0]['git_url'] }}, {{ schemes[0]['git_branch'] }}, {{ schemes[0]['git_commit'] }}
|
|
||||||
- **License**: CC0 1.0 Universal
|
|
||||||
- **Constant-time**: Yes
|
|
||||||
- **Optimizations**: Portable C {%- if all_required_flags|length > 0 %} with {% for flag in all_required_flags|sort -%}{{ flag|upper }}{%- if not loop.last %}, {% endif -%}{%- endfor %} instructions (if available at run-time){%- endif %}
|
|
||||||
|
|
||||||
Parameter sets
|
|
||||||
--------------
|
|
||||||
|
|
||||||
| Parameter set | Security model | Claimed NIST security level | Public key size (bytes) | Secret key size (bytes) | Signature size (bytes) |
|
|
||||||
|---------------------|----------------|-----------------------------|-------------------------|-------------------------|------------------------|
|
|
||||||
{% for scheme in schemes -%}
|
|
||||||
| {{ scheme['pretty_name_full'] }} | EUF-CMA | {{ scheme['metadata']['claimed-nist-level'] }} | {{ scheme['metadata']['length-public-key'] }} | {{ scheme['metadata']['length-secret-key'] }} | {{ scheme['metadata']['length-signature'] }} |
|
|
||||||
{% endfor -%}
|
|
@ -1,30 +0,0 @@
|
|||||||
Rainbow
|
|
||||||
=======
|
|
||||||
|
|
||||||
- **Algorithm type**: signature
|
|
||||||
- **Main cryptographic assumption**: multivariable polynomials, unbalanced oil and vinegar
|
|
||||||
- **Scheme authors**: Jintai Ding, Ming-Shing Chen, Albrecht Petzoldt, Dieter Schmidt, Bo-Yin Yang
|
|
||||||
- **Version**: NIST Round 3 submission
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
--------------
|
|
||||||
|
|
||||||
- **Source of implementation**: https://github.com/fast-crypto-lab/rainbow-submission-round2/commit/173ada0e077e1b9dbd8e4a78994f87acc0c92263
|
|
||||||
- **Implementation version**: {{ schemes[0]['git_url'] }}, {{ schemes[0]['git_branch'] }}, {{ schemes[0]['git_commit'] }}
|
|
||||||
- **License**: CC0 1.0
|
|
||||||
- **Constant-time**: Yes
|
|
||||||
- **Optimizations**: Portable C {%- if all_required_flags|length > 0 %} with {% for flag in all_required_flags|sort -%}{{ flag|upper }}{%- if not loop.last %}, {% endif -%}{%- endfor %} instructions (if available at run-time){%- endif %}
|
|
||||||
|
|
||||||
Parameter sets
|
|
||||||
--------------
|
|
||||||
|
|
||||||
| Parameter set | Security model | Claimed NIST security level | Public key size (bytes) | Secret key size (bytes) | Signature size (bytes) |
|
|
||||||
|---------------------|----------------|-----------------------------|-------------------------|-------------------------|------------------------|
|
|
||||||
{% for scheme in schemes -%}
|
|
||||||
| {{ scheme['pretty_name_full'] }} | EUF-CMA | {{ scheme['metadata']['claimed-nist-level'] }} | {{ scheme['metadata']['length-public-key'] }} | {{ scheme['metadata']['length-secret-key'] }} | {{ scheme['metadata']['length-signature'] }} |
|
|
||||||
{% endfor -%}
|
|
||||||
|
|
||||||
Security considerations
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
In October 2020, Beullens announced [improved cryptanalysis of Rainbow](https://eprint.iacr.org/2020/1343.pdf) that somewhat reduces the security of the Round 2 and Round 3 parameters. [As of October 28, 2020](https://groups.google.com/a/list.nist.gov/g/pqc-forum/c/70We3SNi7Ss), the scheme authors have acknowledged the attack and are preparing a response.
|
|
@ -1,26 +0,0 @@
|
|||||||
SPHINCS+
|
|
||||||
========
|
|
||||||
|
|
||||||
- **Algorithm type**: signature
|
|
||||||
- **Main cryptographic assumption**: hash-based signatures
|
|
||||||
- **Scheme authors**: Andreas Hulsing, Daniel J. Bernstein, Christoph Dobraunig, Maria Eichlseder, Scott Fluhrer, Stefan-Lukas Gazdag, Panos Kampanakis, Stefan Kolbl, Tanja Lange, Martin M Lauridsen, Florian Mendel, Ruben Niederhagen, Christian Rechberger, Joost Rijneveld, Peter Schwabe, Jean-Philippe Aumasson
|
|
||||||
- **Authors' website**: https://sphincs.org/
|
|
||||||
- **Version**: NIST Round 2 submission
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
--------------
|
|
||||||
|
|
||||||
- **Source of implementation**: https://github.com/sphincs/sphincsplus
|
|
||||||
- **Implementation version**: {{ schemes[0]['git_url'] }}, {{ schemes[0]['git_branch'] }}, {{ schemes[0]['git_commit'] }}
|
|
||||||
- **License**: CC0 1.0 Universal
|
|
||||||
- **Constant-time**: Yes
|
|
||||||
- **Optimizations**: Portable C {%- if all_required_flags|length > 0 %} with {% for flag in all_required_flags|sort -%}{{ flag|upper }}{%- if not loop.last %}, {% endif -%}{%- endfor %} instructions (if available at run-time){%- endif %}
|
|
||||||
|
|
||||||
Parameter sets
|
|
||||||
--------------
|
|
||||||
|
|
||||||
| Parameter set | Security model | Claimed NIST security level | Public key size (bytes) | Secret key size (bytes) | Signature size (bytes) |
|
|
||||||
|---------------------|----------------|-----------------------------|-------------------------|-------------------------|------------------------|
|
|
||||||
{% for scheme in schemes -%}
|
|
||||||
| {{ scheme['pretty_name_full'] }} | EUF-CMA | {{ scheme['metadata']['claimed-nist-level'] }} | {{ scheme['metadata']['length-public-key'] }} | {{ scheme['metadata']['length-secret-key'] }} | {{ scheme['metadata']['length-signature'] }} |
|
|
||||||
{% endfor -%}
|
|
@ -3,8 +3,6 @@ importlib-metadata==3.7.0
|
|||||||
Jinja2==2.11.3
|
Jinja2==2.11.3
|
||||||
markdown-it-py==0.6.2
|
markdown-it-py==0.6.2
|
||||||
MarkupSafe==1.1.1
|
MarkupSafe==1.1.1
|
||||||
mdformat==0.5.7
|
|
||||||
mdformat-tables==0.2.1
|
|
||||||
mdit-py-plugins==0.2.5
|
mdit-py-plugins==0.2.5
|
||||||
PyYAML==5.4.1
|
PyYAML==5.4.1
|
||||||
typing-extensions==3.7.4.3
|
typing-extensions==3.7.4.3
|
||||||
|
@ -7,12 +7,6 @@ import tabulate
|
|||||||
import yaml
|
import yaml
|
||||||
import os
|
import os
|
||||||
|
|
||||||
# TODO: Add explanatory notes at the end of each markdown file with
|
|
||||||
# respect to the following keys:
|
|
||||||
# - no-secret-dependent-branching-claimed
|
|
||||||
# - no-secret-dependent-branching-checked-by-valgrind
|
|
||||||
# - large-stack-usage
|
|
||||||
|
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument("--liboqs-root", default=".")
|
parser.add_argument("--liboqs-root", default=".")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
@ -21,11 +15,21 @@ def load_yaml(filename, encoding='utf-8'):
|
|||||||
with open(filename, mode='r', encoding=encoding) as fh:
|
with open(filename, mode='r', encoding=encoding) as fh:
|
||||||
return yaml.safe_load(fh.read())
|
return yaml.safe_load(fh.read())
|
||||||
|
|
||||||
# Generate the KEM markdown documentation.
|
def file_get_contents(filename, encoding=None):
|
||||||
for kem_yaml_path in glob.glob(os.path.join(args.liboqs_root, 'docs', 'algorithms', 'kem', '*.yml')):
|
with open(filename, mode='r', encoding=encoding) as fh:
|
||||||
|
return fh.read()
|
||||||
|
|
||||||
|
kem_yamls = []
|
||||||
|
sig_yamls = []
|
||||||
|
|
||||||
|
########################################
|
||||||
|
# Update the KEM markdown documentation.
|
||||||
|
########################################
|
||||||
|
for kem_yaml_path in sorted(glob.glob(os.path.join(args.liboqs_root, 'docs', 'algorithms', 'kem', '*.yml'))):
|
||||||
kem_yaml = load_yaml(kem_yaml_path)
|
kem_yaml = load_yaml(kem_yaml_path)
|
||||||
|
kem_yamls.append(kem_yaml)
|
||||||
kem_name = os.path.splitext(os.path.basename(kem_yaml_path))[0]
|
kem_name = os.path.splitext(os.path.basename(kem_yaml_path))[0]
|
||||||
print('Updating {}.md'.format(kem_name))
|
print('Updating {}/{}.md'.format(os.path.dirname(kem_yaml_path), kem_name))
|
||||||
|
|
||||||
with open(os.path.join(args.liboqs_root, 'docs', 'algorithms', 'kem', '{}.md'.format(kem_name)), mode='w', encoding='utf-8') as out_md:
|
with open(os.path.join(args.liboqs_root, 'docs', 'algorithms', 'kem', '{}.md'.format(kem_name)), mode='w', encoding='utf-8') as out_md:
|
||||||
out_md.write('# {}\n\n'.format(kem_yaml['name']))
|
out_md.write('# {}\n\n'.format(kem_yaml['name']))
|
||||||
@ -67,15 +71,20 @@ for kem_yaml_path in glob.glob(os.path.join(args.liboqs_root, 'docs', 'algorithm
|
|||||||
out_md.write(tabulate.tabulate(table, tablefmt="pipe", headers="firstrow", colalign=("center",)))
|
out_md.write(tabulate.tabulate(table, tablefmt="pipe", headers="firstrow", colalign=("center",)))
|
||||||
out_md.write('\n')
|
out_md.write('\n')
|
||||||
|
|
||||||
for parameter_set in kem_yaml['parameter-sets']:
|
for index, parameter_set in enumerate(kem_yaml['parameter-sets']):
|
||||||
out_md.write('\n## {} implementation characteristics\n\n'.format(parameter_set['name']))
|
out_md.write('\n## {} implementation characteristics\n\n'.format(parameter_set['name']))
|
||||||
table = [['Identifier in upstream',
|
table_header = ['Identifier in upstream',
|
||||||
'Supported architecture(s)',
|
'Supported architecture(s)',
|
||||||
'Supported operating system(s)',
|
'Supported operating system(s)',
|
||||||
'CPU extension(s) used',
|
'CPU extension(s) used',
|
||||||
'No branching-on-secrets claimed?',
|
'No branching-on-secrets claimed?',
|
||||||
'No branching-on-secrets checked by valgrind?',
|
'No branching-on-secrets checked by valgrind?']
|
||||||
'Large stack usage?']]
|
if index == 0:
|
||||||
|
table_header.append('Large stack usage?‡')
|
||||||
|
else:
|
||||||
|
table_header.append('Large stack usage?')
|
||||||
|
|
||||||
|
table = [table_header]
|
||||||
for impl in parameter_set['implementations']:
|
for impl in parameter_set['implementations']:
|
||||||
if impl['supported-platforms'] == 'all':
|
if impl['supported-platforms'] == 'all':
|
||||||
table.append([impl['upstream-id'].replace('_', '\_'),
|
table.append([impl['upstream-id'].replace('_', '\_'),
|
||||||
@ -100,14 +109,26 @@ for kem_yaml_path in glob.glob(os.path.join(args.liboqs_root, 'docs', 'algorithm
|
|||||||
impl['no-secret-dependent-branching-claimed'],
|
impl['no-secret-dependent-branching-claimed'],
|
||||||
impl['no-secret-dependent-branching-checked-by-valgrind'],
|
impl['no-secret-dependent-branching-checked-by-valgrind'],
|
||||||
impl['large-stack-usage']])
|
impl['large-stack-usage']])
|
||||||
out_md.write(tabulate.tabulate(table, tablefmt="pipe", headers="firstrow", colalign=("center",)))
|
|
||||||
out_md.write('\n\nAre implementations chosen based on runtime CPU feature detection? **{}**.\n'.format('Yes' if parameter_set['implementations-switch-on-runtime-cpu-features'] else 'No'))
|
|
||||||
|
|
||||||
# Generate the signature markdown documentation.
|
out_md.write(tabulate.tabulate(table, tablefmt="pipe", headers="firstrow", colalign=("center",)))
|
||||||
for sig_yaml_path in glob.glob(os.path.join(args.liboqs_root, 'docs', 'algorithms', 'sig', '*.yml')):
|
out_md.write('\n')
|
||||||
|
|
||||||
|
if 'implementations-switch-on-runtime-cpu-features' in parameter_set:
|
||||||
|
out_md.write('\nAre implementations chosen based on runtime CPU feature detection? **{}**.\n'.format('Yes' if parameter_set['implementations-switch-on-runtime-cpu-features'] else 'No'))
|
||||||
|
if index == 0:
|
||||||
|
out_md.write('\n ‡For an explanation of what this denotes, consult the [Explanation of Terms](#explanation-of-terms) section at the end of this file.\n')
|
||||||
|
|
||||||
|
out_md.write('\n## Explanation of Terms\n\n')
|
||||||
|
out_md.write('- **Large Stack Usage**: Implementations identified as having such may cause failures when running in threads or in constrained environments.')
|
||||||
|
|
||||||
|
##############################################
|
||||||
|
# Update the signature markdown documentation.
|
||||||
|
##############################################
|
||||||
|
for sig_yaml_path in sorted(glob.glob(os.path.join(args.liboqs_root, 'docs', 'algorithms', 'sig', '*.yml'))):
|
||||||
sig_yaml = load_yaml(sig_yaml_path)
|
sig_yaml = load_yaml(sig_yaml_path)
|
||||||
|
sig_yamls.append(sig_yaml)
|
||||||
sig_name = os.path.splitext(os.path.basename(sig_yaml_path))[0]
|
sig_name = os.path.splitext(os.path.basename(sig_yaml_path))[0]
|
||||||
print('Updating {}.md'.format(sig_name))
|
print('Updating {}/{}.md'.format(os.path.dirname(sig_yaml_path), sig_name))
|
||||||
|
|
||||||
with open(os.path.join(args.liboqs_root, 'docs', 'algorithms', 'sig', '{}.md'.format(sig_name)), mode='w', encoding='utf-8') as out_md:
|
with open(os.path.join(args.liboqs_root, 'docs', 'algorithms', 'sig', '{}.md'.format(sig_name)), mode='w', encoding='utf-8') as out_md:
|
||||||
out_md.write('# {}\n\n'.format(sig_yaml['name']))
|
out_md.write('# {}\n\n'.format(sig_yaml['name']))
|
||||||
@ -147,15 +168,20 @@ for sig_yaml_path in glob.glob(os.path.join(args.liboqs_root, 'docs', 'algorithm
|
|||||||
out_md.write(tabulate.tabulate(table, tablefmt="pipe", headers="firstrow", colalign=("center",)))
|
out_md.write(tabulate.tabulate(table, tablefmt="pipe", headers="firstrow", colalign=("center",)))
|
||||||
out_md.write('\n')
|
out_md.write('\n')
|
||||||
|
|
||||||
for parameter_set in sig_yaml['parameter-sets']:
|
for index, parameter_set in enumerate(sig_yaml['parameter-sets']):
|
||||||
out_md.write('\n## {} implementation characteristics\n\n'.format(parameter_set['name'].replace('_', '\_')))
|
out_md.write('\n## {} implementation characteristics\n\n'.format(parameter_set['name'].replace('_', '\_')))
|
||||||
table = [['Identifier in upstream',
|
table_header = ['Identifier in upstream',
|
||||||
'Supported architecture(s)',
|
'Supported architecture(s)',
|
||||||
'Supported operating system(s)',
|
'Supported operating system(s)',
|
||||||
'CPU extension(s) used',
|
'CPU extension(s) used',
|
||||||
'No branching-on-secrets claimed?',
|
'No branching-on-secrets claimed?',
|
||||||
'No branching-on-secrets checked by valgrind?',
|
'No branching-on-secrets checked by valgrind?']
|
||||||
'Large stack usage?']]
|
if index == 0:
|
||||||
|
table_header.append('Large stack usage?‡')
|
||||||
|
else:
|
||||||
|
table_header.append('Large stack usage?')
|
||||||
|
|
||||||
|
table = [table_header]
|
||||||
for impl in parameter_set['implementations']:
|
for impl in parameter_set['implementations']:
|
||||||
if impl['supported-platforms'] == 'all':
|
if impl['supported-platforms'] == 'all':
|
||||||
table.append([impl['upstream-id'].replace('_', '\_'),
|
table.append([impl['upstream-id'].replace('_', '\_'),
|
||||||
@ -183,7 +209,91 @@ for sig_yaml_path in glob.glob(os.path.join(args.liboqs_root, 'docs', 'algorithm
|
|||||||
impl['no-secret-dependent-branching-claimed'],
|
impl['no-secret-dependent-branching-claimed'],
|
||||||
impl['no-secret-dependent-branching-checked-by-valgrind'],
|
impl['no-secret-dependent-branching-checked-by-valgrind'],
|
||||||
impl['large-stack-usage']])
|
impl['large-stack-usage']])
|
||||||
|
|
||||||
out_md.write(tabulate.tabulate(table, tablefmt="pipe", headers="firstrow", colalign=("center",)))
|
out_md.write(tabulate.tabulate(table, tablefmt="pipe", headers="firstrow", colalign=("center",)))
|
||||||
out_md.write('\n')
|
out_md.write('\n')
|
||||||
|
|
||||||
if 'implementations-switch-on-runtime-cpu-features' in parameter_set:
|
if 'implementations-switch-on-runtime-cpu-features' in parameter_set:
|
||||||
out_md.write('\nAre implementations chosen based on runtime CPU feature detection? **{}**.\n'.format('Yes' if parameter_set['implementations-switch-on-runtime-cpu-features'] else 'No'))
|
out_md.write('\nAre implementations chosen based on runtime CPU feature detection? **{}**.\n'.format('Yes' if parameter_set['implementations-switch-on-runtime-cpu-features'] else 'No'))
|
||||||
|
if index == 0:
|
||||||
|
out_md.write('\n ‡For an explanation of what this denotes, consult the [Explanation of Terms](#explanation-of-terms) section at the end of this file.\n')
|
||||||
|
|
||||||
|
out_md.write('\n## Explanation of Terms\n\n')
|
||||||
|
out_md.write('- **Large Stack Usage**: Implementations identified as having such may cause failures when running in threads or in constrained environments.')
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Update the README.
|
||||||
|
####################
|
||||||
|
print("Updating README.md")
|
||||||
|
|
||||||
|
readme_path = os.path.join(args.liboqs_root, 'README.md')
|
||||||
|
start_identifier_tmpl = '<!--- OQS_TEMPLATE_FRAGMENT_LIST_{}_START -->'
|
||||||
|
end_identifier_tmpl = '<!--- OQS_TEMPLATE_FRAGMENT_LIST_{}_END -->'
|
||||||
|
|
||||||
|
# KEMS
|
||||||
|
readme_contents = file_get_contents(readme_path)
|
||||||
|
|
||||||
|
identifier_start = start_identifier_tmpl.format('KEXS')
|
||||||
|
identifier_end = end_identifier_tmpl.format('KEXS')
|
||||||
|
|
||||||
|
preamble = readme_contents[:readme_contents.find(identifier_start)]
|
||||||
|
postamble = readme_contents[readme_contents.find(identifier_end):]
|
||||||
|
|
||||||
|
with open(readme_path, mode='w', encoding='utf-8') as readme:
|
||||||
|
readme.write(preamble + identifier_start + '\n')
|
||||||
|
|
||||||
|
for kem_yaml in kem_yamls:
|
||||||
|
parameter_sets = kem_yaml['parameter-sets']
|
||||||
|
if any(impl['large-stack-usage'] for impl in parameter_sets[0]['implementations']):
|
||||||
|
readme.write('- **{}**: {}†'.format(kem_yaml['name'], parameter_sets[0]['name']))
|
||||||
|
else:
|
||||||
|
readme.write('- **{}**: {}'.format(kem_yaml['name'], parameter_sets[0]['name']))
|
||||||
|
for parameter_set in parameter_sets[1:]:
|
||||||
|
if any(impl['large-stack-usage'] for impl in parameter_set['implementations']):
|
||||||
|
readme.write(', {}†'.format(parameter_set['name']))
|
||||||
|
else:
|
||||||
|
readme.write(', {}'.format(parameter_set['name']))
|
||||||
|
readme.write('\n')
|
||||||
|
|
||||||
|
readme.write(postamble)
|
||||||
|
|
||||||
|
# Signatures
|
||||||
|
readme_contents = file_get_contents(readme_path)
|
||||||
|
|
||||||
|
identifier_start = start_identifier_tmpl.format('SIGS')
|
||||||
|
identifier_end = end_identifier_tmpl.format('SIGS')
|
||||||
|
|
||||||
|
preamble = readme_contents[:readme_contents.find(identifier_start)]
|
||||||
|
postamble = readme_contents[readme_contents.find(identifier_end):]
|
||||||
|
|
||||||
|
with open(readme_path, mode='w', encoding='utf-8') as readme:
|
||||||
|
readme.write(preamble + identifier_start + '\n')
|
||||||
|
|
||||||
|
for sig_yaml in sig_yamls[:-1]: # SPHINCS is last in this sorted list and requires special handling.
|
||||||
|
parameter_sets = sig_yaml['parameter-sets']
|
||||||
|
if any(impl['large-stack-usage'] for impl in parameter_sets[0]['implementations']):
|
||||||
|
readme.write('- **{}**: {}†'.format(sig_yaml['name'], parameter_sets[0]['name'].replace('_','\_')))
|
||||||
|
else:
|
||||||
|
readme.write('- **{}**: {}'.format(sig_yaml['name'], parameter_sets[0]['name'].replace('_','\_')))
|
||||||
|
for parameter_set in parameter_sets[1:]:
|
||||||
|
if any(impl['large-stack-usage'] for impl in parameter_set['implementations']):
|
||||||
|
readme.write(', {}†'.format(parameter_set['name'].replace('_', '\_')))
|
||||||
|
else:
|
||||||
|
readme.write(', {}'.format(parameter_set['name'].replace('_', '\_')))
|
||||||
|
readme.write('\n')
|
||||||
|
|
||||||
|
sphincs_yml = sig_yamls[-1]
|
||||||
|
for hash_func in ['Haraka', 'SHA256', 'SHAKE256']:
|
||||||
|
parameter_sets = [pset for pset in sphincs_yml['parameter-sets'] if hash_func in pset['name']]
|
||||||
|
if any(impl['large-stack-usage'] for impl in parameter_sets[0]['implementations']):
|
||||||
|
readme.write('- **SPHINCS+-{}**: {}†'.format(hash_func, parameter_sets[0]['name'].replace('_','\_')))
|
||||||
|
else:
|
||||||
|
readme.write('- **SPHINCS+-{}**: {}'.format(hash_func, parameter_sets[0]['name'].replace('_','\_')))
|
||||||
|
for parameter_set in parameter_sets[1:]:
|
||||||
|
if any(impl['large-stack-usage'] for impl in parameter_set['implementations']):
|
||||||
|
readme.write(', {}†'.format(parameter_set['name'].replace('_', '\_')))
|
||||||
|
else:
|
||||||
|
readme.write(', {}'.format(parameter_set['name'].replace('_', '\_')))
|
||||||
|
readme.write('\n')
|
||||||
|
|
||||||
|
readme.write(postamble)
|
Loading…
x
Reference in New Issue
Block a user