summaryrefslogtreecommitdiffstats
path: root/meta/classes/kernel-fitimage.bbclass
diff options
context:
space:
mode:
authorLuca Boccassi <luca.boccassi@microsoft.com>2020-12-16 18:51:39 -0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-12-20 00:03:04 +0000
commita49a29892e24f36aa3eba2bcb5da89283e6ec4a7 (patch)
treebf677fa95f6c3f683b2eceecfc3210d767b6b2df /meta/classes/kernel-fitimage.bbclass
parent5a2558543703ad19fefd9889a46af939e3f5cb71 (diff)
downloadpoky-a49a29892e24f36aa3eba2bcb5da89283e6ec4a7.tar.gz
classes/kernel-fitimage: add ability to sign individual images
Add the ability to have the kernel, dtb and ramdisk individually signed by setting FIT_SIGN_INDIVIDUAL = "1". This could be useful if you are intending to verify signatures before using kexec for example. (From OE-Core rev: 51b6e87df6babf74e73a6d704f044bd88c277ac9) Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> Signed-off-by: Paul Eggleton <paul.eggleton@microsoft.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/kernel-fitimage.bbclass')
-rw-r--r--meta/classes/kernel-fitimage.bbclass42
1 files changed, 42 insertions, 0 deletions
diff --git a/meta/classes/kernel-fitimage.bbclass b/meta/classes/kernel-fitimage.bbclass
index 9661b4ff78..9fa302a5c8 100644
--- a/meta/classes/kernel-fitimage.bbclass
+++ b/meta/classes/kernel-fitimage.bbclass
@@ -75,6 +75,9 @@ FIT_KEY_SIGN_PKCS ?= "-x509"
75# Description string 75# Description string
76FIT_DESC ?= "U-Boot fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}" 76FIT_DESC ?= "U-Boot fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}"
77 77
78# Sign individual images as well
79FIT_SIGN_INDIVIDUAL ?= "0"
80
78# mkimage command 81# mkimage command
79UBOOT_MKIMAGE ?= "uboot-mkimage" 82UBOOT_MKIMAGE ?= "uboot-mkimage"
80UBOOT_MKIMAGE_SIGN ?= "${UBOOT_MKIMAGE}" 83UBOOT_MKIMAGE_SIGN ?= "${UBOOT_MKIMAGE}"
@@ -142,6 +145,8 @@ EOF
142fitimage_emit_section_kernel() { 145fitimage_emit_section_kernel() {
143 146
144 kernel_csum="${FIT_HASH_ALG}" 147 kernel_csum="${FIT_HASH_ALG}"
148 kernel_sign_algo="${FIT_SIGN_ALG}"
149 kernel_sign_keyname="${UBOOT_SIGN_KEYNAME}"
145 150
146 ENTRYPOINT="${UBOOT_ENTRYPOINT}" 151 ENTRYPOINT="${UBOOT_ENTRYPOINT}"
147 if [ -n "${UBOOT_ENTRYSYMBOL}" ]; then 152 if [ -n "${UBOOT_ENTRYSYMBOL}" ]; then
@@ -164,6 +169,17 @@ fitimage_emit_section_kernel() {
164 }; 169 };
165 }; 170 };
166EOF 171EOF
172
173 if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "${kernel_sign_keyname}" ] ; then
174 sed -i '$ d' ${1}
175 cat << EOF >> ${1}
176 signature@1 {
177 algo = "${kernel_csum},${kernel_sign_algo}";
178 key-name-hint = "${kernel_sign_keyname}";
179 };
180 };
181EOF
182 fi
167} 183}
168 184
169# 185#
@@ -175,6 +191,8 @@ EOF
175fitimage_emit_section_dtb() { 191fitimage_emit_section_dtb() {
176 192
177 dtb_csum="${FIT_HASH_ALG}" 193 dtb_csum="${FIT_HASH_ALG}"
194 dtb_sign_algo="${FIT_SIGN_ALG}"
195 dtb_sign_keyname="${UBOOT_SIGN_KEYNAME}"
178 196
179 dtb_loadline="" 197 dtb_loadline=""
180 dtb_ext=${DTB##*.} 198 dtb_ext=${DTB##*.}
@@ -198,6 +216,17 @@ fitimage_emit_section_dtb() {
198 }; 216 };
199 }; 217 };
200EOF 218EOF
219
220 if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "${dtb_sign_keyname}" ] ; then
221 sed -i '$ d' ${1}
222 cat << EOF >> ${1}
223 signature@1 {
224 algo = "${dtb_csum},${dtb_sign_algo}";
225 key-name-hint = "${dtb_sign_keyname}";
226 };
227 };
228EOF
229 fi
201} 230}
202 231
203# 232#
@@ -236,6 +265,8 @@ EOF
236fitimage_emit_section_ramdisk() { 265fitimage_emit_section_ramdisk() {
237 266
238 ramdisk_csum="${FIT_HASH_ALG}" 267 ramdisk_csum="${FIT_HASH_ALG}"
268 ramdisk_sign_algo="${FIT_SIGN_ALG}"
269 ramdisk_sign_keyname="${UBOOT_SIGN_KEYNAME}"
239 ramdisk_loadline="" 270 ramdisk_loadline=""
240 ramdisk_entryline="" 271 ramdisk_entryline=""
241 272
@@ -261,6 +292,17 @@ fitimage_emit_section_ramdisk() {
261 }; 292 };
262 }; 293 };
263EOF 294EOF
295
296 if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "${ramdisk_sign_keyname}" ] ; then
297 sed -i '$ d' ${1}
298 cat << EOF >> ${1}
299 signature@1 {
300 algo = "${ramdisk_csum},${ramdisk_sign_algo}";
301 key-name-hint = "${ramdisk_sign_keyname}";
302 };
303 };
304EOF
305 fi
264} 306}
265 307
266# 308#