aboutsummaryrefslogtreecommitdiffstats
path: root/package/libs/openssl/files/openssl.init
diff options
context:
space:
mode:
Diffstat (limited to 'package/libs/openssl/files/openssl.init')
-rwxr-xr-xpackage/libs/openssl/files/openssl.init64
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
}