有没有办法在Yocto的swupdate层中为图像创建哈希(sha256)?

时间:2019-04-30 06:29:34

标签: yocto sha256 software-update rsa-sha256

我的目标是

  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-descriptionSWUPDATE_SIGNING变量来对SWUPDATE_PRIVATE_KEY进行签名,但是

  

如何生成sha256

1 个答案:

答案 0 :(得分:1)

meta-swupdate Yocto层负责签名的图像。

Swupdate图片配方应包含例如:

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

然后,在sw-description file中使用以下语法自动计算sha256:

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

panther2-usb-panther2.ext4SWUPDATE_IMAGES变量中列出的工件。

更多详细信息,请参见: