diff --git a/Cargo.lock b/Cargo.lock index e3cd503..aef6f45 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -925,6 +925,15 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "psm" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +dependencies = [ + "cc", +] + [[package]] name = "quote" version = "1.0.33" @@ -1032,6 +1041,7 @@ dependencies = [ "oqs-sys", "paste", "serde", + "stacker", "static_assertions", "test_bin", "thiserror", @@ -1178,6 +1188,19 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +[[package]] +name = "stacker" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce" +dependencies = [ + "cc", + "cfg-if", + "libc", + "psm", + "winapi", +] + [[package]] name = "static_assertions" version = "1.1.0" diff --git a/Cargo.toml b/Cargo.toml index 60a7bd2..cb4c585 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,6 +36,7 @@ anyhow = "1.0.71" [dev-dependencies] criterion = "0.4.0" test_bin = "0.4.0" +stacker = "0.1.15" [features] default = ["log", "env_logger"] diff --git a/src/protocol.rs b/src/protocol.rs index 4efa757..342764c 100644 --- a/src/protocol.rs +++ b/src/protocol.rs @@ -1739,7 +1739,11 @@ mod test { // initialize secret and public key for the crypto server let (mut sk, mut pk) = (SSk::zero(), SPk::zero()); - StaticKEM::keygen(sk.secret_mut(), pk.secret_mut()).expect("unable to generate keys"); + + // Guranteed to have 16MB of stack size + stacker::grow(8 * 1024 * 1024, || { + StaticKEM::keygen(sk.secret_mut(), pk.secret_mut()).expect("unable to generate keys"); + }); CryptoServer::new(sk, pk) }