From 23d0e5f31d1cb3ab262659da5e838bf8ce91ec3f Mon Sep 17 00:00:00 2001 From: Siddharth Date: Sun, 2 Feb 2025 23:56:13 -0600 Subject: [PATCH] openssl: Add provider support --- .../development/libraries/openssl/default.nix | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/pkgs/development/libraries/openssl/default.nix b/pkgs/development/libraries/openssl/default.nix index aee19324bcba..fa4a74a3c351 100644 --- a/pkgs/development/libraries/openssl/default.nix +++ b/pkgs/development/libraries/openssl/default.nix @@ -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" ];