openwrt/package/libs/openssl/engine.mk

83 lines
2.5 KiB
Makefile
Raw Normal View History

ENGINES_DIR=engines-1.1
define Package/openssl/engine/Default
SECTION:=libs
CATEGORY:=Libraries
SUBMENU:=SSL
DEPENDS:=libopenssl @OPENSSL_ENGINE +libopenssl-conf
endef
# 1 = engine name
# 2 - package name, defaults to libopenssl-$(1)
define Package/openssl/add-engine
OSSL_ENG_PKG:=$(if $(2),$(2),libopenssl-$(1))
Package/$$(OSSL_ENG_PKG)/conffiles:=/etc/ssl/engines.cnf.d/$(1).cnf
define Package/$$(OSSL_ENG_PKG)/install
$$(INSTALL_DIR) $$(1)/usr/lib/$(ENGINES_DIR)
$$(INSTALL_BIN) $$(PKG_INSTALL_DIR)/usr/lib/$(ENGINES_DIR)/$(1).so \
$$(1)/usr/lib/$(ENGINES_DIR)
$$(INSTALL_DIR) $$(1)/etc/ssl/engines.cnf.d
$$(INSTALL_DATA) ./files/$(1).cnf $$(1)/etc/ssl/engines.cnf.d/
endef
define Package/$$(OSSL_ENG_PKG)/postinst :=
#!/bin/sh
# $$$$1 == non-empty: suggest reinstall
error_out() {
[ "$1" ] && cat <<- EOF
Reinstalling the libopenssl-conf package may fix this:
opkg install --force-reinstall libopenssl-conf
EOF
cat <<- EOF
Then, you will have to reinstall this package, and any other engine package you have
you have previously installed to ensure they are enabled:
opkg install --force-reinstall $$(OSSL_ENG_PKG) [OTHER_ENGINE_PKG]...
EOF
exit 1
}
ENGINES_CNF="$$$${IPKG_INSTROOT}/etc/ssl/engines.cnf.d/engines.cnf"
OPENSSL_CNF="$$$${IPKG_INSTROOT}/etc/ssl/openssl.cnf"
if [ ! -f "$$$${OPENSSL_CNF}" ]; then
echo -e "ERROR: File $$$${OPENSSL_CNF} not found."
error_out reinstall
fi
if ! grep -q "^.include /etc/ssl/engines.cnf.d" "$$$${OPENSSL_CNF}"; then
cat <<- EOF
Your /etc/ssl/openssl.cnf file is not loading engine configuration files from
/etc/ssl/engines.cnf.d. You should consider start with a fresh, updated OpenSSL config by
running:
opkg install --force-reinstall --force-maintainer libopenssl-conf
The above command will overwrite any changes you may have made to both /etc/ssl/openssl.cnf
and /etc/ssl/engines.cnf.d/engines.cnf files, so back them up first!
EOF
error_out
fi
if [ ! -f "$$$${ENGINES_CNF}" ]; then
echo "Can't configure $$(OSSL_ENG_PKG): File $$$${ENGINES_CNF} not found."
error_out reinstall
fi
if grep -q "$(1)=$(1)" "$$$${ENGINES_CNF}"; then
echo "$$(OSSL_ENG_PKG): $(1) engine was already configured. Nothing to be done."
else
echo "$(1)=$(1)" >> "$$$${ENGINES_CNF}"
echo "$$(OSSL_ENG_PKG): $(1) engine enabled. All done!"
fi
endef
define Package/$$(OSSL_ENG_PKG)/prerm :=
#!/bin/sh
ENGINES_CNF="$$$${IPKG_INSTROOT}/etc/ssl/engines.cnf.d/engines.cnf"
[ -f "$$$${ENGINES_CNF}" ] || exit 0
sed -e '/$(1)=$(1)/d' -i "$$$${ENGINES_CNF}"
endef
endef