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((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((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((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((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((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((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((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((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((std::byte*)sk, (std::byte*)ct, config, (std::byte*)ss) == icicle::eIcicleError::SUCCESS ? OQS_SUCCESS : OQS_ERROR;