123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #!/bin/sh /etc/rc.common
- START=13
- ENGINES_CNF=/var/etc/ssl/engines.cnf
- ENGINES_DIR=%ENGINES_DIR%
- MODULES_DIR=/usr/lib/ossl-modules
- PROVIDERS_CNF=/var/etc/ssl/providers.cnf
- #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
- config_get_bool enabled "$1" enabled 1
- config_get_bool force "$1" force 0
- if [ "$enabled" = 0 ]; then
- [ "$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_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 "$3" ];then
- echo "Skipping $1: $3 not found."
- return 1
- fi
- 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() {
- local ret=0
- config_load openssl
- 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
- }
|