Есть ли способ создания хэша (sha256) для изображений в слое swoopdate Yocto? - PullRequest
0 голосов
/ 30 апреля 2019

Моя цель:

  1. Чтобы создать sha256 для всех необходимых файлов (которые входят в .swu)
  2. Чтобы подписать sw-description файл с RSAалгоритм.

Мой .swu состоит из:

  • Образ ядра - bzImage
  • система корневых файлов - panther2-usb-panther2.ext4
  • файл описания программного обеспечения - sw-description
  • скрипт после установки - postinstall_swu.sh

Я создал скрипт, который генерирует sha256 и подписывает sw-description.Вот сценарий:

#!/bin/bash

IMAGES="bzImage panther2-usb-panther2.ext4"
FILES="sw-description sw-description.sig postinstall_swu.sh $IMAGES"
echo "Executing swu signing script..."

cp ../sw-description .
cp ../postinstall_swu.sh .
cp ../../../../../deploy/images/panther2/bzImage .
cp ../../../../../deploy/images/panther2/panther2-usb-panther2.ext4 .

read -d ' ' SHA_ROOTFS < <(sha256sum panther2-usb-panther2.ext4)
read -d ' ' SHA_BZIMAGE < <(sha256sum bzImage)
read -d ' ' SHA_POSTINSTALL < <(sha256sum postinstall_swu.sh)

sed -i ':a;N;$!ba; s/sha256 = "[0-9A-Za-z]*"/sha256 = '"\"${SHA_ROOTFS}"\"'/1' sw-description
sed -i ':a;N;$!ba; s/sha256 = "[0-9A-Za-z]*"/sha256 = '"\"${SHA_BZIMAGE}"\"'/2' sw-description
sed -i ':a;N;$!ba; s/sha256 = "[0-9A-Za-z]*"/sha256 = '"\"${SHA_POSTINSTALL}"\"'/3' sw-description

openssl dgst -sha256 -sign ../priv.pem -passin file:../passphrase sw-description > sw-description.sig

for i in $FILES;do
        echo $i;done | cpio -ov -H crc >  panther2-swu-$USER-devbuild.swu

cp panther2-swu-$USER-devbuild.swu ../../../../../deploy/images/panther2

Является ли вышеуказанный подход лучше?

Есть ли способ попросить слой yocto / swupdate сгенерировать sha256 для всех вышеуказанных файлов(кроме sw-description) и добавить эти сгенерированные sha256 в файл описания sw?

Я могу подписать sw-description, определив переменные SWUPDATE_SIGNING и SWUPDATE_PRIVATE_KEY в моем файле рецептов, но

как сгенерировать sha256?

1 Ответ

1 голос
/ 30 апреля 2019

meta-swupdate Yocto layer заботится о подписанных изображениях.

Рецепт изображения Swupdate должен содержать, например:

SWUPDATE_SIGNING = "RSA" 
SWUPDATE_PRIVATE_KEY = "/path/to/key"

Затем sha256 автоматически вычисляется в sw-description file со следующим синтаксисом:

sha256 = "@panther2-usb-panther2.ext4";

Где panther2-usb-panther2.ext4 - артефакт, указанный в переменной SWUPDATE_IMAGES.

Более подробную информацию можно найти в:

...