aboutsummaryrefslogtreecommitdiffstats
path: root/package/Makefile
diff options
context:
space:
mode:
authorSteven Barth <cyrus@openwrt.org>2013-10-02 12:12:10 +0000
committerSteven Barth <cyrus@openwrt.org>2013-10-02 12:12:10 +0000
commitcbdd346b11c6f125f48cdb1e95870d16e5c0d628 (patch)
treea6c5edbe734be83f8bcd880083de81f5060132ab /package/Makefile
parent0ad1d06c13a15a9e91cc7a1a635ac678a298ed7f (diff)
downloadupstream-cbdd346b11c6f125f48cdb1e95870d16e5c0d628.tar.gz
upstream-cbdd346b11c6f125f48cdb1e95870d16e5c0d628.tar.bz2
upstream-cbdd346b11c6f125f48cdb1e95870d16e5c0d628.zip
Add package signing infrastructure
Add package signing key and certificate configuration options to the "Image configuration" submenu. If enabled, the Packages.gz list will be signed as file Packages.sig. The passphrase for the signing key can be sourced from a file or entered by the user. The signing certificate is automatically added to the firmware image if opkg-smime is selected. Signed-off-by: Evan Hunt <each@isc.org> Signed-off-by: Steven Barth <steven@midlink.org> SVN-Revision: 38284
Diffstat (limited to 'package/Makefile')
-rw-r--r--package/Makefile31
1 files changed, 28 insertions, 3 deletions
diff --git a/package/Makefile b/package/Makefile
index 00ac773499..bac7001c4f 100644
--- a/package/Makefile
+++ b/package/Makefile
@@ -120,10 +120,35 @@ $(curdir)/install: $(TMP_DIR)/.build
$(if $(CONFIG_CLEAN_IPKG),rm -rf $(TARGET_DIR)/usr/lib/opkg)
$(call mklibs)
+PASSOPT=""
+PASSARG=""
+ifndef CONFIG_OPKGSMIME_PASSPHRASE
+ ifneq ($(call qstrip,$(CONFIG_OPKGSMIME_PASSFILE)),)
+ PASSOPT="-passin"
+ PASSARG="file:$(call qstrip,$(CONFIG_OPKGSMIME_PASSFILE))"
+ endif
+endif
+
$(curdir)/index: FORCE
- @(cd $(PACKAGE_DIR); $(SCRIPT_DIR)/ipkg-make-index.sh . 2>&1 > Packages && \
- gzip -9c Packages > Packages.gz \
- )
+ifeq ($(call qstrip,$(CONFIG_OPKGSMIME_KEY)),)
+ @echo Signing key has not been configured
+else
+ifeq ($(call qstrip,$(CONFIG_OPKGSMIME_CERT)),)
+ @echo Certificate has not been configured
+else
+ @echo Generating package index...
+ @(cd $(PACKAGE_DIR); \
+ $(SCRIPT_DIR)/ipkg-make-index.sh . 2>&1 > Packages && \
+ gzip -9c Packages > Packages.gz )
+ @echo Signing package index...
+ @(cd $(PACKAGE_DIR); \
+ openssl smime -binary -in Packages.gz \
+ -out Packages.sig -outform PEM -sign \
+ -signer $(CONFIG_OPKGSMIME_CERT) \
+ -inkey $(CONFIG_OPKGSMIME_KEY) \
+ $(PASSOPT) $(PASSARG) )
+endif
+endif
$(curdir)/preconfig: