diff options
Diffstat (limited to 'Makefile.rules')
-rw-r--r-- | Makefile.rules | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/Makefile.rules b/Makefile.rules index b9364d1b56..d8bfd68bc7 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -91,8 +91,18 @@ cmd_sharedlib_elf = $(CC) $(libsharedobjs_deps) \ -o $(out)/$(SHOBJLIB)/$(SHOBJLIB).elf \ -Wl,-Map,$(out)/$(SHOBJLIB)/$(SHOBJLIB).map -# commands for RSA signature -cmd_rsasign = futility sign --type usbpd1 --pem $(PEM) $(out)/$*.bin.tmp +# commands for RSA signature: rwsig does not need to sign the whole image +# (it signs the RW part separately). usbpd1 type needs to sign the final image. +ifeq ($(CONFIG_RWSIG_TYPE_RWSIG),) + cmd_rsasign = futility sign --type usbpd1 --pem $(PEM) $(out)/$*.bin.tmp +else + cmd_rsasign = +endif + +cmd_key_extract = futility create $(PEM) $(out)/$* $(silent) + +cmd_rsasign_rwsig = futility sign --type rwsig \ + --prikey $(out)/key.vbprik2 $< $@ # commands to build optional xref files cmd_deps_to_list = cat $(deps) | tr -d ':\\' | tr ' ' '\012' \ @@ -274,6 +284,9 @@ flat-$(CONFIG_FW_INCLUDE_RO) += $(out)/RO/$(PROJECT).RO.flat deps += $(out)/firmware_image.lds.d $(flat-y:%.flat=%.lds.d) +flat-$(CONFIG_RWSIG_TYPE_RWSIG) += $(out)/key.vbpubk2 +flat-$(CONFIG_RWSIG_TYPE_RWSIG) += $(out)/RW/$(PROJECT).RW.flat.sig + flat-$(CONFIG_SHAREDLIB) += $(libsharedobjs-y) $(out)/$(PROJECT).obj: common/firmware_image.S $(out)/firmware_image.lds \ @@ -305,6 +318,12 @@ endif $(out)/$(PROJECT).hex: $(out)/$(PROJECT).bin $(call quiet,bin_to_hex,OBJCOPY) +$(out)/%.vbprik2 $(out)/%.vbpubk2: $(PEM) + $(call quiet,key_extract,KEY ) + +$(out)/RW/%.flat.sig: $(out)/RW/%.flat $(out)/key.vbprik2 + $(call quiet,rsasign_rwsig,SIGN ) + $(out)/RW/%.elf: override BLD:=RW $(out)/RW/%.elf: private objs := $(rw-objs) $(out)/RW/%.elf: $(out)/RW/%.lds $(rw-objs) $(libsharedobjs_elf-y) |