fedora crypto-policies: initial support. #8205
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Adds initial support for Fedora and Redhat system-wide crypto-policies.
The idea is at runtime, a system wide crypto-policy config file is loaded that sets minimum security limits on:
Fixes zd#18593.
Build with
--with-sys-crypto-policy
, or--with-sys-crypto-policy=<path>
. If no arg is given, then/etc/crypto-policies/back-ends/wolfssl.config
is used as default.Requires enable-distro.
crypto-policy API
Enable with wolfSSL_crypto_policy_enable or wolfSSL_crypto_policy_enable_buffer. Once enabled, new instantiated WOLFSSL_CTX will inherit the policy's parameters. Trying to change the minimum downgrade version, or set key sizes smaller than allowed minimum will return CRYPTO_POLICY_FORBIDDEN.
The crypto_policy API are not thread safe, and should only be used during program init.
Testing
Added new unit tests:
Added Jenkins test:
Config
Added three example crypto-policy configs here:
Examples
The examples client and server were updated to take crypto-policy as an arg.
E.g. if you run the example with the future policy it will fail, because the future policy requires min 3072 RSA and DH key sizes (or 256 bit ecc keys):
If you set the client to use larger keys, then it works again: