Compare commits

..

20 Commits

Author SHA1 Message Date
Bruce
03008dc62f
Merge c91b9b4aa8f7cfb9157fadecdbc2b18acd89a89b into dd942d434463872193ba282250532ac0be15f1e3 2025-09-30 14:38:10 +00:00
Ganyu (Bruce) Xu
c91b9b4aa8 Revised FrodoKEM standardization status to reflect ISO consideration
Signed-off-by: Ganyu (Bruce) Xu <g66xu@uwaterloo.ca>
2025-09-30 10:38:04 -04:00
Ganyu (Bruce) Xu
7f01c42f39 revised specification URL to be consistent with spec-version
Signed-off-by: Ganyu (Bruce) Xu <g66xu@uwaterloo.ca>
2025-09-30 09:56:20 -04:00
Ganyu (Bruce) Xu
0e1dac651a removed spec-url from lms.yml
Signed-off-by: Ganyu (Bruce) Xu <g66xu@uwaterloo.ca>
2025-09-29 10:54:24 -04:00
Ganyu (Bruce) Xu
2367b504a5 fixed typo
Signed-off-by: Ganyu (Bruce) Xu <g66xu@uwaterloo.ca>
2025-09-29 10:44:27 -04:00
Ganyu (Bruce) Xu
7cabec2d2a another try at improving phrasing of standardization status
Signed-off-by: Ganyu (Bruce) Xu <g66xu@uwaterloo.ca>
2025-09-29 10:42:16 -04:00
Ganyu (Bruce) Xu
bad2ed5bc1 improved explanation for NTRU's standardization status
Signed-off-by: Ganyu (Bruce) Xu <g66xu@uwaterloo.ca>
2025-09-29 10:33:15 -04:00
Ganyu (Bruce) Xu
79fb9133d0 rephrasing standardization status for PQC third round candidates
Signed-off-by: Ganyu (Bruce) Xu <g66xu@uwaterloo.ca>
2025-09-29 10:12:55 -04:00
Ganyu (Bruce) Xu
cec21fffcf resolved failure to consistently produce the same README.md
Signed-off-by: Ganyu (Bruce) Xu <g66xu@uwaterloo.ca>
2025-09-26 14:42:04 -04:00
Ganyu (Bruce) Xu
5cb61a20c2 add git diff to basic check for debugging purpose
Signed-off-by: Ganyu (Bruce) Xu <g66xu@uwaterloo.ca>
2025-09-26 14:32:00 -04:00
Ganyu (Bruce) Xu
ab189a0fe5 algorithm family names will not link to docs/algorithms markdowns because Doxygen cannot handle them
Signed-off-by: Ganyu (Bruce) Xu <g66xu@uwaterloo.ca>
2025-09-26 14:25:21 -04:00
Ganyu (Bruce) Xu
4c23bb0210 fixed invalid markdown anchors
Signed-off-by: Ganyu (Bruce) Xu <g66xu@uwaterloo.ca>
2025-09-26 13:56:23 -04:00
Ganyu (Bruce) Xu
4ef1bbce36 docs/algorithms/sig/sld_dsa.yml is generated from a Jinja template elsewhere
Signed-off-by: Ganyu (Bruce) Xu <g66xu@uwaterloo.ca>
2025-09-26 11:57:23 -04:00
Ganyu (Bruce) Xu
da0d507992 documentation; make primary implementation monospaced
Signed-off-by: Ganyu (Bruce) Xu <g66xu@uwaterloo.ca>
2025-09-25 12:17:44 -04:00
Ganyu (Bruce) Xu
2839f5186c Use split with no argument to split against any whitespace, not just space
Signed-off-by: Ganyu (Bruce) Xu <g66xu@uwaterloo.ca>
2025-09-25 12:11:06 -04:00
Ganyu (Bruce) Xu
8a3ab07a55 wrap standardization status with url to spec
Signed-off-by: Ganyu (Bruce) Xu <g66xu@uwaterloo.ca>
2025-09-25 12:09:14 -04:00
Ganyu (Bruce) Xu
0dea6fe395 some refactoring
Signed-off-by: Ganyu (Bruce) Xu <g66xu@uwaterloo.ca>
2025-09-24 17:38:43 -04:00
Ganyu (Bruce) Xu
89495d34ae first draft of alg support table
Signed-off-by: Ganyu (Bruce) Xu <g66xu@uwaterloo.ca>
2025-09-24 17:38:43 -04:00
Ganyu (Bruce) Xu
312b5fc9d2 still need to fill in the content
Signed-off-by: Ganyu (Bruce) Xu <g66xu@uwaterloo.ca>
2025-09-24 17:38:43 -04:00
Ganyu (Bruce) Xu
f6a798d343 algorithm support table should replace the list of algorithms; minor refactor w.r.t. shebang, imports, and unnecessary global states
Signed-off-by: Ganyu (Bruce) Xu <g66xu@uwaterloo.ca>
2025-09-24 17:38:43 -04:00
5 changed files with 115 additions and 13 deletions

