blob: 7aca849887d72b06c1827775774bf12ce427235f [file] [log] [blame]
diff --git a/include/image.mk b/include/image.mk
index 92d343c..f93fb01 100644
--- a/include/image.mk
+++ b/include/image.mk
@@ -440,6 +440,8 @@ else
DEVICE_CHECK_PROFILE = $(CONFIG_TARGET_$(if $(CONFIG_TARGET_MULTI_PROFILE),DEVICE_)$(call target_conf,$(BOARD)$(if $(SUBTARGET),_$(SUBTARGET)))_$(1))
endif
+ROOTFS_ENCRYPT = $(if $(ROE_KEY_DIR),$(wildcard $(ROE_KEY_DIR)/$(ROE_KEY_NAME).key),)
+
DEVICE_CHECK_FIT_KEY = $(if $(wildcard $(FIT_KEY_DIR)/$(FIT_KEY_NAME).key),install-images,install-disabled)
DEVICE_CHECK_FIT_DIR = $(if $(FIT_KEY_DIR),$(DEVICE_CHECK_FIT_KEY),install-images)
diff --git a/target/linux/mediatek/image/Makefile b/target/linux/mediatek/image/Makefile
index 20e5977..52c266e 100644
--- a/target/linux/mediatek/image/Makefile
+++ b/target/linux/mediatek/image/Makefile
@@ -16,6 +16,14 @@ define Build/sysupgrade-emmc
$(IMAGE_ROOTFS)
endef
+define Build/fdt-patch-dm-crypt
+ BIN=$(STAGING_DIR_HOST)/bin \
+ LIBFDT_PATH=$(STAGING_DIR_HOST)/lib \
+ $(TOPDIR)/scripts/fdt-patch-dm-crypt.sh \
+ $(KDIR)/image-sb-$(firstword $(DEVICE_DTS)).dtb \
+ $(ROOTFS/$(FILESYSTEMS)/$(DEVICE_NAME))-hashed-summary-$(firstword $(DEVICE_DTS))
+endef
+
# build squashfs-hashed
define Build/squashfs-hashed
$(CP) $(ROOTFS/$(FILESYSTEMS)/$(DEVICE_NAME)) $(ROOTFS/$(FILESYSTEMS)/$(DEVICE_NAME))-hashed-$(firstword $(DEVICE_DTS))
@@ -27,6 +35,7 @@ define Build/squashfs-hashed
fdt-patch-dm-verify $(ROOTFS/$(FILESYSTEMS)/$(DEVICE_NAME))-hashed-summary-$(firstword $(DEVICE_DTS)) \
$(KDIR)/image-$(firstword $(DEVICE_DTS)).dtb $(KDIR)/image-sb-$(firstword $(DEVICE_DTS)).dtb \
$(HASHED_BOOT_DEVICE)
+ $(if $(ROOTFS_ENCRYPT),$(call Build/fdt-patch-dm-crypt))
endef
# build fw-ar-ver
@@ -40,6 +49,30 @@ define Build/fw-ar-ver
$(call get_fw_ar_ver,$(ANTI_ROLLBACK_TABLE),$(AUTO_AR_CONF))
endef
+define Build/rfsk-encrypt
+ BIN=$(STAGING_DIR_HOST)/bin \
+ $(TOPDIR)/scripts/enc-rfsk.sh \
+ -d $(ROE_KEY_DIR) \
+ -f $@ \
+ -k $(ROE_KEY_DIR)/$(ROE_KEY_NAME) \
+ -s $(dir $@)
+endef
+
+define Build/fit-secret
+ BIN=$(STAGING_DIR_HOST)/bin \
+ LIBFDT_PATH=$(STAGING_DIR_HOST)/lib \
+ $(TOPDIR)/scripts/enc-rfsk.sh \
+ -c "config-1" \
+ -d $(ROE_KEY_DIR) \
+ -f $@ \
+ -k $(ROE_KEY_DIR)/$(ROE_KEY_NAME) \
+ -s $(dir $@)
+endef
+
+define Build/rootfs-encrypt
+ $(if $(ROOTFS_ENCRYPT),$(call Build/rfsk-encrypt))
+endef
+
# build signed fit
define Build/fit-sign
$(TOPDIR)/scripts/mkits.sh \
@@ -54,13 +87,18 @@ define Build/fit-sign
-v $(LINUX_VERSION) \
$(if $(FIT_KEY_NAME),-S $(FIT_KEY_NAME)) \
$(if $(FW_AR_VER),-r $(FW_AR_VER)) \
- $(if $(CONFIG_TARGET_ROOTFS_SQUASHFS),-R $(ROOTFS/squashfs/$(DEVICE_NAME)))
+ $(if $(CONFIG_TARGET_ROOTFS_SQUASHFS), \
+ $(if $(ROOTFS_ENCRYPT), \
+ -R $(ROOTFS/$(FILESYSTEMS)/$(DEVICE_NAME))-hashed-$(firstword $(DEVICE_DTS)), \
+ -R $(ROOTFS/$(FILESYSTEMS)/$(DEVICE_NAME)))) \
+ $(if $(ROOTFS_ENCRYPT),-m $(addsuffix -rfsk.enc,$(basename $@)))
PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage \
-f $@.its \
$(if $(FIT_KEY_DIR),-k $(FIT_KEY_DIR)) \
-r \
$@.new
@mv $@.new $@
+ $(if $(ROOTFS_ENCRYPT),$(call Build/fit-secret))
endef
# default all platform image(fit) build
@@ -78,6 +116,8 @@ define Device/Default
pad-rootfs | append-metadata
FIT_KEY_DIR :=
FIT_KEY_NAME :=
+ ROE_KEY_DIR :=
+ ROE_KEY_NAME :=
endef
include $(SUBTARGET).mk