openssl: Add provider support

This commit is contained in:
Siddharth
2025-11-11 17:30:40 -06:00
parent 8ac4e73d1c
commit 23d0e5f31d
@@ -25,6 +25,8 @@
conf ? null,
removeReferencesTo,
testers,
providers ? [ ],
autoloadProviders ? false,
}:
# Note: this package is used for bootstrapping fetchurl, and thus
@@ -307,6 +309,26 @@ let
''
+ lib.optionalString (conf != null) ''
cat ${conf} > $etc/etc/ssl/openssl.cnf
''
+ lib.concatStringsSep "\n" (
map
(provider: ''
cp --no-preserve=mode ${provider.package}/lib/ossl-modules/* "$out/lib/ossl-modules"
${lib.optionalString (autoloadProviders) ''
sed -i '/^[[:space:]]*#/!s/\[provider_sect\]/[provider_sect]\n${provider.name} = ${provider.name}_sect/g' $etc/etc/ssl/openssl.cnf
echo -e "\n[${provider.name}_sect]" >> $etc/etc/ssl/openssl.cnf
echo "activate = 1" >> $etc/etc/ssl/openssl.cnf
''}
'')
providers
)
+ lib.optionalString (autoloadProviders) ''
# The default provider needs loading when there are other providers loaded by default
sed -i '/^[[:space:]]*#/!s/\[default_sect\]/[default_sect]\nactivate = 1/g' $etc/etc/ssl/openssl.cnf
'';
allowedImpureDLLs = [ "CRYPT32.dll" ];