View File

@ -14,7 +14,7 @@
- **Source**: https://github.com/open-quantum-safe/liboqs-cupqc-meta/commit/b026f4e5475cd9c20c2082c7d9bad80e5b0ba89e - **Source**: https://github.com/open-quantum-safe/liboqs-cupqc-meta/commit/b026f4e5475cd9c20c2082c7d9bad80e5b0ba89e
- **Implementation license (SPDX-Identifier)**: Apache-2.0 - **Implementation license (SPDX-Identifier)**: Apache-2.0
- **icicle-icicle_cuda**:<a name="icicle-icicle_cuda"></a> - **icicle-icicle_cuda**:<a name="icicle-icicle_cuda"></a>
- **Source**: https://github.com/ingonyama-zk/icicle-liboqs/commit/4ea3e612ff26e3e72b5e5bcfff4cf3dda45dc0a8 - **Source**: https://github.com/ingonyama-zk/icicle-liboqs/commit/8f215fd845928abfc2bb7d5ca15db76b839bee5c
- **Implementation license (SPDX-Identifier)**: MIT - **Implementation license (SPDX-Identifier)**: MIT

View File

@ -25,7 +25,7 @@ optimized-upstreams:
source: https://github.com/open-quantum-safe/liboqs-cupqc-meta/commit/b026f4e5475cd9c20c2082c7d9bad80e5b0ba89e source: https://github.com/open-quantum-safe/liboqs-cupqc-meta/commit/b026f4e5475cd9c20c2082c7d9bad80e5b0ba89e
spdx-license-identifier: Apache-2.0 spdx-license-identifier: Apache-2.0
icicle-icicle_cuda: icicle-icicle_cuda:
source: https://github.com/ingonyama-zk/icicle-liboqs/commit/4ea3e612ff26e3e72b5e5bcfff4cf3dda45dc0a8 source: https://github.com/ingonyama-zk/icicle-liboqs/commit/8f215fd845928abfc2bb7d5ca15db76b839bee5c
spdx-license-identifier: MIT spdx-license-identifier: MIT
parameter-sets: parameter-sets:
- name: ML-KEM-512 - name: ML-KEM-512

View File

@ -51,10 +51,10 @@ upstreams:
name: icicle name: icicle
git_url: https://github.com/ingonyama-zk/icicle-liboqs.git git_url: https://github.com/ingonyama-zk/icicle-liboqs.git
git_branch: main git_branch: main
git_commit: 4ea3e612ff26e3e72b5e5bcfff4cf3dda45dc0a8 git_commit: 8f215fd845928abfc2bb7d5ca15db76b839bee5c
kem_meta_path: '{pretty_name_full}_META.yml' kem_meta_path: '{pretty_name_full}_META.yml'
kem_scheme_path: '.' kem_scheme_path: '.'
patches: [] patches: [icicle-mlkem-enc-derand.patch]
- -
name: pqcrystals-dilithium-standard name: pqcrystals-dilithium-standard
git_url: https://github.com/pq-crystals/dilithium.git git_url: https://github.com/pq-crystals/dilithium.git

View File

