liboqs-rust icon indicating copy to clipboard operation
liboqs-rust copied to clipboard

feat: Auto-allocate stack in runtime

Open marcbrevoort-cyberhive opened this issue 1 year ago • 1 comments

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:

  1. Compile time configuration is no longer required and
  2. 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.

marcbrevoort-cyberhive avatar May 15 '24 09:05 marcbrevoort-cyberhive

+1

maharg101 avatar Jan 31 '25 14:01 maharg101