Howto

EdgeLock SE050 Plug&Trust MW ビルド手順 (Armadillo-IoT A6)

plug-and-trust ライブラリ、se05x-GetInfo などのツール群、アットマークテクノが開発している se050 向けツール群の Armadillo 向けのビルド済みパッケージが存在します。以下を参考にしてください。

Howto: EdgeLock SE050 Plug&Trust MW のビルド済みパッケージのインストールと証明書の取得 (Armadillo-IoT A6)

本 Howto では、 Armadillo-IoT ゲートウェイ A6 に搭載されている、
セキュアエレメント SE050 用ミドルウェアをビルドする方法を紹介します。

SE050 の詳細は、 NXP 社のサイト を参照ください。

コマンド操作は全て Armadillo 上で行います。

必要なパッケージのインストール

必要なパッケージをインストールします。

# apt update
# apt install unzip python cmake libssl-dev g++

ファイルのダウンロード

  1. NXP 社のサイト の "TOOL & SOFTWARE" タブをクリックし、
    "Embedded Software" → "BSP, Drivers and Middleware" 内
    "Plug&Trust MW (04.02.00)" (バージョンは2022年9月29日現在)をクリックし
    SE05x_MW.zip をダウンロードしてください。
    ※ 事前にユーザー登録が必要です。
  2. ダウンロードしたファイルを Armadillo 上で解凍してください。
    この Howto では、root ユーザーが /root/ に解凍した前提で説明を記載します。

ビルド

以下に Armadillo 上でのビルド手順を示します。

一部コードを変更

simw-top/scripts/create_cmake_projects.py を一部変更します。
Armadillo 上ですと、 Python の platform.node() の戻り値が "armadillo" になりますので、それに対応します。

284     @classmethod
285     def imx_native_compilation(cls):
286         if 'imx6' in platform.node():
287             return True
288         if 'imx8' in platform.node():
289             return True
290 +       if 'armadillo' in platform.node():
291 +           return True
292         return False

Armadillo-IoT A6 に搭載される Edgelock SE050 に合わせてコンフィグを変更します。
以下のように "PTMW_Applet" を "SE05X_C" に変更、"PTMW_SE05X_Ver" を追加してください。

628     # i.MX6UL/ULL and i.MX8M Mini EVK                                                                                                                                                                    
629     if gc.imx_native_compilation() and gc.is_with_el2go():                      
630         e = gc.generate_native("imx_native_se050_t1oi2c_openssl_el2go", {       
631             "PTMW_Applet": "SE05X_C",                                           
632             "PTMW_SE05X_Ver": "03_XX",                                          
633             "PTMW_SE05X_Auth": "None",                                          
634             "PTMW_SCP": "None",           

ビルドの実施

ビルドを実行します。

# cd ~/simw-top
root@armadillo:~/simw-top# python scripts/create_cmake_projects.py
root@armadillo:~/simw-top# cd ../simw-top_build/imx_native_se050_t1oi2c_openssl_el2go/
root@armadillo:~/simw-top_build/imx_native_se050_t1oi2c_openssl_el2go# cmake --build .
root@armadillo:~/simw-top_build/imx_native_se050_t1oi2c_openssl_el2go# make install
root@armadillo:~/simw-top_build/imx_native_se050_t1oi2c_openssl_el2go# ldconfig /usr/local/lib

動作確認

SE050 へアクセスするには GPIO 89 を high に設定する必要があります。
以下にスクリプトの例を記載しますのでご利用ください。

#!/bin/sh

GPIO_EXPORT="/sys/class/gpio/export"
GPIO_NUM="89"
GPIO_DIRECTION="/sys/class/gpio/gpio$GPIO_NUM/direction"
GPIO_VALUE="/sys/class/gpio/gpio$GPIO_NUM/value"

if [ ! -e $GPIO_VALUE ]; then
        echo $GPIO_NUM > $GPIO_EXPORT
fi

echo out > $GPIO_DIRECTION

echo 1 > $GPIO_VALUE

sleep 0.3

if ! i2cdetect -y 4;
then
        echo "not detect slave addr"
        echo "NG"
fi

サンプルの実行

サンプル se05x_Minimal を実行します。

# cd ~/simw-top_build/imx_native_se050_t1oi2c_openssl_el2go
root@armadillo:~/simw-top_build/imx_native_se050_t1oi2c_openssl_el2go# bin/se05x_Minimal /dev/i2c-4:0x48

以下のような実行結果が表示されれば成功です。

App   :INFO :PlugAndTrust_v03.00.06_20201204
App   :INFO :Running bin/se05x_Minimal
App   :INFO :Using PortName='/dev/i2c-4:0x48' (CLI)
sss   :INFO :atr (Len=35)
      00 A0 00 00    03 96 04 03    E8 00 FE 02    0B 03 E8 08
      01 00 00 00    00 64 00 00    0A 4A 43 4F    50 34 20 41
      54 50 4F
sss   :WARN :Communication channel is Plain.
sss   :WARN :!!!Not recommended for production use.!!!
App   :INFO :mem=32196
App   :INFO :se05x_Minimal Example Success !!!...
App   :INFO :ex_sss Finished

これ以外にも、 ~/simw-top_build/imx_native_se050_t1oi2c_openssl_el2go/bin/
には様々なデモが用意されています。
~/simw-top/doc/demos/index.html に説明がありますので、参考にしてください。