ローカルの wolfSSL ソースを使う wolfBoot レシピ
meta-wolfssl Yocto レイヤーの wolfBoot レシピで、手元の wolfSSL ソースツリーから wolfCrypt をビルドできるようにしました。local.conf に WOLFBOOT_WOLFSSL_SRC = "/path/to/wolfssl" を設定すると、レシピが通常 lib/wolfssl に取得するコピーではなく、そのツリーを使用します。wolfSSL のエントリは SRC_URI から完全に外れるため、ダウンロードは発生しません。
wolfboot_git.bb と wolfboot-keytools-native_git.bb の両方がこの変数を読むため、ファームウェアイメージに署名するツールと、そのイメージを検証するブートローダーが同じ wolfCrypt を使い続けられます。ローカルの wolfCrypt ソースを使うことで、ビルド全体でバージョンの整合性が高まります。
WOLFBOOT_WOLFSSL_SRC を設定しない場合、アプリケーションは wolfssl レシピの libwolfssl をリンクし、wolfBoot は自身の wolfCrypt をコンパイルします。両者はバージョンが別々に固定されるため、両方を含むイメージは 2 つの wolfSSL バージョンを抱えている可能性があり、片方だけを更新するたびに差が広がっていきます。両方が同じツリーを参照するようにすれば、ダウンロードの重複も、2 つ目の暗号コードベースもなくせます。
なお、ここで再利用するのは wolfSSL のソースであり、ターゲットの libwolfssl.so ではありません。wolfBoot は、リンクする libc がないベアメタルイメージの一部として wolfCrypt 自体をコンパイルするためです。レシピはまず、手元のツリーを ${WORKDIR} にコピーします。これは wolfBoot が wolfCrypt のソースと同じ場所にオブジェクトファイルを書き出すためです。さらに、コピー元にビルド済みのホストオブジェクトがあれば除外し、ツリーの内容をタスクハッシュに反映します。これにより、ソースファイルを編集したときに、sstate から古い wolfboot.elf が渡されるのではなく、再ビルドが走ります。
wolfHSM レシピの追加
meta-wolfssl レイヤーには、wolfSSL のハードウェアセキュリティモジュール(HSM)フレームワークである wolfHSM のレシピも追加しました。wolfHSM は、鍵の保管や暗号処理をセキュアプロセッサやエンクレーブにオフロードするためのクライアント/サーバープロトコルを提供します。あわせて、トランスポート、フラッシュ、時刻、ロックの各プリミティブを備えたプラットフォームポートも含まれます。
このレシピはライブラリをビルドせず、ソースとヘッダファイルをステージングします。設定は、wolfHSM を使用するアプリケーションで行う設計になっているためです。wh_settings.h がアプリケーション側の wolfhsm_cfg.h を取り込み、そこでトランスポート、NVM バックエンド、バッファサイズ、暗号機能を組み込むかどうかまでを選択します。そのため、設定の異なる 2 つのレシピが ABI を共有することはありません。
wolfHSM を利用するレシピは DEPENDS += "wolfhsm" を追加し、${STAGING_DATADIR}/wolfhsm から src/*.c と、port/*/ のうちいずれか 1 つのディレクトリをコンパイルします。直接コンパイルするほか、ソースの隣にステージングされる wolfhsm.mk フラグメントを include する方法もあります。デフォルトでステージングされるのは posix ポートのみです。他のポートを追加する場合は WOLFHSM_PORTS = "posix infineon" のように指定します。wolfHSM のソースはビルドの入力であり、ターゲットの rootfs には含まれないため、これらはすべて wolfhsm-dev に配置されます。
今回の wolfBoot と wolfHSM の変更は、どちらも meta-wolfssl レイヤーの recipes-wolfssl/wolfboot/ と recipes-wolfssl/wolfhsm/ に含まれており、それぞれ詳細を説明した README を用意しています。
もし弊社製品についてご質問があれば、お問い合わせ窓口info@wolfssl.jpまでご連絡をお願い致します。
原文:https://www.wolfssl.com/wolfboot-and-wolfhsm-yocto-recipes/