@ -0,0 +1,102 @@
diff --git a/ML-KEM-1024_META.yml b/ML-KEM-1024_META.yml
index 5ad054f..49aa71a 100644
--- a/ML-KEM-1024_META.yml
+++ b/ML-KEM-1024_META.yml
@@ -25,10 +25,11 @@ implementations:
version: FIPS203
signature_keypair: icicle_ml_kem_1024_keypair
signature_enc: icicle_ml_kem_1024_enc
+ signature_enc_derand: icicle_ml_kem_1024_enc_derand
signature_dec: icicle_ml_kem_1024_dec
sources: ./ml-kem-1024/icicle_ml-kem.cpp
supported_platforms:
- architecture: CUDA
operating_systems:
- Linux
- - Darwin
\ No newline at end of file
+ - Darwin
diff --git a/ML-KEM-512_META.yml b/ML-KEM-512_META.yml
index c14cf33..c93caa1 100644
--- a/ML-KEM-512_META.yml
+++ b/ML-KEM-512_META.yml
@@ -25,10 +25,11 @@ implementations:
version: FIPS203
signature_keypair: icicle_ml_kem_512_keypair
signature_enc: icicle_ml_kem_512_enc
+ signature_enc_derand: icicle_ml_kem_512_enc_derand
signature_dec: icicle_ml_kem_512_dec
sources: ./ml-kem-512/icicle_ml-kem.cpp
supported_platforms:
- architecture: CUDA
operating_systems:
- Linux
- - Darwin
\ No newline at end of file
+ - Darwin
diff --git a/ML-KEM-768_META.yml b/ML-KEM-768_META.yml
index a1b88a8..1d580a8 100644
--- a/ML-KEM-768_META.yml
+++ b/ML-KEM-768_META.yml
@@ -25,10 +25,11 @@ implementations:
version: FIPS203
signature_keypair: icicle_ml_kem_768_keypair
signature_enc: icicle_ml_kem_768_enc
+ signature_enc_derand: icicle_ml_kem_768_enc_derand
signature_dec: icicle_ml_kem_768_dec
sources: ./ml-kem-768/icicle_ml-kem.cpp
supported_platforms:
- architecture: CUDA
operating_systems:
- Linux
- - Darwin
\ No newline at end of file
+ - Darwin
diff --git a/icicle_cuda/ml-kem-1024/icicle_ml-kem.cpp b/icicle_cuda/ml-kem-1024/icicle_ml-kem.cpp
index 33b38cb..793afb6 100644
--- a/icicle_cuda/ml-kem-1024/icicle_ml-kem.cpp
+++ b/icicle_cuda/ml-kem-1024/icicle_ml-kem.cpp
@@ -25,6 +25,11 @@ OQS_STATUS icicle_ml_kem_1024_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk) {
return icicle::pqc::ml_kem::encapsulate<icicle::pqc::ml_kem::Kyber1024Params>((std::byte*)coins, (std::byte*)pk, config, (std::byte*)ct, (std::byte*)ss) == icicle::eIcicleError::SUCCESS ? OQS_SUCCESS : OQS_ERROR;
}
+OQS_STATUS icicle_ml_kem_1024_enc_derand(uint8_t *ct, uint8_t *ss, const uint8_t *pk, const uint8_t *coins) {
+ icicle::pqc::ml_kem::MlKemConfig config;
+ return icicle::pqc::ml_kem::encapsulate<icicle::pqc::ml_kem::Kyber1024Params>((std::byte*)coins, (std::byte*)pk, config, (std::byte*)ct, (std::byte*)ss) == icicle::eIcicleError::SUCCESS ? OQS_SUCCESS : OQS_ERROR;
+}
+
OQS_STATUS icicle_ml_kem_1024_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk) {
icicle::pqc::ml_kem::MlKemConfig config;
return icicle::pqc::ml_kem::decapsulate<icicle::pqc::ml_kem::Kyber1024Params>((std::byte*)sk, (std::byte*)ct, config, (std::byte*)ss) == icicle::eIcicleError::SUCCESS ? OQS_SUCCESS : OQS_ERROR;
diff --git a/icicle_cuda/ml-kem-512/icicle_ml-kem.cpp b/icicle_cuda/ml-kem-512/icicle_ml-kem.cpp
index 89c4211..f73c539 100644
--- a/icicle_cuda/ml-kem-512/icicle_ml-kem.cpp
+++ b/icicle_cuda/ml-kem-512/icicle_ml-kem.cpp
@@ -25,6 +25,11 @@ OQS_STATUS icicle_ml_kem_512_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk) {
return icicle::pqc::ml_kem::encapsulate<icicle::pqc::ml_kem::Kyber512Params>((std::byte*)coins, (std::byte*)pk, config, (std::byte*)ct, (std::byte*)ss) == icicle::eIcicleError::SUCCESS ? OQS_SUCCESS : OQS_ERROR;
}
+OQS_STATUS icicle_ml_kem_512_enc_derand(uint8_t *ct, uint8_t *ss, const uint8_t *pk, const uint8_t *coins) {
+ icicle::pqc::ml_kem::MlKemConfig config;
+ return icicle::pqc::ml_kem::encapsulate<icicle::pqc::ml_kem::Kyber512Params>((std::byte*)coins, (std::byte*)pk, config, (std::byte*)ct, (std::byte*)ss) == icicle::eIcicleError::SUCCESS ? OQS_SUCCESS : OQS_ERROR;
+}
+
OQS_STATUS icicle_ml_kem_512_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk) {
icicle::pqc::ml_kem::MlKemConfig config;
return icicle::pqc::ml_kem::decapsulate<icicle::pqc::ml_kem::Kyber512Params>((std::byte*)sk, (std::byte*)ct, config, (std::byte*)ss) == icicle::eIcicleError::SUCCESS ? OQS_SUCCESS : OQS_ERROR;
diff --git a/icicle_cuda/ml-kem-768/icicle_ml-kem.cpp b/icicle_cuda/ml-kem-768/icicle_ml-kem.cpp
index 33b38cb..793afb6 100644
--- a/icicle_cuda/ml-kem-768/icicle_ml-kem.cpp
+++ b/icicle_cuda/ml-kem-768/icicle_ml-kem.cpp
@@ -25,6 +25,11 @@ OQS_STATUS icicle_ml_kem_1024_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk) {
return icicle::pqc::ml_kem::encapsulate<icicle::pqc::ml_kem::Kyber1024Params>((std::byte*)coins, (std::byte*)pk, config, (std::byte*)ct, (std::byte*)ss) == icicle::eIcicleError::SUCCESS ? OQS_SUCCESS : OQS_ERROR;
}
+OQS_STATUS icicle_ml_kem_1024_enc_derand(uint8_t *ct, uint8_t *ss, const uint8_t *pk, const uint8_t *coins) {
+ icicle::pqc::ml_kem::MlKemConfig config;
+ return icicle::pqc::ml_kem::encapsulate<icicle::pqc::ml_kem::Kyber1024Params>((std::byte*)coins, (std::byte*)pk, config, (std::byte*)ct, (std::byte*)ss) == icicle::eIcicleError::SUCCESS ? OQS_SUCCESS : OQS_ERROR;
+}
+
OQS_STATUS icicle_ml_kem_1024_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk) {
icicle::pqc::ml_kem::MlKemConfig config;
return icicle::pqc::ml_kem::decapsulate<icicle::pqc::ml_kem::Kyber1024Params>((std::byte*)sk, (std::byte*)ct, config, (std::byte*)ss) == icicle::eIcicleError::SUCCESS ? OQS_SUCCESS : OQS_ERROR;

View File

@ -8,31 +8,31 @@
#include "icicle/errors.h" #include "icicle/errors.h"
extern "C" { extern "C" {
#if defined(OQS_ENABLE_KEM_ml_kem_768_icicle_cuda) #if defined(OQS_ENABLE_KEM_ml_kem_1024_icicle_cuda)
OQS_STATUS icicle_ml_kem_768_keypair(uint8_t *pk, uint8_t *sk) { OQS_STATUS icicle_ml_kem_1024_keypair(uint8_t *pk, uint8_t *sk) {
uint8_t coins[icicle::pqc::ml_kem::ENTROPY_BYTES]; uint8_t coins[icicle::pqc::ml_kem::ENTROPY_BYTES];
OQS_randombytes(coins, icicle::pqc::ml_kem::ENTROPY_BYTES); OQS_randombytes(coins, icicle::pqc::ml_kem::ENTROPY_BYTES);
icicle::pqc::ml_kem::MlKemConfig config; icicle::pqc::ml_kem::MlKemConfig config;
return icicle::pqc::ml_kem::keygen<icicle::pqc::ml_kem::Kyber768Params>((std::byte*)coins, config, (std::byte*)pk, (std::byte*)sk) == icicle::eIcicleError::SUCCESS ? OQS_SUCCESS : OQS_ERROR; return icicle::pqc::ml_kem::keygen<icicle::pqc::ml_kem::Kyber1024Params>((std::byte*)coins, config, (std::byte*)pk, (std::byte*)sk) == icicle::eIcicleError::SUCCESS ? OQS_SUCCESS : OQS_ERROR;
} }
OQS_STATUS icicle_ml_kem_768_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk) { OQS_STATUS icicle_ml_kem_1024_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk) {
uint8_t coins[icicle::pqc::ml_kem::MESSAGE_BYTES]; uint8_t coins[icicle::pqc::ml_kem::MESSAGE_BYTES];
OQS_randombytes(coins, icicle::pqc::ml_kem::MESSAGE_BYTES); OQS_randombytes(coins, icicle::pqc::ml_kem::MESSAGE_BYTES);
icicle::pqc::ml_kem::MlKemConfig config; icicle::pqc::ml_kem::MlKemConfig config;
return icicle::pqc::ml_kem::encapsulate<icicle::pqc::ml_kem::Kyber768Params>((std::byte*)coins, (std::byte*)pk, config, (std::byte*)ct, (std::byte*)ss) == icicle::eIcicleError::SUCCESS ? OQS_SUCCESS : OQS_ERROR; return icicle::pqc::ml_kem::encapsulate<icicle::pqc::ml_kem::Kyber1024Params>((std::byte*)coins, (std::byte*)pk, config, (std::byte*)ct, (std::byte*)ss) == icicle::eIcicleError::SUCCESS ? OQS_SUCCESS : OQS_ERROR;
} }
OQS_STATUS icicle_ml_kem_768_enc_derand(uint8_t *ct, uint8_t *ss, const uint8_t *pk, const uint8_t *coins) { OQS_STATUS icicle_ml_kem_1024_enc_derand(uint8_t *ct, uint8_t *ss, const uint8_t *pk, const uint8_t *coins) {
icicle::pqc::ml_kem::MlKemConfig config; icicle::pqc::ml_kem::MlKemConfig config;
return icicle::pqc::ml_kem::encapsulate<icicle::pqc::ml_kem::Kyber768Params>((std::byte*)coins, (std::byte*)pk, config, (std::byte*)ct, (std::byte*)ss) == icicle::eIcicleError::SUCCESS ? OQS_SUCCESS : OQS_ERROR; return icicle::pqc::ml_kem::encapsulate<icicle::pqc::ml_kem::Kyber1024Params>((std::byte*)coins, (std::byte*)pk, config, (std::byte*)ct, (std::byte*)ss) == icicle::eIcicleError::SUCCESS ? OQS_SUCCESS : OQS_ERROR;
} }
OQS_STATUS icicle_ml_kem_768_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk) { OQS_STATUS icicle_ml_kem_1024_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk) {
icicle::pqc::ml_kem::MlKemConfig config; icicle::pqc::ml_kem::MlKemConfig config;
return icicle::pqc::ml_kem::decapsulate<icicle::pqc::ml_kem::Kyber768Params>((std::byte*)sk, (std::byte*)ct, config, (std::byte*)ss) == icicle::eIcicleError::SUCCESS ? OQS_SUCCESS : OQS_ERROR; return icicle::pqc::ml_kem::decapsulate<icicle::pqc::ml_kem::Kyber1024Params>((std::byte*)sk, (std::byte*)ct, config, (std::byte*)ss) == icicle::eIcicleError::SUCCESS ? OQS_SUCCESS : OQS_ERROR;
} }
#endif #endif
} }