liboqs-rust
liboqs-rust copied to clipboard
feat: Auto-allocate stack in runtime
McEliece keys, in particular, take up a large amount of stack space.
Not only do we currently have to configure this manually for builds for each individual platform, but since the stack space is set in compile time, this RAM will be held on to indefinitely, even while no keys are being generated.
This pull request solves both issues by running the KEM key generation in a separate thread. This allows the stack to be created in runtime, which has two benefits:
- Compile time configuration is no longer required and
- Rather than taking up memory for the entire duration of the runtime, it is only in use when needed.
Running as before is still supported through a feature flag.
EDIT:
The macos CI build couldn't find libcrypto. I'm not sure why this is but does not seem to be an issue related to this update. I have commented out RUST_MIN_STACK in ci.yml as it is no longer needed.
I have also commented out macos-latest from the OS matrix as it was getting in the way of the windows/ubuntu builds runing their test. Once the build issue has been overcome on your side, this will have to be uncommented again.
+1