diff --git a/README.md b/README.md
index 223ab2ae3b..ccd8e8111f 100644
--- a/README.md
+++ b/README.md
@@ -37,7 +37,7 @@ Update your `Cargo.toml` and include `oqs`:
```toml
[dependencies]
-oqs = "0.9.0"
+oqs = "0.10.0"
```
`oqs-sys` can be specified equivalently.
@@ -103,12 +103,14 @@ tests.
- `kyber`
- `ntruprime`
- `saber`
+ - `ml_kem`
- `sigs` (default): Compile with all signature schemes enabled
- `dilithium`
- `falcon`
- `picnic`
- `rainbow`
- `sphincs`: SPHINCS+
+ - `ml_dsa`
## Running
diff --git a/oqs-sys/Cargo.toml b/oqs-sys/Cargo.toml
index 6d24ac0dbf..f407491de6 100644
--- a/oqs-sys/Cargo.toml
+++ b/oqs-sys/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "oqs-sys"
-version = "0.9.1+liboqs-0.9.0"
+version = "0.10.0+liboqs-0.10.0"
authors = ["Thom Wiggers "]
edition = "2021"
links = "oqs"
@@ -30,18 +30,20 @@ docs = []
non_portable = []
vendored = []
# algorithms: KEMs
-kems = ["classic_mceliece", "frodokem", "hqc", "kyber", "ntruprime"]
+kems = ["classic_mceliece", "frodokem", "hqc", "kyber", "ntruprime", "ml_kem"]
bike = [] # BIKE is enabled by build.rs on non-windows targets
classic_mceliece = []
frodokem = []
hqc = []
kyber = []
ntruprime = []
+ml_kem = []
# algorithms: Signature schemes
-sigs = ["dilithium", "falcon", "sphincs"]
+sigs = ["dilithium", "falcon", "sphincs", "ml_dsa"]
dilithium = []
falcon = []
sphincs = []
+ml_dsa = []
[package.metadata.docs.rs]
features = ["docs"]
diff --git a/oqs-sys/build.rs b/oqs-sys/build.rs
index 4e4560c9a9..a11dc4f81b 100644
--- a/oqs-sys/build.rs
+++ b/oqs-sys/build.rs
@@ -69,11 +69,13 @@ fn build_from_source() -> PathBuf {
algorithm_feature!("KEM", "hqc");
algorithm_feature!("KEM", "kyber");
algorithm_feature!("KEM", "ntruprime");
+ algorithm_feature!("KEM", "ml_kem");
// signature schemes
algorithm_feature!("SIG", "dilithium");
algorithm_feature!("SIG", "falcon");
algorithm_feature!("SIG", "sphincs");
+ algorithm_feature!("SIG", "ml_dsa");
if cfg!(windows) {
// Select the latest available Windows SDK
diff --git a/oqs-sys/liboqs b/oqs-sys/liboqs
index 7c3a0e9aa7..36be57445d 160000
--- a/oqs-sys/liboqs
+++ b/oqs-sys/liboqs
@@ -1 +1 @@
-Subproject commit 7c3a0e9aa7f9568e4dcafaf908ff8aa0008f0b71
+Subproject commit 36be57445d8ca53f7095160fde548efe82ace09d
diff --git a/oqs/Cargo.toml b/oqs/Cargo.toml
index 770e7b297b..4552053770 100644
--- a/oqs/Cargo.toml
+++ b/oqs/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "oqs"
-version = "0.9.0"
+version = "0.10.0"
authors = ["Thom Wiggers "]
edition = "2021"
description = "A Rusty interface to Open-Quantum-Safe's liboqs"
@@ -16,7 +16,7 @@ serde = { version = "1.0", optional = true, default-features = false, features =
[dependencies.oqs-sys]
path = "../oqs-sys"
-version = "0.9.0"
+version = "0.10.0+liboqs-0.10.0"
default-features = false
[features]
@@ -26,15 +26,17 @@ non_portable = ["oqs-sys/non_portable"]
vendored = ["oqs-sys/vendored"]
# algorithms: KEMs
-kems = ["oqs-sys/kems", "classic_mceliece", "frodokem", "hqc", "kyber", "ntruprime"]
+kems = ["oqs-sys/kems", "classic_mceliece", "frodokem", "hqc", "kyber", "ntruprime", "ml_kem"]
bike = ["oqs-sys/bike"] # not supported on Windows or 32-bit ARM
classic_mceliece = ["oqs-sys/classic_mceliece"]
frodokem = ["oqs-sys/frodokem"]
hqc = ["oqs-sys/hqc"]
kyber = ["oqs-sys/kyber"]
ntruprime = ["oqs-sys/ntruprime"]
+ml_kem = ["oqs-sys/ml_kem"]
# algorithms: Signature schemes
-sigs = ["oqs-sys/sigs", "dilithium", "falcon", "sphincs"]
+sigs = ["oqs-sys/sigs", "dilithium", "falcon", "sphincs", "ml_dsa"]
dilithium = ["oqs-sys/dilithium"]
falcon = ["oqs-sys/falcon"]
sphincs = ["oqs-sys/sphincs"]
+ml_dsa = ["oqs-sys/ml_dsa"]
\ No newline at end of file
diff --git a/oqs/src/kem.rs b/oqs/src/kem.rs
index 2f9d6e4efe..b43d3e3c9e 100644
--- a/oqs/src/kem.rs
+++ b/oqs/src/kem.rs
@@ -140,6 +140,12 @@ implement_kems! {
("frodokem") FrodoKem976Shake: OQS_KEM_alg_frodokem_976_shake,
("frodokem") FrodoKem1344Aes: OQS_KEM_alg_frodokem_1344_aes,
("frodokem") FrodoKem1344Shake: OQS_KEM_alg_frodokem_1344_shake,
+ ("ml_kem") MlKem512Ipd: OQS_KEM_alg_ml_kem_512_ipd,
+ ("ml_kem") MlKem768Ipd: OQS_KEM_alg_ml_kem_768_ipd,
+ ("ml_kem") MlKem1024Ipd: OQS_KEM_alg_ml_kem_1024_ipd,
+ ("ml_kem") MlKem512: OQS_KEM_alg_ml_kem_512,
+ ("ml_kem") MlKem768: OQS_KEM_alg_ml_kem_768,
+ ("ml_kem") MlKem1024: OQS_KEM_alg_ml_kem_1024,
}
impl Algorithm {
diff --git a/oqs/src/sig.rs b/oqs/src/sig.rs
index c4a87519be..f496d01f25 100644
--- a/oqs/src/sig.rs
+++ b/oqs/src/sig.rs
@@ -131,6 +131,12 @@ implement_sigs! {
("sphincs") SphincsShake192sSimple: OQS_SIG_alg_sphincs_shake_192s_simple,
("sphincs") SphincsShake256fSimple: OQS_SIG_alg_sphincs_shake_256f_simple,
("sphincs") SphincsShake256sSimple: OQS_SIG_alg_sphincs_shake_256s_simple,
+ ("ml_dsa") MlDsa44Ipd: OQS_SIG_alg_ml_dsa_44_ipd,
+ ("ml_dsa") MlDsa65Ipd: OQS_SIG_alg_ml_dsa_65_ipd,
+ ("ml_dsa") MlDsa87Ipd: OQS_SIG_alg_ml_dsa_87_ipd,
+ ("ml_dsa") MlDsa44: OQS_SIG_alg_ml_dsa_44,
+ ("ml_dsa") MlDsa65: OQS_SIG_alg_ml_dsa_65,
+ ("ml_dsa") MlDsa87: OQS_SIG_alg_ml_dsa_87,
}
impl Algorithm {