diff options
Diffstat (limited to 'package/libs/openssl/files/openssl.init')
-rwxr-xr-x | package/libs/openssl/files/openssl.init | 64 |
1 files changed, 47 insertions, 17 deletions
diff --git a/package/libs/openssl/files/openssl.init b/package/libs/openssl/files/openssl.init index f895b9878c..1c1e8745ff 100755 --- a/package/libs/openssl/files/openssl.init +++ b/package/libs/openssl/files/openssl.init @@ -1,11 +1,25 @@ #!/bin/sh /etc/rc.common START=13 -ENGINES_CNF_D="/etc/ssl/engines.cnf.d" -ENGINES_CNF="/var/etc/ssl/engines.cnf" -ENGINES_DIR="%ENGINES_DIR%" +ENGINES_CNF=/var/etc/ssl/engines.cnf +ENGINES_DIR=%ENGINES_DIR% +MODULES_DIR=/usr/lib/ossl-modules +PROVIDERS_CNF=/var/etc/ssl/providers.cnf -config_engine() { +#1: cnf file +write_cnf_header() { + mkdir -p "$(dirname "$1")" && \ + echo "# This file is automatically generated from /etc/config/openssl." >"$1" || { + echo "Error writing to $1." + return 1 + } +} + + +#1: module name +#2: output cnf file +#3: module.so +enable_module() { local builtin enabled force config_get_bool builtin "$1" builtin 0 @@ -13,30 +27,46 @@ config_engine() { config_get_bool force "$1" force 0 if [ "$enabled" = 0 ]; then - [ "$builtin" != 1 ] && return 1 - echo "Engine $1 is built into the libcrypto library and can't be disabled through UCI." && \ + [ "$builtin" = 0 ] && return 1 + echo "Engine $1 is built into the libcrypto library and can't be disabled through UCI." echo "If the engine was not built-in, remove 'config builtin' from /etc/config/openssl." elif [ "$force" = 1 ]; then printf "[Forced] " - elif ! grep -q "\\[ *$1 *]" "${ENGINES_CNF_D}"/*; then + elif ! grep -q "\\[ *$1_sect *]" /etc/ssl/modules.cnf.d/*; then echo "$1: Could not find section [$1] in config files." return 1 elif [ "$builtin" = 1 ]; then printf "[Builtin] " - elif [ ! -f "${ENGINES_DIR}/$1.so" ];then - echo "$1: ${ENGINES_DIR}/$1.so not found." + elif [ ! -f "$3" ];then + echo "Skipping $1: $3 not found." return 1 fi - echo Enabling engine "$1" - echo "$1=$1" >> "${ENGINES_CNF}" + echo "Enabling $1" + echo "$1=$1_sect" >>"$2" +} + +config_engine() { + enable_module "$1" "$ENGINES_CNF" \ + "${ENGINES_DIR}/${1}.so" +} + +config_provider() { + enable_module "$1" "$PROVIDERS_CNF" \ + "${MODULES_DIR}/${1}.so" } start() { - mkdir -p "$(dirname "${ENGINES_CNF}")" || exit 1 - echo Generating engines.cnf - echo "# This file is automatically generated from /etc/config/openssl." \ - > "${ENGINES_CNF}" || \ - { echo Error writing ${ENGINES_CNF} >&2; exit 1; } + local ret=0 + config_load openssl - config_foreach config_engine engine + + echo Generating engines.cnf + write_cnf_header "${ENGINES_CNF}" && \ + config_foreach config_engine engine || ret=$? + + echo Generating providers.cnf + write_cnf_header "${PROVIDERS_CNF}" && \ + config_foreach config_provider provider || ret=$? + + return $ret } |