#!/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 }