aboutsummaryrefslogtreecommitdiffstats
path: root/package/libs/openssl/engine.mk
blob: 482b5ad5e81deb9fb6b12016689dc6a2812302ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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